@baizor/cc-switch 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +14 -2
- package/dist/index.js.map +1 -1
- package/dist/openTuiDashboard.d.ts +7 -0
- package/dist/openTuiDashboard.js +237 -0
- package/dist/openTuiDashboard.js.map +1 -0
- package/dist/state.js +21 -1
- package/dist/state.js.map +1 -1
- package/dist/switcher.d.ts +1 -1
- package/dist/switcher.js +21 -9
- package/dist/switcher.js.map +1 -1
- package/dist/tui.d.ts +1 -1
- package/dist/tui.js +154 -52
- package/dist/tui.js.map +1 -1
- package/package.json +2 -1
package/dist/index.js
CHANGED
|
@@ -11,11 +11,12 @@ import { runMonitor } from "./monitor.js";
|
|
|
11
11
|
import { switchToToken } from "./switcher.js";
|
|
12
12
|
import { maskToken } from "./util.js";
|
|
13
13
|
import { recentLogs } from "./logger.js";
|
|
14
|
+
import { diagnoseOpenTuiRuntime } from "./openTuiDashboard.js";
|
|
14
15
|
const program = new Command();
|
|
15
16
|
program
|
|
16
17
|
.name("cc-switch")
|
|
17
18
|
.description("Manage multiple Claude Code subscription OAuth tokens")
|
|
18
|
-
.version("0.1.
|
|
19
|
+
.version("0.1.2")
|
|
19
20
|
.option("--config <path>", "Path to cc-switch .env config");
|
|
20
21
|
program.action(async () => {
|
|
21
22
|
await dashboard(program.opts().config);
|
|
@@ -26,10 +27,13 @@ program.command("config").description("Open the interactive configuration UI").a
|
|
|
26
27
|
const add = program.command("add").description("Add resources");
|
|
27
28
|
add
|
|
28
29
|
.command("subscription [token]")
|
|
29
|
-
.description("Add a Claude Code OAuth token")
|
|
30
|
+
.description("Add a Claude Code OAuth token generated by `claude setup-token`")
|
|
30
31
|
.option("--label <label>", "Subscription label")
|
|
31
32
|
.action(async (token, options) => {
|
|
32
33
|
const config = readConfig(program.opts().config);
|
|
34
|
+
if (!token && process.stdin.isTTY) {
|
|
35
|
+
console.log("Create a token with `claude setup-token`, approve in the browser, then paste the printed token here.");
|
|
36
|
+
}
|
|
33
37
|
const nextToken = token || (await password({ message: "Claude Code OAuth token", mask: "*" }));
|
|
34
38
|
const label = options.label ?? (await input({ message: "Label", default: `Subscription ${config.tokens.length}` }));
|
|
35
39
|
writeConfig(addToken(config, nextToken, label));
|
|
@@ -120,6 +124,14 @@ service.command("restart").action(() => {
|
|
|
120
124
|
program.command("logs").description("Show recent cc-switch logs").option("-n, --lines <lines>", "Number of lines", "80").action((options) => {
|
|
121
125
|
console.log(recentLogs(Number(options.lines)));
|
|
122
126
|
});
|
|
127
|
+
const doctor = program.command("doctor").description("Diagnose local cc-switch runtime support");
|
|
128
|
+
doctor.command("tui").description("Check whether the OpenTUI dashboard can run").action(async () => {
|
|
129
|
+
const result = await diagnoseOpenTuiRuntime();
|
|
130
|
+
console.log(result.ok ? "OpenTUI: ok" : "OpenTUI: unavailable");
|
|
131
|
+
console.log(result.message);
|
|
132
|
+
if (!result.ok)
|
|
133
|
+
process.exitCode = 1;
|
|
134
|
+
});
|
|
123
135
|
program.command("monitor").description("Run the background monitor").option("--once", "Run one monitor iteration").action(async (options) => {
|
|
124
136
|
await runMonitor(program.opts().config, Boolean(options.once));
|
|
125
137
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC1H,OAAO,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AppConfig, AppState } from "./types.js";
|
|
2
|
+
export type DashboardAction = "config" | "add" | "remove" | "switch" | "install-service" | "uninstall-service" | "refresh" | "logs" | "quit";
|
|
3
|
+
export declare function runOpenTuiDashboard(config: AppConfig, state: AppState): Promise<DashboardAction>;
|
|
4
|
+
export declare function diagnoseOpenTuiRuntime(): Promise<{
|
|
5
|
+
ok: boolean;
|
|
6
|
+
message: string;
|
|
7
|
+
}>;
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { decideSwitch, tokenViews } from "./switcher.js";
|
|
2
|
+
import { serviceStatus } from "./service.js";
|
|
3
|
+
const palette = {
|
|
4
|
+
bg: "#090D13",
|
|
5
|
+
panel: "#111827",
|
|
6
|
+
panel2: "#0F172A",
|
|
7
|
+
border: "#334155",
|
|
8
|
+
text: "#E5E7EB",
|
|
9
|
+
muted: "#94A3B8",
|
|
10
|
+
blue: "#60A5FA",
|
|
11
|
+
cyan: "#22D3EE",
|
|
12
|
+
green: "#34D399",
|
|
13
|
+
amber: "#FBBF24",
|
|
14
|
+
red: "#FB7185",
|
|
15
|
+
violet: "#A78BFA"
|
|
16
|
+
};
|
|
17
|
+
export async function runOpenTuiDashboard(config, state) {
|
|
18
|
+
const opentui = await import("@opentui/core");
|
|
19
|
+
const { createCliRenderer, Box, Text, Select, SelectRenderableEvents } = opentui;
|
|
20
|
+
const renderer = await createCliRenderer({
|
|
21
|
+
exitOnCtrlC: true,
|
|
22
|
+
targetFps: 24,
|
|
23
|
+
maxFps: 30,
|
|
24
|
+
consoleMode: "disabled",
|
|
25
|
+
backgroundColor: palette.bg
|
|
26
|
+
});
|
|
27
|
+
return new Promise((resolve, reject) => {
|
|
28
|
+
let settled = false;
|
|
29
|
+
const finish = async (action) => {
|
|
30
|
+
if (settled)
|
|
31
|
+
return;
|
|
32
|
+
settled = true;
|
|
33
|
+
clearInterval(ticker);
|
|
34
|
+
try {
|
|
35
|
+
await renderer.destroy();
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// Renderer cleanup is best-effort; the action should still continue.
|
|
39
|
+
}
|
|
40
|
+
resolve(action);
|
|
41
|
+
};
|
|
42
|
+
const fail = async (error) => {
|
|
43
|
+
if (settled)
|
|
44
|
+
return;
|
|
45
|
+
settled = true;
|
|
46
|
+
clearInterval(ticker);
|
|
47
|
+
try {
|
|
48
|
+
await renderer.destroy();
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
// Ignore cleanup errors after a rendering failure.
|
|
52
|
+
}
|
|
53
|
+
reject(error);
|
|
54
|
+
};
|
|
55
|
+
const views = tokenViews(config, state);
|
|
56
|
+
const service = state.serviceStatusCache || serviceStatus();
|
|
57
|
+
const decision = decideSwitch(config, state);
|
|
58
|
+
const actions = dashboardActions(Boolean(service.installed));
|
|
59
|
+
const menu = Select({
|
|
60
|
+
width: 34,
|
|
61
|
+
height: 16,
|
|
62
|
+
options: actions,
|
|
63
|
+
showDescription: true,
|
|
64
|
+
showScrollIndicator: false,
|
|
65
|
+
wrapSelection: true,
|
|
66
|
+
backgroundColor: palette.panel,
|
|
67
|
+
focusedBackgroundColor: palette.panel,
|
|
68
|
+
textColor: palette.text,
|
|
69
|
+
selectedTextColor: "#08111F",
|
|
70
|
+
selectedBackgroundColor: palette.cyan,
|
|
71
|
+
descriptionColor: palette.muted,
|
|
72
|
+
selectedDescriptionColor: "#102A3A",
|
|
73
|
+
itemSpacing: 1
|
|
74
|
+
});
|
|
75
|
+
menu.on(SelectRenderableEvents.ITEM_SELECTED, (_index, option) => {
|
|
76
|
+
void finish(option.value || "refresh");
|
|
77
|
+
});
|
|
78
|
+
renderer.keyInput.on("keypress", (key) => {
|
|
79
|
+
if (key.name === "q" || key.name === "escape")
|
|
80
|
+
void finish("quit");
|
|
81
|
+
if (key.name === "r")
|
|
82
|
+
void finish("refresh");
|
|
83
|
+
if (key.ctrl && key.name === "c")
|
|
84
|
+
void finish("quit");
|
|
85
|
+
});
|
|
86
|
+
const ticker = setInterval(() => {
|
|
87
|
+
renderer.requestRender();
|
|
88
|
+
}, 1200);
|
|
89
|
+
try {
|
|
90
|
+
renderer.root.add(buildDashboard(opentui, config, state, views, decision.reason, service, menu));
|
|
91
|
+
menu.focus();
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
void fail(error);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
export async function diagnoseOpenTuiRuntime() {
|
|
99
|
+
try {
|
|
100
|
+
const opentui = await import("@opentui/core");
|
|
101
|
+
const renderer = await opentui.createCliRenderer({
|
|
102
|
+
screenMode: "main-screen",
|
|
103
|
+
consoleMode: "disabled",
|
|
104
|
+
width: 80,
|
|
105
|
+
height: 24,
|
|
106
|
+
exitOnCtrlC: false,
|
|
107
|
+
clearOnShutdown: true
|
|
108
|
+
});
|
|
109
|
+
await renderer.destroy();
|
|
110
|
+
return { ok: true, message: "OpenTUI native renderer initialized successfully." };
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
114
|
+
return {
|
|
115
|
+
ok: false,
|
|
116
|
+
message: `${message}\nNode ${process.version}. OpenTUI currently needs a runtime with native FFI support; on Node, use Node 26.4+ with --experimental-ffi.`
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
function buildDashboard(opentui, config, state, views, decision, service, menu) {
|
|
121
|
+
const { Box, Text } = opentui;
|
|
122
|
+
const active = views.find((view) => view.active);
|
|
123
|
+
return Box({
|
|
124
|
+
width: "100%",
|
|
125
|
+
height: "100%",
|
|
126
|
+
flexDirection: "column",
|
|
127
|
+
backgroundColor: palette.bg,
|
|
128
|
+
padding: 1,
|
|
129
|
+
gap: 1
|
|
130
|
+
}, Box({
|
|
131
|
+
height: 5,
|
|
132
|
+
border: true,
|
|
133
|
+
borderStyle: "rounded",
|
|
134
|
+
borderColor: palette.blue,
|
|
135
|
+
backgroundColor: palette.panel,
|
|
136
|
+
padding: 1,
|
|
137
|
+
flexDirection: "row",
|
|
138
|
+
justifyContent: "space-between"
|
|
139
|
+
}, Text({ content: "◆ cc-switch", fg: palette.cyan }), Text({ content: `mode ${config.switchingMode} poll ${config.pollSeconds}s tokens ${config.tokens.length}`, fg: palette.muted }), Text({
|
|
140
|
+
content: `service ${service.installed ? "installed" : "off"} / ${service.running ? "running" : "stopped"}`,
|
|
141
|
+
fg: service.running ? palette.green : palette.amber
|
|
142
|
+
})), Box({ flexGrow: 1, flexDirection: "row", gap: 1 }, Box({
|
|
143
|
+
width: 38,
|
|
144
|
+
border: true,
|
|
145
|
+
borderStyle: "rounded",
|
|
146
|
+
borderColor: palette.violet,
|
|
147
|
+
title: "Commands",
|
|
148
|
+
titleColor: palette.violet,
|
|
149
|
+
backgroundColor: palette.panel,
|
|
150
|
+
padding: 1
|
|
151
|
+
}, menu), Box({ flexGrow: 1, flexDirection: "column", gap: 1 }, Box({
|
|
152
|
+
height: 8,
|
|
153
|
+
border: true,
|
|
154
|
+
borderStyle: "rounded",
|
|
155
|
+
borderColor: palette.cyan,
|
|
156
|
+
title: "Active subscription",
|
|
157
|
+
titleColor: palette.cyan,
|
|
158
|
+
backgroundColor: palette.panel2,
|
|
159
|
+
padding: 1,
|
|
160
|
+
flexDirection: "column"
|
|
161
|
+
}, Text({ content: active ? `${active.label} ${active.fingerprint}` : "No active subscription", fg: palette.text }), Text({ content: active ? `5h ${bar(active.fiveHourUsed, 28)} ${active.fiveHourUsed}` : "Run claude setup-token, then add a token.", fg: active ? healthColor(active.health) : palette.amber }), Text({ content: active ? `7d ${bar(active.weeklyUsed, 28)} ${active.weeklyUsed}` : "Tokens are masked and stored in your cc-switch config.", fg: active ? healthColor(active.health) : palette.muted }), Text({ content: `decision: ${decision}`, fg: palette.muted })), Box({
|
|
162
|
+
flexGrow: 1,
|
|
163
|
+
border: true,
|
|
164
|
+
borderStyle: "rounded",
|
|
165
|
+
borderColor: palette.border,
|
|
166
|
+
title: "Subscription pool",
|
|
167
|
+
titleColor: palette.blue,
|
|
168
|
+
backgroundColor: palette.panel,
|
|
169
|
+
padding: 1,
|
|
170
|
+
flexDirection: "column",
|
|
171
|
+
gap: 1
|
|
172
|
+
}, ...subscriptionRows(opentui, views)))), Box({
|
|
173
|
+
height: 4,
|
|
174
|
+
border: true,
|
|
175
|
+
borderStyle: "rounded",
|
|
176
|
+
borderColor: palette.border,
|
|
177
|
+
backgroundColor: palette.panel,
|
|
178
|
+
padding: 1,
|
|
179
|
+
flexDirection: "row",
|
|
180
|
+
justifyContent: "space-between"
|
|
181
|
+
}, Text({ content: "q/esc quit r refresh ↑/↓ choose enter run", fg: palette.muted }), Text({ content: `status-line ${state.statusLine.installed ? "installed" : "not installed"}`, fg: state.statusLine.installed ? palette.green : palette.amber })));
|
|
182
|
+
}
|
|
183
|
+
function subscriptionRows(opentui, views) {
|
|
184
|
+
const { Box, Text } = opentui;
|
|
185
|
+
if (!views.length) {
|
|
186
|
+
return [
|
|
187
|
+
Text({
|
|
188
|
+
content: "No subscriptions yet. Choose Add token and paste the value from `claude setup-token`.",
|
|
189
|
+
fg: palette.amber
|
|
190
|
+
})
|
|
191
|
+
];
|
|
192
|
+
}
|
|
193
|
+
return views.map((view) => Box({
|
|
194
|
+
height: 5,
|
|
195
|
+
border: true,
|
|
196
|
+
borderStyle: "single",
|
|
197
|
+
borderColor: view.active ? palette.green : palette.border,
|
|
198
|
+
backgroundColor: view.active ? "#10251C" : palette.panel2,
|
|
199
|
+
padding: 1,
|
|
200
|
+
flexDirection: "column"
|
|
201
|
+
}, Text({
|
|
202
|
+
content: `${view.active ? "ACTIVE" : "STANDBY"} ${view.index} ${view.label} ${view.fingerprint}`,
|
|
203
|
+
fg: view.active ? palette.green : palette.text
|
|
204
|
+
}), Text({ content: `5h ${bar(view.fiveHourUsed, 22)} ${view.fiveHourUsed} reset ${view.resetEta}`, fg: healthColor(view.health) }), Text({ content: `7d ${bar(view.weeklyUsed, 22)} ${view.weeklyUsed} telemetry ${view.lastTelemetry}`, fg: healthColor(view.health) })));
|
|
205
|
+
}
|
|
206
|
+
function dashboardActions(serviceInstalled) {
|
|
207
|
+
return [
|
|
208
|
+
{ name: "Config", description: "Thresholds, labels, paths, service settings", value: "config" },
|
|
209
|
+
{ name: "Add token", description: "Use `claude setup-token`, then paste token", value: "add" },
|
|
210
|
+
{ name: "Remove token", description: "Pick a saved subscription to delete", value: "remove" },
|
|
211
|
+
{ name: "Switch now", description: "Choose the active Claude Code token", value: "switch" },
|
|
212
|
+
{
|
|
213
|
+
name: serviceInstalled ? "Uninstall service" : "Install service",
|
|
214
|
+
description: "Manage the per-user background monitor",
|
|
215
|
+
value: serviceInstalled ? "uninstall-service" : "install-service"
|
|
216
|
+
},
|
|
217
|
+
{ name: "Refresh", description: "Reload config, state, and cached telemetry", value: "refresh" },
|
|
218
|
+
{ name: "Logs", description: "Inspect recent monitor/service logs", value: "logs" },
|
|
219
|
+
{ name: "Quit", description: "Close the dashboard", value: "quit" }
|
|
220
|
+
];
|
|
221
|
+
}
|
|
222
|
+
function bar(percentText, width) {
|
|
223
|
+
const match = /^(\d+)%$/.exec(percentText);
|
|
224
|
+
if (!match)
|
|
225
|
+
return "░".repeat(width);
|
|
226
|
+
const value = Math.max(0, Math.min(100, Number(match[1])));
|
|
227
|
+
const filled = Math.round((value / 100) * width);
|
|
228
|
+
return `${"█".repeat(filled)}${"░".repeat(width - filled)}`;
|
|
229
|
+
}
|
|
230
|
+
function healthColor(health) {
|
|
231
|
+
if (health === "ok")
|
|
232
|
+
return palette.green;
|
|
233
|
+
if (health === "low")
|
|
234
|
+
return palette.red;
|
|
235
|
+
return palette.amber;
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=openTuiDashboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openTuiDashboard.js","sourceRoot":"","sources":["../src/openTuiDashboard.ts"],"names":[],"mappings":"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"}
|
package/dist/state.js
CHANGED
|
@@ -27,11 +27,21 @@ export function saveState(statePath, state) {
|
|
|
27
27
|
fs.writeFileSync(statePath, `${JSON.stringify(state, null, 2)}\n`, "utf8");
|
|
28
28
|
}
|
|
29
29
|
export function recordSnapshot(state, snapshot) {
|
|
30
|
+
const existing = state.snapshots[snapshot.tokenFingerprint];
|
|
31
|
+
const merged = existing
|
|
32
|
+
? {
|
|
33
|
+
...existing,
|
|
34
|
+
...snapshot,
|
|
35
|
+
fiveHour: mergeWindow(existing.fiveHour, snapshot.fiveHour),
|
|
36
|
+
weekly: mergeWindow(existing.weekly, snapshot.weekly),
|
|
37
|
+
capturedAt: snapshot.capturedAt
|
|
38
|
+
}
|
|
39
|
+
: snapshot;
|
|
30
40
|
return {
|
|
31
41
|
...state,
|
|
32
42
|
snapshots: {
|
|
33
43
|
...state.snapshots,
|
|
34
|
-
[snapshot.tokenFingerprint]:
|
|
44
|
+
[snapshot.tokenFingerprint]: merged
|
|
35
45
|
}
|
|
36
46
|
};
|
|
37
47
|
}
|
|
@@ -48,4 +58,14 @@ export function recordServiceStatus(state, cache) {
|
|
|
48
58
|
serviceStatusCache: cache
|
|
49
59
|
};
|
|
50
60
|
}
|
|
61
|
+
function mergeWindow(existing, next) {
|
|
62
|
+
if (!existing)
|
|
63
|
+
return next;
|
|
64
|
+
if (!next)
|
|
65
|
+
return existing;
|
|
66
|
+
return {
|
|
67
|
+
usedPercentage: next.usedPercentage ?? existing.usedPercentage,
|
|
68
|
+
resetsAt: next.resetsAt ?? existing.resetsAt
|
|
69
|
+
};
|
|
70
|
+
}
|
|
51
71
|
//# sourceMappingURL=state.js.map
|
package/dist/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,MAAM,UAAU,UAAU;IACxB,OAAO;QACL,gBAAgB,EAAE,IAAI;QACtB,SAAS,EAAE,EAAE;QACb,aAAa,EAAE,EAAE;QACjB,UAAU,EAAE;YACV,SAAS,EAAE,KAAK;SACjB;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,SAAiB;IACzC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,UAAU,EAAE,CAAC;IACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAsB,CAAC;IACnF,OAAO;QACL,GAAG,UAAU,EAAE;QACf,GAAG,MAAM;QACT,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;QACjC,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,EAAE;QACzC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE;KACtD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,SAAiB,EAAE,KAAe;IAC1D,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAe,EAAE,QAAuB;IACrE,OAAO;QACL,GAAG,KAAK;QACR,SAAS,EAAE;YACT,GAAG,KAAK,CAAC,SAAS;YAClB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,MAAM,UAAU,UAAU;IACxB,OAAO;QACL,gBAAgB,EAAE,IAAI;QACtB,SAAS,EAAE,EAAE;QACb,aAAa,EAAE,EAAE;QACjB,UAAU,EAAE;YACV,SAAS,EAAE,KAAK;SACjB;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,SAAiB;IACzC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,UAAU,EAAE,CAAC;IACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAsB,CAAC;IACnF,OAAO;QACL,GAAG,UAAU,EAAE;QACf,GAAG,MAAM;QACT,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;QACjC,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,EAAE;QACzC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE;KACtD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,SAAiB,EAAE,KAAe;IAC1D,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAe,EAAE,QAAuB;IACrE,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAkB,QAAQ;QACpC,CAAC,CAAC;YACE,GAAG,QAAQ;YACX,GAAG,QAAQ;YACX,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;YAC3D,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;YACrD,UAAU,EAAE,QAAQ,CAAC,UAAU;SAChC;QACH,CAAC,CAAC,QAAQ,CAAC;IAEb,OAAO;QACL,GAAG,KAAK;QACR,SAAS,EAAE;YACT,GAAG,KAAK,CAAC,SAAS;YAClB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM;SACpC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAe,EAAE,KAAyB;IACrE,OAAO;QACL,GAAG,KAAK;QACR,gBAAgB,EAAE,KAAK,CAAC,OAAO;QAC/B,aAAa,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;KAC5D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAe,EAAE,KAAyB;IAC5E,OAAO;QACL,GAAG,KAAK;QACR,kBAAkB,EAAE,KAAK;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,QAAqC,EAAE,IAAiC;IAC3F,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,IAAI,CAAC,IAAI;QAAE,OAAO,QAAQ,CAAC;IAC3B,OAAO;QACL,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,QAAQ,CAAC,cAAc;QAC9D,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ;KAC7C,CAAC;AACJ,CAAC"}
|
package/dist/switcher.d.ts
CHANGED
|
@@ -8,4 +8,4 @@ export declare function decideSwitch(config: AppConfig, state: AppState, now?: D
|
|
|
8
8
|
export declare function tokenViews(config: AppConfig, state: AppState, now?: Date): TokenView[];
|
|
9
9
|
export declare function switchToToken(config: AppConfig, state: AppState, toIndex: number, reason: string): AppState;
|
|
10
10
|
export declare function snapshotForIndex(config: AppConfig, state: AppState, index: number): QuotaSnapshot | undefined;
|
|
11
|
-
export declare function isBelowThreshold(config: AppConfig, snapshot: QuotaSnapshot): boolean;
|
|
11
|
+
export declare function isBelowThreshold(config: AppConfig, snapshot: QuotaSnapshot, now?: Date): boolean;
|
package/dist/switcher.js
CHANGED
|
@@ -18,14 +18,14 @@ export function decideSwitch(config, state, now = new Date()) {
|
|
|
18
18
|
reason: "Active subscription has no official telemetry snapshot yet"
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
|
-
const activeLow = isBelowThreshold(config, activeSnapshot);
|
|
21
|
+
const activeLow = isBelowThreshold(config, activeSnapshot, now);
|
|
22
22
|
if (!activeLow) {
|
|
23
23
|
return { shouldSwitch: false, toIndex: activeIndex, reason: "Active subscription is above thresholds" };
|
|
24
24
|
}
|
|
25
25
|
const knownCandidates = config.tokens
|
|
26
26
|
.map((_, index) => ({ index, snapshot: snapshotForIndex(config, state, index) }))
|
|
27
27
|
.filter((item) => Boolean(item.snapshot))
|
|
28
|
-
.filter((item) => !isBelowThreshold(config, item.snapshot))
|
|
28
|
+
.filter((item) => !isBelowThreshold(config, item.snapshot, now))
|
|
29
29
|
.sort((a, b) => limitingResetMs(a.snapshot, now) - limitingResetMs(b.snapshot, now));
|
|
30
30
|
const knownCandidate = knownCandidates.find((item) => item.index !== activeIndex) || knownCandidates[0];
|
|
31
31
|
if (knownCandidate) {
|
|
@@ -52,8 +52,10 @@ export function decideSwitch(config, state, now = new Date()) {
|
|
|
52
52
|
export function tokenViews(config, state, now = new Date()) {
|
|
53
53
|
return config.tokens.map((token, index) => {
|
|
54
54
|
const snapshot = snapshotForIndex(config, state, index);
|
|
55
|
-
const
|
|
56
|
-
const
|
|
55
|
+
const fiveUsed = effectiveUsedPercentage(snapshot?.fiveHour, now);
|
|
56
|
+
const weeklyUsed = effectiveUsedPercentage(snapshot?.weekly, now);
|
|
57
|
+
const fiveLeft = 100 - (fiveUsed ?? Number.NaN);
|
|
58
|
+
const weeklyLeft = 100 - (weeklyUsed ?? Number.NaN);
|
|
57
59
|
const low = Number.isFinite(fiveLeft) &&
|
|
58
60
|
Number.isFinite(weeklyLeft) &&
|
|
59
61
|
(fiveLeft < config.fiveHourMinLeftPercent || weeklyLeft < config.weeklyMinLeftPercent);
|
|
@@ -64,8 +66,8 @@ export function tokenViews(config, state, now = new Date()) {
|
|
|
64
66
|
label: config.tokenLabels[index] || `Subscription ${index}`,
|
|
65
67
|
fingerprint: tokenFingerprint(token),
|
|
66
68
|
active: (state.activeTokenIndex ?? 0) === index,
|
|
67
|
-
fiveHourUsed: percentUsed(
|
|
68
|
-
weeklyUsed: percentUsed(
|
|
69
|
+
fiveHourUsed: percentUsed(fiveUsed),
|
|
70
|
+
weeklyUsed: percentUsed(weeklyUsed),
|
|
69
71
|
resetEta: etaFromNow(soonestReset, now),
|
|
70
72
|
health: snapshot ? (low ? "low" : "ok") : "unknown",
|
|
71
73
|
lastTelemetry: snapshot ? etaFromNow(snapshot.capturedAt, now) : "never"
|
|
@@ -99,14 +101,24 @@ export function snapshotForIndex(config, state, index) {
|
|
|
99
101
|
const token = config.tokens[index];
|
|
100
102
|
return token ? state.snapshots[tokenFingerprint(token)] : undefined;
|
|
101
103
|
}
|
|
102
|
-
export function isBelowThreshold(config, snapshot) {
|
|
103
|
-
const fiveLeft = remaining(snapshot.fiveHour
|
|
104
|
-
const weeklyLeft = remaining(snapshot.weekly
|
|
104
|
+
export function isBelowThreshold(config, snapshot, now = new Date()) {
|
|
105
|
+
const fiveLeft = remaining(effectiveUsedPercentage(snapshot.fiveHour, now));
|
|
106
|
+
const weeklyLeft = remaining(effectiveUsedPercentage(snapshot.weekly, now));
|
|
105
107
|
return fiveLeft < config.fiveHourMinLeftPercent || weeklyLeft < config.weeklyMinLeftPercent;
|
|
106
108
|
}
|
|
107
109
|
function remaining(used) {
|
|
108
110
|
return typeof used === "number" ? 100 - used : 100;
|
|
109
111
|
}
|
|
112
|
+
function effectiveUsedPercentage(window, now) {
|
|
113
|
+
if (!window)
|
|
114
|
+
return undefined;
|
|
115
|
+
if (window.resetsAt) {
|
|
116
|
+
const resetMs = new Date(window.resetsAt).getTime();
|
|
117
|
+
if (Number.isFinite(resetMs) && resetMs <= now.getTime())
|
|
118
|
+
return 0;
|
|
119
|
+
}
|
|
120
|
+
return window.usedPercentage;
|
|
121
|
+
}
|
|
110
122
|
function limitingResetMs(snapshot, now) {
|
|
111
123
|
const resetTimes = [snapshot.fiveHour?.resetsAt, snapshot.weekly?.resetsAt]
|
|
112
124
|
.filter(Boolean)
|
package/dist/switcher.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switcher.js","sourceRoot":"","sources":["../src/switcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAQrD,MAAM,UAAU,YAAY,CAAC,MAAiB,EAAE,KAAe,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE;IAC/E,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC1B,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAC;IAC3F,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,gBAAgB,IAAI,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IACpE,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO;YACL,YAAY,EAAE,KAAK;YACnB,OAAO,EAAE,WAAW;YACpB,MAAM,EAAE,4DAA4D;SACrE,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"switcher.js","sourceRoot":"","sources":["../src/switcher.ts"],"names":[],"mappings":"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"}
|
package/dist/tui.d.ts
CHANGED
|
@@ -4,4 +4,4 @@ export declare function configScreen(configPath?: string): Promise<void>;
|
|
|
4
4
|
export declare function addTokenScreen(configPath?: string): Promise<void>;
|
|
5
5
|
export declare function removeTokenScreen(configPath?: string): Promise<void>;
|
|
6
6
|
export declare function switchScreen(configPath?: string): Promise<void>;
|
|
7
|
-
export declare function renderDashboard(config: AppConfig, state?: import("./types.js").AppState): void;
|
|
7
|
+
export declare function renderDashboard(config: AppConfig, state?: import("./types.js").AppState, fallbackReason?: string): void;
|
package/dist/tui.js
CHANGED
|
@@ -6,28 +6,13 @@ import { recordServiceStatus, loadState, saveState } from "./state.js";
|
|
|
6
6
|
import { installService, serviceStatus, uninstallService } from "./service.js";
|
|
7
7
|
import { decideSwitch, switchToToken, tokenViews } from "./switcher.js";
|
|
8
8
|
import { maskToken } from "./util.js";
|
|
9
|
+
import { runOpenTuiDashboard } from "./openTuiDashboard.js";
|
|
9
10
|
export async function dashboard(configPath) {
|
|
10
11
|
let done = false;
|
|
11
12
|
while (!done) {
|
|
12
13
|
const config = readConfig(configPath);
|
|
13
14
|
const state = loadState(config.statePath);
|
|
14
|
-
|
|
15
|
-
const action = await select({
|
|
16
|
-
message: "Action",
|
|
17
|
-
choices: [
|
|
18
|
-
{ name: "Config", value: "config" },
|
|
19
|
-
{ name: "Add Token", value: "add" },
|
|
20
|
-
{ name: "Remove Token", value: "remove" },
|
|
21
|
-
{ name: "Switch Now", value: "switch" },
|
|
22
|
-
{
|
|
23
|
-
name: state.serviceStatusCache?.installed ? "Uninstall Service" : "Install Service",
|
|
24
|
-
value: state.serviceStatusCache?.installed ? "uninstall-service" : "install-service"
|
|
25
|
-
},
|
|
26
|
-
{ name: "Refresh", value: "refresh" },
|
|
27
|
-
{ name: "Logs", value: "logs" },
|
|
28
|
-
{ name: "Quit", value: "quit" }
|
|
29
|
-
]
|
|
30
|
-
});
|
|
15
|
+
const action = await chooseDashboardAction(config, state);
|
|
31
16
|
if (action === "config")
|
|
32
17
|
await configScreen(configPath);
|
|
33
18
|
if (action === "add")
|
|
@@ -51,29 +36,56 @@ export async function dashboard(configPath) {
|
|
|
51
36
|
done = action === "quit";
|
|
52
37
|
}
|
|
53
38
|
}
|
|
39
|
+
async function chooseDashboardAction(config, state) {
|
|
40
|
+
let fallbackReason;
|
|
41
|
+
if (process.stdout.isTTY && process.stdin.isTTY && process.env.CC_SWITCH_TUI !== "classic") {
|
|
42
|
+
try {
|
|
43
|
+
return await runOpenTuiDashboard(config, state);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
fallbackReason = error instanceof Error ? error.message : String(error);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
renderDashboard(config, state, fallbackReason);
|
|
50
|
+
return select({
|
|
51
|
+
message: "Command",
|
|
52
|
+
choices: [
|
|
53
|
+
{ name: "Configure thresholds, labels, and service behavior", value: "config" },
|
|
54
|
+
{ name: "Add subscription token (get one with `claude setup-token`)", value: "add" },
|
|
55
|
+
{ name: "Remove subscription token", value: "remove" },
|
|
56
|
+
{ name: "Switch active subscription now", value: "switch" },
|
|
57
|
+
{
|
|
58
|
+
name: state.serviceStatusCache?.installed ? "Uninstall background service" : "Install background service",
|
|
59
|
+
value: state.serviceStatusCache?.installed ? "uninstall-service" : "install-service"
|
|
60
|
+
},
|
|
61
|
+
{ name: "Refresh dashboard", value: "refresh" },
|
|
62
|
+
{ name: "Show recent logs", value: "logs" },
|
|
63
|
+
{ name: "Quit", value: "quit" }
|
|
64
|
+
]
|
|
65
|
+
});
|
|
66
|
+
}
|
|
54
67
|
export async function configScreen(configPath) {
|
|
55
68
|
let config = readConfig(configPath);
|
|
56
69
|
let dirty = false;
|
|
57
70
|
let done = false;
|
|
58
71
|
while (!done) {
|
|
59
|
-
|
|
60
|
-
console.log(`Config: ${config.configPath}`);
|
|
72
|
+
renderConfigHeader(config, dirty);
|
|
61
73
|
const action = await select({
|
|
62
|
-
message: "
|
|
74
|
+
message: "Setting",
|
|
63
75
|
choices: [
|
|
64
|
-
{ name: `Poll interval
|
|
65
|
-
{ name: `5-hour min remaining
|
|
66
|
-
{ name: `Weekly min remaining
|
|
67
|
-
{ name: `Switching mode
|
|
68
|
-
{ name: `Log level
|
|
69
|
-
{ name: `Service autostart
|
|
70
|
-
{ name: `State path
|
|
71
|
-
{ name: `Credentials path
|
|
76
|
+
{ name: `Poll interval ${config.pollSeconds}s`, value: "poll" },
|
|
77
|
+
{ name: `5-hour min remaining ${config.fiveHourMinLeftPercent}%`, value: "five" },
|
|
78
|
+
{ name: `Weekly min remaining ${config.weeklyMinLeftPercent}%`, value: "weekly" },
|
|
79
|
+
{ name: `Switching mode ${config.switchingMode}`, value: "mode" },
|
|
80
|
+
{ name: `Log level ${config.logLevel}`, value: "log" },
|
|
81
|
+
{ name: `Service autostart ${config.serviceAutostart}`, value: "autostart" },
|
|
82
|
+
{ name: `State path ${config.statePath}`, value: "state-path" },
|
|
83
|
+
{ name: `Credentials path ${config.credentialsPath || "(default experimental path)"}`, value: "credentials-path" },
|
|
72
84
|
{ name: "Token labels", value: "labels" },
|
|
73
85
|
{ name: "Token order", value: "order" },
|
|
74
|
-
{ name: "Add subscription", value: "add" },
|
|
75
|
-
{ name: "Remove subscription", value: "remove" },
|
|
76
|
-
{ name: "Save", value: "save" },
|
|
86
|
+
{ name: "Add subscription token use `claude setup-token` first", value: "add" },
|
|
87
|
+
{ name: "Remove subscription token", value: "remove" },
|
|
88
|
+
{ name: dirty ? "Save changes" : "Save", value: "save" },
|
|
77
89
|
{ name: "Reset to current file", value: "reset" },
|
|
78
90
|
{ name: "Cancel", value: "cancel" }
|
|
79
91
|
]
|
|
@@ -184,6 +196,7 @@ export async function configScreen(configPath) {
|
|
|
184
196
|
}
|
|
185
197
|
}
|
|
186
198
|
else if (action === "add") {
|
|
199
|
+
printTokenSetupInstructions();
|
|
187
200
|
const token = await password({ message: "Claude Code OAuth token", mask: "*" });
|
|
188
201
|
const label = await input({ message: "Label", default: `Subscription ${config.tokens.length}` });
|
|
189
202
|
config = addToken(config, token, label);
|
|
@@ -221,6 +234,7 @@ export async function configScreen(configPath) {
|
|
|
221
234
|
}
|
|
222
235
|
export async function addTokenScreen(configPath) {
|
|
223
236
|
const config = readConfig(configPath);
|
|
237
|
+
printTokenSetupInstructions();
|
|
224
238
|
const token = await password({ message: "Claude Code OAuth token", mask: "*" });
|
|
225
239
|
const label = await input({ message: "Label", default: `Subscription ${config.tokens.length}` });
|
|
226
240
|
writeConfig(addToken(config, token, label));
|
|
@@ -242,32 +256,42 @@ export async function switchScreen(configPath) {
|
|
|
242
256
|
const index = await pickTokenIndex(config, "Switch to which subscription?");
|
|
243
257
|
switchToToken(config, state, index, "Manual switch from dashboard");
|
|
244
258
|
}
|
|
245
|
-
export function renderDashboard(config, state = loadState(config.statePath)) {
|
|
259
|
+
export function renderDashboard(config, state = loadState(config.statePath), fallbackReason) {
|
|
246
260
|
console.clear();
|
|
247
|
-
console.log(chalk.bold("cc-switch"));
|
|
248
|
-
console.log(`Config: ${config.configPath}`);
|
|
249
|
-
console.log(`State: ${config.statePath}`);
|
|
250
|
-
console.table(tokenViews(config, state).map((view) => ({
|
|
251
|
-
idx: view.index,
|
|
252
|
-
active: view.active ? "*" : "",
|
|
253
|
-
label: view.label,
|
|
254
|
-
fingerprint: view.fingerprint,
|
|
255
|
-
"5h used": view.fiveHourUsed,
|
|
256
|
-
"7d used": view.weeklyUsed,
|
|
257
|
-
reset: view.resetEta,
|
|
258
|
-
health: view.health,
|
|
259
|
-
telemetry: view.lastTelemetry
|
|
260
|
-
})));
|
|
261
261
|
const service = state.serviceStatusCache || serviceStatus();
|
|
262
|
-
console.log(`Service: ${service.installed ? "installed" : "not installed"} / ${service.running ? "running" : "stopped"}`);
|
|
263
262
|
const decision = decideSwitch(config, state);
|
|
264
|
-
|
|
263
|
+
const views = tokenViews(config, state);
|
|
264
|
+
console.log(box("CC-SWITCH / CLAUDE CODE TOKEN ROUTER", [
|
|
265
|
+
`${chalk.cyan("Config")} ${config.configPath}`,
|
|
266
|
+
`${chalk.cyan("State ")} ${config.statePath}`,
|
|
267
|
+
`${chalk.cyan("Mode ")} ${config.switchingMode} ${chalk.cyan("Poll")} ${config.pollSeconds}s ${chalk.cyan("Tokens")} ${config.tokens.length}`,
|
|
268
|
+
`${chalk.cyan("Service")} ${service.installed ? chalk.green("installed") : chalk.yellow("not installed")} / ${service.running ? chalk.green("running") : chalk.gray("stopped")} ${chalk.cyan("Status line")} ${state.statusLine.installed ? chalk.green("installed") : chalk.gray("not installed")}`
|
|
269
|
+
], 96));
|
|
270
|
+
if (fallbackReason) {
|
|
271
|
+
console.log(box("OPENTUI UNAVAILABLE", [
|
|
272
|
+
fallbackReason,
|
|
273
|
+
`Runtime: Node ${process.version}`,
|
|
274
|
+
"OpenTUI native rendering currently needs Node 26.4+ with --experimental-ffi.",
|
|
275
|
+
"Set CC_SWITCH_TUI=classic to hide this notice and use the fallback UI."
|
|
276
|
+
], 96));
|
|
277
|
+
}
|
|
278
|
+
if (!views.length) {
|
|
279
|
+
console.log(box("NO SUBSCRIPTIONS CONFIGURED", [
|
|
280
|
+
"Create a Claude Code OAuth token with:",
|
|
281
|
+
chalk.bold(" claude setup-token"),
|
|
282
|
+
"Then choose: Add subscription token"
|
|
283
|
+
], 96));
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
console.log(box("SUBSCRIPTIONS", views.flatMap(renderTokenView), 96));
|
|
287
|
+
}
|
|
288
|
+
console.log(box("SWITCH DECISION", [
|
|
289
|
+
`${decision.shouldSwitch ? chalk.yellow("action pending") : chalk.green("stable")} ${decision.reason}`,
|
|
290
|
+
`5-hour threshold: ${config.fiveHourMinLeftPercent}% remaining Weekly threshold: ${config.weeklyMinLeftPercent}% remaining`
|
|
291
|
+
], 96));
|
|
265
292
|
const history = state.switchHistory.slice(0, 5);
|
|
266
293
|
if (history.length) {
|
|
267
|
-
console.log("
|
|
268
|
-
for (const entry of history) {
|
|
269
|
-
console.log(`- ${entry.switchedAt}: ${entry.fromIndex ?? "none"} -> ${entry.toIndex} (${entry.reason})`);
|
|
270
|
-
}
|
|
294
|
+
console.log(box("RECENT SWITCHES", history.map((entry) => `${entry.switchedAt} ${entry.fromIndex ?? "none"} -> ${entry.toIndex} ${entry.reason}`), 96));
|
|
271
295
|
}
|
|
272
296
|
}
|
|
273
297
|
async function pickTokenIndex(config, message) {
|
|
@@ -297,4 +321,82 @@ function moveToken(config, from, to) {
|
|
|
297
321
|
labels.splice(to, 0, label);
|
|
298
322
|
return { ...config, tokens, tokenLabels: labels };
|
|
299
323
|
}
|
|
324
|
+
function renderConfigHeader(config, dirty) {
|
|
325
|
+
console.clear();
|
|
326
|
+
console.log(box(`CONFIG${dirty ? " / UNSAVED" : ""}`, [
|
|
327
|
+
`${chalk.cyan("File")} ${config.configPath}`,
|
|
328
|
+
`${chalk.cyan("Subscriptions")} ${config.tokens.length} ${chalk.cyan("Mode")} ${config.switchingMode} ${chalk.cyan("Log")} ${config.logLevel}`,
|
|
329
|
+
`${chalk.cyan("Token setup")} run ${chalk.bold("claude setup-token")}, approve in browser, paste the printed token here.`
|
|
330
|
+
], 96));
|
|
331
|
+
}
|
|
332
|
+
function renderTokenView(view) {
|
|
333
|
+
const active = view.active ? chalk.green("ACTIVE") : chalk.gray("standby");
|
|
334
|
+
const health = colorHealth(view.health);
|
|
335
|
+
return [
|
|
336
|
+
`${String(view.index).padStart(2, "0")} ${active} ${chalk.bold(view.label)} ${chalk.gray(view.fingerprint)} ${health}`,
|
|
337
|
+
` 5h ${progressBar(view.fiveHourUsed, view.health)} reset ${view.resetEta}`,
|
|
338
|
+
` 7d ${progressBar(view.weeklyUsed, view.health)} telemetry ${view.lastTelemetry}`,
|
|
339
|
+
""
|
|
340
|
+
];
|
|
341
|
+
}
|
|
342
|
+
function progressBar(value, health) {
|
|
343
|
+
const match = /^(\d+)%$/.exec(value);
|
|
344
|
+
if (!match)
|
|
345
|
+
return `${chalk.gray("[????????????????????]")} unknown`;
|
|
346
|
+
const used = Math.max(0, Math.min(100, Number(match[1])));
|
|
347
|
+
const width = 20;
|
|
348
|
+
const filled = Math.round((used / 100) * width);
|
|
349
|
+
const raw = `[${"#".repeat(filled)}${"-".repeat(width - filled)}] ${String(used).padStart(3, " ")}% used`;
|
|
350
|
+
if (health === "low")
|
|
351
|
+
return chalk.red(raw);
|
|
352
|
+
if (used >= 80)
|
|
353
|
+
return chalk.yellow(raw);
|
|
354
|
+
return chalk.green(raw);
|
|
355
|
+
}
|
|
356
|
+
function colorHealth(health) {
|
|
357
|
+
if (health === "ok")
|
|
358
|
+
return chalk.green("healthy");
|
|
359
|
+
if (health === "low")
|
|
360
|
+
return chalk.red("low quota");
|
|
361
|
+
return chalk.yellow("unknown telemetry");
|
|
362
|
+
}
|
|
363
|
+
function box(title, lines, width) {
|
|
364
|
+
const inner = width - 4;
|
|
365
|
+
const topTitle = ` ${title} `;
|
|
366
|
+
const top = `+${topTitle}${"-".repeat(Math.max(0, width - topTitle.length - 2))}+`;
|
|
367
|
+
const body = lines.map((line) => `| ${padAnsi(line, inner)} |`);
|
|
368
|
+
return [chalk.blue(top), ...body, chalk.blue(`+${"-".repeat(width - 2)}+`)].join("\n");
|
|
369
|
+
}
|
|
370
|
+
function padAnsi(value, width) {
|
|
371
|
+
const visible = stripAnsi(value).length;
|
|
372
|
+
if (visible >= width)
|
|
373
|
+
return truncateAnsi(value, width);
|
|
374
|
+
return `${value}${" ".repeat(width - visible)}`;
|
|
375
|
+
}
|
|
376
|
+
function truncateAnsi(value, width) {
|
|
377
|
+
const plain = stripAnsi(value);
|
|
378
|
+
if (plain.length <= width)
|
|
379
|
+
return value;
|
|
380
|
+
return `${plain.slice(0, Math.max(0, width - 3))}...`;
|
|
381
|
+
}
|
|
382
|
+
function stripAnsi(value) {
|
|
383
|
+
return value.replace(/\u001b\[[0-9;]*m/g, "");
|
|
384
|
+
}
|
|
385
|
+
function printTokenSetupInstructions() {
|
|
386
|
+
console.log(box("ADD SUBSCRIPTION TOKEN", [
|
|
387
|
+
`Run ${chalk.bold("claude setup-token")} in another terminal if you do not have a token yet.`,
|
|
388
|
+
"Claude Code opens a browser login, then prints an OAuth token after approval.",
|
|
389
|
+
"Paste that token at the prompt below. It will be masked and stored in your cc-switch .env file."
|
|
390
|
+
], 96));
|
|
391
|
+
}
|
|
392
|
+
async function animateTransition(label) {
|
|
393
|
+
if (!process.stdout.isTTY)
|
|
394
|
+
return;
|
|
395
|
+
const frames = ["-", "\\", "|", "/"];
|
|
396
|
+
for (let index = 0; index < 10; index += 1) {
|
|
397
|
+
process.stdout.write(`\r${chalk.cyan(frames[index % frames.length])} ${label}`);
|
|
398
|
+
await new Promise((resolve) => setTimeout(resolve, 45));
|
|
399
|
+
}
|
|
400
|
+
process.stdout.write("\r" + " ".repeat(label.length + 4) + "\r");
|
|
401
|
+
}
|
|
300
402
|
//# sourceMappingURL=tui.js.map
|
package/dist/tui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@baizor/cc-switch",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Manage multiple Claude Code subscription OAuth tokens from a TypeScript CLI.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@inquirer/prompts": "^7.3.2",
|
|
37
|
+
"@opentui/core": "^0.4.5",
|
|
37
38
|
"chalk": "^5.4.1",
|
|
38
39
|
"commander": "^12.1.0"
|
|
39
40
|
},
|