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":"codex-health.js","sourceRoot":"","sources":["../../../lib/tools/codex-health.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAuB,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"codex-health.js","sourceRoot":"","sources":["../../../lib/tools/codex-health.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-refresh.d.ts","sourceRoot":"","sources":["../../../lib/tools/codex-refresh.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"codex-refresh.d.ts","sourceRoot":"","sources":["../../../lib/tools/codex-refresh.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAOrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,WAAW,GAAG,cAAc,CAiFvE"}
|
|
@@ -3,40 +3,11 @@
|
|
|
3
3
|
* Extracted from `index.ts` per RC-1 Phase 2.
|
|
4
4
|
*/
|
|
5
5
|
import { tool } from "@opencode-ai/plugin/tool";
|
|
6
|
-
import { loadAccounts
|
|
7
|
-
import { AccountManager } from "../accounts.js";
|
|
8
|
-
import { queuedRefresh } from "../refresh-queue.js";
|
|
6
|
+
import { loadAccounts } from "../storage.js";
|
|
9
7
|
import { formatUiHeader, formatUiItem, paintUiText } from "../ui/format.js";
|
|
10
|
-
|
|
11
|
-
* Finds the index of the account matching `identity` in `accounts`, using
|
|
12
|
-
* the same organizationId -> accountId -> refreshToken priority order the
|
|
13
|
-
* storage layer's dedup/identity helpers use elsewhere (see
|
|
14
|
-
* `lib/storage/identity.ts`). Kept local rather than importing the shared
|
|
15
|
-
* helper because the barrel does not currently re-export it.
|
|
16
|
-
*/
|
|
17
|
-
function findAccountIndexByIdentity(accounts, identity) {
|
|
18
|
-
const organizationId = identity.organizationId?.trim();
|
|
19
|
-
if (organizationId) {
|
|
20
|
-
const idx = accounts.findIndex((a) => a.organizationId?.trim() === organizationId);
|
|
21
|
-
if (idx >= 0)
|
|
22
|
-
return idx;
|
|
23
|
-
}
|
|
24
|
-
const accountId = identity.accountId?.trim();
|
|
25
|
-
if (accountId) {
|
|
26
|
-
const idx = accounts.findIndex((a) => a.accountId?.trim() === accountId);
|
|
27
|
-
if (idx >= 0)
|
|
28
|
-
return idx;
|
|
29
|
-
}
|
|
30
|
-
const refreshToken = identity.refreshToken?.trim();
|
|
31
|
-
if (refreshToken) {
|
|
32
|
-
const idx = accounts.findIndex((a) => a.refreshToken?.trim() === refreshToken);
|
|
33
|
-
if (idx >= 0)
|
|
34
|
-
return idx;
|
|
35
|
-
}
|
|
36
|
-
return -1;
|
|
37
|
-
}
|
|
8
|
+
import { buildRefreshInputs, refreshAndPersistAccount, } from "./refresh-account.js";
|
|
38
9
|
export function createCodexRefreshTool(ctx) {
|
|
39
|
-
const { resolveUiRuntime, formatCommandAccountLabel, resolveMaskEmail, getStatusMarker,
|
|
10
|
+
const { resolveUiRuntime, formatCommandAccountLabel, resolveMaskEmail, getStatusMarker, reloadCachedAccountManager, } = ctx;
|
|
40
11
|
return tool({
|
|
41
12
|
description: "Manually refresh OAuth tokens for all accounts to verify they're still valid.",
|
|
42
13
|
args: {},
|
|
@@ -60,86 +31,36 @@ export function createCodexRefreshTool(ctx) {
|
|
|
60
31
|
: [`Refreshing ${storage.accounts.length} account(s):`, ""];
|
|
61
32
|
let refreshedCount = 0;
|
|
62
33
|
let failedCount = 0;
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
// other tool/rotation for the full duration of this loop, and
|
|
68
|
-
// mutating `storage` in place and saving it at the end (the old
|
|
69
|
-
// behavior) silently clobbered any rate-limit/cooldown/activeIndex
|
|
70
|
-
// state a concurrent rotation persisted while this loop was running.
|
|
71
|
-
const refreshedAccounts = [];
|
|
72
|
-
for (let i = 0; i < storage.accounts.length; i++) {
|
|
34
|
+
let skippedCount = 0;
|
|
35
|
+
const inputs = buildRefreshInputs(storage.accounts);
|
|
36
|
+
for (let i = 0; i < inputs.length; i++) {
|
|
37
|
+
const input = inputs[i];
|
|
73
38
|
const account = storage.accounts[i];
|
|
74
|
-
if (!account)
|
|
39
|
+
if (!input || !account)
|
|
75
40
|
continue;
|
|
76
41
|
const label = formatCommandAccountLabel(account, i, { maskEmail });
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
};
|
|
82
|
-
try {
|
|
83
|
-
const refreshResult = await queuedRefresh(account.refreshToken);
|
|
84
|
-
if (refreshResult.type === "success") {
|
|
85
|
-
const rotated = refreshResult.refresh !== account.refreshToken;
|
|
86
|
-
refreshedAccounts.push({
|
|
87
|
-
identity,
|
|
88
|
-
refreshToken: refreshResult.refresh,
|
|
89
|
-
accessToken: refreshResult.access,
|
|
90
|
-
expiresAt: refreshResult.expires,
|
|
91
|
-
rotatedAt: rotated ? Date.now() : undefined,
|
|
92
|
-
});
|
|
93
|
-
results.push(` ${getStatusMarker(ui, "ok")} ${label}: Refreshed`);
|
|
94
|
-
refreshedCount++;
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
results.push(` ${getStatusMarker(ui, "error")} ${label}: Failed - ${refreshResult.message ?? refreshResult.reason}`);
|
|
98
|
-
failedCount++;
|
|
99
|
-
}
|
|
42
|
+
const outcome = await refreshAndPersistAccount(input);
|
|
43
|
+
if (outcome.status === "refreshed") {
|
|
44
|
+
results.push(` ${getStatusMarker(ui, "ok")} ${label}: Refreshed`);
|
|
45
|
+
refreshedCount++;
|
|
100
46
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
47
|
+
else if (outcome.status === "skipped") {
|
|
48
|
+
results.push(` ${getStatusMarker(ui, "warning")} ${label}: Skipped (disabled)`);
|
|
49
|
+
skippedCount++;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
results.push(` ${getStatusMarker(ui, "error")} ${label}: Failed - ${outcome.error}`);
|
|
104
53
|
failedCount++;
|
|
105
54
|
}
|
|
106
55
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
for (const outcome of refreshedAccounts) {
|
|
112
|
-
const idx = findAccountIndexByIdentity(current.accounts, outcome.identity);
|
|
113
|
-
if (idx < 0)
|
|
114
|
-
continue; // Account removed concurrently; nothing to apply.
|
|
115
|
-
const target = current.accounts[idx];
|
|
116
|
-
if (!target)
|
|
117
|
-
continue;
|
|
118
|
-
// The refresh was keyed off `outcome.identity.refreshToken` (the
|
|
119
|
-
// pre-refresh value). If the on-disk refreshToken no longer
|
|
120
|
-
// matches it, another process rotated this account mid-flight
|
|
121
|
-
// while our (network-bound) refresh was in progress -- we
|
|
122
|
-
// cannot know which resulting chain is the live one, so skip
|
|
123
|
-
// rather than clobber whatever that other process wrote.
|
|
124
|
-
if (target.refreshToken !== outcome.identity.refreshToken)
|
|
125
|
-
continue;
|
|
126
|
-
target.refreshToken = outcome.refreshToken;
|
|
127
|
-
target.accessToken = outcome.accessToken;
|
|
128
|
-
target.expiresAt = outcome.expiresAt;
|
|
129
|
-
if (outcome.rotatedAt !== undefined) {
|
|
130
|
-
target.tokenRotatedAt = outcome.rotatedAt;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
await persist(current);
|
|
134
|
-
});
|
|
56
|
+
await reloadCachedAccountManager();
|
|
57
|
+
results.push("");
|
|
58
|
+
if (skippedCount > 0) {
|
|
59
|
+
results.push(`Summary: ${refreshedCount} refreshed, ${failedCount} failed, ${skippedCount} skipped`);
|
|
135
60
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
cachedAccountManagerRef.current = reloadedManager;
|
|
139
|
-
accountManagerPromiseRef.current = Promise.resolve(reloadedManager);
|
|
61
|
+
else {
|
|
62
|
+
results.push(`Summary: ${refreshedCount} refreshed, ${failedCount} failed`);
|
|
140
63
|
}
|
|
141
|
-
results.push("");
|
|
142
|
-
results.push(`Summary: ${refreshedCount} refreshed, ${failedCount} failed`);
|
|
143
64
|
if (ui.v2Enabled) {
|
|
144
65
|
return [
|
|
145
66
|
...formatUiHeader(ui, "Refresh accounts"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-refresh.js","sourceRoot":"","sources":["../../../lib/tools/codex-refresh.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAuB,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"codex-refresh.js","sourceRoot":"","sources":["../../../lib/tools/codex-refresh.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,6 +54,7 @@ export type MutableRef<T> = {
|
|
|
54
54
|
export interface ToolContext {
|
|
55
55
|
cachedAccountManagerRef: MutableRef<AccountManager | null>;
|
|
56
56
|
accountManagerPromiseRef: MutableRef<Promise<AccountManager> | null>;
|
|
57
|
+
reloadCachedAccountManager: () => Promise<void>;
|
|
57
58
|
runtimeMetrics: RuntimeMetrics;
|
|
58
59
|
beginnerSafeModeRef: {
|
|
59
60
|
readonly current: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACX,cAAc,EACd,8BAA8B,EAC9B,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACX,gBAAgB,EAChB,wBAAwB,EACxB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EACX,uBAAuB,EACvB,0BAA0B,EAC1B,uBAAuB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AA2B/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI;IAAE,OAAO,EAAE,CAAC,CAAA;CAAE,CAAC;AAE3C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,WAAW;IAE3B,uBAAuB,EAAE,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC3D,wBAAwB,EAAE,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/tools/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAoBH,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/tools/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared token refresh persistence for the account-management tools.
|
|
3
|
+
*
|
|
4
|
+
* OpenAI refresh tokens are single-use and rotate on exchange. Any tool that
|
|
5
|
+
* calls `queuedRefresh()` must persist the rotated credential immediately;
|
|
6
|
+
* otherwise the on-disk refresh token is already consumed and the next load
|
|
7
|
+
* reports `refresh_token_reused` for every account.
|
|
8
|
+
*/
|
|
9
|
+
import { type AccountMetadataV3 } from "../storage.js";
|
|
10
|
+
import type { TokenResult } from "../types.js";
|
|
11
|
+
export interface RefreshAccountIdentity {
|
|
12
|
+
organizationId?: string;
|
|
13
|
+
accountId?: string;
|
|
14
|
+
refreshToken: string;
|
|
15
|
+
}
|
|
16
|
+
export interface RefreshAccountInput {
|
|
17
|
+
index: number;
|
|
18
|
+
identity: RefreshAccountIdentity;
|
|
19
|
+
enabled?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface PersistedRefreshResult {
|
|
22
|
+
index: number;
|
|
23
|
+
identity: RefreshAccountIdentity;
|
|
24
|
+
refreshToken: string;
|
|
25
|
+
accessToken: string;
|
|
26
|
+
expiresAt: number;
|
|
27
|
+
rotatedAt?: number;
|
|
28
|
+
persisted: boolean;
|
|
29
|
+
persistError?: string;
|
|
30
|
+
}
|
|
31
|
+
export type AccountRefreshOutcome = {
|
|
32
|
+
status: "skipped";
|
|
33
|
+
index: number;
|
|
34
|
+
identity: RefreshAccountIdentity;
|
|
35
|
+
} | {
|
|
36
|
+
status: "failed";
|
|
37
|
+
index: number;
|
|
38
|
+
identity: RefreshAccountIdentity;
|
|
39
|
+
error: string;
|
|
40
|
+
} | {
|
|
41
|
+
status: "refreshed";
|
|
42
|
+
index: number;
|
|
43
|
+
result: PersistedRefreshResult;
|
|
44
|
+
};
|
|
45
|
+
export declare function findAccountIndexByIdentity(accounts: RefreshAccountIdentity[], identity: RefreshAccountIdentity): number;
|
|
46
|
+
/**
|
|
47
|
+
* Persists one successful refresh in a short storage transaction. The account
|
|
48
|
+
* is re-located from a freshly re-read snapshot, and sibling accounts that
|
|
49
|
+
* share the consumed single-use refresh token are rotated atomically with it.
|
|
50
|
+
*/
|
|
51
|
+
export declare function persistRefreshResult(index: number, identity: RefreshAccountIdentity, refreshResult: Extract<TokenResult, {
|
|
52
|
+
type: "success";
|
|
53
|
+
}>): Promise<PersistedRefreshResult>;
|
|
54
|
+
/**
|
|
55
|
+
* Refreshes one account and persists the rotated credential before reporting
|
|
56
|
+
* success. Disabled standalone accounts are skipped: refreshing them is wrong
|
|
57
|
+
* (they may intentionally retain a dead duplicate credential), while disabled
|
|
58
|
+
* siblings sharing an enabled account's consumed token are still updated by
|
|
59
|
+
* `persistRefreshResult()` so the shared credential remains consistent.
|
|
60
|
+
*/
|
|
61
|
+
export declare function refreshAndPersistAccount(account: RefreshAccountInput): Promise<AccountRefreshOutcome>;
|
|
62
|
+
export declare function buildRefreshInputs(accounts: AccountMetadataV3[]): RefreshAccountInput[];
|
|
63
|
+
//# sourceMappingURL=refresh-account.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh-account.d.ts","sourceRoot":"","sources":["../../../lib/tools/refresh-account.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAEN,KAAK,iBAAiB,EACtB,MAAM,eAAe,CAAC;AAKvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,sBAAsB;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,sBAAsB,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,sBAAsB,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,qBAAqB,GAC9B;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,sBAAsB,CAAA;CAAE,GACtE;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,sBAAsB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACpF;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,sBAAsB,CAAA;CAAE,CAAC;AAE1E,wBAAgB,0BAA0B,CACzC,QAAQ,EAAE,sBAAsB,EAAE,EAClC,QAAQ,EAAE,sBAAsB,GAC9B,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACzC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,sBAAsB,EAChC,aAAa,EAAE,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,GACtD,OAAO,CAAC,sBAAsB,CAAC,CAoFjC;AAED;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC7C,OAAO,EAAE,mBAAmB,GAC1B,OAAO,CAAC,qBAAqB,CAAC,CAsChC;AAED,wBAAgB,kBAAkB,CACjC,QAAQ,EAAE,iBAAiB,EAAE,GAC3B,mBAAmB,EAAE,CAUvB"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared token refresh persistence for the account-management tools.
|
|
3
|
+
*
|
|
4
|
+
* OpenAI refresh tokens are single-use and rotate on exchange. Any tool that
|
|
5
|
+
* calls `queuedRefresh()` must persist the rotated credential immediately;
|
|
6
|
+
* otherwise the on-disk refresh token is already consumed and the next load
|
|
7
|
+
* reports `refresh_token_reused` for every account.
|
|
8
|
+
*/
|
|
9
|
+
import { queuedRefresh } from "../refresh-queue.js";
|
|
10
|
+
import { withAccountStorageTransaction, } from "../storage.js";
|
|
11
|
+
import { findAccountIndexByIdentityKeys, toAccountIdentityKeys, } from "../storage/identity.js";
|
|
12
|
+
export function findAccountIndexByIdentity(accounts, identity) {
|
|
13
|
+
return findAccountIndexByIdentityKeys(accounts, toAccountIdentityKeys(identity));
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Persists one successful refresh in a short storage transaction. The account
|
|
17
|
+
* is re-located from a freshly re-read snapshot, and sibling accounts that
|
|
18
|
+
* share the consumed single-use refresh token are rotated atomically with it.
|
|
19
|
+
*/
|
|
20
|
+
export async function persistRefreshResult(index, identity, refreshResult) {
|
|
21
|
+
const rotated = refreshResult.refresh !== identity.refreshToken;
|
|
22
|
+
const rotatedAt = rotated ? Date.now() : undefined;
|
|
23
|
+
try {
|
|
24
|
+
return await withAccountStorageTransaction(async (current, persist) => {
|
|
25
|
+
if (!current) {
|
|
26
|
+
throw new Error("Account storage is unavailable");
|
|
27
|
+
}
|
|
28
|
+
const idx = findAccountIndexByIdentity(current.accounts, identity);
|
|
29
|
+
if (idx < 0) {
|
|
30
|
+
throw new Error("Account was removed while its token was refreshing");
|
|
31
|
+
}
|
|
32
|
+
const target = current.accounts[idx];
|
|
33
|
+
if (!target) {
|
|
34
|
+
throw new Error("Account was removed while its token was refreshing");
|
|
35
|
+
}
|
|
36
|
+
if (target.refreshToken === identity.refreshToken) {
|
|
37
|
+
if (rotated) {
|
|
38
|
+
// A login can produce sibling org/workspace records sharing one
|
|
39
|
+
// single-use refresh token. Mirror the account-state propagation used
|
|
40
|
+
// by request-time refresh: update those records with the new token and
|
|
41
|
+
// expire their workspace-specific access tokens so they refresh cleanly.
|
|
42
|
+
// Do this before assigning the target, since siblings are matched by
|
|
43
|
+
// the consumed token and the target starts with that token too.
|
|
44
|
+
for (const sibling of current.accounts) {
|
|
45
|
+
if (sibling === target)
|
|
46
|
+
continue;
|
|
47
|
+
if (sibling.refreshToken !== identity.refreshToken)
|
|
48
|
+
continue;
|
|
49
|
+
sibling.refreshToken = refreshResult.refresh;
|
|
50
|
+
sibling.expiresAt = 0;
|
|
51
|
+
if (rotatedAt !== undefined) {
|
|
52
|
+
sibling.tokenRotatedAt = rotatedAt;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
target.refreshToken = refreshResult.refresh;
|
|
57
|
+
target.accessToken = refreshResult.access;
|
|
58
|
+
target.expiresAt = refreshResult.expires;
|
|
59
|
+
if (rotatedAt !== undefined) {
|
|
60
|
+
target.tokenRotatedAt = rotatedAt;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
else if (target.refreshToken === refreshResult.refresh) {
|
|
64
|
+
// A sibling account in this process just persisted the same rotation
|
|
65
|
+
// and propagated the new token to this workspace record. Apply only
|
|
66
|
+
// this workspace's freshly returned access token; do not overwrite
|
|
67
|
+
// non-credential state in the fresh snapshot.
|
|
68
|
+
target.accessToken = refreshResult.access;
|
|
69
|
+
target.expiresAt = refreshResult.expires;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
// The refresh was keyed off `identity.refreshToken` (the consumed,
|
|
73
|
+
// pre-rotation value). If storage carries neither that token nor the
|
|
74
|
+
// exact rotation returned by this refresh, another process rotated
|
|
75
|
+
// this credential while this network-bound refresh was in flight. We
|
|
76
|
+
// cannot know which resulting chain is live, so fail this
|
|
77
|
+
// verification rather than clobber whatever the other process wrote.
|
|
78
|
+
throw new Error("Refresh token changed concurrently while verification was in progress");
|
|
79
|
+
}
|
|
80
|
+
await persist(current);
|
|
81
|
+
return {
|
|
82
|
+
index,
|
|
83
|
+
identity,
|
|
84
|
+
refreshToken: refreshResult.refresh,
|
|
85
|
+
accessToken: refreshResult.access,
|
|
86
|
+
expiresAt: refreshResult.expires,
|
|
87
|
+
rotatedAt,
|
|
88
|
+
persisted: true,
|
|
89
|
+
};
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
return {
|
|
94
|
+
index,
|
|
95
|
+
identity,
|
|
96
|
+
refreshToken: refreshResult.refresh,
|
|
97
|
+
accessToken: refreshResult.access,
|
|
98
|
+
expiresAt: refreshResult.expires,
|
|
99
|
+
rotatedAt,
|
|
100
|
+
persisted: false,
|
|
101
|
+
persistError: error instanceof Error ? error.message : String(error),
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Refreshes one account and persists the rotated credential before reporting
|
|
107
|
+
* success. Disabled standalone accounts are skipped: refreshing them is wrong
|
|
108
|
+
* (they may intentionally retain a dead duplicate credential), while disabled
|
|
109
|
+
* siblings sharing an enabled account's consumed token are still updated by
|
|
110
|
+
* `persistRefreshResult()` so the shared credential remains consistent.
|
|
111
|
+
*/
|
|
112
|
+
export async function refreshAndPersistAccount(account) {
|
|
113
|
+
const { index, identity } = account;
|
|
114
|
+
if (account.enabled === false) {
|
|
115
|
+
return { status: "skipped", index, identity };
|
|
116
|
+
}
|
|
117
|
+
let refreshResult;
|
|
118
|
+
try {
|
|
119
|
+
refreshResult = await queuedRefresh(identity.refreshToken);
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
return {
|
|
123
|
+
status: "failed",
|
|
124
|
+
index,
|
|
125
|
+
identity,
|
|
126
|
+
error: error instanceof Error ? error.message : String(error),
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
if (refreshResult.type !== "success") {
|
|
130
|
+
return {
|
|
131
|
+
status: "failed",
|
|
132
|
+
index,
|
|
133
|
+
identity,
|
|
134
|
+
error: refreshResult.message ?? refreshResult.reason ?? "token refresh failed",
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
const persisted = await persistRefreshResult(index, identity, refreshResult);
|
|
138
|
+
if (!persisted.persisted) {
|
|
139
|
+
return {
|
|
140
|
+
status: "failed",
|
|
141
|
+
index,
|
|
142
|
+
identity,
|
|
143
|
+
error: persisted.persistError ?? "Failed to persist rotated credential",
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
return { status: "refreshed", index, result: persisted };
|
|
147
|
+
}
|
|
148
|
+
export function buildRefreshInputs(accounts) {
|
|
149
|
+
return accounts.map((account, index) => ({
|
|
150
|
+
index,
|
|
151
|
+
enabled: account.enabled,
|
|
152
|
+
identity: {
|
|
153
|
+
organizationId: account.organizationId,
|
|
154
|
+
accountId: account.accountId,
|
|
155
|
+
refreshToken: account.refreshToken,
|
|
156
|
+
},
|
|
157
|
+
}));
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=refresh-account.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh-account.js","sourceRoot":"","sources":["../../../lib/tools/refresh-account.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beginner.d.ts","sourceRoot":"","sources":["../../../lib/ui/beginner.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,0BAA0B,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC;AAEpE,MAAM,WAAW,uBAAuB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"beginner.d.ts","sourceRoot":"","sources":["../../../lib/ui/beginner.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,0BAA0B,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC;AAEpE,MAAM,WAAW,uBAAuB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,uBAAuB;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,0BAA0B,EAAE,MAAM,CAAC;IACnC,0BAA0B,EAAE,MAAM,CAAC;IACnC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,qBAAqB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACzC,QAAQ,EAAE,0BAA0B,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAK7E;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,IAAI,CACtD,uBAAuB,EACvB,4BAA4B,GAAG,4BAA4B,GAAG,oBAAoB,CAClF,GAAG,MAAM,CAET;AAED,wBAAgB,yBAAyB,CACxC,QAAQ,EAAE,uBAAuB,EAAE,EACnC,GAAG,EAAE,MAAM,GACT,sBAAsB,CA6CxB;AAED,wBAAgB,sBAAsB,CACrC,QAAQ,EAAE,uBAAuB,EAAE,EACnC,GAAG,EAAE,MAAM,GACT,qBAAqB,EAAE,CAuDzB;AAOD,wBAAgB,2BAA2B,CAC1C,QAAQ,EAAE,MAAM,GAAG,IAAI,GACrB,MAAM,GAAG,IAAI,CAgBf;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IAClD,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,uBAAuB,CAAC;CACjC,GAAG,yBAAyB,EAAE,CA2H9B;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IAClD,QAAQ,EAAE,uBAAuB,EAAE,CAAC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,uBAAuB,CAAC;CACjC,GAAG,MAAM,CAwBT"}
|
package/dist/lib/ui/beginner.js
CHANGED
|
@@ -35,7 +35,10 @@ export function summarizeBeginnerAccounts(accounts, now) {
|
|
|
35
35
|
rateLimited += 1;
|
|
36
36
|
if (isCoolingDown)
|
|
37
37
|
coolingDown += 1;
|
|
38
|
-
const isBlocked = !account.enabled ||
|
|
38
|
+
const isBlocked = !account.enabled ||
|
|
39
|
+
isRateLimited ||
|
|
40
|
+
isCoolingDown ||
|
|
41
|
+
account.refreshVerificationFailed === true;
|
|
39
42
|
if (isBlocked)
|
|
40
43
|
blocked += 1;
|
|
41
44
|
else
|
|
@@ -172,6 +175,11 @@ export function buildBeginnerDoctorFindings(input) {
|
|
|
172
175
|
action: "Wait for cooldown expiry or rotate to another healthy account.",
|
|
173
176
|
});
|
|
174
177
|
}
|
|
178
|
+
// NOTE: the `refresh-verification-failed` finding is emitted by the
|
|
179
|
+
// codex-doctor fix path (with the affected slot numbers) via extraFindings.
|
|
180
|
+
// Do not also generate a generic copy here off `refreshVerificationFailed`,
|
|
181
|
+
// or `codex-doctor --fix` reports the same-coded finding twice. The flag is
|
|
182
|
+
// still consumed above (blocked count) and below (recommended next action).
|
|
175
183
|
if (input.runtime.authRefreshFailures > 0) {
|
|
176
184
|
findings.push({
|
|
177
185
|
severity: "warning",
|
|
@@ -242,6 +250,9 @@ export function recommendBeginnerNextAction(input) {
|
|
|
242
250
|
if (summary.healthy === 0) {
|
|
243
251
|
return "Run `codex-health`, then re-login or switch to a healthy account.";
|
|
244
252
|
}
|
|
253
|
+
if (input.accounts.some((account) => account.refreshVerificationFailed)) {
|
|
254
|
+
return "Re-authenticate the affected account(s) with `opencode auth login`.";
|
|
255
|
+
}
|
|
245
256
|
if (summary.rateLimited > 0) {
|
|
246
257
|
return "Use `codex-switch index=2` to move away from rate-limited accounts.";
|
|
247
258
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beginner.js","sourceRoot":"","sources":["../../../lib/ui/beginner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"beginner.js","sourceRoot":"","sources":["../../../lib/ui/beginner.ts"],"names":[],"mappings":"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"}
|