@thelioo/opencode-balancer 0.1.5 → 0.1.6
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/package.json +1 -1
- package/dist/tui/components/alias-dialog.js +0 -57
- package/dist/tui/components/alias-dialog.js.map +0 -1
- package/dist/tui/components/dashboard.js +0 -201
- package/dist/tui/components/dashboard.js.map +0 -1
- package/dist/tui/components/priority-screen.js +0 -120
- package/dist/tui/components/priority-screen.js.map +0 -1
- package/dist/tui/components/provider-model-dialog.js +0 -45
- package/dist/tui/components/provider-model-dialog.js.map +0 -1
- package/dist/tui/components/rename-dialog.js +0 -24
- package/dist/tui/components/rename-dialog.js.map +0 -1
- package/dist/tui/components/sidebar.js +0 -27
- package/dist/tui/components/sidebar.js.map +0 -1
- package/dist/tui/components/status-indicator.js +0 -59
- package/dist/tui/components/status-indicator.js.map +0 -1
- package/dist/tui/components/usage-bar.js +0 -7
- package/dist/tui/components/usage-bar.js.map +0 -1
- package/dist/tui/components/usage-display.js +0 -32
- package/dist/tui/components/usage-display.js.map +0 -1
package/package.json
CHANGED
|
@@ -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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"}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "@opentui/solid/jsx-runtime";
|
|
2
|
-
import { createMemo, createSignal, For, onCleanup, onMount, Show } from "solid-js";
|
|
3
|
-
import { getBalancingEnabled, listProviderPriority, moveProvider, resolveActiveSelection, setBalancingEnabled, setProviderEnabled, } from "../../core/priority";
|
|
4
|
-
import { movePriorityFocus, prioritySelectionMarker, reducePriorityKey, } from "../priority-keys";
|
|
5
|
-
import { dashboardLayoutMode } from "../responsive";
|
|
6
|
-
import { selectedRowColors } from "../selection-colors";
|
|
7
|
-
function modelLabel(api, entry) {
|
|
8
|
-
if (!entry.modelID)
|
|
9
|
-
return "(sem modelo — Enter)";
|
|
10
|
-
const provider = api.state.provider.find((item) => item.id === entry.providerID);
|
|
11
|
-
const model = provider?.models?.[entry.modelID];
|
|
12
|
-
return model?.name ?? entry.modelID;
|
|
13
|
-
}
|
|
14
|
-
export function PriorityScreen(props) {
|
|
15
|
-
const theme = () => props.api.theme.current;
|
|
16
|
-
const selectedColors = () => selectedRowColors(theme());
|
|
17
|
-
const db = props.state.db;
|
|
18
|
-
const [entries, setEntries] = createSignal(listProviderPriority(db));
|
|
19
|
-
const [balancing, setBalancing] = createSignal(getBalancingEnabled(db));
|
|
20
|
-
const [cursor, setCursor] = createSignal(0);
|
|
21
|
-
const [focusArea, setFocusArea] = createSignal("content");
|
|
22
|
-
const compact = () => dashboardLayoutMode({
|
|
23
|
-
width: props.api.renderer.width,
|
|
24
|
-
height: props.api.renderer.height,
|
|
25
|
-
}) === "compact";
|
|
26
|
-
const refresh = () => {
|
|
27
|
-
const next = listProviderPriority(db);
|
|
28
|
-
setEntries(next);
|
|
29
|
-
setBalancing(getBalancingEnabled(db));
|
|
30
|
-
setCursor((value) => Math.max(0, Math.min(value, Math.max(0, next.length - 1))));
|
|
31
|
-
};
|
|
32
|
-
refresh();
|
|
33
|
-
const timer = setInterval(refresh, 500);
|
|
34
|
-
onCleanup(() => clearInterval(timer));
|
|
35
|
-
const activeProviderID = createMemo(() => (balancing() ? resolveActiveSelection(db)?.providerID : undefined));
|
|
36
|
-
const current = () => entries()[cursor()];
|
|
37
|
-
const clampCursor = (value) => Math.max(0, Math.min(value, Math.max(0, entries().length - 1)));
|
|
38
|
-
const headerSelected = () => focusArea() === "header";
|
|
39
|
-
const headerMarker = () => prioritySelectionMarker({ focusedArea: focusArea(), itemArea: "header", selected: true });
|
|
40
|
-
const rowMarker = (selected) => prioritySelectionMarker({ focusedArea: focusArea(), itemArea: "content", selected });
|
|
41
|
-
const toggleBalancing = () => {
|
|
42
|
-
setBalancingEnabled(db, !balancing());
|
|
43
|
-
refresh();
|
|
44
|
-
};
|
|
45
|
-
const toggleEnabled = (entry) => {
|
|
46
|
-
if (!entry)
|
|
47
|
-
return;
|
|
48
|
-
setProviderEnabled(db, entry.providerID, !entry.enabled);
|
|
49
|
-
refresh();
|
|
50
|
-
};
|
|
51
|
-
const reorder = (direction) => {
|
|
52
|
-
const entry = current();
|
|
53
|
-
if (!entry)
|
|
54
|
-
return;
|
|
55
|
-
moveProvider(db, entry.providerID, direction);
|
|
56
|
-
refresh();
|
|
57
|
-
setCursor((value) => clampCursor(value + direction));
|
|
58
|
-
};
|
|
59
|
-
const handleKey = (event) => {
|
|
60
|
-
const intent = reducePriorityKey({ name: event.name ?? "", shift: event.shift });
|
|
61
|
-
switch (intent.type) {
|
|
62
|
-
case "move-cursor":
|
|
63
|
-
{
|
|
64
|
-
const next = movePriorityFocus({ area: focusArea(), cursor: cursor(), rowCount: entries().length }, intent.delta);
|
|
65
|
-
setFocusArea(next.area);
|
|
66
|
-
setCursor(clampCursor(next.cursor));
|
|
67
|
-
}
|
|
68
|
-
return;
|
|
69
|
-
case "reorder":
|
|
70
|
-
setFocusArea("content");
|
|
71
|
-
reorder(intent.direction);
|
|
72
|
-
return;
|
|
73
|
-
case "toggle-enabled":
|
|
74
|
-
if (focusArea() === "header")
|
|
75
|
-
return;
|
|
76
|
-
toggleEnabled(current());
|
|
77
|
-
return;
|
|
78
|
-
case "open-model": {
|
|
79
|
-
if (focusArea() === "header")
|
|
80
|
-
return props.onBack();
|
|
81
|
-
const entry = current();
|
|
82
|
-
if (entry)
|
|
83
|
-
props.openModelPicker(entry.providerID);
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
case "toggle-balancing":
|
|
87
|
-
toggleBalancing();
|
|
88
|
-
return;
|
|
89
|
-
case "back":
|
|
90
|
-
props.onBack();
|
|
91
|
-
return;
|
|
92
|
-
default:
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
let container;
|
|
97
|
-
onMount(() => container?.focus?.());
|
|
98
|
-
const Hint = (hintProps) => (_jsx("text", { fg: theme().textMuted, wrapMode: "none", truncate: true, children: hintProps.children }));
|
|
99
|
-
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 })] }));
|
|
100
|
-
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 }));
|
|
101
|
-
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, children: [_jsxs("text", { fg: theme().primary, wrapMode: "none", overflow: "hidden", truncate: true, children: ["opencode-balancer", compact() ? "" : " priority matrix"] }), _jsx(Show, { when: !compact(), children: _jsx(Hint, { children: "Choose one model per provider and order failover priority." }) }), _jsx("box", { height: 1, flexShrink: 0, backgroundColor: headerSelected() ? selectedColors().bg : undefined, onMouseUp: () => {
|
|
102
|
-
setFocusArea("header");
|
|
103
|
-
props.onBack();
|
|
104
|
-
}, children: _jsxs("text", { fg: headerSelected() ? selectedColors().fg : theme().accent, wrapMode: "none", overflow: "hidden", truncate: true, children: [headerMarker(), " [ back to dashboard ]"] }) })] }), _jsxs("box", { flexDirection: "column", gap: 0, paddingBottom: 1, onMouseUp: toggleBalancing, children: [_jsxs("text", { fg: theme().primary, wrapMode: "none", overflow: "hidden", truncate: true, children: ["BALANCING ", balancing() ? "ON" : "OFF"] }), _jsx(Show, { when: !compact(), children: _jsx("text", { fg: theme().textMuted, wrapMode: "none", overflow: "hidden", truncate: true, children: "press B to toggle automatic provider failover" }) })] }), _jsxs("box", { flexDirection: "column", gap: 0, paddingBottom: 1, children: [_jsx(Show, { when: !compact(), children: _jsxs("box", { flexDirection: "row", gap: 2, children: [_jsx("text", { fg: theme().primary, wrapMode: "none", children: "# PROVIDER" }), _jsx("text", { fg: theme().primary, wrapMode: "none", children: "MODEL" }), _jsx("text", { fg: theme().primary, wrapMode: "none", children: "ENABLED" })] }) }), _jsx(Show, { when: entries().length > 0, fallback: _jsx("text", { fg: theme().textMuted, wrapMode: "none", children: "nenhum provider com conta ainda" }), children: _jsx(For, { each: entries(), children: (entry, index) => {
|
|
105
|
-
const selected = () => focusArea() === "content" && index() === cursor();
|
|
106
|
-
const active = () => entry.providerID === activeProviderID();
|
|
107
|
-
const rowColor = () => {
|
|
108
|
-
if (!entry.enabled)
|
|
109
|
-
return theme().textMuted;
|
|
110
|
-
if (active())
|
|
111
|
-
return theme().success;
|
|
112
|
-
return theme().text;
|
|
113
|
-
};
|
|
114
|
-
return (_jsxs(Row, { selected: selected(), onMouseUp: () => {
|
|
115
|
-
setFocusArea("content");
|
|
116
|
-
setCursor(index());
|
|
117
|
-
}, children: [_jsx("box", { width: 1, flexShrink: 0, backgroundColor: selected() ? selectedColors().bg : undefined, children: _jsx("text", { fg: selected() ? selectedColors().fg : theme().accent, wrapMode: "none", children: rowMarker(index() === cursor()) }) }), _jsx("box", { width: 3, flexShrink: 0, backgroundColor: selected() ? selectedColors().bg : undefined, children: _jsxs("text", { fg: selected() ? selectedColors().fg : rowColor(), wrapMode: "none", children: [index() + 1, "."] }) }), _jsx("box", { width: 18, flexShrink: 0, backgroundColor: selected() ? selectedColors().bg : undefined, children: _jsx("text", { fg: selected() ? selectedColors().fg : rowColor(), wrapMode: "none", overflow: "hidden", truncate: true, children: entry.providerID }) }), _jsx("box", { flexGrow: 1, minWidth: 0, backgroundColor: selected() ? selectedColors().bg : undefined, onMouseUp: () => props.openModelPicker(entry.providerID), children: _jsx("text", { fg: selected() ? selectedColors().fg : entry.modelID ? rowColor() : theme().warning, wrapMode: "none", overflow: "hidden", truncate: true, children: modelLabel(props.api, entry) }) }), _jsx("box", { width: 10, flexShrink: 0, backgroundColor: selected() ? selectedColors().bg : undefined, onMouseUp: () => toggleEnabled(entry), children: _jsx("text", { fg: selected() ? selectedColors().fg : entry.enabled ? theme().success : theme().textMuted, wrapMode: "none", overflow: "hidden", truncate: true, children: entry.enabled ? "enabled" : "disabled" }) })] }));
|
|
118
|
-
} }) })] }), _jsx("box", { flexDirection: "column", gap: 0, children: _jsxs(Show, { when: !compact(), fallback: _jsx(Hint, { children: "\u2191\u2193 move \u00B7 Shift+\u2191\u2193 reorder \u00B7 Enter model \u00B7 Space enable \u00B7 Esc back" }), children: [_jsxs("box", { flexDirection: "row", gap: 2, children: [_jsx(Chip, { keyName: "\u2191\u2193", label: "Move" }), _jsx(Chip, { keyName: "Shift+\u2191\u2193", label: "Reorder" }), _jsx(Chip, { keyName: "Enter", label: "Model" }), _jsx(Chip, { keyName: "Space", label: "Enable" }), _jsx(Chip, { keyName: "Esc", label: "Back" })] }), _jsx(Hint, { children: headerSelected() ? "Enter returns to the dashboard." : "selected provider controls the next automatic failover target." })] }) })] }));
|
|
119
|
-
}
|
|
120
|
-
//# sourceMappingURL=priority-screen.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"priority-screen.js","sourceRoot":"","sources":["../../../src/tui/components/priority-screen.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "@opentui/solid/jsx-runtime";
|
|
2
|
-
import { setSelectedModel } from "../../core/accounts";
|
|
3
|
-
import { createNativeModelApplier } from "../native-model-apply";
|
|
4
|
-
import { providerModelOptions } from "../provider-models";
|
|
5
|
-
export function openProviderModelDialog(api, state, providerID, options = {}) {
|
|
6
|
-
const modelOptions = providerModelOptions(api.state.provider, providerID);
|
|
7
|
-
const providerName = modelOptions[0]?.providerName ?? providerID;
|
|
8
|
-
const applyNativeSelection = options.applyNativeSelection ?? createNativeModelApplier(api);
|
|
9
|
-
api.ui.dialog.setSize("medium");
|
|
10
|
-
api.ui.dialog.replace(() => (_jsx(api.ui.DialogSelect, { title: `Select ${providerName} model`, placeholder: `Search ${providerName} models`, flat: true, skipFilter: false, options: modelOptions.map((option) => ({
|
|
11
|
-
title: option.title,
|
|
12
|
-
description: option.providerName,
|
|
13
|
-
value: option,
|
|
14
|
-
footer: `${option.providerID}/${option.modelID}`,
|
|
15
|
-
})), onSelect: (option) => {
|
|
16
|
-
const model = {
|
|
17
|
-
providerID: option.value.providerID,
|
|
18
|
-
modelID: option.value.modelID,
|
|
19
|
-
};
|
|
20
|
-
// Persist first: in manual mode this stores the selected model;
|
|
21
|
-
// priority mode injects its own persistence callback.
|
|
22
|
-
if (options.onSelected)
|
|
23
|
-
options.onSelected(model);
|
|
24
|
-
else
|
|
25
|
-
setSelectedModel(state.db, model.providerID, model.modelID);
|
|
26
|
-
state.refresh();
|
|
27
|
-
// Close our picker, then replay the choice into opencode's native
|
|
28
|
-
// model dialog so its bottom model bar reflects the selection.
|
|
29
|
-
api.ui.dialog.clear();
|
|
30
|
-
void Promise.resolve(applyNativeSelection(model, option.value.title)).then((applied) => {
|
|
31
|
-
if (applied) {
|
|
32
|
-
api.ui.toast({
|
|
33
|
-
variant: "success",
|
|
34
|
-
message: `Switched to ${option.value.providerName}/${option.value.title}.`,
|
|
35
|
-
});
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
api.ui.toast({
|
|
39
|
-
variant: "warning",
|
|
40
|
-
message: `Selected ${option.value.providerName}/${option.value.title}; prompts will use it, but opencode's model bar may not have refreshed.`,
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
} })));
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=provider-model-dialog.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provider-model-dialog.js","sourceRoot":"","sources":["../../../src/tui/components/provider-model-dialog.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAA2B,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EAAE,oBAAoB,EAA4B,MAAM,oBAAoB,CAAC;AAUpF,MAAM,UAAU,uBAAuB,CACnC,GAAiB,EACjB,KAA+C,EAC/C,UAAkB,EAClB,UAA0C,EAAE;IAE5C,MAAM,YAAY,GAAG,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC1E,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,IAAI,UAAU,CAAC;IACjE,MAAM,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,IAAI,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAE3F,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CACxB,KAAC,GAAG,CAAC,EAAE,CAAC,YAAY,IAChB,KAAK,EAAE,UAAU,YAAY,QAAQ,EACrC,WAAW,EAAE,UAAU,YAAY,SAAS,EAC5C,IAAI,QACJ,UAAU,EAAE,KAAK,EACjB,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACnC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,WAAW,EAAE,MAAM,CAAC,YAAY;YAChC,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,OAAO,EAAE;SACnD,CAAC,CAAC,EACH,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YACjB,MAAM,KAAK,GAAG;gBACV,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;gBACnC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO;aAChC,CAAC;YAEF,gEAAgE;YAChE,sDAAsD;YACtD,IAAI,OAAO,CAAC,UAAU;gBAAE,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;;gBAC7C,gBAAgB,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACjE,KAAK,CAAC,OAAO,EAAE,CAAC;YAEhB,kEAAkE;YAClE,+DAA+D;YAC/D,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAEtB,KAAK,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;gBACnF,IAAI,OAAO,EAAE,CAAC;oBACV,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC;wBACT,OAAO,EAAE,SAAS;wBAClB,OAAO,EAAE,eAAe,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG;qBAC7E,CAAC,CAAC;oBACH,OAAO;gBACX,CAAC;gBACD,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC;oBACT,OAAO,EAAE,SAAS;oBAClB,OAAO,EAAE,YAAY,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,yEAAyE;iBAChJ,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,GACH,CACL,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { jsxs as _jsxs, jsx as _jsx } from "@opentui/solid/jsx-runtime";
|
|
2
|
-
import { normalizeAlias } from "../../core/accounts";
|
|
3
|
-
import { renameAccountFromTui } from "../actions";
|
|
4
|
-
function errorMessage(error) {
|
|
5
|
-
return error instanceof Error && error.message ? error.message : "Failed to rename account";
|
|
6
|
-
}
|
|
7
|
-
export function openRenameDialog(api, state, providerID, alias) {
|
|
8
|
-
api.ui.dialog.setSize("medium");
|
|
9
|
-
api.ui.dialog.replace(() => (_jsx(api.ui.DialogPrompt, { title: "Rename account", placeholder: "account alias", description: () => (_jsxs("text", { fg: api.theme.current.textMuted, wrapMode: "none", children: ["Choose a new alias for ", providerID, "/", alias, "."] })), onCancel: () => api.ui.dialog.clear(), onConfirm: (value) => {
|
|
10
|
-
const nextAlias = normalizeAlias(value);
|
|
11
|
-
if (!nextAlias) {
|
|
12
|
-
api.ui.toast({ variant: "error", message: "Alias is required" });
|
|
13
|
-
return;
|
|
14
|
-
}
|
|
15
|
-
try {
|
|
16
|
-
renameAccountFromTui(api, state, providerID, alias, nextAlias);
|
|
17
|
-
api.ui.dialog.clear();
|
|
18
|
-
}
|
|
19
|
-
catch (error) {
|
|
20
|
-
api.ui.toast({ variant: "error", message: errorMessage(error) });
|
|
21
|
-
}
|
|
22
|
-
} })));
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=rename-dialog.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rename-dialog.js","sourceRoot":"","sources":["../../../src/tui/components/rename-dialog.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGlD,SAAS,YAAY,CAAC,KAAc;IAChC,OAAO,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC;AAChG,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAiB,EAAE,KAAuB,EAAE,UAAkB,EAAE,KAAa;IAC1G,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CACxB,KAAC,GAAG,CAAC,EAAE,CAAC,YAAY,IAChB,KAAK,EAAC,gBAAgB,EACtB,WAAW,EAAC,eAAe,EAC3B,WAAW,EAAE,GAAG,EAAE,CAAC,CACf,gBAAM,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAC,MAAM,wCAC1B,UAAU,OAAG,KAAK,SACvC,CACV,EACD,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EACrC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YACjB,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACb,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;gBACjE,OAAO;YACX,CAAC;YAED,IAAI,CAAC;gBACD,oBAAoB,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;gBAC/D,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACrE,CAAC;QACL,CAAC,GACH,CACL,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { jsxs as _jsxs, jsx as _jsx } from "@opentui/solid/jsx-runtime";
|
|
2
|
-
import { createSignal, For, onCleanup, Show } from "solid-js";
|
|
3
|
-
import { listAccounts } from "../../core/accounts";
|
|
4
|
-
import { getBalancingEnabled } from "../../core/priority";
|
|
5
|
-
import { getUsageSnapshot } from "../../core/usage/store";
|
|
6
|
-
import { UsageSnapshotBar } from "./usage-display";
|
|
7
|
-
export function BalancerSidebar(props) {
|
|
8
|
-
const theme = () => props.api.theme.current;
|
|
9
|
-
const [accounts, setAccounts] = createSignal(listAccounts(props.state.db));
|
|
10
|
-
const [usage, setUsage] = createSignal({});
|
|
11
|
-
const [balancingEnabled, setBalancingEnabled] = createSignal(getBalancingEnabled(props.state.db));
|
|
12
|
-
const refreshSidebar = () => {
|
|
13
|
-
const nextAccounts = listAccounts(props.state.db);
|
|
14
|
-
setAccounts(nextAccounts);
|
|
15
|
-
setBalancingEnabled(getBalancingEnabled(props.state.db));
|
|
16
|
-
setUsage(Object.fromEntries(nextAccounts.map((account) => [
|
|
17
|
-
`${account.providerID}/${account.alias}`,
|
|
18
|
-
getUsageSnapshot(props.state.db, account.providerID, account.alias),
|
|
19
|
-
])));
|
|
20
|
-
};
|
|
21
|
-
refreshSidebar();
|
|
22
|
-
const timer = setInterval(refreshSidebar, 500);
|
|
23
|
-
onCleanup(() => clearInterval(timer));
|
|
24
|
-
const Button = (buttonProps) => (_jsx("box", { onMouseUp: buttonProps.onClick, paddingLeft: 0, paddingRight: 0, children: _jsxs("text", { fg: theme().accent, wrapMode: "none", truncate: true, children: ["[ ", buttonProps.label, " ]"] }) }));
|
|
25
|
-
return (_jsxs("box", { flexDirection: "column", gap: 1, children: [_jsxs("box", { flexDirection: "column", gap: 0, children: [_jsx("text", { fg: theme().text, wrapMode: "none", children: "Balancer" }), _jsx("text", { fg: balancingEnabled() ? theme().success : theme().textMuted, wrapMode: "none", children: balancingEnabled() ? "ON" : "OFF" }), _jsx(Button, { label: "dashboard", onClick: () => props.openDashboard() }), _jsx("text", { fg: theme().textMuted, wrapMode: "none", children: "ctrl+b" })] }), _jsxs("box", { flexDirection: "column", gap: 0, children: [_jsx("text", { fg: theme().textMuted, wrapMode: "none", children: "Accounts" }), _jsx(Show, { when: accounts().length > 0, fallback: _jsx("text", { fg: theme().textMuted, wrapMode: "none", children: "none" }), children: _jsx(For, { each: accounts(), children: (account) => (_jsxs("box", { flexDirection: "column", gap: 0, onMouseUp: () => props.activateAccount(account.providerID, account.alias), children: [_jsxs("text", { fg: theme().text, wrapMode: "none", truncate: true, children: [_jsx("span", { style: { fg: theme().primary }, children: account.providerID }), "/", _jsx("span", { style: { fg: account.disabled ? theme().textMuted : theme().text }, children: account.alias }), " ", _jsxs("span", { style: { fg: theme().textMuted }, children: ["(", account.authType, ")"] })] }), _jsx(UsageSnapshotBar, { theme: theme(), snapshot: usage()[`${account.providerID}/${account.alias}`] })] })) }) })] })] }));
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=sidebar.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar.js","sourceRoot":"","sources":["../../../src/tui/components/sidebar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "@opentui/solid/jsx-runtime";
|
|
2
|
-
import { createSignal, onCleanup } from "solid-js";
|
|
3
|
-
import { getActiveAccount, getSelectedAccount } from "../../core/accounts";
|
|
4
|
-
import { getBalancingEnabled, resolveActiveSelection } from "../../core/priority";
|
|
5
|
-
import { getUsageSnapshot } from "../../core/usage/store";
|
|
6
|
-
import { formatBalancerStatus } from "../status-format";
|
|
7
|
-
import { formatUsageBar } from "../usage-format";
|
|
8
|
-
import { snapshotPercent } from "./usage-display";
|
|
9
|
-
export function BalancerStatusIndicator(props) {
|
|
10
|
-
const [selected, setSelected] = createSignal();
|
|
11
|
-
const [sessionActive, setSessionActive] = createSignal();
|
|
12
|
-
const [balancing, setBalancing] = createSignal();
|
|
13
|
-
const [usage, setUsage] = createSignal();
|
|
14
|
-
const providerID = () => (typeof props.providerID === "function" ? props.providerID() : props.providerID);
|
|
15
|
-
const refresh = () => {
|
|
16
|
-
const currentProviderID = providerID();
|
|
17
|
-
const nextSelected = getSelectedAccount(props.state.db);
|
|
18
|
-
const nextSessionActive = currentProviderID ? getActiveAccount(props.state.db, currentProviderID) : undefined;
|
|
19
|
-
const nextBalancing = getBalancingEnabled(props.state.db)
|
|
20
|
-
? resolveActiveSelection(props.state.db, undefined, currentProviderID)
|
|
21
|
-
: undefined;
|
|
22
|
-
const usageAccount = nextBalancing?.account ?? nextSelected ?? nextSessionActive;
|
|
23
|
-
setSelected(nextSelected);
|
|
24
|
-
setSessionActive(nextSessionActive);
|
|
25
|
-
setBalancing(nextBalancing);
|
|
26
|
-
setUsage(usageAccount
|
|
27
|
-
? formatUsageBar(snapshotPercent(getUsageSnapshot(props.state.db, usageAccount.providerID, usageAccount.alias)), 4)
|
|
28
|
-
: undefined);
|
|
29
|
-
};
|
|
30
|
-
refresh();
|
|
31
|
-
const timer = setInterval(refresh, 500);
|
|
32
|
-
onCleanup(() => clearInterval(timer));
|
|
33
|
-
const status = () => {
|
|
34
|
-
return formatBalancerStatus({
|
|
35
|
-
selected: selected(),
|
|
36
|
-
sessionActive: sessionActive(),
|
|
37
|
-
sessionProviderID: providerID(),
|
|
38
|
-
balancing: balancing()
|
|
39
|
-
? {
|
|
40
|
-
providerID: balancing().providerID,
|
|
41
|
-
alias: balancing().account.alias,
|
|
42
|
-
modelID: balancing().modelID,
|
|
43
|
-
}
|
|
44
|
-
: undefined,
|
|
45
|
-
usage: usage(),
|
|
46
|
-
});
|
|
47
|
-
};
|
|
48
|
-
const color = () => {
|
|
49
|
-
if (balancing())
|
|
50
|
-
return props.api.theme.current.success;
|
|
51
|
-
if (providerID())
|
|
52
|
-
return sessionActive() ? props.api.theme.current.success : props.api.theme.current.textMuted;
|
|
53
|
-
if (!selected())
|
|
54
|
-
return props.api.theme.current.textMuted;
|
|
55
|
-
return props.api.theme.current.success;
|
|
56
|
-
};
|
|
57
|
-
return (_jsx("text", { fg: color(), wrapMode: "none", truncate: true, children: status() }));
|
|
58
|
-
}
|
|
59
|
-
//# sourceMappingURL=status-indicator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"status-indicator.js","sourceRoot":"","sources":["../../../src/tui/components/status-indicator.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "@opentui/solid/jsx-runtime";
|
|
2
|
-
import { formatUsageBar, truncateMiddle } from "../usage-format";
|
|
3
|
-
export function UsageBar(props) {
|
|
4
|
-
const color = () => (props.muted || props.percent === undefined ? props.theme.textMuted : props.theme.primary);
|
|
5
|
-
return (_jsxs("text", { fg: color(), wrapMode: "none", overflow: "hidden", truncate: true, children: [formatUsageBar(props.percent, 8), " ", _jsx("span", { style: { fg: props.theme.textMuted }, children: truncateMiddle(props.label, 34) })] }));
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=usage-bar.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usage-bar.js","sourceRoot":"","sources":["../../../src/tui/components/usage-bar.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjE,MAAM,UAAU,QAAQ,CAAC,KAAmF;IACxG,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/G,OAAO,CACH,gBAAM,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAC,MAAM,EAAC,QAAQ,EAAC,QAAQ,EAAC,QAAQ,mBACxD,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAE,eAAM,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,YAAG,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,GAAQ,IACpH,CACV,CAAC;AACN,CAAC"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx } from "@opentui/solid/jsx-runtime";
|
|
2
|
-
import { UsageBar } from "./usage-bar";
|
|
3
|
-
export function snapshotPercent(snapshot) {
|
|
4
|
-
if (!snapshot || snapshot.confidence === "unavailable")
|
|
5
|
-
return undefined;
|
|
6
|
-
if (snapshot.usedPercent !== undefined)
|
|
7
|
-
return snapshot.usedPercent;
|
|
8
|
-
if (snapshot.usedTokens !== undefined && snapshot.remainingTokens !== undefined) {
|
|
9
|
-
const total = snapshot.usedTokens + snapshot.remainingTokens;
|
|
10
|
-
if (total > 0)
|
|
11
|
-
return (snapshot.usedTokens / total) * 100;
|
|
12
|
-
}
|
|
13
|
-
return undefined;
|
|
14
|
-
}
|
|
15
|
-
export function snapshotLabel(snapshot) {
|
|
16
|
-
if (!snapshot)
|
|
17
|
-
return "usage unavailable";
|
|
18
|
-
if (snapshot.confidence === "unavailable")
|
|
19
|
-
return snapshot.message;
|
|
20
|
-
const parts = [];
|
|
21
|
-
if (snapshot.usedTokens !== undefined)
|
|
22
|
-
parts.push(`used ${snapshot.usedTokens}`);
|
|
23
|
-
if (snapshot.remainingTokens !== undefined)
|
|
24
|
-
parts.push(`remaining ${snapshot.remainingTokens}`);
|
|
25
|
-
if (snapshot.planName)
|
|
26
|
-
parts.push(snapshot.planName);
|
|
27
|
-
return parts.length > 0 ? parts.join(" · ") : snapshot.message;
|
|
28
|
-
}
|
|
29
|
-
export function UsageSnapshotBar(props) {
|
|
30
|
-
return _jsx(UsageBar, { theme: props.theme, percent: snapshotPercent(props.snapshot), label: snapshotLabel(props.snapshot), muted: props.muted });
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=usage-display.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usage-display.js","sourceRoot":"","sources":["../../../src/tui/components/usage-display.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,UAAU,eAAe,CAAC,QAA2C;IACvE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,UAAU,KAAK,aAAa;QAAE,OAAO,SAAS,CAAC;IACzE,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC,WAAW,CAAC;IACpE,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,IAAI,QAAQ,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QAC9E,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC;QAC7D,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO,CAAC,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;IAC9D,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAA2C;IACrE,IAAI,CAAC,QAAQ;QAAE,OAAO,mBAAmB,CAAC;IAC1C,IAAI,QAAQ,CAAC,UAAU,KAAK,aAAa;QAAE,OAAO,QAAQ,CAAC,OAAO,CAAC;IACnE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACjF,IAAI,QAAQ,CAAC,eAAe,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,aAAa,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;IAChG,IAAI,QAAQ,CAAC,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAoF;IACjH,OAAO,KAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,GAAI,CAAC;AAChJ,CAAC"}
|