oc-codex-multi-auth 6.10.0 → 6.10.1
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.d.ts.map +1 -1
- package/dist/index.js +31 -5
- package/dist/index.js.map +1 -1
- package/dist/lib/auth/server.d.ts.map +1 -1
- package/dist/lib/auth/server.js +7 -3
- package/dist/lib/auth/server.js.map +1 -1
- package/dist/lib/oauth-success.d.ts +1 -0
- package/dist/lib/oauth-success.d.ts.map +1 -1
- package/dist/lib/oauth-success.html +198 -707
- package/dist/lib/oauth-success.js +202 -708
- package/dist/lib/oauth-success.js.map +1 -1
- package/dist/lib/tools/codex-doctor.d.ts.map +1 -1
- package/dist/lib/tools/codex-doctor.js +168 -142
- package/dist/lib/tools/codex-doctor.js.map +1 -1
- package/dist/lib/tools/codex-health.d.ts.map +1 -1
- package/dist/lib/tools/codex-health.js +41 -38
- package/dist/lib/tools/codex-health.js.map +1 -1
- package/dist/lib/tools/codex-refresh.d.ts.map +1 -1
- package/dist/lib/tools/codex-refresh.js +24 -103
- package/dist/lib/tools/codex-refresh.js.map +1 -1
- package/dist/lib/tools/index.d.ts +1 -0
- package/dist/lib/tools/index.d.ts.map +1 -1
- package/dist/lib/tools/index.js.map +1 -1
- package/dist/lib/tools/refresh-account.d.ts +63 -0
- package/dist/lib/tools/refresh-account.d.ts.map +1 -0
- package/dist/lib/tools/refresh-account.js +159 -0
- package/dist/lib/tools/refresh-account.js.map +1 -0
- package/dist/lib/ui/beginner.d.ts +1 -0
- package/dist/lib/ui/beginner.d.ts.map +1 -1
- package/dist/lib/ui/beginner.js +12 -1
- package/dist/lib/ui/beginner.js.map +1 -1
- package/package.json +155 -155
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-success.js","sourceRoot":"","sources":["../../lib/oauth-success.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,
|
|
1
|
+
{"version":3,"file":"oauth-success.js","sourceRoot":"","sources":["../../lib/oauth-success.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACxD,OAAO;;;;;;;iBAOS,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAmMnB,CAAC;AACT,CAAC;AAED,4EAA4E;AAC5E,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-doctor.d.ts","sourceRoot":"","sources":["../../../lib/tools/codex-doctor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"codex-doctor.d.ts","sourceRoot":"","sources":["../../../lib/tools/codex-doctor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAwCrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAY9C,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,WAAW,GAAG,cAAc,CAiiBtE"}
|
|
@@ -3,17 +3,83 @@
|
|
|
3
3
|
* Extracted from `index.ts` per RC-1 Phase 2.
|
|
4
4
|
*/
|
|
5
5
|
import { tool } from "@opencode-ai/plugin/tool";
|
|
6
|
-
import { getStoragePath, loadAccounts,
|
|
6
|
+
import { getStoragePath, loadAccounts, withAccountStorageTransaction, } from "../storage.js";
|
|
7
7
|
import { AccountManager } from "../accounts.js";
|
|
8
|
-
import { queuedRefresh } from "../refresh-queue.js";
|
|
9
8
|
import { MODEL_FAMILIES } from "../prompts/codex.js";
|
|
10
9
|
import { clearRefreshedAccountsStaleState, findDisabledAccountsWithFreshCredential, findDisabledTokenSourceDuplicates, } from "../accounts/stale-state.js";
|
|
11
10
|
import { clearTuiQuotaSnapshot } from "../tui-quota-cache.js";
|
|
12
11
|
import { buildBeginnerDoctorFindings, formatPromptCacheSnapshot, recommendBeginnerNextAction, summarizeBeginnerAccounts, } from "../ui/beginner.js";
|
|
13
12
|
import { formatUiHeader, formatUiItem, formatUiKeyValue, formatUiSection, } from "../ui/format.js";
|
|
14
13
|
import { normalizeToolOutputFormat, renderJsonOutput, } from "../runtime.js";
|
|
14
|
+
import { buildRefreshInputs, findAccountIndexByIdentity, refreshAndPersistAccount, } from "./refresh-account.js";
|
|
15
15
|
export function createCodexDoctorTool(ctx) {
|
|
16
|
-
const { resolveUiRuntime, resolveActiveIndex, toBeginnerAccountSnapshots, getBeginnerRuntimeSnapshot, buildRoutingVisibilitySnapshot, appendRoutingVisibilityText, appendRoutingVisibilityUi, formatDoctorSeverity, formatDoctorSeverityText, runtimeMetrics, cachedAccountManagerRef,
|
|
16
|
+
const { resolveUiRuntime, resolveActiveIndex, toBeginnerAccountSnapshots, getBeginnerRuntimeSnapshot, buildRoutingVisibilitySnapshot, appendRoutingVisibilityText, appendRoutingVisibilityUi, formatDoctorSeverity, formatDoctorSeverityText, runtimeMetrics, cachedAccountManagerRef, reloadCachedAccountManager, } = ctx;
|
|
17
|
+
async function loadDiagnostics(extraFindings = [], verificationFailureIdentities = []) {
|
|
18
|
+
const storage = await loadAccounts();
|
|
19
|
+
const now = Date.now();
|
|
20
|
+
const activeIndex = storage && storage.accounts.length > 0
|
|
21
|
+
? resolveActiveIndex(storage, "codex")
|
|
22
|
+
: 0;
|
|
23
|
+
const failedIndices = new Set(verificationFailureIdentities
|
|
24
|
+
.map((identity) => findAccountIndexByIdentity(storage?.accounts ?? [], identity))
|
|
25
|
+
.filter((index) => index >= 0));
|
|
26
|
+
const snapshots = storage
|
|
27
|
+
? toBeginnerAccountSnapshots(storage, activeIndex, now)
|
|
28
|
+
.map((snapshot) => ({
|
|
29
|
+
...snapshot,
|
|
30
|
+
refreshVerificationFailed: failedIndices.has(snapshot.index),
|
|
31
|
+
}))
|
|
32
|
+
: [];
|
|
33
|
+
const runtime = getBeginnerRuntimeSnapshot();
|
|
34
|
+
const summary = summarizeBeginnerAccounts(snapshots, now);
|
|
35
|
+
const findings = buildBeginnerDoctorFindings({
|
|
36
|
+
accounts: snapshots,
|
|
37
|
+
now,
|
|
38
|
+
runtime,
|
|
39
|
+
});
|
|
40
|
+
const nextAction = recommendBeginnerNextAction({
|
|
41
|
+
accounts: snapshots,
|
|
42
|
+
now,
|
|
43
|
+
runtime,
|
|
44
|
+
});
|
|
45
|
+
// Surface disabled token-source duplicates that shadow an enabled,
|
|
46
|
+
// org-backed account by email (issue #171). These appear when a
|
|
47
|
+
// re-login mints a token-source entry instead of updating the org
|
|
48
|
+
// account; harmless for rotation but they pollute diagnostics. We flag
|
|
49
|
+
// rather than auto-remove because the only link between the two is
|
|
50
|
+
// email, and email-only merges must not blindly collapse multi-org
|
|
51
|
+
// accounts (#64).
|
|
52
|
+
const disabledTokenSourceDuplicates = storage
|
|
53
|
+
? findDisabledTokenSourceDuplicates(storage.accounts)
|
|
54
|
+
: [];
|
|
55
|
+
if (disabledTokenSourceDuplicates.length > 0) {
|
|
56
|
+
findings.push({
|
|
57
|
+
severity: "warning",
|
|
58
|
+
code: "disabled-token-source-duplicate",
|
|
59
|
+
summary: `${disabledTokenSourceDuplicates.length} disabled duplicate account entry(ies) shadow a real account.`,
|
|
60
|
+
action: `Remove the leftover entry(ies) with \`codex-remove\` (slots: ${disabledTokenSourceDuplicates
|
|
61
|
+
.map((index) => index + 1)
|
|
62
|
+
.join(", ")}).`,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
// A user-disabled account that absorbed a fresh enabled re-login stays
|
|
66
|
+
// disabled (fail-closed) but is otherwise invisible to diagnostics (#171).
|
|
67
|
+
const disabledWithFreshCredential = storage
|
|
68
|
+
? findDisabledAccountsWithFreshCredential(storage.accounts)
|
|
69
|
+
: [];
|
|
70
|
+
if (disabledWithFreshCredential.length > 0) {
|
|
71
|
+
findings.push({
|
|
72
|
+
severity: "warning",
|
|
73
|
+
code: "disabled-account-fresh-credential",
|
|
74
|
+
summary: `${disabledWithFreshCredential.length} disabled account(s) hold a fresh login credential.`,
|
|
75
|
+
action: `A recent re-login landed on a disabled slot; re-enable it in oc-codex-multi-auth-accounts.json if intended (slots: ${disabledWithFreshCredential
|
|
76
|
+
.map((index) => index + 1)
|
|
77
|
+
.join(", ")}).`,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
findings.push(...extraFindings);
|
|
81
|
+
return { storage, activeIndex, snapshots, runtime, summary, findings, nextAction };
|
|
82
|
+
}
|
|
17
83
|
return tool({
|
|
18
84
|
description: "Run beginner-friendly diagnostics with clear fixes.",
|
|
19
85
|
args: {
|
|
@@ -33,128 +99,74 @@ export function createCodexDoctorTool(ctx) {
|
|
|
33
99
|
async execute({ deep, fix, format, } = {}) {
|
|
34
100
|
const ui = resolveUiRuntime();
|
|
35
101
|
const outputFormat = normalizeToolOutputFormat(format);
|
|
36
|
-
const storage = await loadAccounts();
|
|
37
|
-
const now = Date.now();
|
|
38
|
-
const activeIndex = storage && storage.accounts.length > 0
|
|
39
|
-
? resolveActiveIndex(storage, "codex")
|
|
40
|
-
: 0;
|
|
41
|
-
const snapshots = storage
|
|
42
|
-
? toBeginnerAccountSnapshots(storage, activeIndex, now)
|
|
43
|
-
: [];
|
|
44
|
-
const runtime = getBeginnerRuntimeSnapshot();
|
|
45
|
-
const summary = summarizeBeginnerAccounts(snapshots, now);
|
|
46
|
-
const findings = buildBeginnerDoctorFindings({
|
|
47
|
-
accounts: snapshots,
|
|
48
|
-
now,
|
|
49
|
-
runtime,
|
|
50
|
-
});
|
|
51
|
-
const nextAction = recommendBeginnerNextAction({
|
|
52
|
-
accounts: snapshots,
|
|
53
|
-
now,
|
|
54
|
-
runtime,
|
|
55
|
-
});
|
|
56
|
-
// Surface disabled token-source duplicates that shadow an enabled,
|
|
57
|
-
// org-backed account by email (issue #171). These appear when a
|
|
58
|
-
// re-login mints a token-source entry instead of updating the org
|
|
59
|
-
// account; harmless for rotation but they pollute diagnostics. We flag
|
|
60
|
-
// rather than auto-remove because the only link between the two is
|
|
61
|
-
// email, and email-only merges must not blindly collapse multi-org
|
|
62
|
-
// accounts (#64).
|
|
63
|
-
const disabledTokenSourceDuplicates = storage
|
|
64
|
-
? findDisabledTokenSourceDuplicates(storage.accounts)
|
|
65
|
-
: [];
|
|
66
|
-
if (disabledTokenSourceDuplicates.length > 0) {
|
|
67
|
-
findings.push({
|
|
68
|
-
severity: "warning",
|
|
69
|
-
code: "disabled-token-source-duplicate",
|
|
70
|
-
summary: `${disabledTokenSourceDuplicates.length} disabled duplicate account entry(ies) shadow a real account.`,
|
|
71
|
-
action: `Remove the leftover entry(ies) with \`codex-remove\` (slots: ${disabledTokenSourceDuplicates
|
|
72
|
-
.map((index) => index + 1)
|
|
73
|
-
.join(", ")}).`,
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
// A user-disabled account that absorbed a fresh enabled re-login stays
|
|
77
|
-
// disabled (fail-closed) but is otherwise invisible to diagnostics (#171).
|
|
78
|
-
const disabledWithFreshCredential = storage
|
|
79
|
-
? findDisabledAccountsWithFreshCredential(storage.accounts)
|
|
80
|
-
: [];
|
|
81
|
-
if (disabledWithFreshCredential.length > 0) {
|
|
82
|
-
findings.push({
|
|
83
|
-
severity: "warning",
|
|
84
|
-
code: "disabled-account-fresh-credential",
|
|
85
|
-
summary: `${disabledWithFreshCredential.length} disabled account(s) hold a fresh login credential.`,
|
|
86
|
-
action: `A recent re-login landed on a disabled slot; re-enable it in oc-codex-multi-auth-accounts.json if intended (slots: ${disabledWithFreshCredential
|
|
87
|
-
.map((index) => index + 1)
|
|
88
|
-
.join(", ")}).`,
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
let routingVisibility = null;
|
|
92
102
|
const appliedFixes = [];
|
|
93
103
|
const fixErrors = [];
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
104
|
+
const extraFindings = [];
|
|
105
|
+
let routingVisibility = null;
|
|
106
|
+
let diagnostics = await loadDiagnostics();
|
|
107
|
+
if (fix && diagnostics.storage && diagnostics.storage.accounts.length > 0) {
|
|
108
|
+
const refreshResults = [];
|
|
98
109
|
const reloginNeeded = [];
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
110
|
+
const verificationFailureIdentities = [];
|
|
111
|
+
const inputs = buildRefreshInputs(diagnostics.storage.accounts);
|
|
112
|
+
for (const input of inputs) {
|
|
113
|
+
if (!input)
|
|
102
114
|
continue;
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
continue;
|
|
110
|
-
try {
|
|
111
|
-
const refreshResult = await queuedRefresh(account.refreshToken);
|
|
112
|
-
if (refreshResult.type === "success") {
|
|
113
|
-
account.refreshToken = refreshResult.refresh;
|
|
114
|
-
account.accessToken = refreshResult.access;
|
|
115
|
-
account.expiresAt = refreshResult.expires;
|
|
116
|
-
changedByRefresh = true;
|
|
117
|
-
refreshedCount += 1;
|
|
118
|
-
refreshedAccounts.push(account);
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
// A failed refresh (vs. a thrown error) means the stored
|
|
122
|
-
// credential is genuinely dead — re-login is required. Surface
|
|
123
|
-
// it explicitly so an all-dark pool with expired tokens does not
|
|
124
|
-
// fail silently (issue #171: "surface this state"). We do NOT
|
|
125
|
-
// clear stale state for these accounts: they really are blocked.
|
|
126
|
-
const detail = refreshResult.message ?? refreshResult.reason ?? "token refresh failed";
|
|
127
|
-
reloginNeeded.push(accountIndex + 1);
|
|
128
|
-
fixErrors.push(`Account ${accountIndex + 1}: ${detail} — run \`opencode auth login\` to re-authenticate.`);
|
|
129
|
-
}
|
|
115
|
+
const outcome = await refreshAndPersistAccount(input);
|
|
116
|
+
if (outcome.status === "refreshed") {
|
|
117
|
+
refreshResults.push({
|
|
118
|
+
index: outcome.index,
|
|
119
|
+
identity: outcome.result.identity,
|
|
120
|
+
});
|
|
130
121
|
}
|
|
131
|
-
|
|
132
|
-
|
|
122
|
+
else if (outcome.status === "skipped") {
|
|
123
|
+
// Skip intentionally-disabled accounts: refreshing them is wrong
|
|
124
|
+
// (e.g. the disabled token-source duplicate would get a spurious
|
|
125
|
+
// "re-login" directive when its dead token fails, when the correct
|
|
126
|
+
// remedy is `codex-remove`), and stale-state must never be cleared
|
|
127
|
+
// on an entry the user disabled on purpose.
|
|
133
128
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
// auto-switch below finds no eligible account and the dead routing
|
|
139
|
-
// persists across restarts. The summary is computed here but only
|
|
140
|
-
// reported after saveAccounts succeeds, so we never tell the user a
|
|
141
|
-
// fix landed while the on-disk state still carries the stale block.
|
|
142
|
-
let staleSummary = { cooldownsCleared: 0, rateLimitKeysCleared: 0 };
|
|
143
|
-
if (refreshedAccounts.length > 0) {
|
|
144
|
-
staleSummary = clearRefreshedAccountsStaleState(refreshedAccounts);
|
|
145
|
-
if (staleSummary.cooldownsCleared > 0 || staleSummary.rateLimitKeysCleared > 0) {
|
|
146
|
-
changedByRefresh = true;
|
|
129
|
+
else {
|
|
130
|
+
verificationFailureIdentities.push(outcome.identity);
|
|
131
|
+
reloginNeeded.push(outcome.index + 1);
|
|
132
|
+
fixErrors.push(`Account ${outcome.index + 1}: ${outcome.error} — run \`opencode auth login\` to re-authenticate.`);
|
|
147
133
|
}
|
|
148
134
|
}
|
|
149
|
-
if (
|
|
135
|
+
if (verificationFailureIdentities.length > 0) {
|
|
136
|
+
extraFindings.push({
|
|
137
|
+
severity: "error",
|
|
138
|
+
code: "refresh-verification-failed",
|
|
139
|
+
summary: `${verificationFailureIdentities.length} account(s) failed refresh-token verification.`,
|
|
140
|
+
action: `Re-authenticate the affected account(s) with \`opencode auth login\` (slots: ${reloginNeeded.join(", ")}).`,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
if (refreshResults.length > 0) {
|
|
144
|
+
appliedFixes.push(`Refreshed and persisted ${refreshResults.length} account token(s).`);
|
|
145
|
+
// A successful refresh proves the credential is alive, so clear any
|
|
146
|
+
// stale cooldown / rate-limit state that would otherwise keep the
|
|
147
|
+
// recovered account out of rotation (issue #171). Apply this to a
|
|
148
|
+
// fresh storage snapshot so non-credential state written by other
|
|
149
|
+
// processes is preserved.
|
|
150
150
|
try {
|
|
151
|
-
await
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
151
|
+
const staleSummary = await withAccountStorageTransaction(async (current, persist) => {
|
|
152
|
+
if (!current) {
|
|
153
|
+
throw new Error("Account storage is unavailable");
|
|
154
|
+
}
|
|
155
|
+
const refreshedRecords = [];
|
|
156
|
+
for (const refreshed of refreshResults) {
|
|
157
|
+
const idx = findAccountIndexByIdentity(current.accounts, refreshed.identity);
|
|
158
|
+
const record = idx >= 0 ? current.accounts[idx] : undefined;
|
|
159
|
+
if (record && record.enabled !== false) {
|
|
160
|
+
refreshedRecords.push(record);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
const summary = clearRefreshedAccountsStaleState(refreshedRecords);
|
|
164
|
+
if (summary.cooldownsCleared > 0 ||
|
|
165
|
+
summary.rateLimitKeysCleared > 0) {
|
|
166
|
+
await persist(current);
|
|
167
|
+
}
|
|
168
|
+
return summary;
|
|
169
|
+
});
|
|
158
170
|
if (staleSummary.cooldownsCleared > 0) {
|
|
159
171
|
appliedFixes.push(`Cleared cooldown on ${staleSummary.cooldownsCleared} recovered account(s).`);
|
|
160
172
|
}
|
|
@@ -163,14 +175,10 @@ export function createCodexDoctorTool(ctx) {
|
|
|
163
175
|
}
|
|
164
176
|
}
|
|
165
177
|
catch (error) {
|
|
166
|
-
fixErrors.push(`Failed to persist
|
|
178
|
+
fixErrors.push(`Failed to persist stale-state repairs: ${error instanceof Error ? error.message : String(error)}`);
|
|
167
179
|
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
// longer matches the pool, making diagnostics misleading (#171).
|
|
171
|
-
// Only clear it when the repair actually changed account state, so a
|
|
172
|
-
// run where every refresh failed does not report a phantom fix.
|
|
173
|
-
if (changedByRefresh) {
|
|
180
|
+
// Stale TUI quota cache can reference an account index/count that no
|
|
181
|
+
// longer matches the pool, making diagnostics misleading (#171).
|
|
174
182
|
try {
|
|
175
183
|
await clearTuiQuotaSnapshot();
|
|
176
184
|
appliedFixes.push("Cleared stale TUI quota cache.");
|
|
@@ -181,9 +189,6 @@ export function createCodexDoctorTool(ctx) {
|
|
|
181
189
|
fixErrors.push(`Failed to clear TUI quota cache: ${error instanceof Error ? error.message : String(error)}`);
|
|
182
190
|
}
|
|
183
191
|
}
|
|
184
|
-
// Surface a clear next step when one or more accounts could not be
|
|
185
|
-
// refreshed: the credential is dead and only re-login fixes it. Without
|
|
186
|
-
// this the user sees no eligible account but no cause (issue #171).
|
|
187
192
|
if (reloginNeeded.length > 0) {
|
|
188
193
|
// Re-login is a MANUAL action, not an applied fix — keep it in fixErrors
|
|
189
194
|
// so JSON consumers reading autoFix.appliedFixes are not misled.
|
|
@@ -200,18 +205,39 @@ export function createCodexDoctorTool(ctx) {
|
|
|
200
205
|
return b.tokensAvailable - a.tokensAvailable;
|
|
201
206
|
});
|
|
202
207
|
const best = eligible[0];
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
208
|
+
const bestAccount = best
|
|
209
|
+
? managerForFix.getAccountsSnapshot()[best.index]
|
|
210
|
+
: undefined;
|
|
211
|
+
if (best && bestAccount) {
|
|
212
|
+
const bestIdentity = {
|
|
213
|
+
organizationId: bestAccount.organizationId,
|
|
214
|
+
accountId: bestAccount.accountId,
|
|
215
|
+
refreshToken: bestAccount.refreshToken,
|
|
216
|
+
};
|
|
217
|
+
const switchResult = await withAccountStorageTransaction(async (current, persist) => {
|
|
218
|
+
if (!current)
|
|
219
|
+
return "missing";
|
|
220
|
+
const freshBestIndex = findAccountIndexByIdentity(current.accounts, bestIdentity);
|
|
221
|
+
if (freshBestIndex < 0)
|
|
222
|
+
return "missing";
|
|
223
|
+
const currentActive = resolveActiveIndex(current, "codex");
|
|
224
|
+
if (freshBestIndex === currentActive)
|
|
225
|
+
return "unchanged";
|
|
226
|
+
current.activeIndex = freshBestIndex;
|
|
227
|
+
current.activeIndexByFamily =
|
|
228
|
+
current.activeIndexByFamily ?? {};
|
|
209
229
|
for (const family of MODEL_FAMILIES) {
|
|
210
|
-
|
|
230
|
+
current.activeIndexByFamily[family] = freshBestIndex;
|
|
211
231
|
}
|
|
212
|
-
await
|
|
232
|
+
await persist(current);
|
|
233
|
+
return "switched";
|
|
234
|
+
});
|
|
235
|
+
if (switchResult === "switched") {
|
|
213
236
|
appliedFixes.push(`Switched active account to ${best.index + 1} (best eligible).`);
|
|
214
237
|
}
|
|
238
|
+
else if (switchResult === "missing") {
|
|
239
|
+
fixErrors.push("Selected account changed during auto-switch; no switch was applied.");
|
|
240
|
+
}
|
|
215
241
|
}
|
|
216
242
|
else {
|
|
217
243
|
appliedFixes.push("No eligible account available for auto-switch.");
|
|
@@ -220,12 +246,11 @@ export function createCodexDoctorTool(ctx) {
|
|
|
220
246
|
catch (error) {
|
|
221
247
|
fixErrors.push(`Auto-switch evaluation failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
222
248
|
}
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
}
|
|
249
|
+
await reloadCachedAccountManager();
|
|
250
|
+
// The initial diagnostics snapshot was taken before token verification.
|
|
251
|
+
// Reload after fixes so the reported health never contradicts live
|
|
252
|
+
// refresh results (e.g. "8 healthy" alongside eight invalid tokens).
|
|
253
|
+
diagnostics = await loadDiagnostics(extraFindings, verificationFailureIdentities);
|
|
229
254
|
}
|
|
230
255
|
if (deep) {
|
|
231
256
|
const managerForRouting = cachedAccountManagerRef.current ??
|
|
@@ -235,8 +260,8 @@ export function createCodexDoctorTool(ctx) {
|
|
|
235
260
|
runtimeMetrics.lastSelectionSnapshot?.model ??
|
|
236
261
|
null;
|
|
237
262
|
const routingExplainability = managerForRouting.getSelectionExplainability(routingFamily, routingModel ?? undefined, Date.now());
|
|
238
|
-
const routingActiveIndex = storage && storage.accounts.length > 0
|
|
239
|
-
? resolveActiveIndex(storage, routingFamily)
|
|
263
|
+
const routingActiveIndex = diagnostics.storage && diagnostics.storage.accounts.length > 0
|
|
264
|
+
? resolveActiveIndex(diagnostics.storage, routingFamily)
|
|
240
265
|
: null;
|
|
241
266
|
routingVisibility = buildRoutingVisibilitySnapshot({
|
|
242
267
|
modelFamily: routingFamily,
|
|
@@ -248,6 +273,7 @@ export function createCodexDoctorTool(ctx) {
|
|
|
248
273
|
selectionExplainability: routingExplainability,
|
|
249
274
|
});
|
|
250
275
|
}
|
|
276
|
+
const { runtime, summary, findings, nextAction } = diagnostics;
|
|
251
277
|
if (outputFormat === "json") {
|
|
252
278
|
return renderJsonOutput({
|
|
253
279
|
summary: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-doctor.js","sourceRoot":"","sources":["../../../lib/tools/codex-doctor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codex-doctor.js","sourceRoot":"","sources":["../../../lib/tools/codex-doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-health.d.ts","sourceRoot":"","sources":["../../../lib/tools/codex-health.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"codex-health.d.ts","sourceRoot":"","sources":["../../../lib/tools/codex-health.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAarE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,WAAW,GAAG,cAAc,CAkLtE"}
|
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { tool } from "@opencode-ai/plugin/tool";
|
|
6
6
|
import { loadAccounts } from "../storage.js";
|
|
7
|
-
import { queuedRefresh } from "../refresh-queue.js";
|
|
8
7
|
import { findDisabledAccountsWithFreshCredential, findDisabledTokenSourceDuplicates, findStaleRecoverableAccounts, } from "../accounts/stale-state.js";
|
|
9
8
|
import { formatUiHeader, formatUiItem, paintUiText } from "../ui/format.js";
|
|
10
9
|
import { normalizeToolOutputFormat, renderJsonOutput } from "../runtime.js";
|
|
10
|
+
import { buildRefreshInputs, refreshAndPersistAccount, } from "./refresh-account.js";
|
|
11
11
|
export function createCodexHealthTool(ctx) {
|
|
12
|
-
const { resolveUiRuntime, formatCommandAccountLabel, resolveMaskEmail, getStatusMarker, buildJsonAccountIdentity, } = ctx;
|
|
12
|
+
const { resolveUiRuntime, formatCommandAccountLabel, resolveMaskEmail, getStatusMarker, buildJsonAccountIdentity, reloadCachedAccountManager, } = ctx;
|
|
13
13
|
return tool({
|
|
14
14
|
description: "Check health of all Codex accounts by validating refresh tokens.",
|
|
15
15
|
args: {
|
|
@@ -35,6 +35,7 @@ export function createCodexHealthTool(ctx) {
|
|
|
35
35
|
totalAccounts: 0,
|
|
36
36
|
healthyCount: 0,
|
|
37
37
|
unhealthyCount: 0,
|
|
38
|
+
skippedCount: 0,
|
|
38
39
|
accounts: [],
|
|
39
40
|
});
|
|
40
41
|
}
|
|
@@ -54,42 +55,42 @@ export function createCodexHealthTool(ctx) {
|
|
|
54
55
|
const jsonAccounts = [];
|
|
55
56
|
let healthyCount = 0;
|
|
56
57
|
let unhealthyCount = 0;
|
|
57
|
-
|
|
58
|
+
let skippedCount = 0;
|
|
59
|
+
const inputs = buildRefreshInputs(storage.accounts);
|
|
60
|
+
for (let i = 0; i < inputs.length; i++) {
|
|
61
|
+
const input = inputs[i];
|
|
58
62
|
const account = storage.accounts[i];
|
|
59
|
-
if (!account)
|
|
63
|
+
if (!input || !account)
|
|
60
64
|
continue;
|
|
61
65
|
const label = formatCommandAccountLabel(account, i);
|
|
62
66
|
const displayLabel = formatCommandAccountLabel(account, i, { maskEmail });
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
unhealthyCount++;
|
|
89
|
-
}
|
|
67
|
+
const outcome = await refreshAndPersistAccount(input);
|
|
68
|
+
if (outcome.status === "refreshed") {
|
|
69
|
+
jsonAccounts.push({
|
|
70
|
+
...buildJsonAccountIdentity(i, {
|
|
71
|
+
includeSensitive: includeSensitiveOutput,
|
|
72
|
+
account,
|
|
73
|
+
label,
|
|
74
|
+
}),
|
|
75
|
+
status: "healthy",
|
|
76
|
+
});
|
|
77
|
+
results.push(` ${getStatusMarker(ui, "ok")} ${displayLabel}: Healthy`);
|
|
78
|
+
healthyCount++;
|
|
79
|
+
}
|
|
80
|
+
else if (outcome.status === "skipped") {
|
|
81
|
+
jsonAccounts.push({
|
|
82
|
+
...buildJsonAccountIdentity(i, {
|
|
83
|
+
includeSensitive: includeSensitiveOutput,
|
|
84
|
+
account,
|
|
85
|
+
label,
|
|
86
|
+
}),
|
|
87
|
+
status: "skipped",
|
|
88
|
+
error: "Account is disabled",
|
|
89
|
+
});
|
|
90
|
+
results.push(` ${getStatusMarker(ui, "warning")} ${displayLabel}: Skipped (disabled)`);
|
|
91
|
+
skippedCount++;
|
|
90
92
|
}
|
|
91
|
-
|
|
92
|
-
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
93
|
+
else {
|
|
93
94
|
jsonAccounts.push({
|
|
94
95
|
...buildJsonAccountIdentity(i, {
|
|
95
96
|
includeSensitive: includeSensitiveOutput,
|
|
@@ -97,17 +98,18 @@ export function createCodexHealthTool(ctx) {
|
|
|
97
98
|
label,
|
|
98
99
|
}),
|
|
99
100
|
status: "unhealthy",
|
|
100
|
-
error:
|
|
101
|
+
error: outcome.error,
|
|
101
102
|
});
|
|
102
|
-
results.push(` ${getStatusMarker(ui, "error")} ${displayLabel}:
|
|
103
|
+
results.push(` ${getStatusMarker(ui, "error")} ${displayLabel}: ${outcome.error}`);
|
|
103
104
|
unhealthyCount++;
|
|
104
105
|
}
|
|
105
106
|
}
|
|
107
|
+
await reloadCachedAccountManager();
|
|
106
108
|
results.push("");
|
|
107
|
-
results.push(`Summary: ${healthyCount} healthy, ${unhealthyCount} unhealthy`);
|
|
109
|
+
results.push(`Summary: ${healthyCount} healthy, ${unhealthyCount} unhealthy, ${skippedCount} skipped`);
|
|
108
110
|
// Surface recoverable stale state and disabled token-source duplicates
|
|
109
|
-
// (issue #171).
|
|
110
|
-
//
|
|
111
|
+
// (issue #171). Token verification is destructive to single-use refresh
|
|
112
|
+
// tokens, but this tool persists rotations before reporting health.
|
|
111
113
|
const staleRecoverable = findStaleRecoverableAccounts(storage.accounts);
|
|
112
114
|
const duplicateSlots = findDisabledTokenSourceDuplicates(storage.accounts);
|
|
113
115
|
const staleSlots = staleRecoverable.map((index) => index + 1);
|
|
@@ -127,6 +129,7 @@ export function createCodexHealthTool(ctx) {
|
|
|
127
129
|
totalAccounts: storage.accounts.length,
|
|
128
130
|
healthyCount,
|
|
129
131
|
unhealthyCount,
|
|
132
|
+
skippedCount,
|
|
130
133
|
staleRecoverableSlots: staleSlots,
|
|
131
134
|
disabledDuplicateSlots: dupSlots,
|
|
132
135
|
disabledWithFreshCredentialSlots: absorbedSlots,
|