@thelioo/opencode-balancer 0.1.5 → 0.1.8

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 (70) hide show
  1. package/dist/server/auth-watcher.d.ts +1 -0
  2. package/dist/server/auth-watcher.js +1 -1
  3. package/dist/server/auth-watcher.js.map +1 -1
  4. package/dist/tui/actions.d.ts +1 -1
  5. package/dist/tui/actions.js +6 -2
  6. package/dist/tui/actions.js.map +1 -1
  7. package/dist/tui/actions.ts +7 -3
  8. package/dist/tui/components/priority-screen.d.ts +1 -1
  9. package/dist/tui/components/priority-screen.tsx +4 -3
  10. package/dist/tui/components/provider-model-dialog.d.ts +2 -1
  11. package/dist/tui/components/provider-model-dialog.tsx +21 -11
  12. package/dist/tui/connect.js +5 -3
  13. package/dist/tui/connect.js.map +1 -1
  14. package/dist/tui/connect.ts +5 -3
  15. package/dist/tui/selected-account-bar-sync.d.ts +10 -0
  16. package/dist/tui/selected-account-bar-sync.js +26 -0
  17. package/dist/tui/selected-account-bar-sync.js.map +1 -0
  18. package/dist/tui/selected-account-bar-sync.ts +32 -0
  19. package/dist/tui/tui.js +39 -6
  20. package/dist/tui/tui.js.map +1 -1
  21. package/dist/tui/tui.tsx +40 -8
  22. package/package.json +1 -1
  23. package/dist/balancer/accounts.d.ts +0 -9
  24. package/dist/balancer/accounts.js +0 -102
  25. package/dist/balancer/accounts.js.map +0 -1
  26. package/dist/balancer/auth-watcher.d.ts +0 -1
  27. package/dist/balancer/auth-watcher.js +0 -30
  28. package/dist/balancer/auth-watcher.js.map +0 -1
  29. package/dist/balancer/commands.d.ts +0 -1
  30. package/dist/balancer/commands.js +0 -94
  31. package/dist/balancer/commands.js.map +0 -1
  32. package/dist/balancer/core.d.ts +0 -6
  33. package/dist/balancer/core.js +0 -7
  34. package/dist/balancer/core.js.map +0 -1
  35. package/dist/balancer/fetch-patch.d.ts +0 -1
  36. package/dist/balancer/fetch-patch.js +0 -110
  37. package/dist/balancer/fetch-patch.js.map +0 -1
  38. package/dist/balancer/http.d.ts +0 -40
  39. package/dist/balancer/http.js +0 -199
  40. package/dist/balancer/http.js.map +0 -1
  41. package/dist/balancer/native.d.ts +0 -3
  42. package/dist/balancer/native.js +0 -16
  43. package/dist/balancer/native.js.map +0 -1
  44. package/dist/balancer/state.d.ts +0 -14
  45. package/dist/balancer/state.js +0 -16
  46. package/dist/balancer/state.js.map +0 -1
  47. package/dist/balancer/storage.d.ts +0 -8
  48. package/dist/balancer/storage.js +0 -92
  49. package/dist/balancer/storage.js.map +0 -1
  50. package/dist/balancer/types.d.ts +0 -44
  51. package/dist/balancer/types.js +0 -2
  52. package/dist/balancer/types.js.map +0 -1
  53. package/dist/tui/components/alias-dialog.js +0 -57
  54. package/dist/tui/components/alias-dialog.js.map +0 -1
  55. package/dist/tui/components/dashboard.js +0 -201
  56. package/dist/tui/components/dashboard.js.map +0 -1
  57. package/dist/tui/components/priority-screen.js +0 -120
  58. package/dist/tui/components/priority-screen.js.map +0 -1
  59. package/dist/tui/components/provider-model-dialog.js +0 -45
  60. package/dist/tui/components/provider-model-dialog.js.map +0 -1
  61. package/dist/tui/components/rename-dialog.js +0 -24
  62. package/dist/tui/components/rename-dialog.js.map +0 -1
  63. package/dist/tui/components/sidebar.js +0 -27
  64. package/dist/tui/components/sidebar.js.map +0 -1
  65. package/dist/tui/components/status-indicator.js +0 -59
  66. package/dist/tui/components/status-indicator.js.map +0 -1
  67. package/dist/tui/components/usage-bar.js +0 -7
  68. package/dist/tui/components/usage-bar.js.map +0 -1
  69. package/dist/tui/components/usage-display.js +0 -32
  70. package/dist/tui/components/usage-display.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/balancer/http.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { AuthInfo } from "./types";
2
- export declare function setNativeAuth(client: any, providerID: string, auth: AuthInfo): Promise<void>;
3
- export declare function showToast(client: any, message: string, variant?: "info" | "success" | "warning" | "error"): Promise<void>;
@@ -1,16 +0,0 @@
1
- import { now, state } from "./state";
2
- export async function setNativeAuth(client, providerID, auth) {
3
- state.suppressAuthCaptureUntil.set(providerID, now() + 2_000);
4
- await client.auth
5
- .set({
6
- path: { id: providerID },
7
- body: auth,
8
- })
9
- .catch(() => undefined);
10
- }
11
- export async function showToast(client, message, variant = "info") {
12
- await client.tui
13
- .showToast({ body: { message, variant, duration: 15_000 } })
14
- .catch(() => undefined);
15
- }
16
- //# sourceMappingURL=native.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"native.js","sourceRoot":"","sources":["../../src/balancer/native.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGrC,MAAM,CAAC,KAAK,UAAU,aAAa,CAC/B,MAAW,EACX,UAAkB,EAClB,IAAc;IAEd,KAAK,CAAC,wBAAwB,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;IAC9D,MAAM,MAAM,CAAC,IAAI;SACZ,GAAG,CAAC;QACD,IAAI,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE;QACxB,IAAI,EAAE,IAAI;KACb,CAAC;SACD,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC3B,MAAW,EACX,OAAe,EACf,UAAoD,MAAM;IAE1D,MAAM,MAAM,CAAC,GAAG;SACX,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC;SAC3D,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AAChC,CAAC"}
@@ -1,14 +0,0 @@
1
- import type { AuthInfo, PendingRequest } from "./types";
2
- export declare const INTERNAL_REQUEST_HEADER = "x-opencode-balancer-request";
3
- export declare const BALANCER_ALIAS_INPUT = "__opencode_balancer_alias";
4
- export declare const BALANCER_METADATA_KEY = "opencodeBalancerCommand";
5
- export declare const RETRYABLE_STATUS: Set<number>;
6
- export declare const state: {
7
- fetchPatched: boolean;
8
- pendingRequests: Map<string, PendingRequest>;
9
- pendingOauthAlias: Map<string, string>;
10
- suppressAuthCaptureUntil: Map<string, number>;
11
- lastAuthSnapshot: Record<string, AuthInfo>;
12
- watchStarted: boolean;
13
- };
14
- export declare function now(): number;
@@ -1,16 +0,0 @@
1
- export const INTERNAL_REQUEST_HEADER = "x-opencode-balancer-request";
2
- export const BALANCER_ALIAS_INPUT = "__opencode_balancer_alias";
3
- export const BALANCER_METADATA_KEY = "opencodeBalancerCommand";
4
- export const RETRYABLE_STATUS = new Set([429, 500, 502, 503, 504, 529]);
5
- export const state = {
6
- fetchPatched: false,
7
- pendingRequests: new Map(),
8
- pendingOauthAlias: new Map(),
9
- suppressAuthCaptureUntil: new Map(),
10
- lastAuthSnapshot: {},
11
- watchStarted: false,
12
- };
13
- export function now() {
14
- return Date.now();
15
- }
16
- //# sourceMappingURL=state.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/balancer/state.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,uBAAuB,GAAG,6BAA6B,CAAC;AACrE,MAAM,CAAC,MAAM,oBAAoB,GAAG,2BAA2B,CAAC;AAChE,MAAM,CAAC,MAAM,qBAAqB,GAAG,yBAAyB,CAAC;AAC/D,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAExE,MAAM,CAAC,MAAM,KAAK,GAAG;IACjB,YAAY,EAAE,KAAK;IACnB,eAAe,EAAE,IAAI,GAAG,EAA0B;IAClD,iBAAiB,EAAE,IAAI,GAAG,EAAkB;IAC5C,wBAAwB,EAAE,IAAI,GAAG,EAAkB;IACnD,gBAAgB,EAAE,EAA8B;IAChD,YAAY,EAAE,KAAK;CACtB,CAAC;AAEF,MAAM,UAAU,GAAG;IACf,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;AACtB,CAAC"}
@@ -1,8 +0,0 @@
1
- import type { AuthInfo, Store } from "./types";
2
- export declare function storePath(): string;
3
- export declare function authPath(): string;
4
- export declare function readStore(): Promise<Store>;
5
- export declare function writeStore(store: Store): Promise<void>;
6
- export declare function readNativeAuth(): Promise<Record<string, AuthInfo>>;
7
- export declare function isAuthInfo(value: unknown): value is AuthInfo;
8
- export declare function captureAuth(providerID: string, auth: AuthInfo, source: NonNullable<Store["lastCaptured"]>["source"]): Promise<Store>;
@@ -1,92 +0,0 @@
1
- import { now } from "./state";
2
- function joinPath(...parts) {
3
- return parts
4
- .filter(Boolean)
5
- .join("/")
6
- .replace(/\/+/g, "/");
7
- }
8
- function homeDir() {
9
- return Bun.env.HOME || "/";
10
- }
11
- function xdgConfigHome() {
12
- return Bun.env.XDG_CONFIG_HOME || joinPath(homeDir(), ".config");
13
- }
14
- function xdgDataHome() {
15
- return Bun.env.XDG_DATA_HOME || joinPath(homeDir(), ".local", "share");
16
- }
17
- function configDir() {
18
- return Bun.env.OPENCODE_CONFIG_DIR || joinPath(xdgConfigHome(), "opencode");
19
- }
20
- function dataDir() {
21
- return joinPath(xdgDataHome(), "opencode");
22
- }
23
- export function storePath() {
24
- return joinPath(configDir(), "balancer-accounts.json");
25
- }
26
- export function authPath() {
27
- return joinPath(dataDir(), "auth.json");
28
- }
29
- function emptyStore() {
30
- return { version: 1, providers: {} };
31
- }
32
- async function readJsonFile(path, fallback) {
33
- try {
34
- const file = Bun.file(path);
35
- if (!(await file.exists()))
36
- return fallback;
37
- return JSON.parse(await file.text());
38
- }
39
- catch {
40
- return fallback;
41
- }
42
- }
43
- async function writeJsonFile(path, value) {
44
- await Bun.write(path, `${JSON.stringify(value, null, 2)}\n`, {
45
- mode: 0o600,
46
- });
47
- }
48
- export async function readStore() {
49
- const parsed = await readJsonFile(storePath(), emptyStore());
50
- if (parsed.version !== 1 || !parsed.providers)
51
- return emptyStore();
52
- return parsed;
53
- }
54
- export async function writeStore(store) {
55
- await writeJsonFile(storePath(), store);
56
- }
57
- export async function readNativeAuth() {
58
- if (Bun.env.OPENCODE_AUTH_CONTENT) {
59
- try {
60
- return JSON.parse(Bun.env.OPENCODE_AUTH_CONTENT);
61
- }
62
- catch {
63
- return {};
64
- }
65
- }
66
- return readJsonFile(authPath(), {});
67
- }
68
- export function isAuthInfo(value) {
69
- if (!value || typeof value !== "object")
70
- return false;
71
- const type = value.type;
72
- if (type === "api")
73
- return typeof value.key === "string";
74
- if (type === "oauth") {
75
- const item = value;
76
- return (typeof item.refresh === "string" &&
77
- typeof item.access === "string" &&
78
- typeof item.expires === "number");
79
- }
80
- if (type === "wellknown") {
81
- const item = value;
82
- return typeof item.key === "string" && typeof item.token === "string";
83
- }
84
- return false;
85
- }
86
- export async function captureAuth(providerID, auth, source) {
87
- const store = await readStore();
88
- store.lastCaptured = { providerID, auth, capturedAt: now(), source };
89
- await writeStore(store);
90
- return store;
91
- }
92
- //# sourceMappingURL=storage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/balancer/storage.ts"],"names":[],"mappings":"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"}
@@ -1,44 +0,0 @@
1
- export type AuthInfo = {
2
- type: "api";
3
- key: string;
4
- metadata?: Record<string, string>;
5
- } | {
6
- type: "oauth";
7
- refresh: string;
8
- access: string;
9
- expires: number;
10
- accountId?: string;
11
- enterpriseUrl?: string;
12
- } | {
13
- type: "wellknown";
14
- key: string;
15
- token: string;
16
- };
17
- export type Account = {
18
- alias: string;
19
- providerID: string;
20
- auth: AuthInfo;
21
- createdAt: number;
22
- updatedAt: number;
23
- lastUsedAt?: number;
24
- rateLimitedUntil?: number;
25
- failures?: number;
26
- };
27
- export type ProviderState = {
28
- active?: string;
29
- accounts: Record<string, Account>;
30
- };
31
- export type Store = {
32
- version: 1;
33
- providers: Record<string, ProviderState>;
34
- lastCaptured?: {
35
- providerID: string;
36
- auth: AuthInfo;
37
- capturedAt: number;
38
- source: "auth-file" | "http" | "oauth-callback";
39
- };
40
- };
41
- export type PendingRequest = {
42
- providerID: string;
43
- account?: Account;
44
- };
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/balancer/types.ts"],"names":[],"mappings":""}
@@ -1,57 +0,0 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "@opentui/solid/jsx-runtime";
2
- import { normalizeAlias } from "../../core/accounts";
3
- import { claimPendingPrompt, pendingPromptGroupID, releasePendingPrompt } from "../../core/pending";
4
- import { savePendingAlias } from "../actions";
5
- function errorMessage(error) {
6
- return error instanceof Error && error.message ? error.message : "Failed to save alias";
7
- }
8
- const openPendingDialogs = new Set();
9
- export function openAliasDialog(api, state, pendingID) {
10
- const dialogID = pendingPromptGroupID(state.db, pendingID) ?? pendingID;
11
- if (openPendingDialogs.has(dialogID)) {
12
- if ("open" in api.ui.dialog && !api.ui.dialog.open)
13
- openPendingDialogs.delete(dialogID);
14
- else
15
- return false;
16
- }
17
- let claimed = claimPendingPrompt(state.db, pendingID);
18
- if (!claimed) {
19
- releasePendingPrompt(state.db, pendingID);
20
- claimed = claimPendingPrompt(state.db, pendingID);
21
- }
22
- if (!claimed)
23
- return false;
24
- const pending = state.pending().find((item) => item.id === pendingID) ?? claimed;
25
- const providerID = pending?.providerID ?? "provider";
26
- openPendingDialogs.add(dialogID);
27
- const close = () => {
28
- openPendingDialogs.delete(dialogID);
29
- api.ui.dialog.clear();
30
- };
31
- try {
32
- api.ui.dialog.setSize("medium");
33
- api.ui.dialog.replace(() => (_jsx(api.ui.DialogPrompt, { title: "Save pending connection", placeholder: "account alias", description: () => (_jsxs("text", { fg: api.theme.current.textMuted, wrapMode: "none", children: ["Choose an alias for ", providerID, "/", pending?.authType ?? "auth", "."] })), onCancel: close, onConfirm: async (value) => {
34
- const alias = normalizeAlias(value);
35
- if (!alias) {
36
- api.ui.toast({ variant: "error", message: "Alias is required" });
37
- return;
38
- }
39
- try {
40
- const account = savePendingAlias(state, pendingID, alias);
41
- close();
42
- api.ui.toast({ variant: "success", message: `Saved ${account.providerID}/${account.alias}` });
43
- }
44
- catch (error) {
45
- openPendingDialogs.delete(dialogID);
46
- api.ui.toast({ variant: "error", message: errorMessage(error) });
47
- }
48
- } })));
49
- return true;
50
- }
51
- catch {
52
- openPendingDialogs.delete(dialogID);
53
- releasePendingPrompt(state.db, pendingID);
54
- return false;
55
- }
56
- }
57
- //# sourceMappingURL=alias-dialog.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"alias-dialog.js","sourceRoot":"","sources":["../../../src/tui/components/alias-dialog.tsx"],"names":[],"mappings":"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"}
@@ -1,201 +0,0 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "@opentui/solid/jsx-runtime";
2
- import { createMemo, createSignal, For, onCleanup, onMount, Show } from "solid-js";
3
- import { listAccounts } from "../../core/accounts";
4
- import { getBalancingEnabled, setBalancingEnabled } from "../../core/priority";
5
- import { getUsageSnapshot } from "../../core/usage/store";
6
- import { dashboardSelectionMarker, moveDashboardFocus, reduceDashboardKey } from "../dashboard-keys";
7
- import { dashboardContentHeight, dashboardLayoutMode } from "../responsive";
8
- import { selectedRowColors } from "../selection-colors";
9
- import { UsageSnapshotBar } from "./usage-display";
10
- export function Dashboard(props) {
11
- const theme = () => props.api.theme.current;
12
- const selectedColors = () => selectedRowColors(theme());
13
- const [confirmAccount, setConfirmAccount] = createSignal();
14
- const [accounts, setAccounts] = createSignal(listAccounts(props.state.db));
15
- const [balancing, setBalancing] = createSignal(getBalancingEnabled(props.state.db));
16
- const [usage, setUsage] = createSignal({});
17
- const [cursor, setCursor] = createSignal(0);
18
- const [headerCursor, setHeaderCursor] = createSignal(0);
19
- const [focusArea, setFocusArea] = createSignal("content");
20
- const layoutMode = () => dashboardLayoutMode({
21
- width: props.api.renderer.width,
22
- height: props.api.renderer.height,
23
- });
24
- const compact = () => layoutMode() === "compact";
25
- const contentHeight = () => dashboardContentHeight({ height: props.api.renderer.height });
26
- const headerActions = [
27
- { type: "close", key: "close", label: "close" },
28
- { type: "priority", key: "priority", label: "priority" },
29
- ];
30
- const rows = createMemo(() => [
31
- { type: "balancing", key: "balancing" },
32
- { type: "connect", key: "connect" },
33
- ...accounts().map((account) => ({
34
- type: "account",
35
- key: `account:${account.providerID}/${account.alias}`,
36
- providerID: account.providerID,
37
- alias: account.alias,
38
- })),
39
- ]);
40
- const clampCursor = (value) => Math.max(0, Math.min(value, Math.max(0, rows().length - 1)));
41
- const clampHeaderCursor = (value) => Math.max(0, Math.min(value, headerActions.length - 1));
42
- const refreshDashboard = () => {
43
- const nextAccounts = listAccounts(props.state.db);
44
- setAccounts(nextAccounts);
45
- setBalancing(getBalancingEnabled(props.state.db));
46
- setUsage(Object.fromEntries(nextAccounts.map((account) => [
47
- `${account.providerID}/${account.alias}`,
48
- getUsageSnapshot(props.state.db, account.providerID, account.alias),
49
- ])));
50
- setCursor((value) => clampCursor(value));
51
- };
52
- refreshDashboard();
53
- const timer = setInterval(refreshDashboard, 500);
54
- onCleanup(() => clearInterval(timer));
55
- const Button = (buttonProps) => (_jsx("box", { onMouseUp: buttonProps.onClick, paddingLeft: 0, paddingRight: 0, children: _jsxs("text", { fg: buttonProps.danger ? theme().warning : theme().accent, wrapMode: "none", truncate: true, children: ["[ ", buttonProps.label, " ]"] }) }));
56
- const Chip = (chipProps) => (_jsxs("text", { fg: chipProps.danger ? theme().warning : theme().accent, wrapMode: "none", children: ["[", chipProps.keyName, "] ", _jsx("span", { style: { fg: theme().textMuted }, children: chipProps.label })] }));
57
- const SectionTitle = (sectionProps) => (_jsxs("box", { flexDirection: "row", gap: 1, height: 1, flexShrink: 0, children: [_jsx("text", { fg: theme().primary, wrapMode: "none", children: sectionProps.label }), _jsx("text", { fg: theme().textMuted, wrapMode: "none", children: sectionProps.count === undefined ? "" : `${sectionProps.count}` })] }));
58
- const Row = (rowProps) => (_jsx("box", { flexDirection: "row", width: "100%", minWidth: 0, height: 1, flexShrink: 0, backgroundColor: rowProps.selected ? selectedColors().bg : undefined, onMouseUp: rowProps.onMouseUp, children: rowProps.children }));
59
- const selected = (key) => focusArea() === "content" && rows()[cursor()]?.key === key;
60
- const headerSelected = (key) => focusArea() === "header" && headerActions[headerCursor()]?.key === key;
61
- const rowMarker = (key) => dashboardSelectionMarker({
62
- focusedArea: focusArea(),
63
- itemArea: "content",
64
- selected: rows()[cursor()]?.key === key,
65
- });
66
- const headerMarker = (key) => dashboardSelectionMarker({
67
- focusedArea: focusArea(),
68
- itemArea: "header",
69
- selected: headerActions[headerCursor()]?.key === key,
70
- });
71
- const current = () => rows()[cursor()];
72
- const currentHeader = () => headerActions[headerCursor()];
73
- const selectedLabel = () => {
74
- const row = current();
75
- if (focusArea() === "header")
76
- return currentHeader()?.type ?? "header";
77
- if (!row)
78
- return "none";
79
- if (row.type === "balancing")
80
- return "balancing";
81
- if (row.type === "connect")
82
- return "connect";
83
- if (row.type === "account")
84
- return `account/${row.providerID}/${row.alias}`;
85
- return "priority";
86
- };
87
- const selectedAction = () => {
88
- if (focusArea() === "header") {
89
- const action = currentHeader();
90
- return action?.type === "close" ? "Enter closes dashboard" : "Enter opens provider priority matrix";
91
- }
92
- const row = current();
93
- if (!row)
94
- return "Enter opens selected item";
95
- if (row.type === "balancing")
96
- return "Enter/Space toggles automatic balancing";
97
- if (row.type === "connect")
98
- return "Enter/C connects a new provider";
99
- if (confirmAccount() === `${row.providerID}/${row.alias}`)
100
- return "Y confirms removal · N cancels";
101
- return "R to rename · D requests removal confirmation";
102
- };
103
- const accountLabel = (account) => `${account.providerID}/${account.alias} (${account.authType})`;
104
- const removeCurrent = () => {
105
- const row = current();
106
- if (row?.type === "account")
107
- setConfirmAccount(`${row.providerID}/${row.alias}`);
108
- };
109
- const toggleBalancing = () => {
110
- setBalancingEnabled(props.state.db, !balancing());
111
- refreshDashboard();
112
- props.state.refresh();
113
- };
114
- const confirmCurrent = () => {
115
- const row = current();
116
- if (row?.type === "account" && confirmAccount() === `${row.providerID}/${row.alias}`) {
117
- setConfirmAccount(undefined);
118
- props.removeAccount(row.providerID, row.alias);
119
- refreshDashboard();
120
- }
121
- };
122
- const runPrimary = () => {
123
- if (focusArea() === "header") {
124
- const action = currentHeader();
125
- if (action?.type === "close")
126
- return props.onBack();
127
- return props.openPriority();
128
- }
129
- const row = current();
130
- if (!row)
131
- return;
132
- if (row.type === "balancing")
133
- return toggleBalancing();
134
- if (row.type === "connect")
135
- return props.openConnect();
136
- if (row.type === "account")
137
- return setConfirmAccount(`${row.providerID}/${row.alias}`);
138
- };
139
- const handleKey = (event) => {
140
- if (props.api.ui.dialog.open)
141
- return;
142
- const intent = reduceDashboardKey({ name: event.name ?? "" });
143
- switch (intent.type) {
144
- case "move-cursor":
145
- {
146
- const next = moveDashboardFocus({ area: focusArea(), cursor: cursor(), rowCount: rows().length }, intent.delta);
147
- setFocusArea(next.area);
148
- setCursor(clampCursor(next.cursor));
149
- }
150
- return;
151
- case "move-header":
152
- setFocusArea("header");
153
- setHeaderCursor((value) => clampHeaderCursor(value + intent.delta));
154
- return;
155
- case "primary":
156
- runPrimary();
157
- return;
158
- case "priority":
159
- props.openPriority();
160
- return;
161
- case "connect":
162
- props.openConnect();
163
- return;
164
- case "rename": {
165
- const row = current();
166
- if (row?.type === "account")
167
- props.renameAccount(row.providerID, row.alias);
168
- return;
169
- }
170
- case "remove":
171
- removeCurrent();
172
- return;
173
- case "confirm":
174
- confirmCurrent();
175
- return;
176
- case "cancel":
177
- setConfirmAccount(undefined);
178
- return;
179
- case "back":
180
- props.onBack();
181
- return;
182
- default:
183
- return;
184
- }
185
- };
186
- let container;
187
- onMount(() => container?.focus?.());
188
- return (_jsxs("box", { ref: (ref) => (container = ref), focusable: true, onKeyDown: (event) => handleKey(event), flexDirection: "column", gap: 0, padding: 1, width: "100%", height: "100%", children: [_jsxs("box", { flexDirection: "column", gap: 0, paddingBottom: 1, flexShrink: 0, children: [_jsxs("text", { fg: theme().primary, wrapMode: "none", overflow: "hidden", truncate: true, children: ["opencode-balancer", compact() ? "" : " control center"] }), _jsx(Show, { when: !compact(), children: _jsx("text", { fg: theme().textMuted, wrapMode: "none", overflow: "hidden", truncate: true, children: "Manage accounts, usage, and provider failover." }) }), _jsx("box", { flexDirection: "row", gap: 1, height: 1, flexShrink: 0, children: _jsx(For, { each: headerActions, children: (action, index) => (_jsx("box", { height: 1, flexShrink: 0, backgroundColor: headerSelected(action.key) ? selectedColors().bg : undefined, onMouseUp: () => {
189
- setFocusArea("header");
190
- setHeaderCursor(index());
191
- if (action.type === "close")
192
- props.onBack();
193
- else
194
- props.openPriority();
195
- }, children: _jsxs("text", { fg: headerSelected(action.key) ? selectedColors().fg : theme().accent, wrapMode: "none", children: [headerMarker(action.key), " [ ", action.label, " ]"] }) })) }) })] }), _jsxs("scrollbox", { height: contentHeight(), scrollbarOptions: { visible: false }, children: [_jsxs("box", { flexDirection: "column", gap: 0, paddingBottom: 1, onMouseUp: () => setCursor(0), children: [_jsx(SectionTitle, { label: "BALANCING" }), _jsx(Row, { selected: selected("balancing"), onMouseUp: toggleBalancing, children: _jsxs("text", { fg: selected("balancing") ? selectedColors().fg : balancing() ? theme().success : theme().textMuted, wrapMode: "none", overflow: "hidden", truncate: true, children: [rowMarker("balancing"), " Automatic balancing: ", balancing() ? "ON" : "OFF"] }) }), _jsx(Show, { when: !compact(), children: _jsx("text", { fg: theme().textMuted, wrapMode: "none", overflow: "hidden", truncate: true, children: "Enter/Space toggles provider failover. Priority config is in the header." }) })] }), _jsxs("box", { flexDirection: "column", gap: 0, paddingBottom: 1, children: [_jsx(SectionTitle, { label: "ACCOUNTS", count: accounts().length }), _jsxs("box", { flexDirection: "column", gap: 0, flexShrink: 0, onMouseUp: () => setCursor(rows().findIndex((row) => row.key === "connect")), children: [_jsx(Row, { selected: selected("connect"), onMouseUp: props.openConnect, children: _jsxs("text", { fg: selected("connect") ? selectedColors().fg : theme().accent, wrapMode: "none", overflow: "hidden", truncate: true, children: [rowMarker("connect"), " New account"] }) }), _jsx(Show, { when: selected("connect") && !compact(), children: _jsx("text", { fg: theme().textMuted, wrapMode: "none", overflow: "hidden", truncate: true, children: "action: Enter/C opens opencode provider connection" }) })] }), _jsx(Show, { when: accounts().length > 0, fallback: _jsx("text", { fg: theme().textMuted, children: "none" }), children: _jsx(For, { each: accounts(), children: (account) => (_jsxs("box", { flexDirection: "column", gap: 0, flexShrink: 0, onMouseUp: () => setCursor(rows().findIndex((row) => row.key === `account:${account.providerID}/${account.alias}`)), children: [_jsx(Row, { selected: selected(`account:${account.providerID}/${account.alias}`), children: _jsxs("text", { fg: selected(`account:${account.providerID}/${account.alias}`) ? selectedColors().fg : account.disabled ? theme().textMuted : theme().text, wrapMode: "none", overflow: "hidden", truncate: true, children: [rowMarker(`account:${account.providerID}/${account.alias}`), " ", accountLabel(account)] }) }), _jsx(Show, { when: !compact(), children: _jsx(UsageSnapshotBar, { theme: theme(), snapshot: usage()[`${account.providerID}/${account.alias}`], muted: !selected(`account:${account.providerID}/${account.alias}`) }) }), _jsx(Show, { when: confirmAccount() === `${account.providerID}/${account.alias}`, fallback: _jsx(Show, { when: selected(`account:${account.providerID}/${account.alias}`), children: _jsx("text", { fg: theme().textMuted, wrapMode: "none", overflow: "hidden", truncate: true, children: "action: press D to remove this account" }) }), children: _jsxs("box", { flexDirection: "row", gap: 1, children: [_jsx("text", { fg: theme().warning, wrapMode: "none", children: "confirm removal?" }), _jsx(Button, { label: "yes", danger: true, onClick: () => {
196
- setConfirmAccount(undefined);
197
- props.removeAccount(account.providerID, account.alias);
198
- refreshDashboard();
199
- } }), _jsx(Button, { label: "no", onClick: () => setConfirmAccount(undefined) })] }) })] })) }) })] })] }), _jsxs("box", { flexDirection: "column", gap: 0, children: [_jsx(Show, { when: !compact(), fallback: _jsx("text", { fg: theme().textMuted, wrapMode: "none", truncate: true, children: "\u2191\u2193 move \u00B7 Enter open \u00B7 Space toggle \u00B7 P priority \u00B7 Esc close" }), children: _jsxs("box", { flexDirection: "row", gap: 2, children: [_jsx(Chip, { keyName: "\u2191\u2193", label: "Move" }), _jsx(Chip, { keyName: "Enter", label: "Open" }), _jsx(Chip, { keyName: "Space", label: "Toggle" }), _jsx(Chip, { keyName: "C", label: "Connect" }), _jsx(Chip, { keyName: "P", label: "Priority" }), _jsx(Chip, { keyName: "R", label: "Rename" }), _jsx(Chip, { keyName: "D", label: "Remove", danger: true }), _jsx(Chip, { keyName: "Esc", label: "Close" })] }) }), _jsxs("text", { fg: theme().textMuted, wrapMode: "none", truncate: true, children: ["selected: ", selectedLabel(), " \u00B7 ", selectedAction()] })] })] }));
200
- }
201
- //# sourceMappingURL=dashboard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../src/tui/components/dashboard.tsx"],"names":[],"mappings":"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"}