@baizor/cc-switch 0.1.2 → 0.1.4
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/README.md +24 -1
- package/dist/claudeCredentials.d.ts +6 -0
- package/dist/claudeCredentials.js +111 -0
- package/dist/claudeCredentials.js.map +1 -0
- package/dist/index.js +50 -2
- package/dist/index.js.map +1 -1
- package/dist/state.js +11 -3
- package/dist/state.js.map +1 -1
- package/dist/statusLine.d.ts +12 -0
- package/dist/statusLine.js +40 -0
- package/dist/statusLine.js.map +1 -1
- package/dist/switcher.js +2 -11
- package/dist/switcher.js.map +1 -1
- package/dist/telemetry.js +18 -2
- package/dist/telemetry.js.map +1 -1
- package/dist/types.d.ts +18 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# cc-switch
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/@baizor/cc-switch)
|
|
4
|
+
[](https://www.npmjs.com/package/@baizor/cc-switch)
|
|
5
|
+
[](https://github.com/IvanMurzak/Claude-Subscription-Switcher/actions/workflows/publish.yml)
|
|
6
|
+
[](LICENSE)
|
|
7
|
+
[](package.json)
|
|
8
|
+
|
|
3
9
|

|
|
4
10
|
|
|
5
11
|
`cc-switch` is a TypeScript CLI for managing multiple Claude Code subscription OAuth tokens.
|
|
@@ -49,6 +55,21 @@ CC_SWITCH_CREDENTIALS_PATH=
|
|
|
49
55
|
|
|
50
56
|
`env` mode writes the active token into cc-switch managed environment files and uses `setx` on Windows for new shells. `credentials-file` mode is experimental and writes a guarded JSON credentials file only when explicitly enabled.
|
|
51
57
|
|
|
58
|
+
### Experimental Ongoing-Session Switching
|
|
59
|
+
|
|
60
|
+
`CLAUDE_CODE_OAUTH_TOKEN` is the documented switching path, but already-running Claude Code sessions may not reload environment variables. For experiments, `credentials-file` mode can switch the full Claude Code `/login` profile stored in `~/.claude/.credentials.json`.
|
|
61
|
+
|
|
62
|
+
For each subscription:
|
|
63
|
+
|
|
64
|
+
```sh
|
|
65
|
+
claude auth login
|
|
66
|
+
cc-switch import credentials 0
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Repeat with the matching subscription index after logging Claude Code into each account. Then set `CC_SWITCH_SWITCHING_MODE=credentials-file` in `cc-switch config`.
|
|
70
|
+
|
|
71
|
+
This stores the full `claudeAiOauth` object, including refresh tokens when present, inside `~/.cc-switch/state.json`. Keep that file private. This mode edits an undocumented Claude Code implementation file and may require restarting Claude Code if the running process keeps credentials in memory.
|
|
72
|
+
|
|
52
73
|
## Status-Line Collector
|
|
53
74
|
|
|
54
75
|
Run:
|
|
@@ -73,4 +94,6 @@ On npmjs.com, configure the trusted publisher for `@baizor/cc-switch` with:
|
|
|
73
94
|
|
|
74
95
|
For the first manual publish, run `npm publish --access public` from a local npm login. Do not enable local provenance for this first publish; provenance is generated by the GitHub Actions trusted publisher after npm is configured.
|
|
75
96
|
|
|
76
|
-
After the trusted publisher is configured, publish by
|
|
97
|
+
After the trusted publisher is configured, publish by running the `Publish to npm` workflow manually from GitHub Actions. When npm publish succeeds, the workflow creates a matching GitHub Release named `v<package.json version>` with GitHub-generated release notes.
|
|
98
|
+
|
|
99
|
+
You can also publish by creating a GitHub Release first. In that case, the release tag must match the package version, for example `v0.1.4`.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AppConfig, AppState } from "./types.js";
|
|
2
|
+
export declare function defaultClaudeCredentialsPath(): string;
|
|
3
|
+
export declare function resolveClaudeCredentialsPath(config: AppConfig): string;
|
|
4
|
+
export declare function importClaudeCredentialProfile(config: AppConfig, state: AppState, subscriptionIndex: number, credentialsPath?: string): AppState;
|
|
5
|
+
export declare function applyClaudeCredentialProfile(config: AppConfig, state: AppState, subscriptionIndex: number): void;
|
|
6
|
+
export declare function credentialProfileSummaries(config: AppConfig, state: AppState): string[];
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { saveState } from "./state.js";
|
|
5
|
+
import { maskToken, tokenFingerprint } from "./util.js";
|
|
6
|
+
export function defaultClaudeCredentialsPath() {
|
|
7
|
+
return path.join(os.homedir(), ".claude", ".credentials.json");
|
|
8
|
+
}
|
|
9
|
+
export function resolveClaudeCredentialsPath(config) {
|
|
10
|
+
return config.credentialsPath || defaultClaudeCredentialsPath();
|
|
11
|
+
}
|
|
12
|
+
export function importClaudeCredentialProfile(config, state, subscriptionIndex, credentialsPath = resolveClaudeCredentialsPath(config)) {
|
|
13
|
+
const token = config.tokens[subscriptionIndex];
|
|
14
|
+
if (!token)
|
|
15
|
+
throw new Error(`Invalid subscription index ${subscriptionIndex}`);
|
|
16
|
+
const credentials = readClaudeCredentials(credentialsPath);
|
|
17
|
+
const label = config.tokenLabels[subscriptionIndex] || `Subscription ${subscriptionIndex}`;
|
|
18
|
+
const fingerprint = tokenFingerprint(token);
|
|
19
|
+
const profile = {
|
|
20
|
+
tokenFingerprint: fingerprint,
|
|
21
|
+
label,
|
|
22
|
+
claudeAiOauth: credentials,
|
|
23
|
+
importedAt: new Date().toISOString(),
|
|
24
|
+
sourcePath: credentialsPath
|
|
25
|
+
};
|
|
26
|
+
const nextState = {
|
|
27
|
+
...state,
|
|
28
|
+
credentialProfiles: {
|
|
29
|
+
...state.credentialProfiles,
|
|
30
|
+
[fingerprint]: profile
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
saveState(config.statePath, nextState);
|
|
34
|
+
return nextState;
|
|
35
|
+
}
|
|
36
|
+
export function applyClaudeCredentialProfile(config, state, subscriptionIndex) {
|
|
37
|
+
const token = config.tokens[subscriptionIndex];
|
|
38
|
+
if (!token)
|
|
39
|
+
throw new Error(`Invalid subscription index ${subscriptionIndex}`);
|
|
40
|
+
const fingerprint = tokenFingerprint(token);
|
|
41
|
+
const profile = state.credentialProfiles[fingerprint];
|
|
42
|
+
if (!profile) {
|
|
43
|
+
throw new Error(`No imported Claude credentials profile for subscription ${subscriptionIndex}. ` +
|
|
44
|
+
`Log into Claude Code for that account, then run: cc-switch import credentials ${subscriptionIndex}`);
|
|
45
|
+
}
|
|
46
|
+
const credentialsPath = resolveClaudeCredentialsPath(config);
|
|
47
|
+
const current = readCredentialsFile(credentialsPath);
|
|
48
|
+
backupCredentialsFile(credentialsPath);
|
|
49
|
+
const next = {
|
|
50
|
+
...current,
|
|
51
|
+
claudeAiOauth: profile.claudeAiOauth
|
|
52
|
+
};
|
|
53
|
+
writeCredentialsFile(credentialsPath, next);
|
|
54
|
+
}
|
|
55
|
+
export function credentialProfileSummaries(config, state) {
|
|
56
|
+
return config.tokens.map((token, index) => {
|
|
57
|
+
const fingerprint = tokenFingerprint(token);
|
|
58
|
+
const profile = state.credentialProfiles[fingerprint];
|
|
59
|
+
if (!profile)
|
|
60
|
+
return `${index}: ${config.tokenLabels[index] || `Subscription ${index}`} no imported credentials`;
|
|
61
|
+
return `${index}: ${profile.label} imported ${profile.importedAt} access ${maskToken(profile.claudeAiOauth.accessToken)} refresh ${profile.claudeAiOauth.refreshToken ? "yes" : "no"}`;
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
function readClaudeCredentials(credentialsPath) {
|
|
65
|
+
const file = readCredentialsFile(credentialsPath);
|
|
66
|
+
const credentials = file.claudeAiOauth;
|
|
67
|
+
if (!credentials || typeof credentials !== "object") {
|
|
68
|
+
throw new Error(`${credentialsPath} does not contain claudeAiOauth credentials`);
|
|
69
|
+
}
|
|
70
|
+
if (typeof credentials.accessToken !== "string" || !credentials.accessToken) {
|
|
71
|
+
throw new Error(`${credentialsPath} claudeAiOauth.accessToken is missing`);
|
|
72
|
+
}
|
|
73
|
+
if (credentials.refreshToken != null && typeof credentials.refreshToken !== "string") {
|
|
74
|
+
throw new Error(`${credentialsPath} claudeAiOauth.refreshToken must be a string when present`);
|
|
75
|
+
}
|
|
76
|
+
return credentials;
|
|
77
|
+
}
|
|
78
|
+
function readCredentialsFile(credentialsPath) {
|
|
79
|
+
if (!fs.existsSync(credentialsPath))
|
|
80
|
+
throw new Error(`${credentialsPath} does not exist`);
|
|
81
|
+
const parsed = JSON.parse(fs.readFileSync(credentialsPath, "utf8"));
|
|
82
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
83
|
+
throw new Error(`${credentialsPath} must contain a JSON object`);
|
|
84
|
+
}
|
|
85
|
+
return parsed;
|
|
86
|
+
}
|
|
87
|
+
function writeCredentialsFile(credentialsPath, contents) {
|
|
88
|
+
fs.mkdirSync(path.dirname(credentialsPath), { recursive: true });
|
|
89
|
+
const tempPath = `${credentialsPath}.cc-switch.tmp`;
|
|
90
|
+
fs.writeFileSync(tempPath, `${JSON.stringify(contents, null, 2)}\n`, { encoding: "utf8", mode: 0o600 });
|
|
91
|
+
fs.renameSync(tempPath, credentialsPath);
|
|
92
|
+
try {
|
|
93
|
+
fs.chmodSync(credentialsPath, 0o600);
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
// Best-effort on Windows.
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function backupCredentialsFile(credentialsPath) {
|
|
100
|
+
const backupPath = `${credentialsPath}.cc-switch-backup`;
|
|
101
|
+
if (!fs.existsSync(credentialsPath) || fs.existsSync(backupPath))
|
|
102
|
+
return;
|
|
103
|
+
fs.copyFileSync(credentialsPath, backupPath);
|
|
104
|
+
try {
|
|
105
|
+
fs.chmodSync(backupPath, 0o600);
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
// Best-effort on Windows.
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=claudeCredentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeCredentials.js","sourceRoot":"","sources":["../src/claudeCredentials.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -6,17 +6,18 @@ import { addToken, readConfig, removeToken, writeConfig } from "./config.js";
|
|
|
6
6
|
import { dashboard, configScreen, renderDashboard } from "./tui.js";
|
|
7
7
|
import { loadState, recordServiceStatus, saveState } from "./state.js";
|
|
8
8
|
import { installService, restartService, serviceStatus, startService, stopService, uninstallService } from "./service.js";
|
|
9
|
-
import { collectStatusLine, installStatusLineCollector } from "./statusLine.js";
|
|
9
|
+
import { collectStatusLine, diagnoseStatusLine, installStatusLineCollector } from "./statusLine.js";
|
|
10
10
|
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
14
|
import { diagnoseOpenTuiRuntime } from "./openTuiDashboard.js";
|
|
15
|
+
import { credentialProfileSummaries, importClaudeCredentialProfile, resolveClaudeCredentialsPath } from "./claudeCredentials.js";
|
|
15
16
|
const program = new Command();
|
|
16
17
|
program
|
|
17
18
|
.name("cc-switch")
|
|
18
19
|
.description("Manage multiple Claude Code subscription OAuth tokens")
|
|
19
|
-
.version("0.1.
|
|
20
|
+
.version("0.1.4")
|
|
20
21
|
.option("--config <path>", "Path to cc-switch .env config");
|
|
21
22
|
program.action(async () => {
|
|
22
23
|
await dashboard(program.opts().config);
|
|
@@ -70,6 +71,29 @@ list.command("subscriptions").description("List configured subscriptions").actio
|
|
|
70
71
|
console.log(`${index}: ${config.tokenLabels[index] || `Subscription ${index}`} ${maskToken(token)}`);
|
|
71
72
|
}
|
|
72
73
|
});
|
|
74
|
+
list.command("credentials").description("List imported experimental Claude credentials profiles").action(() => {
|
|
75
|
+
const config = readConfig(program.opts().config);
|
|
76
|
+
const state = loadState(config.statePath);
|
|
77
|
+
for (const line of credentialProfileSummaries(config, state))
|
|
78
|
+
console.log(line);
|
|
79
|
+
});
|
|
80
|
+
const importCommand = program.command("import").description("Import local Claude Code data");
|
|
81
|
+
importCommand
|
|
82
|
+
.command("credentials <subscriptionIndex>")
|
|
83
|
+
.description("Import current ~/.claude/.credentials.json claudeAiOauth profile for credentials-file switching")
|
|
84
|
+
.option("--credentials <path>", "Path to Claude Code .credentials.json")
|
|
85
|
+
.action((indexText, options) => {
|
|
86
|
+
const config = readConfig(program.opts().config);
|
|
87
|
+
const state = loadState(config.statePath);
|
|
88
|
+
const index = Number(indexText);
|
|
89
|
+
const nextState = importClaudeCredentialProfile(config, state, index, options.credentials);
|
|
90
|
+
const path = options.credentials || resolveClaudeCredentialsPath(config);
|
|
91
|
+
console.log(`Imported Claude credentials from ${path} for subscription ${index}.`);
|
|
92
|
+
console.log("This stores the full claudeAiOauth object in the cc-switch state file. Keep ~/.cc-switch/state.json private.");
|
|
93
|
+
if (nextState.credentialProfiles) {
|
|
94
|
+
console.log("Set CC_SWITCH_SWITCHING_MODE=credentials-file in `cc-switch config` to switch via Claude Code credentials.");
|
|
95
|
+
}
|
|
96
|
+
});
|
|
73
97
|
program.command("status").description("Print dashboard status once").action(() => {
|
|
74
98
|
const config = readConfig(program.opts().config);
|
|
75
99
|
renderDashboard(config);
|
|
@@ -94,6 +118,7 @@ install.command("status-line").description("Install the Claude Code status-line
|
|
|
94
118
|
const state = loadState(config.statePath);
|
|
95
119
|
installStatusLineCollector(config, state, options.settings);
|
|
96
120
|
console.log("Installed status-line collector.");
|
|
121
|
+
console.log("Restart Claude Code or send one prompt in a trusted workspace so Claude Code emits rate_limits telemetry.");
|
|
97
122
|
});
|
|
98
123
|
const uninstall = program.command("uninstall").description("Uninstall integrations");
|
|
99
124
|
uninstall.command("service").description("Stop and remove the per-user background monitor").action(() => {
|
|
@@ -132,6 +157,29 @@ doctor.command("tui").description("Check whether the OpenTUI dashboard can run")
|
|
|
132
157
|
if (!result.ok)
|
|
133
158
|
process.exitCode = 1;
|
|
134
159
|
});
|
|
160
|
+
doctor.command("status-line").description("Check Claude Code status-line telemetry integration").option("--settings <path>", "Claude settings.json path").action((options) => {
|
|
161
|
+
const config = readConfig(program.opts().config);
|
|
162
|
+
const state = loadState(config.statePath);
|
|
163
|
+
const result = diagnoseStatusLine(config, state, options.settings);
|
|
164
|
+
console.log(`Settings: ${result.settingsPath}`);
|
|
165
|
+
console.log(`Claude statusLine configured: ${result.configured}`);
|
|
166
|
+
console.log(`cc-switch collector installed: ${result.installed}`);
|
|
167
|
+
console.log(`cc-switch state installed flag: ${result.stateInstalled}`);
|
|
168
|
+
console.log(`Active token index: ${result.activeTokenIndex ?? "none"}`);
|
|
169
|
+
console.log(`Stored quota snapshots: ${result.snapshotCount}`);
|
|
170
|
+
if (result.command)
|
|
171
|
+
console.log(`Command: ${result.command}`);
|
|
172
|
+
if (result.issues.length) {
|
|
173
|
+
console.log("\nIssues:");
|
|
174
|
+
for (const issue of result.issues)
|
|
175
|
+
console.log(`- ${issue}`);
|
|
176
|
+
}
|
|
177
|
+
console.log("\nNext steps:");
|
|
178
|
+
for (const step of result.nextSteps)
|
|
179
|
+
console.log(`- ${step}`);
|
|
180
|
+
if (result.issues.length)
|
|
181
|
+
process.exitCode = 1;
|
|
182
|
+
});
|
|
135
183
|
program.command("monitor").description("Run the background monitor").option("--once", "Run one monitor iteration").action(async (options) => {
|
|
136
184
|
await runMonitor(program.opts().config, Boolean(options.once));
|
|
137
185
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/state.js
CHANGED
|
@@ -7,7 +7,8 @@ export function emptyState() {
|
|
|
7
7
|
switchHistory: [],
|
|
8
8
|
statusLine: {
|
|
9
9
|
installed: false
|
|
10
|
-
}
|
|
10
|
+
},
|
|
11
|
+
credentialProfiles: {}
|
|
11
12
|
};
|
|
12
13
|
}
|
|
13
14
|
export function loadState(statePath) {
|
|
@@ -19,12 +20,19 @@ export function loadState(statePath) {
|
|
|
19
20
|
...parsed,
|
|
20
21
|
snapshots: parsed.snapshots || {},
|
|
21
22
|
switchHistory: parsed.switchHistory || [],
|
|
22
|
-
statusLine: parsed.statusLine || { installed: false }
|
|
23
|
+
statusLine: parsed.statusLine || { installed: false },
|
|
24
|
+
credentialProfiles: parsed.credentialProfiles || {}
|
|
23
25
|
};
|
|
24
26
|
}
|
|
25
27
|
export function saveState(statePath, state) {
|
|
26
28
|
fs.mkdirSync(path.dirname(statePath), { recursive: true });
|
|
27
|
-
fs.writeFileSync(statePath, `${JSON.stringify(state, null, 2)}\n`, "utf8");
|
|
29
|
+
fs.writeFileSync(statePath, `${JSON.stringify(state, null, 2)}\n`, { encoding: "utf8", mode: 0o600 });
|
|
30
|
+
try {
|
|
31
|
+
fs.chmodSync(statePath, 0o600);
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
// Best-effort on Windows.
|
|
35
|
+
}
|
|
28
36
|
}
|
|
29
37
|
export function recordSnapshot(state, snapshot) {
|
|
30
38
|
const existing = state.snapshots[snapshot.tokenFingerprint];
|
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;
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
|
package/dist/statusLine.d.ts
CHANGED
|
@@ -4,3 +4,15 @@ export declare function collectStatusLine(config: AppConfig, state: AppState, in
|
|
|
4
4
|
state: AppState;
|
|
5
5
|
forwardedOutput: string;
|
|
6
6
|
};
|
|
7
|
+
export interface StatusLineDoctorResult {
|
|
8
|
+
settingsPath: string;
|
|
9
|
+
configured: boolean;
|
|
10
|
+
installed: boolean;
|
|
11
|
+
command?: string;
|
|
12
|
+
stateInstalled: boolean;
|
|
13
|
+
activeTokenIndex: number | null;
|
|
14
|
+
snapshotCount: number;
|
|
15
|
+
issues: string[];
|
|
16
|
+
nextSteps: string[];
|
|
17
|
+
}
|
|
18
|
+
export declare function diagnoseStatusLine(config: AppConfig, state: AppState, settingsPath?: string): StatusLineDoctorResult;
|
package/dist/statusLine.js
CHANGED
|
@@ -61,6 +61,46 @@ export function collectStatusLine(config, state, input, forwardBase64) {
|
|
|
61
61
|
}
|
|
62
62
|
return { state: nextState, forwardedOutput };
|
|
63
63
|
}
|
|
64
|
+
export function diagnoseStatusLine(config, state, settingsPath = defaultClaudeSettingsPath()) {
|
|
65
|
+
const issues = [];
|
|
66
|
+
const nextSteps = [];
|
|
67
|
+
const settings = readJsonObject(settingsPath);
|
|
68
|
+
const command = commandFromStatusLine(settings.statusLine);
|
|
69
|
+
const configured = Boolean(command);
|
|
70
|
+
const installed = Boolean(command?.includes("collect-status-line"));
|
|
71
|
+
if (!configured) {
|
|
72
|
+
issues.push("Claude Code has no statusLine command configured.");
|
|
73
|
+
nextSteps.push("Run `cc-switch install status-line`.");
|
|
74
|
+
}
|
|
75
|
+
else if (!installed) {
|
|
76
|
+
issues.push("Claude Code statusLine exists, but it is not wrapped by cc-switch.");
|
|
77
|
+
nextSteps.push("Run `cc-switch install status-line` to wrap the existing status line without replacing its output.");
|
|
78
|
+
}
|
|
79
|
+
if (settings.disableAllHooks === true) {
|
|
80
|
+
issues.push("Claude Code settings have disableAllHooks=true, which disables status line commands.");
|
|
81
|
+
nextSteps.push("Remove disableAllHooks or set it to false in ~/.claude/settings.json.");
|
|
82
|
+
}
|
|
83
|
+
if (!config.tokens.length) {
|
|
84
|
+
issues.push("No cc-switch subscriptions are configured.");
|
|
85
|
+
nextSteps.push("Run `claude setup-token`, then `cc-switch add subscription`.");
|
|
86
|
+
}
|
|
87
|
+
if (!Object.keys(state.snapshots).length) {
|
|
88
|
+
nextSteps.push("After installing, restart Claude Code or send one prompt in a trusted workspace so Claude Code emits status-line JSON.");
|
|
89
|
+
nextSteps.push("The `rate_limits` field appears only for Claude.ai Pro/Max subscribers after the first API response.");
|
|
90
|
+
}
|
|
91
|
+
nextSteps.push("If it still does not update, run `claude --debug` and look for status-line command errors or workspace trust messages.");
|
|
92
|
+
return {
|
|
93
|
+
settingsPath,
|
|
94
|
+
configured,
|
|
95
|
+
installed,
|
|
96
|
+
command,
|
|
97
|
+
stateInstalled: Boolean(state.statusLine.installed),
|
|
98
|
+
activeTokenIndex: state.activeTokenIndex,
|
|
99
|
+
snapshotCount: Object.keys(state.snapshots).length,
|
|
100
|
+
issues,
|
|
101
|
+
nextSteps: Array.from(new Set(nextSteps))
|
|
102
|
+
};
|
|
103
|
+
}
|
|
64
104
|
function readJsonObject(filePath) {
|
|
65
105
|
if (!fs.existsSync(filePath))
|
|
66
106
|
return {};
|
package/dist/statusLine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statusLine.js","sourceRoot":"","sources":["../src/statusLine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"statusLine.js","sourceRoot":"","sources":["../src/statusLine.ts"],"names":[],"mappings":"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"}
|
package/dist/switcher.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
|
-
import os from "node:os";
|
|
3
2
|
import path from "node:path";
|
|
4
3
|
import { spawnSync } from "node:child_process";
|
|
5
4
|
import { activeEnvPath, activePowerShellEnvPath } from "./paths.js";
|
|
6
5
|
import { etaFromNow, percentUsed, tokenFingerprint } from "./util.js";
|
|
7
6
|
import { recordSwitch, saveState } from "./state.js";
|
|
7
|
+
import { applyClaudeCredentialProfile } from "./claudeCredentials.js";
|
|
8
8
|
export function decideSwitch(config, state, now = new Date()) {
|
|
9
9
|
if (!config.tokens.length) {
|
|
10
10
|
return { shouldSwitch: false, toIndex: null, reason: "No subscriptions are configured" };
|
|
@@ -80,7 +80,7 @@ export function switchToToken(config, state, toIndex, reason) {
|
|
|
80
80
|
}
|
|
81
81
|
const token = config.tokens[toIndex];
|
|
82
82
|
if (config.switchingMode === "credentials-file") {
|
|
83
|
-
|
|
83
|
+
applyClaudeCredentialProfile(config, state, toIndex);
|
|
84
84
|
}
|
|
85
85
|
else {
|
|
86
86
|
writeEnvironmentFiles(token);
|
|
@@ -137,13 +137,4 @@ function writeEnvironmentFiles(token) {
|
|
|
137
137
|
fs.writeFileSync(psPath, `$env:CLAUDE_CODE_OAUTH_TOKEN = ${JSON.stringify(token)}\n`, "utf8");
|
|
138
138
|
process.env.CLAUDE_CODE_OAUTH_TOKEN = token;
|
|
139
139
|
}
|
|
140
|
-
function writeCredentialsFile(config, token) {
|
|
141
|
-
const credentialsPath = config.credentialsPath || path.join(os.homedir(), ".cc-switch", "experimental-claude-credentials.json");
|
|
142
|
-
fs.mkdirSync(path.dirname(credentialsPath), { recursive: true });
|
|
143
|
-
fs.writeFileSync(credentialsPath, `${JSON.stringify({
|
|
144
|
-
warning: "Experimental cc-switch credentials-file mode. Verify Claude Code compatibility before relying on it.",
|
|
145
|
-
CLAUDE_CODE_OAUTH_TOKEN: token,
|
|
146
|
-
updatedAt: new Date().toISOString()
|
|
147
|
-
}, null, 2)}\n`, "utf8");
|
|
148
|
-
}
|
|
149
140
|
//# sourceMappingURL=switcher.js.map
|
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,
|
|
1
|
+
{"version":3,"file":"switcher.js","sourceRoot":"","sources":["../src/switcher.ts"],"names":[],"mappings":"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"}
|
package/dist/telemetry.js
CHANGED
|
@@ -27,11 +27,27 @@ function normalizeWindow(value) {
|
|
|
27
27
|
if (typeof used === "number" && Number.isFinite(used)) {
|
|
28
28
|
window.usedPercentage = Math.max(0, Math.min(100, used));
|
|
29
29
|
}
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
const resetIso = normalizeResetTime(resets);
|
|
31
|
+
if (resetIso) {
|
|
32
|
+
window.resetsAt = resetIso;
|
|
32
33
|
}
|
|
33
34
|
return Object.keys(window).length ? window : undefined;
|
|
34
35
|
}
|
|
36
|
+
function normalizeResetTime(value) {
|
|
37
|
+
if (typeof value === "number" && Number.isFinite(value)) {
|
|
38
|
+
return new Date(value * 1000).toISOString();
|
|
39
|
+
}
|
|
40
|
+
if (typeof value === "string") {
|
|
41
|
+
const numeric = Number(value);
|
|
42
|
+
if (Number.isFinite(numeric) && value.trim() !== "") {
|
|
43
|
+
return new Date(numeric * 1000).toISOString();
|
|
44
|
+
}
|
|
45
|
+
const parsed = new Date(value);
|
|
46
|
+
if (!Number.isNaN(parsed.getTime()))
|
|
47
|
+
return parsed.toISOString();
|
|
48
|
+
}
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
35
51
|
function safeJsonParse(text) {
|
|
36
52
|
try {
|
|
37
53
|
return JSON.parse(text);
|
package/dist/telemetry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAgB7C,MAAM,UAAU,2BAA2B,CAAC,KAAc,EAAE,KAAa,EAAE,UAAU,GAAG,IAAI,IAAI,EAAE;IAChG,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACzE,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzD,MAAM,MAAM,GAAG,OAAgC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAErC,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC7D,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEtC,OAAO;QACL,gBAAgB,EAAE,gBAAgB,CAAC,KAAK,CAAC;QACzC,QAAQ;QACR,MAAM;QACN,UAAU,EAAE,UAAU,CAAC,WAAW,EAAE;KACrC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC1D,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,MAAM,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC;IACpC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;IAChC,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -41,12 +41,30 @@ export interface StatusLineMetadata {
|
|
|
41
41
|
previousStatusLine?: unknown;
|
|
42
42
|
installedAt?: string;
|
|
43
43
|
}
|
|
44
|
+
export interface ClaudeAiOauthCredentials {
|
|
45
|
+
accessToken: string;
|
|
46
|
+
refreshToken?: string;
|
|
47
|
+
expiresAt?: number;
|
|
48
|
+
refreshTokenExpiresAt?: number;
|
|
49
|
+
scopes?: string[];
|
|
50
|
+
subscriptionType?: string;
|
|
51
|
+
rateLimitTier?: string;
|
|
52
|
+
[key: string]: unknown;
|
|
53
|
+
}
|
|
54
|
+
export interface ClaudeCredentialProfile {
|
|
55
|
+
tokenFingerprint: string;
|
|
56
|
+
label: string;
|
|
57
|
+
claudeAiOauth: ClaudeAiOauthCredentials;
|
|
58
|
+
importedAt: string;
|
|
59
|
+
sourcePath: string;
|
|
60
|
+
}
|
|
44
61
|
export interface AppState {
|
|
45
62
|
activeTokenIndex: number | null;
|
|
46
63
|
snapshots: Record<string, QuotaSnapshot>;
|
|
47
64
|
switchHistory: SwitchHistoryEntry[];
|
|
48
65
|
serviceStatusCache?: ServiceStatusCache;
|
|
49
66
|
statusLine: StatusLineMetadata;
|
|
67
|
+
credentialProfiles: Record<string, ClaudeCredentialProfile>;
|
|
50
68
|
}
|
|
51
69
|
export interface TokenView {
|
|
52
70
|
index: number;
|