oc-codex-multi-auth 6.12.1 → 6.14.0
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 +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +319 -50
- package/dist/index.js.map +1 -1
- package/dist/lib/accounts/persistence.d.ts.map +1 -1
- package/dist/lib/accounts/persistence.js +1 -0
- package/dist/lib/accounts/persistence.js.map +1 -1
- package/dist/lib/accounts/pool-identity.d.ts +14 -0
- package/dist/lib/accounts/pool-identity.d.ts.map +1 -0
- package/dist/lib/accounts/pool-identity.js +45 -0
- package/dist/lib/accounts/pool-identity.js.map +1 -0
- package/dist/lib/accounts/recovery.d.ts.map +1 -1
- package/dist/lib/accounts/recovery.js +15 -1
- package/dist/lib/accounts/recovery.js.map +1 -1
- package/dist/lib/accounts/rotation.d.ts.map +1 -1
- package/dist/lib/accounts/rotation.js +2 -3
- package/dist/lib/accounts/rotation.js.map +1 -1
- package/dist/lib/accounts/stale-state.d.ts +14 -0
- package/dist/lib/accounts/stale-state.d.ts.map +1 -1
- package/dist/lib/accounts/stale-state.js +38 -0
- package/dist/lib/accounts/stale-state.js.map +1 -1
- package/dist/lib/accounts/state.d.ts +1 -0
- package/dist/lib/accounts/state.d.ts.map +1 -1
- package/dist/lib/accounts/state.js +114 -13
- package/dist/lib/accounts/state.js.map +1 -1
- package/dist/lib/auth/auth.d.ts.map +1 -1
- package/dist/lib/auth/auth.js +26 -3
- package/dist/lib/auth/auth.js.map +1 -1
- package/dist/lib/auth/login-runner.d.ts +1 -0
- package/dist/lib/auth/login-runner.d.ts.map +1 -1
- package/dist/lib/auth/login-runner.js +74 -8
- package/dist/lib/auth/login-runner.js.map +1 -1
- package/dist/lib/auth/token-utils.d.ts +8 -0
- package/dist/lib/auth/token-utils.d.ts.map +1 -1
- package/dist/lib/auth/token-utils.js +16 -0
- package/dist/lib/auth/token-utils.js.map +1 -1
- package/dist/lib/codex-usage.d.ts +9 -7
- package/dist/lib/codex-usage.d.ts.map +1 -1
- package/dist/lib/codex-usage.js +30 -71
- package/dist/lib/codex-usage.js.map +1 -1
- package/dist/lib/config.d.ts +6 -4
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +12 -4
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/errors.d.ts +7 -0
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +14 -0
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +2 -0
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/proactive-refresh.d.ts.map +1 -1
- package/dist/lib/proactive-refresh.js +14 -3
- package/dist/lib/proactive-refresh.js.map +1 -1
- package/dist/lib/request/fetch-helpers.d.ts +2 -1
- package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
- package/dist/lib/request/fetch-helpers.js +17 -4
- package/dist/lib/request/fetch-helpers.js.map +1 -1
- package/dist/lib/schemas.d.ts +8 -1
- package/dist/lib/schemas.d.ts.map +1 -1
- package/dist/lib/schemas.js +4 -1
- package/dist/lib/schemas.js.map +1 -1
- package/dist/lib/storage/coordinated-refresh.d.ts +15 -0
- package/dist/lib/storage/coordinated-refresh.d.ts.map +1 -0
- package/dist/lib/storage/coordinated-refresh.js +246 -0
- package/dist/lib/storage/coordinated-refresh.js.map +1 -0
- package/dist/lib/storage/flagged.d.ts.map +1 -1
- package/dist/lib/storage/flagged.js +16 -3
- package/dist/lib/storage/flagged.js.map +1 -1
- package/dist/lib/storage/identity.d.ts +10 -7
- package/dist/lib/storage/identity.d.ts.map +1 -1
- package/dist/lib/storage/identity.js +82 -8
- package/dist/lib/storage/identity.js.map +1 -1
- package/dist/lib/storage/load-save.d.ts.map +1 -1
- package/dist/lib/storage/load-save.js +6 -3
- package/dist/lib/storage/load-save.js.map +1 -1
- package/dist/lib/storage/migrations.d.ts +4 -0
- package/dist/lib/storage/migrations.d.ts.map +1 -1
- package/dist/lib/storage/migrations.js +1 -0
- package/dist/lib/storage/migrations.js.map +1 -1
- package/dist/lib/storage/normalize.d.ts.map +1 -1
- package/dist/lib/storage/normalize.js +8 -1
- package/dist/lib/storage/normalize.js.map +1 -1
- package/dist/lib/storage/transaction-lock.d.ts +21 -0
- package/dist/lib/storage/transaction-lock.d.ts.map +1 -0
- package/dist/lib/storage/transaction-lock.js +194 -0
- package/dist/lib/storage/transaction-lock.js.map +1 -0
- package/dist/lib/tools/codex-diff.d.ts.map +1 -1
- package/dist/lib/tools/codex-diff.js +2 -0
- package/dist/lib/tools/codex-diff.js.map +1 -1
- package/dist/lib/tools/codex-doctor.d.ts.map +1 -1
- package/dist/lib/tools/codex-doctor.js +15 -1
- 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 +7 -1
- package/dist/lib/tools/codex-health.js.map +1 -1
- package/dist/lib/tools/codex-note.d.ts.map +1 -1
- package/dist/lib/tools/codex-note.js +19 -9
- package/dist/lib/tools/codex-note.js.map +1 -1
- package/dist/lib/tools/codex-pool.d.ts.map +1 -1
- package/dist/lib/tools/codex-pool.js +49 -12
- package/dist/lib/tools/codex-pool.js.map +1 -1
- package/dist/lib/tools/codex-tag.d.ts.map +1 -1
- package/dist/lib/tools/codex-tag.js +23 -12
- package/dist/lib/tools/codex-tag.js.map +1 -1
- package/dist/lib/tools/refresh-account.d.ts +6 -15
- package/dist/lib/tools/refresh-account.d.ts.map +1 -1
- package/dist/lib/tools/refresh-account.js +19 -106
- package/dist/lib/tools/refresh-account.js.map +1 -1
- package/dist/lib/types.d.ts +1 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/package.json +3 -5
|
@@ -5,6 +5,8 @@ import { ConfigLockContentionError, ErrorCode } from "../errors.js";
|
|
|
5
5
|
import { logWarn } from "../logger.js";
|
|
6
6
|
import { normalizeToolOutputFormat, renderJsonOutput } from "../runtime.js";
|
|
7
7
|
import { loadAccounts } from "../storage.js";
|
|
8
|
+
import { expandLegacyModelPoolKeys, getModelPoolAccountKey, isSeatPoolKey, matchesModelPoolAccountKey, } from "../accounts/pool-identity.js";
|
|
9
|
+
import { getCurrentProjectRoot, getCurrentStoragePath } from "../storage/state.js";
|
|
8
10
|
function normalizePoolAction(action) {
|
|
9
11
|
if (action === undefined || action === "status")
|
|
10
12
|
return "status";
|
|
@@ -44,7 +46,7 @@ function resolveAccountIds(storage, accountNumbers) {
|
|
|
44
46
|
throw new Error(`Invalid account number ${accountNumber}. Expected 1-${storage.accounts.length}.`);
|
|
45
47
|
}
|
|
46
48
|
const account = storage.accounts[accountNumber - 1];
|
|
47
|
-
const accountId = account
|
|
49
|
+
const accountId = account ? getModelPoolAccountKey(account) : undefined;
|
|
48
50
|
if (!accountId) {
|
|
49
51
|
throw new Error(`Account ${accountNumber} has no stable account ID and cannot be assigned to a model pool.`);
|
|
50
52
|
}
|
|
@@ -52,26 +54,56 @@ function resolveAccountIds(storage, accountNumbers) {
|
|
|
52
54
|
}
|
|
53
55
|
return ids;
|
|
54
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Migrate legacy workspace-wide pool entries to member-scoped seat keys.
|
|
59
|
+
*
|
|
60
|
+
* `modelAccountPools` lives in the GLOBAL plugin config, but account storage is
|
|
61
|
+
* per-project by default (`perProjectAccounts`). Expanding a legacy key against
|
|
62
|
+
* a project-scoped account list would rewrite the global pool using only the
|
|
63
|
+
* seats visible from THIS project and silently drop the routing every other
|
|
64
|
+
* project depends on, so the migration is skipped whenever project-scoped
|
|
65
|
+
* storage is active.
|
|
66
|
+
*/
|
|
67
|
+
function normalizeExistingPoolAccountIds(ids, storage) {
|
|
68
|
+
const projectScoped = Boolean(getCurrentStoragePath() && getCurrentProjectRoot());
|
|
69
|
+
if (projectScoped) {
|
|
70
|
+
if (ids.some((id) => !isSeatPoolKey(id))) {
|
|
71
|
+
logWarn("Project-scoped account storage is active; leaving legacy workspace-wide model pool entries unmigrated so pools used by other projects are not rewritten.");
|
|
72
|
+
}
|
|
73
|
+
return ids;
|
|
74
|
+
}
|
|
75
|
+
return expandLegacyModelPoolKeys(ids, storage?.accounts ?? []);
|
|
76
|
+
}
|
|
55
77
|
function buildPoolSnapshot(model, accountIds, storage, ctx, includeSensitive, poolMode) {
|
|
56
78
|
const accounts = [];
|
|
57
79
|
const unresolvedAccountIds = [];
|
|
58
80
|
const storedAccounts = storage?.accounts ?? [];
|
|
59
81
|
const maskEmail = ctx.resolveMaskEmail();
|
|
82
|
+
const includedIndices = new Set();
|
|
60
83
|
for (const accountId of accountIds) {
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
84
|
+
const matchingIndices = storedAccounts
|
|
85
|
+
.map((account, index) => matchesModelPoolAccountKey(account, accountId) ? index : -1)
|
|
86
|
+
.filter((index) => index >= 0);
|
|
87
|
+
if (matchingIndices.length === 0) {
|
|
64
88
|
unresolvedAccountIds.push(accountId);
|
|
65
89
|
continue;
|
|
66
90
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
91
|
+
for (const index of matchingIndices) {
|
|
92
|
+
if (includedIndices.has(index))
|
|
93
|
+
continue;
|
|
94
|
+
includedIndices.add(index);
|
|
95
|
+
const account = storedAccounts[index];
|
|
96
|
+
if (!account)
|
|
97
|
+
continue;
|
|
98
|
+
accounts.push({
|
|
99
|
+
...ctx.buildJsonAccountIdentity(index, {
|
|
100
|
+
includeSensitive,
|
|
101
|
+
account,
|
|
102
|
+
label: ctx.formatCommandAccountLabel(account, index, { maskEmail }),
|
|
103
|
+
}),
|
|
104
|
+
enabled: account.enabled !== false,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
75
107
|
}
|
|
76
108
|
return {
|
|
77
109
|
model,
|
|
@@ -173,6 +205,11 @@ export function createCodexPoolTool(ctx) {
|
|
|
173
205
|
result = await updateModelAccountPool(model, action, accountIds, {
|
|
174
206
|
dryRun: args.dryRun,
|
|
175
207
|
poolMode,
|
|
208
|
+
...(action === "add" || action === "remove"
|
|
209
|
+
? {
|
|
210
|
+
normalizeExistingAccountIds: (ids) => normalizeExistingPoolAccountIds(ids, storage),
|
|
211
|
+
}
|
|
212
|
+
: {}),
|
|
176
213
|
});
|
|
177
214
|
}
|
|
178
215
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-pool.js","sourceRoot":"","sources":["../../../lib/tools/codex-pool.ts"],"names":[],"mappings":"AAAA,iFAAiF;AAEjF,OAAO,EAAE,IAAI,EAAuB,MAAM,0BAA0B,CAAC;AACrE,OAAO,EACN,uBAAuB,EACvB,gBAAgB,EAGhB,sBAAsB,GAEtB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,yBAAyB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAyB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"codex-pool.js","sourceRoot":"","sources":["../../../lib/tools/codex-pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-tag.d.ts","sourceRoot":"","sources":["../../../lib/tools/codex-tag.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"codex-tag.d.ts","sourceRoot":"","sources":["../../../lib/tools/codex-tag.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAUrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,GAAG,cAAc,CAyInE"}
|
|
@@ -3,9 +3,10 @@
|
|
|
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,
|
|
6
|
+
import { loadAccounts, withAccountStorageTransaction } from "../storage.js";
|
|
7
7
|
import { AccountManager } from "../accounts.js";
|
|
8
8
|
import { logWarn } from "../logger.js";
|
|
9
|
+
import { getWorkspaceIdentityKey } from "../storage/identity.js";
|
|
9
10
|
import { formatUiHeader, formatUiItem, formatUiKeyValue, } from "../ui/format.js";
|
|
10
11
|
export function createCodexTagTool(ctx) {
|
|
11
12
|
const { resolveUiRuntime, promptAccountIndexSelection, supportsInteractiveMenus, formatCommandAccountLabel, resolveMaskEmail, getStatusMarker, normalizeAccountTags, cachedAccountManagerRef, accountManagerPromiseRef, } = ctx;
|
|
@@ -62,17 +63,27 @@ export function createCodexTagTool(ctx) {
|
|
|
62
63
|
if (!account)
|
|
63
64
|
return `Account ${resolvedIndex} not found.`;
|
|
64
65
|
const normalizedTags = normalizeAccountTags(tags ?? "");
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
if (normalizedTags.length === 0) {
|
|
69
|
-
delete account.accountTags;
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
account.accountTags = normalizedTags;
|
|
73
|
-
}
|
|
66
|
+
const identityKey = getWorkspaceIdentityKey(account);
|
|
67
|
+
let previousTags = [];
|
|
68
|
+
let persistedAccount = account;
|
|
74
69
|
try {
|
|
75
|
-
await
|
|
70
|
+
await withAccountStorageTransaction(async (current, persist) => {
|
|
71
|
+
const currentAccount = current?.accounts.find((candidate) => getWorkspaceIdentityKey(candidate) === identityKey);
|
|
72
|
+
if (!current || !currentAccount) {
|
|
73
|
+
throw new Error("Account changed before tags could be updated");
|
|
74
|
+
}
|
|
75
|
+
previousTags = Array.isArray(currentAccount.accountTags)
|
|
76
|
+
? [...currentAccount.accountTags]
|
|
77
|
+
: [];
|
|
78
|
+
if (normalizedTags.length === 0) {
|
|
79
|
+
delete currentAccount.accountTags;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
currentAccount.accountTags = normalizedTags;
|
|
83
|
+
}
|
|
84
|
+
await persist(current);
|
|
85
|
+
persistedAccount = currentAccount;
|
|
86
|
+
});
|
|
76
87
|
}
|
|
77
88
|
catch (error) {
|
|
78
89
|
logWarn("Failed to save account tag update", { error: String(error) });
|
|
@@ -83,7 +94,7 @@ export function createCodexTagTool(ctx) {
|
|
|
83
94
|
cachedAccountManagerRef.current = reloadedManager;
|
|
84
95
|
accountManagerPromiseRef.current = Promise.resolve(reloadedManager);
|
|
85
96
|
}
|
|
86
|
-
const accountLabel = formatCommandAccountLabel(
|
|
97
|
+
const accountLabel = formatCommandAccountLabel(persistedAccount, targetIndex, { maskEmail });
|
|
87
98
|
const previousText = previousTags.length > 0 ? previousTags.join(", ") : "none";
|
|
88
99
|
const nextText = normalizedTags.length > 0 ? normalizedTags.join(", ") : "none";
|
|
89
100
|
if (ui.v2Enabled) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-tag.js","sourceRoot":"","sources":["../../../lib/tools/codex-tag.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAuB,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"codex-tag.js","sourceRoot":"","sources":["../../../lib/tools/codex-tag.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared token refresh persistence for the account-management tools.
|
|
3
3
|
*
|
|
4
|
-
* OpenAI refresh tokens are single-use and rotate on exchange.
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* reports `refresh_token_reused` for every account.
|
|
4
|
+
* OpenAI refresh tokens are single-use and rotate on exchange. Production
|
|
5
|
+
* refreshes flow through `coordinatePersistedRefresh()`, which owns the
|
|
6
|
+
* authoritative reload, exchange, and durable commit under one lease.
|
|
8
7
|
*/
|
|
9
|
-
import {
|
|
10
|
-
import type { TokenResult } from "../types.js";
|
|
8
|
+
import type { AccountMetadataV3 } from "../storage.js";
|
|
11
9
|
export interface RefreshAccountIdentity {
|
|
12
10
|
organizationId?: string;
|
|
13
11
|
accountId?: string;
|
|
12
|
+
accountUserId?: string;
|
|
14
13
|
refreshToken: string;
|
|
15
14
|
}
|
|
16
15
|
export interface RefreshAccountInput {
|
|
@@ -43,20 +42,12 @@ export type AccountRefreshOutcome = {
|
|
|
43
42
|
result: PersistedRefreshResult;
|
|
44
43
|
};
|
|
45
44
|
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
45
|
/**
|
|
55
46
|
* Refreshes one account and persists the rotated credential before reporting
|
|
56
47
|
* success. Disabled standalone accounts are skipped: refreshing them is wrong
|
|
57
48
|
* (they may intentionally retain a dead duplicate credential), while disabled
|
|
58
49
|
* siblings sharing an enabled account's consumed token are still updated by
|
|
59
|
-
* `
|
|
50
|
+
* `coordinatePersistedRefresh()` so the shared credential remains consistent.
|
|
60
51
|
*/
|
|
61
52
|
export declare function refreshAndPersistAccount(account: RefreshAccountInput): Promise<AccountRefreshOutcome>;
|
|
62
53
|
export declare function buildRefreshInputs(accounts: AccountMetadataV3[]): RefreshAccountInput[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh-account.d.ts","sourceRoot":"","sources":["../../../lib/tools/refresh-account.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"refresh-account.d.ts","sourceRoot":"","sources":["../../../lib/tools/refresh-account.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAOvD,MAAM,WAAW,sBAAsB;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,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;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC7C,OAAO,EAAE,mBAAmB,GAC1B,OAAO,CAAC,qBAAqB,CAAC,CAyChC;AAED,wBAAgB,kBAAkB,CACjC,QAAQ,EAAE,iBAAiB,EAAE,GAC3B,mBAAmB,EAAE,CAYvB"}
|
|
@@ -1,113 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared token refresh persistence for the account-management tools.
|
|
3
3
|
*
|
|
4
|
-
* OpenAI refresh tokens are single-use and rotate on exchange.
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* reports `refresh_token_reused` for every account.
|
|
4
|
+
* OpenAI refresh tokens are single-use and rotate on exchange. Production
|
|
5
|
+
* refreshes flow through `coordinatePersistedRefresh()`, which owns the
|
|
6
|
+
* authoritative reload, exchange, and durable commit under one lease.
|
|
8
7
|
*/
|
|
9
|
-
import {
|
|
10
|
-
import { withAccountStorageTransaction, } from "../storage.js";
|
|
8
|
+
import { extractAccountUserId } from "../auth/token-utils.js";
|
|
11
9
|
import { findAccountIndexByIdentityKeys, toAccountIdentityKeys, } from "../storage/identity.js";
|
|
10
|
+
import { coordinatePersistedRefresh } from "../storage/coordinated-refresh.js";
|
|
12
11
|
export function findAccountIndexByIdentity(accounts, identity) {
|
|
13
12
|
return findAccountIndexByIdentityKeys(accounts, toAccountIdentityKeys(identity));
|
|
14
13
|
}
|
|
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
14
|
/**
|
|
106
15
|
* Refreshes one account and persists the rotated credential before reporting
|
|
107
16
|
* success. Disabled standalone accounts are skipped: refreshing them is wrong
|
|
108
17
|
* (they may intentionally retain a dead duplicate credential), while disabled
|
|
109
18
|
* siblings sharing an enabled account's consumed token are still updated by
|
|
110
|
-
* `
|
|
19
|
+
* `coordinatePersistedRefresh()` so the shared credential remains consistent.
|
|
111
20
|
*/
|
|
112
21
|
export async function refreshAndPersistAccount(account) {
|
|
113
22
|
const { index, identity } = account;
|
|
@@ -116,7 +25,7 @@ export async function refreshAndPersistAccount(account) {
|
|
|
116
25
|
}
|
|
117
26
|
let refreshResult;
|
|
118
27
|
try {
|
|
119
|
-
refreshResult = await
|
|
28
|
+
refreshResult = await coordinatePersistedRefresh(identity);
|
|
120
29
|
}
|
|
121
30
|
catch (error) {
|
|
122
31
|
return {
|
|
@@ -134,16 +43,19 @@ export async function refreshAndPersistAccount(account) {
|
|
|
134
43
|
error: refreshResult.message ?? refreshResult.reason ?? "token refresh failed",
|
|
135
44
|
};
|
|
136
45
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
46
|
+
return {
|
|
47
|
+
status: "refreshed",
|
|
48
|
+
index,
|
|
49
|
+
result: {
|
|
141
50
|
index,
|
|
142
51
|
identity,
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
52
|
+
refreshToken: refreshResult.refresh,
|
|
53
|
+
accessToken: refreshResult.access,
|
|
54
|
+
expiresAt: refreshResult.expires,
|
|
55
|
+
rotatedAt: refreshResult.rotatedAt,
|
|
56
|
+
persisted: true,
|
|
57
|
+
},
|
|
58
|
+
};
|
|
147
59
|
}
|
|
148
60
|
export function buildRefreshInputs(accounts) {
|
|
149
61
|
return accounts.map((account, index) => ({
|
|
@@ -152,6 +64,7 @@ export function buildRefreshInputs(accounts) {
|
|
|
152
64
|
identity: {
|
|
153
65
|
organizationId: account.organizationId,
|
|
154
66
|
accountId: account.accountId,
|
|
67
|
+
accountUserId: account.accountUserId?.trim() || extractAccountUserId(account.accessToken),
|
|
155
68
|
refreshToken: account.refreshToken,
|
|
156
69
|
},
|
|
157
70
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh-account.js","sourceRoot":"","sources":["../../../lib/tools/refresh-account.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"refresh-account.js","sourceRoot":"","sources":["../../../lib/tools/refresh-account.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EACN,8BAA8B,EAC9B,qBAAqB,GACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AA+B/E,MAAM,UAAU,0BAA0B,CACzC,QAAkC,EAClC,QAAgC;IAEhC,OAAO,8BAA8B,CAAC,QAAQ,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC7C,OAA4B;IAE5B,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACpC,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QAC/B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC/C,CAAC;IAED,IAAI,aAAqE,CAAC;IAC1E,IAAI,CAAC;QACJ,aAAa,GAAG,MAAM,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO;YACN,MAAM,EAAE,QAAQ;YAChB,KAAK;YACL,QAAQ;YACR,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC7D,CAAC;IACH,CAAC;IAED,IAAI,aAAa,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO;YACN,MAAM,EAAE,QAAQ;YAChB,KAAK;YACL,QAAQ;YACR,KAAK,EACJ,aAAa,CAAC,OAAO,IAAI,aAAa,CAAC,MAAM,IAAI,sBAAsB;SACxE,CAAC;IACH,CAAC;IAED,OAAO;QACN,MAAM,EAAE,WAAW;QACnB,KAAK;QACL,MAAM,EAAE;YACP,KAAK;YACL,QAAQ;YACR,YAAY,EAAE,aAAa,CAAC,OAAO;YACnC,WAAW,EAAE,aAAa,CAAC,MAAM;YACjC,SAAS,EAAE,aAAa,CAAC,OAAO;YAChC,SAAS,EAAE,aAAa,CAAC,SAAS;YAClC,SAAS,EAAE,IAAI;SACf;KACD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CACjC,QAA6B;IAE7B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACxC,KAAK;QACL,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE;YACT,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,aAAa,EACZ,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,oBAAoB,CAAC,OAAO,CAAC,WAAW,CAAC;YAC3E,YAAY,EAAE,OAAO,CAAC,YAAY;SAClC;KACD,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/lib/types.d.ts
CHANGED
package/dist/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../lib/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oc-codex-multi-auth",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.14.0",
|
|
4
4
|
"description": "OpenCode plugin for ChatGPT Plus/Pro OAuth with Codex/GPT-5 routing, multi-account rotation, account switching, health checks, diagnostics, and recovery tools",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -120,11 +120,9 @@
|
|
|
120
120
|
},
|
|
121
121
|
"dependencies": {
|
|
122
122
|
"@napi-rs/keyring": "~1.2.0",
|
|
123
|
-
"@openauthjs/openauth": "^0.4.3",
|
|
124
123
|
"@opencode-ai/plugin": "^1.14.22",
|
|
125
124
|
"@opentui/core": "0.2.6",
|
|
126
125
|
"@opentui/solid": "0.2.6",
|
|
127
|
-
"hono": "4.12.32",
|
|
128
126
|
"proper-lockfile": "^4.1.2",
|
|
129
127
|
"solid-js": "^1.9.11",
|
|
130
128
|
"web-tree-sitter": "^0.25.10",
|
|
@@ -133,17 +131,17 @@
|
|
|
133
131
|
"overrides": {
|
|
134
132
|
"esbuild": "^0.28.1",
|
|
135
133
|
"flatted": "3.4.2",
|
|
136
|
-
"hono": "4.12.32",
|
|
137
134
|
"rollup": "4.60.0",
|
|
138
135
|
"vite": "^7.3.5",
|
|
139
136
|
"yaml": "^2.8.3",
|
|
140
137
|
"@babel/core": "^7.29.6",
|
|
141
138
|
"ajv@<6.14.0": "^6.14.0",
|
|
142
|
-
"brace-expansion": "^5.0.
|
|
139
|
+
"brace-expansion": "^5.0.9",
|
|
143
140
|
"seroval@<=1.5.2": "^1.5.6",
|
|
144
141
|
"seroval-plugins@<=1.5.2": "^1.5.6",
|
|
145
142
|
"minimatch@<9.0.7": "^9.0.7",
|
|
146
143
|
"minimatch@>=10.0.0 <10.2.3": "^10.2.3",
|
|
144
|
+
"nanoid": "^3.3.18",
|
|
147
145
|
"picomatch@<2.3.2": "^2.3.2",
|
|
148
146
|
"picomatch@>=4.0.0 <4.0.4": "^4.0.4",
|
|
149
147
|
"postcss@<8.5.24": "^8.5.24",
|