codex-multi-auth 2.1.5 → 2.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/README.md +45 -21
- package/config/README.md +2 -3
- package/dist/index.js +22 -22
- package/dist/index.js.map +1 -1
- package/dist/lib/auth/device-auth.d.ts.map +1 -1
- package/dist/lib/auth/device-auth.js +18 -1
- package/dist/lib/auth/device-auth.js.map +1 -1
- package/dist/lib/codex-manager/commands/account.js +6 -6
- package/dist/lib/codex-manager/commands/account.js.map +1 -1
- package/dist/lib/codex-manager/commands/best.js +1 -1
- package/dist/lib/codex-manager/commands/best.js.map +1 -1
- package/dist/lib/codex-manager/commands/bridge.js +5 -5
- package/dist/lib/codex-manager/commands/bridge.js.map +1 -1
- package/dist/lib/codex-manager/commands/budget.js +3 -3
- package/dist/lib/codex-manager/commands/budget.js.map +1 -1
- package/dist/lib/codex-manager/commands/forecast.d.ts.map +1 -1
- package/dist/lib/codex-manager/commands/forecast.js +18 -4
- package/dist/lib/codex-manager/commands/forecast.js.map +1 -1
- package/dist/lib/codex-manager/commands/integrations.js +1 -1
- package/dist/lib/codex-manager/commands/integrations.js.map +1 -1
- package/dist/lib/codex-manager/commands/models.js +1 -1
- package/dist/lib/codex-manager/commands/models.js.map +1 -1
- package/dist/lib/codex-manager/commands/monitor.js +1 -1
- package/dist/lib/codex-manager/commands/monitor.js.map +1 -1
- package/dist/lib/codex-manager/commands/report.js +1 -1
- package/dist/lib/codex-manager/commands/report.js.map +1 -1
- package/dist/lib/codex-manager/commands/rotation.d.ts.map +1 -1
- package/dist/lib/codex-manager/commands/rotation.js +23 -14
- package/dist/lib/codex-manager/commands/rotation.js.map +1 -1
- package/dist/lib/codex-manager/commands/switch.js +1 -1
- package/dist/lib/codex-manager/commands/switch.js.map +1 -1
- package/dist/lib/codex-manager/commands/uninstall.d.ts +36 -0
- package/dist/lib/codex-manager/commands/uninstall.d.ts.map +1 -0
- package/dist/lib/codex-manager/commands/uninstall.js +284 -0
- package/dist/lib/codex-manager/commands/uninstall.js.map +1 -0
- package/dist/lib/codex-manager/commands/usage.js +2 -2
- package/dist/lib/codex-manager/commands/usage.js.map +1 -1
- package/dist/lib/codex-manager/commands/verify.js +4 -4
- package/dist/lib/codex-manager/commands/verify.js.map +1 -1
- package/dist/lib/codex-manager/commands/why-selected.js +3 -3
- package/dist/lib/codex-manager/commands/why-selected.js.map +1 -1
- package/dist/lib/codex-manager/forecast-report-commands.js +3 -3
- package/dist/lib/codex-manager/forecast-report-commands.js.map +1 -1
- package/dist/lib/codex-manager/help.d.ts.map +1 -1
- package/dist/lib/codex-manager/help.js +27 -26
- package/dist/lib/codex-manager/help.js.map +1 -1
- package/dist/lib/codex-manager/repair-commands.d.ts.map +1 -1
- package/dist/lib/codex-manager/repair-commands.js +23 -11
- package/dist/lib/codex-manager/repair-commands.js.map +1 -1
- package/dist/lib/codex-manager.d.ts.map +1 -1
- package/dist/lib/codex-manager.js +47 -6
- package/dist/lib/codex-manager.js.map +1 -1
- package/dist/lib/forecast.js +1 -1
- package/dist/lib/forecast.js.map +1 -1
- package/dist/lib/request/fetch-helpers.d.ts +1 -1
- package/dist/lib/request/fetch-helpers.js +8 -8
- package/dist/lib/request/fetch-helpers.js.map +1 -1
- package/dist/lib/request/stream-failover.d.ts.map +1 -1
- package/dist/lib/request/stream-failover.js +12 -1
- package/dist/lib/request/stream-failover.js.map +1 -1
- package/dist/lib/rotation.d.ts +1 -1
- package/dist/lib/rotation.js +1 -1
- package/dist/lib/runtime/app-bind.d.ts.map +1 -1
- package/dist/lib/runtime/app-bind.js +28 -3
- package/dist/lib/runtime/app-bind.js.map +1 -1
- package/dist/lib/runtime/config-toml.d.ts.map +1 -1
- package/dist/lib/runtime/config-toml.js +29 -3
- package/dist/lib/runtime/config-toml.js.map +1 -1
- package/dist/lib/runtime/hydrate-emails.d.ts.map +1 -1
- package/dist/lib/runtime/hydrate-emails.js +6 -1
- package/dist/lib/runtime/hydrate-emails.js.map +1 -1
- package/dist/lib/runtime/runtime-current-account.d.ts.map +1 -1
- package/dist/lib/runtime/runtime-current-account.js +10 -1
- package/dist/lib/runtime/runtime-current-account.js.map +1 -1
- package/dist/lib/runtime/storage-scope.js +2 -2
- package/dist/lib/runtime/storage-scope.js.map +1 -1
- package/dist/lib/runtime-rotation-proxy.js +1 -1
- package/dist/lib/runtime-rotation-proxy.js.map +1 -1
- package/dist/lib/storage/transactions.d.ts +2 -1
- package/dist/lib/storage/transactions.d.ts.map +1 -1
- package/dist/lib/storage/transactions.js +9 -3
- package/dist/lib/storage/transactions.js.map +1 -1
- package/package.json +26 -17
- package/scripts/install-codex-auth-utils.js +48 -0
- package/scripts/preuninstall.js +254 -0
package/README.md
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
# codex-multi-auth
|
|
1
|
+
# codex-multi-auth: multi-account OAuth for the official Codex CLI
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/codex-multi-auth)
|
|
4
4
|
[](https://www.npmjs.com/package/codex-multi-auth)
|
|
5
|
+
[](https://github.com/ndycode/codex-multi-auth/actions/workflows/ci.yml)
|
|
6
|
+
[](LICENSE)
|
|
5
7
|
|
|
6
|
-
|
|
8
|
+
`codex-multi-auth` is a multi-account OAuth manager for the official `@openai/codex` CLI. It gives Codex CLI users explicit ChatGPT account login, account switching, health checks, local diagnostics, project-scoped storage, and default-on runtime Responses rotation without taking over the official `codex` binary. Use `codex-multi-auth ...` for account management, or `codex-multi-auth-codex ...` only when you intentionally want the optional forwarding wrapper.
|
|
7
9
|
|
|
8
|
-
|
|
10
|
+
Use it when you need a local Codex CLI multi-account workflow with visible account state, safer recovery commands, and a loopback-only runtime rotation proxy for request-bearing forwarded Codex sessions.
|
|
11
|
+
|
|
12
|
+
<img width="1270" height="729" alt="codex-multi-auth terminal dashboard for Codex CLI multi-account OAuth account status" src="https://github.com/user-attachments/assets/0cecb77e-a6d3-432a-ba48-3577db0c7093" />
|
|
9
13
|
|
|
10
14
|
|
|
11
15
|
|
|
@@ -15,23 +19,41 @@ Codex CLI-first multi-account OAuth manager for the official Codex CLI. The pack
|
|
|
15
19
|
|
|
16
20
|
## What You Get
|
|
17
21
|
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
- Forecast, report, fix, and
|
|
25
|
-
- Local usage ledger,
|
|
22
|
+
- Codex CLI multi-account OAuth management with a dedicated `codex-multi-auth ...` command family
|
|
23
|
+
- Explicit ChatGPT account login, saved-account listing, account switching, health checks, and diagnostics
|
|
24
|
+
- Optional `codex-multi-auth-codex ...` forwarding wrapper for official Codex CLI commands when you choose wrapper-launched sessions
|
|
25
|
+
- Health-aware account selection, quota forecasting, automatic failover, and flagged-account recovery
|
|
26
|
+
- Project-scoped account storage under `~/.codex/multi-auth/projects/<project-key>/...` for repo-specific workflows
|
|
27
|
+
- Interactive terminal dashboard for account actions, settings, search, and hotkeys
|
|
28
|
+
- Forecast, report, fix, doctor, verify, monitor, and rotation commands for operational confidence
|
|
29
|
+
- Local usage ledger, budget guards, account policy controls, routing profiles, and model/account capability views
|
|
26
30
|
- Runtime counters, budget/cooldown state, and multi-auth probe visibility in `codex-multi-auth status` / `codex-multi-auth report`
|
|
27
|
-
- Default-on
|
|
31
|
+
- Default-on loopback Responses proxy for live account rotation inside forwarded Codex CLI/app sessions
|
|
28
32
|
- Optional loopback-only local bridge for `/health`, `/v1/models`, and `/v1/responses`, protected by hashed local client tokens
|
|
29
|
-
- Reversible packaged Codex app bind and user-level launcher routing helpers
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
- Reversible packaged Codex app bind and user-level launcher routing helpers that do not patch official app binaries
|
|
34
|
+
- Session affinity, live account sync, proactive refresh, and preemptive quota deferral controls
|
|
35
|
+
- Codex-oriented request/prompt compatibility with strict runtime handling and documented error contracts
|
|
36
|
+
- Stable docs for install, configuration, troubleshooting, upgrade, public API, storage paths, and release notes
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Why Developers Use It
|
|
41
|
+
|
|
42
|
+
`codex-multi-auth` makes local Codex account state visible and recoverable. Instead of one opaque auth file, you get a named account pool, deterministic account switching, health-aware selection, JSON diagnostics for automation, and safe repair commands for stale or damaged local state. The architecture is designed for personal development workflows: credentials stay local, runtime rotation is loopback-only, and official Codex install paths keep owning the `codex` command.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Current Architecture At A Glance
|
|
47
|
+
|
|
48
|
+
`codex-multi-auth` now ships three distinct global binaries:
|
|
49
|
+
|
|
50
|
+
| Binary | Purpose |
|
|
51
|
+
| --- | --- |
|
|
52
|
+
| `codex-multi-auth` | Primary account manager; accepts bare auth subcommands such as `login`, `status`, `switch`, `forecast`, and `rotation status` |
|
|
53
|
+
| `codex-multi-auth-codex` | Optional wrapper that handles `auth ...` locally and forwards every other command to the official Codex CLI |
|
|
54
|
+
| `codex-multi-auth-app-launcher` | Optional desktop launcher helper for supported user-level shortcuts and wrapper apps |
|
|
55
|
+
|
|
56
|
+
The package does not publish a global `codex` binary. Keep `codex` owned by the official OpenAI install path and use `codex-multi-auth-codex ...` only when you intentionally want this package's forwarding wrapper.
|
|
35
57
|
|
|
36
58
|
---
|
|
37
59
|
|
|
@@ -312,7 +334,7 @@ codex-multi-auth login
|
|
|
312
334
|
<details>
|
|
313
335
|
<summary><b>Common symptoms</b></summary>
|
|
314
336
|
|
|
315
|
-
- `codex
|
|
337
|
+
- `codex-multi-auth` unrecognized: run `where codex-multi-auth` or `which codex-multi-auth`, then follow `docs/troubleshooting.md` for install checks
|
|
316
338
|
- Switch succeeds but wrong account appears active: run `codex-multi-auth switch <index>`, then restart session
|
|
317
339
|
- Requests fail fast with a pool cooldown message: wait for the cooldown window or inspect `codex-multi-auth status`
|
|
318
340
|
- Requests fail fast after repeated upstream 5xx errors: inspect `codex-multi-auth report --json` for runtime traffic and cooldown details
|
|
@@ -360,8 +382,10 @@ codex-multi-auth doctor --json
|
|
|
360
382
|
|
|
361
383
|
## Release Notes
|
|
362
384
|
|
|
363
|
-
- Current stable: [docs/releases/v2.1.
|
|
364
|
-
- Previous stable: [docs/releases/v2.1.
|
|
385
|
+
- Current stable: [docs/releases/v2.1.6.md](docs/releases/v2.1.6.md)
|
|
386
|
+
- Previous stable: [docs/releases/v2.1.5.md](docs/releases/v2.1.5.md)
|
|
387
|
+
- Earlier stable: [docs/releases/v2.1.4.md](docs/releases/v2.1.4.md)
|
|
388
|
+
- Earlier stable: [docs/releases/v2.1.3.md](docs/releases/v2.1.3.md)
|
|
365
389
|
- Earlier stable: [docs/releases/v2.1.2.md](docs/releases/v2.1.2.md)
|
|
366
390
|
- Earlier stable: [docs/releases/v2.1.1.md](docs/releases/v2.1.1.md)
|
|
367
391
|
- Earlier stable: [docs/releases/v2.1.0.md](docs/releases/v2.1.0.md)
|
package/config/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Config Templates
|
|
2
2
|
|
|
3
|
-
These files are optional model/provider templates for host/plugin configurations that still load `codex-multi-auth` directly. The normal
|
|
3
|
+
These files are optional model/provider templates for host/plugin configurations that still load `codex-multi-auth` directly. The normal account-manager workflow uses `codex-multi-auth ...` and does not require these templates.
|
|
4
4
|
|
|
5
5
|
## Primary (Codex-named)
|
|
6
6
|
|
|
@@ -13,7 +13,7 @@ These files are optional model/provider templates for host/plugin configurations
|
|
|
13
13
|
## Notes
|
|
14
14
|
|
|
15
15
|
- These templates are optional for the OAuth account manager flow and the runtime rotation proxy.
|
|
16
|
-
- Core
|
|
16
|
+
- Core account-manager commands use `codex-multi-auth login`.
|
|
17
17
|
|
|
18
18
|
## Defaults Included
|
|
19
19
|
|
|
@@ -27,4 +27,3 @@ These files are optional model/provider templates for host/plugin configurations
|
|
|
27
27
|
- [`../docs/configuration.md`](../docs/configuration.md)
|
|
28
28
|
- [`../docs/getting-started.md`](../docs/getting-started.md)
|
|
29
29
|
- [`../docs/reference/settings.md`](../docs/reference/settings.md)
|
|
30
|
-
|
package/dist/index.js
CHANGED
|
@@ -438,7 +438,7 @@ export const OpenAIOAuthPlugin = async ({ client }) => {
|
|
|
438
438
|
await accountManager.saveToDisk();
|
|
439
439
|
}
|
|
440
440
|
if (accountManager.getAccountCount() === 0) {
|
|
441
|
-
logDebug(`[${PLUGIN_NAME}] No OAuth accounts available (run codex login)`);
|
|
441
|
+
logDebug(`[${PLUGIN_NAME}] No OAuth accounts available (run codex-multi-auth login)`);
|
|
442
442
|
return {};
|
|
443
443
|
}
|
|
444
444
|
// Extract user configuration (global + per-model options)
|
|
@@ -679,7 +679,7 @@ export const OpenAIOAuthPlugin = async ({ client }) => {
|
|
|
679
679
|
};
|
|
680
680
|
return new Response(JSON.stringify({
|
|
681
681
|
error: {
|
|
682
|
-
message: `The account pool is cooling down after recent rate-limit exhaustion. Try again in ${formatWaitTime(poolCooldownRemainingMs)} or inspect \`codex
|
|
682
|
+
message: `The account pool is cooling down after recent rate-limit exhaustion. Try again in ${formatWaitTime(poolCooldownRemainingMs)} or inspect \`codex-multi-auth status\`.`,
|
|
683
683
|
},
|
|
684
684
|
}), {
|
|
685
685
|
status: 429,
|
|
@@ -701,7 +701,7 @@ export const OpenAIOAuthPlugin = async ({ client }) => {
|
|
|
701
701
|
};
|
|
702
702
|
return new Response(JSON.stringify({
|
|
703
703
|
error: {
|
|
704
|
-
message: `Multiple accounts recently failed with upstream server errors. Try again in ${formatWaitTime(serverBurstCooldownRemainingMs)} or inspect \`codex
|
|
704
|
+
message: `Multiple accounts recently failed with upstream server errors. Try again in ${formatWaitTime(serverBurstCooldownRemainingMs)} or inspect \`codex-multi-auth report --json\`.`,
|
|
705
705
|
},
|
|
706
706
|
}), {
|
|
707
707
|
status: 503,
|
|
@@ -862,7 +862,7 @@ export const OpenAIOAuthPlugin = async ({ client }) => {
|
|
|
862
862
|
accountManager.removeAccount(account);
|
|
863
863
|
sessionAffinityStore?.reindexAfterRemoval(removedIndex);
|
|
864
864
|
accountManager.saveToDiskDebounced();
|
|
865
|
-
await showRuntimeToast(client, `Removed ${accountLabel} after ${failures} consecutive auth failures. Run 'codex login' to re-add.`, "error", { duration: toastDurationMs * 2 });
|
|
865
|
+
await showRuntimeToast(client, `Removed ${accountLabel} after ${failures} consecutive auth failures. Run 'codex-multi-auth login' to re-add.`, "error", { duration: toastDurationMs * 2 });
|
|
866
866
|
continue;
|
|
867
867
|
}
|
|
868
868
|
if (typeof authFailurePolicy.cooldownMs === "number" &&
|
|
@@ -1634,7 +1634,7 @@ export const OpenAIOAuthPlugin = async ({ client }) => {
|
|
|
1634
1634
|
syncRuntimeObservability(requestTraceId);
|
|
1635
1635
|
return new Response(JSON.stringify({
|
|
1636
1636
|
error: {
|
|
1637
|
-
message: `Upstream server failures were observed across multiple accounts. Pausing retries for ${formatWaitTime(serverBurstCooldownUntil - Date.now())}. Check \`codex
|
|
1637
|
+
message: `Upstream server failures were observed across multiple accounts. Pausing retries for ${formatWaitTime(serverBurstCooldownUntil - Date.now())}. Check \`codex-multi-auth report --json\` for runtime metrics.`,
|
|
1638
1638
|
},
|
|
1639
1639
|
}), {
|
|
1640
1640
|
status: 503,
|
|
@@ -1728,10 +1728,10 @@ export const OpenAIOAuthPlugin = async ({ client }) => {
|
|
|
1728
1728
|
? formatWaitTime(effectiveWaitMs)
|
|
1729
1729
|
: "a bit";
|
|
1730
1730
|
const message = count === 0
|
|
1731
|
-
? "No Codex accounts configured. Run `codex login`."
|
|
1731
|
+
? "No Codex accounts configured. Run `codex-multi-auth login`."
|
|
1732
1732
|
: effectiveWaitMs > 0
|
|
1733
|
-
? `All ${count} account(s) are rate-limited. A short pool cooldown is now active for ${waitLabel}. Try again later or inspect \`codex
|
|
1734
|
-
: `All ${count} account(s) failed (server errors or auth issues). Check account health with \`codex
|
|
1733
|
+
? `All ${count} account(s) are rate-limited. A short pool cooldown is now active for ${waitLabel}. Try again later or inspect \`codex-multi-auth status\`.`
|
|
1734
|
+
: `All ${count} account(s) failed (server errors or auth issues). Check account health with \`codex-multi-auth report --json\`.`;
|
|
1735
1735
|
runtimeMetrics.failedRequests++;
|
|
1736
1736
|
runtimeMetrics.lastError = message;
|
|
1737
1737
|
syncRuntimeObservability(requestTraceId);
|
|
@@ -2210,7 +2210,7 @@ export const OpenAIOAuthPlugin = async ({ client }) => {
|
|
|
2210
2210
|
...formatUiHeader(ui, "Codex accounts"),
|
|
2211
2211
|
"",
|
|
2212
2212
|
formatUiItem(ui, "No accounts configured.", "warning"),
|
|
2213
|
-
formatUiItem(ui, "Run: codex login", "accent"),
|
|
2213
|
+
formatUiItem(ui, "Run: codex-multi-auth login", "accent"),
|
|
2214
2214
|
formatUiKeyValue(ui, "Storage", storePath, "muted"),
|
|
2215
2215
|
].join("\n");
|
|
2216
2216
|
}
|
|
@@ -2218,7 +2218,7 @@ export const OpenAIOAuthPlugin = async ({ client }) => {
|
|
|
2218
2218
|
"No Codex accounts configured.",
|
|
2219
2219
|
"",
|
|
2220
2220
|
"Add accounts:",
|
|
2221
|
-
" codex login",
|
|
2221
|
+
" codex-multi-auth login",
|
|
2222
2222
|
"",
|
|
2223
2223
|
`Storage: ${storePath}`,
|
|
2224
2224
|
].join("\n");
|
|
@@ -2267,7 +2267,7 @@ export const OpenAIOAuthPlugin = async ({ client }) => {
|
|
|
2267
2267
|
});
|
|
2268
2268
|
lines.push("");
|
|
2269
2269
|
lines.push(...formatUiSection(ui, "Commands"));
|
|
2270
|
-
lines.push(formatUiItem(ui, "Add account: codex login", "accent"));
|
|
2270
|
+
lines.push(formatUiItem(ui, "Add account: codex-multi-auth login", "accent"));
|
|
2271
2271
|
lines.push(formatUiItem(ui, "Switch account: codex-switch <index>"));
|
|
2272
2272
|
lines.push(formatUiItem(ui, "Detailed status: codex-status"));
|
|
2273
2273
|
lines.push(formatUiItem(ui, "Health check: codex-health"));
|
|
@@ -2305,7 +2305,7 @@ export const OpenAIOAuthPlugin = async ({ client }) => {
|
|
|
2305
2305
|
lines.push(`Storage: ${storePath}`);
|
|
2306
2306
|
lines.push("");
|
|
2307
2307
|
lines.push("Commands:");
|
|
2308
|
-
lines.push(" - Add account: codex login");
|
|
2308
|
+
lines.push(" - Add account: codex-multi-auth login");
|
|
2309
2309
|
lines.push(" - Switch account: codex-switch");
|
|
2310
2310
|
lines.push(" - Status details: codex-status");
|
|
2311
2311
|
lines.push(" - Health check: codex-health");
|
|
@@ -2328,10 +2328,10 @@ export const OpenAIOAuthPlugin = async ({ client }) => {
|
|
|
2328
2328
|
...formatUiHeader(ui, "Switch account"),
|
|
2329
2329
|
"",
|
|
2330
2330
|
formatUiItem(ui, "No accounts configured.", "warning"),
|
|
2331
|
-
formatUiItem(ui, "Run: codex login", "accent"),
|
|
2331
|
+
formatUiItem(ui, "Run: codex-multi-auth login", "accent"),
|
|
2332
2332
|
].join("\n");
|
|
2333
2333
|
}
|
|
2334
|
-
return "No Codex accounts configured. Run: codex login";
|
|
2334
|
+
return "No Codex accounts configured. Run: codex-multi-auth login";
|
|
2335
2335
|
}
|
|
2336
2336
|
const targetIndex = Math.floor((index ?? 0) - 1);
|
|
2337
2337
|
if (!Number.isFinite(targetIndex) ||
|
|
@@ -2401,10 +2401,10 @@ export const OpenAIOAuthPlugin = async ({ client }) => {
|
|
|
2401
2401
|
...formatUiHeader(ui, "Account status"),
|
|
2402
2402
|
"",
|
|
2403
2403
|
formatUiItem(ui, "No accounts configured.", "warning"),
|
|
2404
|
-
formatUiItem(ui, "Run: codex login", "accent"),
|
|
2404
|
+
formatUiItem(ui, "Run: codex-multi-auth login", "accent"),
|
|
2405
2405
|
].join("\n");
|
|
2406
2406
|
}
|
|
2407
|
-
return "No Codex accounts configured. Run: codex login";
|
|
2407
|
+
return "No Codex accounts configured. Run: codex-multi-auth login";
|
|
2408
2408
|
}
|
|
2409
2409
|
const now = Date.now();
|
|
2410
2410
|
const activeIndex = resolveActiveIndex(storage, "codex");
|
|
@@ -2632,10 +2632,10 @@ export const OpenAIOAuthPlugin = async ({ client }) => {
|
|
|
2632
2632
|
...formatUiHeader(ui, "Health check"),
|
|
2633
2633
|
"",
|
|
2634
2634
|
formatUiItem(ui, "No accounts configured.", "warning"),
|
|
2635
|
-
formatUiItem(ui, "Run: codex login", "accent"),
|
|
2635
|
+
formatUiItem(ui, "Run: codex-multi-auth login", "accent"),
|
|
2636
2636
|
].join("\n");
|
|
2637
2637
|
}
|
|
2638
|
-
return "No Codex accounts configured. Run: codex login";
|
|
2638
|
+
return "No Codex accounts configured. Run: codex-multi-auth login";
|
|
2639
2639
|
}
|
|
2640
2640
|
const results = ui.v2Enabled
|
|
2641
2641
|
? []
|
|
@@ -2772,7 +2772,7 @@ export const OpenAIOAuthPlugin = async ({ client }) => {
|
|
|
2772
2772
|
formatUiItem(ui, `${getStatusMarker(ui, "ok")} Removed: ${label}`, "success"),
|
|
2773
2773
|
remaining > 0
|
|
2774
2774
|
? formatUiKeyValue(ui, "Remaining accounts", String(remaining))
|
|
2775
|
-
: formatUiItem(ui, "No accounts remaining. Run: codex login", "warning"),
|
|
2775
|
+
: formatUiItem(ui, "No accounts remaining. Run: codex-multi-auth login", "warning"),
|
|
2776
2776
|
].join("\n");
|
|
2777
2777
|
}
|
|
2778
2778
|
return [
|
|
@@ -2780,7 +2780,7 @@ export const OpenAIOAuthPlugin = async ({ client }) => {
|
|
|
2780
2780
|
"",
|
|
2781
2781
|
remaining > 0
|
|
2782
2782
|
? `Remaining accounts: ${remaining}`
|
|
2783
|
-
: "No accounts remaining. Run: codex login",
|
|
2783
|
+
: "No accounts remaining. Run: codex-multi-auth login",
|
|
2784
2784
|
].join("\n");
|
|
2785
2785
|
},
|
|
2786
2786
|
}),
|
|
@@ -2796,10 +2796,10 @@ export const OpenAIOAuthPlugin = async ({ client }) => {
|
|
|
2796
2796
|
...formatUiHeader(ui, "Refresh accounts"),
|
|
2797
2797
|
"",
|
|
2798
2798
|
formatUiItem(ui, "No accounts configured.", "warning"),
|
|
2799
|
-
formatUiItem(ui, "Run: codex login", "accent"),
|
|
2799
|
+
formatUiItem(ui, "Run: codex-multi-auth login", "accent"),
|
|
2800
2800
|
].join("\n");
|
|
2801
2801
|
}
|
|
2802
|
-
return "No Codex accounts configured. Run: codex login";
|
|
2802
|
+
return "No Codex accounts configured. Run: codex-multi-auth login";
|
|
2803
2803
|
}
|
|
2804
2804
|
const results = ui.v2Enabled
|
|
2805
2805
|
? []
|