oc-codex-multi-auth 6.1.9 → 6.1.10

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.
@@ -0,0 +1,8 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" role="img" aria-label="oc-codex-multi-auth icon">
2
+ <rect width="512" height="512" rx="112" fill="#0b0f19"/>
3
+ <circle cx="168" cy="178" r="54" fill="#38bdf8" opacity=".95"/>
4
+ <circle cx="344" cy="178" r="54" fill="#a78bfa" opacity=".95"/>
5
+ <circle cx="256" cy="334" r="64" fill="#34d399" opacity=".95"/>
6
+ <path d="M206 205 256 282l50-77" fill="none" stroke="#f8fafc" stroke-width="34" stroke-linecap="round" stroke-linejoin="round" opacity=".92"/>
7
+ <path d="M144 334h224" fill="none" stroke="#f8fafc" stroke-width="28" stroke-linecap="round" opacity=".9"/>
8
+ </svg>
@@ -1,4 +1,4 @@
1
- export declare const REQUIRED_OAUTH_SCOPES: readonly ["openid", "profile", "email", "offline_access", "api.connectors.read", "api.connectors.invoke"];
1
+ export declare const REQUIRED_OAUTH_SCOPES: readonly ["openid", "profile", "email", "offline_access"];
2
2
  export declare const SCOPE: string;
3
3
  export declare function getMissingRequiredOAuthScopes(scope: string | undefined): string[];
4
4
  export declare function hasRequiredOAuthScopes(scope: string | undefined): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"scopes.d.ts","sourceRoot":"","sources":["../../../lib/auth/scopes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,2GAOxB,CAAC;AAEX,eAAO,MAAM,KAAK,QAAkC,CAAC;AAWrD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAGjF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEzE"}
1
+ {"version":3,"file":"scopes.d.ts","sourceRoot":"","sources":["../../../lib/auth/scopes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,2DAKxB,CAAC;AAEX,eAAO,MAAM,KAAK,QAAkC,CAAC;AAWrD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAGjF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEzE"}
@@ -3,8 +3,6 @@ export const REQUIRED_OAUTH_SCOPES = [
3
3
  "profile",
4
4
  "email",
5
5
  "offline_access",
6
- "api.connectors.read",
7
- "api.connectors.invoke",
8
6
  ];
9
7
  export const SCOPE = REQUIRED_OAUTH_SCOPES.join(" ");
10
8
  function parseOAuthScope(scope) {
@@ -1 +1 @@
1
- {"version":3,"file":"scopes.js","sourceRoot":"","sources":["../../../lib/auth/scopes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACpC,QAAQ;IACR,SAAS;IACT,OAAO;IACP,gBAAgB;IAChB,qBAAqB;IACrB,uBAAuB;CACd,CAAC;AAEX,MAAM,CAAC,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAErD,SAAS,eAAe,CAAC,KAAyB;IACjD,OAAO,IAAI,GAAG,CACb,CAAC,KAAK,IAAI,EAAE,CAAC;SACX,KAAK,CAAC,KAAK,CAAC;SACZ,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CACrC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAAyB;IACtE,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAyB;IAC/D,OAAO,6BAA6B,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"scopes.js","sourceRoot":"","sources":["../../../lib/auth/scopes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACpC,QAAQ;IACR,SAAS;IACT,OAAO;IACP,gBAAgB;CACP,CAAC;AAEX,MAAM,CAAC,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAErD,SAAS,eAAe,CAAC,KAAyB;IACjD,OAAO,IAAI,GAAG,CACb,CAAC,KAAK,IAAI,EAAE,CAAC;SACX,KAAK,CAAC,KAAK,CAAC;SACZ,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CACrC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAAyB;IACtE,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAyB;IAC/D,OAAO,6BAA6B,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AAC1D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../../lib/storage/identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,MAAM,MAAM,WAAW,GAAG;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAKF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,MAAM,CAaT;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAGhE;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,GAAG,WAAW,GAAG,cAAc,CAAC,GAChF,MAAM,EAAE,CAkBV;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,GAAG,WAAW,GAAG,cAAc,CAAC,GAChF,MAAM,GAAG,SAAS,CAEpB;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CASpF;AAED,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,GAAG,WAAW,GAAG,cAAc,CAAC,EAAE,EACpF,YAAY,EAAE,MAAM,EAAE,GACrB,MAAM,CASR;AAgFD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EACtJ,QAAQ,EAAE,CAAC,EAAE,GACZ,CAAC,EAAE,CAEL;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,SAAS;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EACvJ,QAAQ,EAAE,CAAC,EAAE,GACZ,CAAC,EAAE,CAiEL;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,CAAC,SAAS,WAAW,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAE5G"}
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../../lib/storage/identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,MAAM,MAAM,WAAW,GAAG;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAKF,wBAAgB,uBAAuB,CAAC,OAAO,EAAE;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,MAAM,CAaT;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAGhE;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,GAAG,WAAW,GAAG,cAAc,CAAC,GAChF,MAAM,EAAE,CAkBV;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,GAAG,WAAW,GAAG,cAAc,CAAC,GAChF,MAAM,GAAG,SAAS,CAEpB;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CASpF;AAED,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,GAAG,WAAW,GAAG,cAAc,CAAC,EAAE,EACpF,YAAY,EAAE,MAAM,EAAE,GACrB,MAAM,CASR;AA4JD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EACtJ,QAAQ,EAAE,CAAC,EAAE,GACZ,CAAC,EAAE,CAEL;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,SAAS;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EACvJ,QAAQ,EAAE,CAAC,EAAE,GACZ,CAAC,EAAE,CAiEL;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,CAAC,SAAS,WAAW,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAE5G"}
@@ -110,6 +110,74 @@ function mergeAccountRecords(target, source) {
110
110
  email: target.email ?? source.email,
111
111
  };
112
112
  }
113
+ function sameOptionalIdentity(left, right) {
114
+ const normalizedLeft = normalizeWorkspaceIdentityPart(left);
115
+ const normalizedRight = normalizeWorkspaceIdentityPart(right);
116
+ return !!normalizedLeft && !!normalizedRight && normalizedLeft === normalizedRight;
117
+ }
118
+ function isLegacyRefreshTokenDuplicate(left, right) {
119
+ const refreshToken = normalizeWorkspaceIdentityPart(left.refreshToken);
120
+ const leftOrganizationId = normalizeWorkspaceIdentityPart(left.organizationId);
121
+ const rightOrganizationId = normalizeWorkspaceIdentityPart(right.organizationId);
122
+ if (leftOrganizationId && rightOrganizationId && leftOrganizationId !== rightOrganizationId) {
123
+ return false;
124
+ }
125
+ const leftOrgLike = !!leftOrganizationId || left.accountIdSource === "org";
126
+ const rightOrgLike = !!rightOrganizationId || right.accountIdSource === "org";
127
+ const leftTokenLike = !leftOrganizationId && left.accountIdSource === "token";
128
+ const rightTokenLike = !rightOrganizationId && right.accountIdSource === "token";
129
+ if (((leftOrgLike && rightTokenLike) || (rightOrgLike && leftTokenLike)) &&
130
+ (sameOptionalIdentity(left.email, right.email) ||
131
+ (!!refreshToken && refreshToken === normalizeWorkspaceIdentityPart(right.refreshToken)))) {
132
+ return true;
133
+ }
134
+ if (!refreshToken || refreshToken !== normalizeWorkspaceIdentityPart(right.refreshToken)) {
135
+ return false;
136
+ }
137
+ const leftAccountId = normalizeWorkspaceIdentityPart(left.accountId);
138
+ const rightAccountId = normalizeWorkspaceIdentityPart(right.accountId);
139
+ if (leftAccountId && rightAccountId && leftAccountId !== rightAccountId) {
140
+ return false;
141
+ }
142
+ return (sameOptionalIdentity(left.accountId, right.accountId) ||
143
+ (!leftOrganizationId && !!rightOrganizationId && !left.accountId) ||
144
+ (!!leftOrganizationId && !rightOrganizationId && !right.accountId));
145
+ }
146
+ function deduplicateLegacyRefreshTokenDuplicates(accounts) {
147
+ const working = [...accounts];
148
+ const indicesToRemove = new Set();
149
+ for (let i = 0; i < working.length; i += 1) {
150
+ if (indicesToRemove.has(i))
151
+ continue;
152
+ const account = working[i];
153
+ if (!account)
154
+ continue;
155
+ for (let j = i + 1; j < working.length; j += 1) {
156
+ if (indicesToRemove.has(j))
157
+ continue;
158
+ const candidate = working[j];
159
+ if (!candidate || !isLegacyRefreshTokenDuplicate(account, candidate))
160
+ continue;
161
+ const accountOrgLike = !!normalizeWorkspaceIdentityPart(account.organizationId) || account.accountIdSource === "org";
162
+ const candidateOrgLike = !!normalizeWorkspaceIdentityPart(candidate.organizationId) || candidate.accountIdSource === "org";
163
+ const newestIndex = accountOrgLike && !candidateOrgLike
164
+ ? i
165
+ : candidateOrgLike && !accountOrgLike
166
+ ? j
167
+ : pickNewestAccountIndex(working, i, j);
168
+ const obsoleteIndex = newestIndex === i ? j : i;
169
+ const target = working[newestIndex];
170
+ const source = working[obsoleteIndex];
171
+ if (target && source) {
172
+ working[newestIndex] = mergeAccountRecords(target, source);
173
+ }
174
+ indicesToRemove.add(obsoleteIndex);
175
+ if (obsoleteIndex === i)
176
+ break;
177
+ }
178
+ }
179
+ return working.filter((account, index) => !!account && !indicesToRemove.has(index));
180
+ }
113
181
  function deduplicateAccountsByKey(accounts) {
114
182
  const working = [...accounts];
115
183
  const keyToIndex = new Map();
@@ -225,6 +293,6 @@ export function deduplicateAccountsByEmail(accounts) {
225
293
  * 2) Then apply legacy email dedupe only for entries that still do not have organizationId/accountId.
226
294
  */
227
295
  export function deduplicateAccountsForStorage(accounts) {
228
- return deduplicateAccountsByEmail(deduplicateAccountsByKey(accounts));
296
+ return deduplicateAccountsByEmail(deduplicateLegacyRefreshTokenDuplicates(deduplicateAccountsByKey(accounts)));
229
297
  }
230
298
  //# sourceMappingURL=identity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../lib/storage/identity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../lib/storage/identity.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.1.9",
3
+ "version": "6.1.10",
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",
@@ -13,6 +13,43 @@ const STALE_MANAGED_MODEL_KEYS = new Set([
13
13
  "gpt-5.3-codex",
14
14
  "gpt-5.4",
15
15
  ]);
16
+ const STANDALONE_COMMANDS = new Set(["doctor", "status", "list", "limits", "dashboard", "health", "diag"]);
17
+ const INSTALLER_COMMANDS = new Set(["install"]);
18
+
19
+ function splitCommandArgv(argv) {
20
+ const [first, ...rest] = argv;
21
+ if (!first) return { kind: "install", argv };
22
+ if (INSTALLER_COMMANDS.has(first)) return { kind: "install", argv: rest };
23
+ if (STANDALONE_COMMANDS.has(first)) return { kind: "standalone", command: first, argv: rest };
24
+ if (first.startsWith("-")) return { kind: "install", argv };
25
+ return { kind: "unknown", command: first, argv: rest };
26
+ }
27
+
28
+ function parseStandaloneArgs(argv) {
29
+ const options = {
30
+ json: false,
31
+ includeSensitive: false,
32
+ deep: false,
33
+ fix: false,
34
+ tag: undefined,
35
+ configPath: undefined,
36
+ help: false,
37
+ };
38
+ for (let index = 0; index < argv.length; index += 1) {
39
+ const arg = argv[index];
40
+ if (arg === "--json") options.json = true;
41
+ else if (arg === "--include-sensitive") options.includeSensitive = true;
42
+ else if (arg === "--deep") options.deep = true;
43
+ else if (arg === "--fix") options.fix = true;
44
+ else if (arg === "--tag") options.tag = argv[++index];
45
+ else if (arg.startsWith("--tag=")) options.tag = arg.slice("--tag=".length);
46
+ else if (arg === "--config-path") options.configPath = argv[++index];
47
+ else if (arg.startsWith("--config-path=")) options.configPath = arg.slice("--config-path=".length);
48
+ else if (arg === "--help" || arg === "-h") options.help = true;
49
+ else throw new Error(`Unknown option for standalone command: ${arg}`);
50
+ }
51
+ return options;
52
+ }
16
53
 
17
54
  function getManagedPackageNames() {
18
55
  return [PACKAGE_NAME, ...LEGACY_PACKAGE_NAMES];
@@ -37,7 +74,17 @@ export function isDirectRunPath(argvPath, modulePath, resolveRealPath = realpath
37
74
  }
38
75
 
39
76
  function printHelp() {
40
- console.log(`Usage: ${PACKAGE_NAME} [--modern|--full|--legacy] [--dry-run] [--no-cache-clear]\n\n` +
77
+ console.log(`Usage: ${PACKAGE_NAME} [command] [options]\n\n` +
78
+ "Commands:\n" +
79
+ " install Install/update OpenCode config (default with no command)\n" +
80
+ " doctor Run local account/config diagnostics\n" +
81
+ " status Show account/config status\n" +
82
+ " list List configured accounts\n" +
83
+ " limits Show stored rate-limit state\n" +
84
+ " dashboard Print dashboard guidance\n" +
85
+ " health Check local token/account health\n" +
86
+ " diag Alias for doctor --deep\n\n" +
87
+ `Installer usage: ${PACKAGE_NAME} [--modern|--full|--legacy] [--dry-run] [--no-cache-clear]\n\n` +
41
88
  "Default behavior:\n" +
42
89
  " - Installs/updates global config at ~/.config/opencode/opencode.json\n" +
43
90
  " - Enables the prompt status bar TUI plugin at ~/.config/opencode/tui.json\n" +
@@ -173,6 +220,183 @@ function formatJson(obj) {
173
220
  return `${JSON.stringify(obj, null, 2)}\n`;
174
221
  }
175
222
 
223
+ function getStandaloneStoragePath(options, env = process.env) {
224
+ if (options.configPath) return resolve(options.configPath);
225
+ return join(resolveHomeDirectory(env), ".opencode", "oc-codex-multi-auth-accounts.json");
226
+ }
227
+
228
+ async function readStandaloneStorage(path) {
229
+ try {
230
+ const raw = await readFile(path, "utf-8");
231
+ const parsed = JSON.parse(raw);
232
+ return {
233
+ storage: parsed && typeof parsed === "object" ? normalizeStandaloneStorage(parsed) : null,
234
+ error: null,
235
+ };
236
+ } catch (error) {
237
+ if (error?.code === "ENOENT") return { storage: null, error: null };
238
+ return { storage: null, error: formatErrorForLog(error) };
239
+ }
240
+ }
241
+
242
+ function normalizeStandaloneIdentityPart(value) {
243
+ return typeof value === "string" && value.trim() ? value.trim() : undefined;
244
+ }
245
+
246
+ function sameStandaloneIdentity(left, right) {
247
+ const normalizedLeft = normalizeStandaloneIdentityPart(left);
248
+ const normalizedRight = normalizeStandaloneIdentityPart(right);
249
+ return !!normalizedLeft && !!normalizedRight && normalizedLeft === normalizedRight;
250
+ }
251
+
252
+ function isStandaloneOrgTokenDuplicate(left, right) {
253
+ const leftOrganizationId = normalizeStandaloneIdentityPart(left?.organizationId);
254
+ const rightOrganizationId = normalizeStandaloneIdentityPart(right?.organizationId);
255
+ if (leftOrganizationId && rightOrganizationId && leftOrganizationId !== rightOrganizationId) return false;
256
+ const leftOrgLike = !!leftOrganizationId || left?.accountIdSource === "org";
257
+ const rightOrgLike = !!rightOrganizationId || right?.accountIdSource === "org";
258
+ const leftTokenLike = !leftOrganizationId && left?.accountIdSource === "token";
259
+ const rightTokenLike = !rightOrganizationId && right?.accountIdSource === "token";
260
+ if (!((leftOrgLike && rightTokenLike) || (rightOrgLike && leftTokenLike))) return false;
261
+ return sameStandaloneIdentity(left?.email, right?.email) ||
262
+ sameStandaloneIdentity(left?.refreshToken, right?.refreshToken);
263
+ }
264
+
265
+ function mergeStandaloneAccounts(target, source) {
266
+ const targetOrgLike = !!normalizeStandaloneIdentityPart(target?.organizationId) || target?.accountIdSource === "org";
267
+ const sourceOrgLike = !!normalizeStandaloneIdentityPart(source?.organizationId) || source?.accountIdSource === "org";
268
+ if (targetOrgLike || !sourceOrgLike) {
269
+ return {
270
+ ...source,
271
+ ...target,
272
+ organizationId: target.organizationId ?? source.organizationId,
273
+ accountId: target.accountId ?? source.accountId,
274
+ accountIdSource: target.accountIdSource ?? source.accountIdSource,
275
+ accountLabel: target.accountLabel ?? source.accountLabel,
276
+ email: target.email ?? source.email,
277
+ };
278
+ }
279
+ return mergeStandaloneAccounts(source, target);
280
+ }
281
+
282
+ function normalizeStandaloneStorage(storage) {
283
+ if (!Array.isArray(storage.accounts)) return storage;
284
+ const accounts = [...storage.accounts];
285
+ const removed = new Set();
286
+ for (let i = 0; i < accounts.length; i += 1) {
287
+ if (removed.has(i)) continue;
288
+ for (let j = i + 1; j < accounts.length; j += 1) {
289
+ if (removed.has(j) || !isStandaloneOrgTokenDuplicate(accounts[i], accounts[j])) continue;
290
+ const leftOrgLike = !!normalizeStandaloneIdentityPart(accounts[i]?.organizationId) ||
291
+ accounts[i]?.accountIdSource === "org";
292
+ const targetIndex = leftOrgLike ? i : j;
293
+ const sourceIndex = targetIndex === i ? j : i;
294
+ accounts[targetIndex] = mergeStandaloneAccounts(accounts[targetIndex], accounts[sourceIndex]);
295
+ removed.add(sourceIndex);
296
+ if (sourceIndex === i) break;
297
+ }
298
+ }
299
+ const normalizedAccounts = accounts.filter((_, index) => !removed.has(index));
300
+ return {
301
+ ...storage,
302
+ accounts: normalizedAccounts,
303
+ activeIndex: Math.max(0, Math.min(storage.activeIndex ?? 0, Math.max(0, normalizedAccounts.length - 1))),
304
+ };
305
+ }
306
+
307
+ function maskValue(value, includeSensitive) {
308
+ if (includeSensitive || typeof value !== "string" || value.length <= 8) return value;
309
+ return `${value.slice(0, 4)}...${value.slice(-4)}`;
310
+ }
311
+
312
+ function summarizeStandaloneAccounts(storage, includeSensitive, tag) {
313
+ const accounts = Array.isArray(storage?.accounts) ? storage.accounts : [];
314
+ const normalizedTag = typeof tag === "string" ? tag.trim().toLowerCase() : "";
315
+ return accounts
316
+ .map((account, index) => ({ account, index }))
317
+ .filter(({ account }) => !normalizedTag ||
318
+ (Array.isArray(account?.accountTags) &&
319
+ account.accountTags.some((entry) => String(entry).toLowerCase() === normalizedTag)))
320
+ .map(({ account, index }) => ({
321
+ index,
322
+ label: account?.accountLabel ?? `Account ${index + 1}`,
323
+ email: maskValue(account?.email, includeSensitive),
324
+ accountId: maskValue(account?.accountId, includeSensitive),
325
+ accountIdSource: account?.accountIdSource,
326
+ enabled: account?.enabled !== false,
327
+ hasRefreshToken: typeof account?.refreshToken === "string" && account.refreshToken.length > 0,
328
+ hasAccessToken: typeof account?.accessToken === "string" && account.accessToken.length > 0,
329
+ expiresAt: account?.expiresAt,
330
+ expired: typeof account?.expiresAt === "number" ? account.expiresAt <= Date.now() : undefined,
331
+ tags: Array.isArray(account?.accountTags) ? account.accountTags : [],
332
+ note: account?.accountNote,
333
+ rateLimitResetTimes: account?.rateLimitResetTimes ?? {},
334
+ }));
335
+ }
336
+
337
+ function printStandaloneResult(command, payload, json) {
338
+ if (json) {
339
+ console.log(JSON.stringify(payload, null, 2));
340
+ return;
341
+ }
342
+ console.log(`oc-codex-multi-auth ${command}`);
343
+ if (payload.message) console.log(payload.message);
344
+ console.log(`Storage: ${payload.storagePath}`);
345
+ console.log(`Accounts: ${payload.totalAccounts}`);
346
+ if (Array.isArray(payload.accounts)) {
347
+ for (const account of payload.accounts) {
348
+ console.log(`- [${account.index}] ${account.label} enabled=${account.enabled} refresh=${account.hasRefreshToken} access=${account.hasAccessToken}`);
349
+ }
350
+ }
351
+ if (payload.error) console.log(`Error: ${payload.error}`);
352
+ if (payload.nextAction) console.log(`Next: ${payload.nextAction}`);
353
+ }
354
+
355
+ export async function runStandaloneCommand(command, argv = [], options = {}) {
356
+ const parsed = parseStandaloneArgs(argv);
357
+ if (command === "diag") {
358
+ command = "doctor";
359
+ parsed.deep = true;
360
+ }
361
+ if (parsed.help) {
362
+ printHelp();
363
+ return { exitCode: 0, action: "help" };
364
+ }
365
+ const { env = process.env } = options;
366
+ const storagePath = getStandaloneStoragePath(parsed, env);
367
+ const { storage, error } = await readStandaloneStorage(storagePath);
368
+ const accounts = summarizeStandaloneAccounts(storage, parsed.includeSensitive, parsed.tag);
369
+ const totalAccounts = Array.isArray(storage?.accounts) ? storage.accounts.length : 0;
370
+ const payload = {
371
+ command,
372
+ storagePath,
373
+ totalAccounts,
374
+ shownAccounts: accounts.length,
375
+ activeIndex: typeof storage?.activeIndex === "number" ? storage.activeIndex : 0,
376
+ activeIndexByFamily: storage?.activeIndexByFamily ?? {},
377
+ accounts,
378
+ error,
379
+ };
380
+ if (command === "dashboard") {
381
+ payload.message = "Standalone dashboard server is not launched by this safe CLI; use status/list/limits/health or OpenCode codex-dashboard.";
382
+ payload.nextAction = "Run oc-codex-multi-auth status or open OpenCode and call codex-dashboard.";
383
+ } else if (command === "doctor") {
384
+ payload.message = error ? "Storage could not be parsed." : totalAccounts > 0 ? "Local diagnostics completed." : "No accounts configured.";
385
+ payload.deep = parsed.deep;
386
+ payload.fixApplied = parsed.fix ? false : undefined;
387
+ payload.nextAction = totalAccounts > 0 ? "Run oc-codex-multi-auth health --json for scriptable checks." : "Run opencode auth login.";
388
+ } else if (command === "limits") {
389
+ payload.rateLimits = accounts.map((account) => ({ index: account.index, rateLimitResetTimes: account.rateLimitResetTimes }));
390
+ } else if (command === "health") {
391
+ payload.healthyCount = accounts.filter((account) => account.enabled && account.hasRefreshToken).length;
392
+ payload.unhealthyCount = accounts.filter((account) => !account.enabled || !account.hasRefreshToken).length;
393
+ } else if (command === "status") {
394
+ payload.message = totalAccounts > 0 ? "Account storage loaded." : "No accounts configured.";
395
+ }
396
+ printStandaloneResult(command, payload, parsed.json);
397
+ return { exitCode: error ? 1 : 0, action: command, storagePath };
398
+ }
399
+
176
400
  // Top-level keys inside `provider.openai` that the installer owns absolutely.
177
401
  // These are always sourced from the template (overwritten or removed) so the
178
402
  // plugin's required runtime shape is authoritative. Any OTHER key the user has
@@ -443,7 +667,15 @@ async function clearCache(paths, dryRun, skipCacheClear) {
443
667
  }
444
668
 
445
669
  export async function runInstaller(argv = process.argv.slice(2), options = {}) {
446
- const parsed = parseCliArgs(argv);
670
+ const split = splitCommandArgv(argv);
671
+ if (split.kind === "standalone") {
672
+ return runStandaloneCommand(split.command, split.argv, options);
673
+ }
674
+ if (split.kind === "unknown") {
675
+ printHelp();
676
+ throw new Error(`Unknown command: ${split.command}`);
677
+ }
678
+ const parsed = parseCliArgs(split.argv);
447
679
  if (parsed.wantsHelp) {
448
680
  printHelp();
449
681
  return { exitCode: 0, action: "help" };
@@ -575,6 +807,8 @@ export const __test = {
575
807
  mergeOpenaiProvider,
576
808
  mergeTuiConfig,
577
809
  parseCliArgs,
810
+ runStandaloneCommand,
811
+ splitCommandArgv,
578
812
  writeFileAtomic,
579
813
  renameWithWindowsRetry,
580
814
  resolveHomeDirectory,