opencode-openai-codex-multi-auth 4.4.1 → 4.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,6 +2,7 @@ import { decodeJWT, refreshAccessToken } from "./auth/auth.js";
2
2
  import { JWT_CLAIM_PATH } from "./constants.js";
3
3
  import { loadAccounts, saveAccounts } from "./storage.js";
4
4
  import { MODEL_FAMILIES } from "./prompts/codex.js";
5
+ import { getHealthTracker, getTokenTracker, selectHybridAccount } from "./rotation.js";
5
6
  function nowMs() {
6
7
  return Date.now();
7
8
  }
@@ -243,6 +244,33 @@ export class AccountManager {
243
244
  this.sessionOffsetApplied[family] = true;
244
245
  }
245
246
  getCurrentOrNextForFamily(family, model, strategy = "sticky", pidOffsetEnabled = false) {
247
+ // antigravity-style: PID offset is primarily for sticky/round-robin.
248
+ if (pidOffsetEnabled && strategy !== "hybrid")
249
+ this.applyPidOffsetOnce(family);
250
+ if (strategy === "hybrid") {
251
+ const healthTracker = getHealthTracker();
252
+ const tokenTracker = getTokenTracker();
253
+ const accountsWithMetrics = this.accounts.map((acc) => {
254
+ clearExpiredRateLimits(acc);
255
+ return {
256
+ index: acc.index,
257
+ lastUsed: acc.lastUsed,
258
+ healthScore: healthTracker.getScore(acc.index),
259
+ isRateLimited: isRateLimitedForFamily(acc, family, model),
260
+ isCoolingDown: this.isAccountCoolingDown(acc),
261
+ };
262
+ });
263
+ const selectedIndex = selectHybridAccount(accountsWithMetrics, tokenTracker);
264
+ if (selectedIndex !== null) {
265
+ const selected = this.accounts[selectedIndex];
266
+ if (selected) {
267
+ selected.lastUsed = nowMs();
268
+ this.currentAccountIndexByFamily[family] = selected.index;
269
+ return selected;
270
+ }
271
+ }
272
+ // Fall through to sticky selection if hybrid has no eligible candidates.
273
+ }
246
274
  if (pidOffsetEnabled)
247
275
  this.applyPidOffsetOnce(family);
248
276
  if (strategy === "round-robin") {
@@ -1 +1 @@
1
- {"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../lib/accounts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../lib/accounts.ts"],"names":[],"mappings":"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"}
package/dist/lib/cli.d.ts CHANGED
@@ -5,4 +5,5 @@ export interface ExistingAccountLabel {
5
5
  }
6
6
  export declare function promptLoginMode(existing: ExistingAccountLabel[]): Promise<"add" | "fresh">;
7
7
  export declare function promptAddAnotherAccount(currentCount: number, maxAccounts: number): Promise<boolean>;
8
+ export declare function promptOAuthCallbackValue(message: string): Promise<string>;
8
9
  //# sourceMappingURL=cli.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../lib/cli.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,oBAAoB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,eAAe,CACpC,QAAQ,EAAE,oBAAoB,EAAE,GAC9B,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,CAoB1B;AAED,wBAAsB,uBAAuB,CAC5C,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC,CAWlB"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../lib/cli.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,oBAAoB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,eAAe,CACpC,QAAQ,EAAE,oBAAoB,EAAE,GAC9B,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,CAsB1B;AAED,wBAAsB,uBAAuB,CAC5C,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC,CAalB;AAED,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS/E"}
package/dist/lib/cli.js CHANGED
@@ -1,36 +1,52 @@
1
1
  import { createInterface } from "node:readline/promises";
2
2
  import { stdin, stdout } from "node:process";
3
+ import { withTerminalModeRestored } from "./terminal.js";
3
4
  export async function promptLoginMode(existing) {
4
- const rl = createInterface({ input: stdin, output: stdout });
5
- try {
6
- const lines = [];
7
- lines.push("\nExisting accounts:\n");
8
- for (const account of existing) {
9
- const label = account.email ??
10
- (account.accountId ? `id:${account.accountId}` : "(unknown)");
11
- lines.push(` ${account.index + 1}. ${label}`);
5
+ return await withTerminalModeRestored(async () => {
6
+ const rl = createInterface({ input: stdin, output: stdout });
7
+ try {
8
+ const lines = [];
9
+ lines.push("\nExisting accounts:\n");
10
+ for (const account of existing) {
11
+ const label = account.email ??
12
+ (account.accountId ? `id:${account.accountId}` : "(unknown)");
13
+ lines.push(` ${account.index + 1}. ${label}`);
14
+ }
15
+ lines.push("");
16
+ lines.push("(a)dd new account(s) or (f)resh start? [a/f]: ");
17
+ const answer = (await rl.question(lines.join("\n"))).trim().toLowerCase();
18
+ if (answer.startsWith("f"))
19
+ return "fresh";
20
+ return "add";
12
21
  }
13
- lines.push("");
14
- lines.push("(a)dd new account(s) or (f)resh start? [a/f]: ");
15
- const answer = (await rl.question(lines.join("\n"))).trim().toLowerCase();
16
- if (answer.startsWith("f"))
17
- return "fresh";
18
- return "add";
19
- }
20
- finally {
21
- rl.close();
22
- }
22
+ finally {
23
+ rl.close();
24
+ }
25
+ });
23
26
  }
24
27
  export async function promptAddAnotherAccount(currentCount, maxAccounts) {
25
28
  if (currentCount >= maxAccounts)
26
29
  return false;
27
- const rl = createInterface({ input: stdin, output: stdout });
28
- try {
29
- const answer = await rl.question(`\nYou have ${currentCount} account(s). Add another? [y/N]: `);
30
- return answer.trim().toLowerCase().startsWith("y");
31
- }
32
- finally {
33
- rl.close();
34
- }
30
+ return await withTerminalModeRestored(async () => {
31
+ const rl = createInterface({ input: stdin, output: stdout });
32
+ try {
33
+ const answer = await rl.question(`\nYou have ${currentCount} account(s). Add another? [y/N]: `);
34
+ return answer.trim().toLowerCase().startsWith("y");
35
+ }
36
+ finally {
37
+ rl.close();
38
+ }
39
+ });
40
+ }
41
+ export async function promptOAuthCallbackValue(message) {
42
+ return await withTerminalModeRestored(async () => {
43
+ const rl = createInterface({ input: stdin, output: stdout });
44
+ try {
45
+ return (await rl.question(message)).trim();
46
+ }
47
+ finally {
48
+ rl.close();
49
+ }
50
+ });
35
51
  }
36
52
  //# sourceMappingURL=cli.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../lib/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAQ7C,MAAM,CAAC,KAAK,UAAU,eAAe,CACpC,QAAgC;IAEhC,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7D,IAAI,CAAC;QACJ,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACrC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAChC,MAAM,KAAK,GACV,OAAO,CAAC,KAAK;gBACb,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YAC/D,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,KAAK,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAE7D,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC1E,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,OAAO,CAAC;QAC3C,OAAO,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACV,EAAE,CAAC,KAAK,EAAE,CAAC;IACZ,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC5C,YAAoB,EACpB,WAAmB;IAEnB,IAAI,YAAY,IAAI,WAAW;QAAE,OAAO,KAAK,CAAC;IAC9C,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7D,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAC/B,cAAc,YAAY,mCAAmC,CAC7D,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC;YAAS,CAAC;QACV,EAAE,CAAC,KAAK,EAAE,CAAC;IACZ,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../lib/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAQzD,MAAM,CAAC,KAAK,UAAU,eAAe,CACpC,QAAgC;IAEhC,OAAO,MAAM,wBAAwB,CAAC,KAAK,IAAI,EAAE;QAChD,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC;YACJ,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACrC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAChC,MAAM,KAAK,GACV,OAAO,CAAC,KAAK;oBACb,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;gBAC/D,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,KAAK,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;YAChD,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;YAE7D,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC1E,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO,OAAO,CAAC;YAC3C,OAAO,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACV,EAAE,CAAC,KAAK,EAAE,CAAC;QACZ,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC5C,YAAoB,EACpB,WAAmB;IAEnB,IAAI,YAAY,IAAI,WAAW;QAAE,OAAO,KAAK,CAAC;IAC9C,OAAO,MAAM,wBAAwB,CAAC,KAAK,IAAI,EAAE;QAChD,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAC/B,cAAc,YAAY,mCAAmC,CAC7D,CAAC;YACF,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACpD,CAAC;gBAAS,CAAC;YACV,EAAE,CAAC,KAAK,EAAE,CAAC;QACZ,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,OAAe;IAC7D,OAAO,MAAM,wBAAwB,CAAC,KAAK,IAAI,EAAE;QAChD,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC;YACJ,OAAO,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5C,CAAC;gBAAS,CAAC;YACV,EAAE,CAAC,KAAK,EAAE,CAAC;QACZ,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { PluginConfig } from "./types.js";
2
2
  /**
3
- * Load plugin configuration from ~/.opencode/openai-codex-auth-config.json
3
+ * Load plugin configuration from ~/.config/opencode/openai-codex-auth-config.json
4
4
  * Falls back to defaults if file doesn't exist or is invalid
5
5
  *
6
6
  * @returns Plugin configuration
@@ -14,7 +14,7 @@ export declare function loadPluginConfig(): PluginConfig;
14
14
  * @returns True if CODEX_MODE should be enabled
15
15
  */
16
16
  export declare function getCodexMode(pluginConfig: PluginConfig): boolean;
17
- export declare function getAccountSelectionStrategy(pluginConfig: PluginConfig): "sticky" | "round-robin";
17
+ export declare function getAccountSelectionStrategy(pluginConfig: PluginConfig): "sticky" | "round-robin" | "hybrid";
18
18
  export declare function getPidOffsetEnabled(pluginConfig: PluginConfig): boolean;
19
19
  export declare function getQuietMode(pluginConfig: PluginConfig): boolean;
20
20
  export declare function getTokenRefreshSkewMs(pluginConfig: PluginConfig): number;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../lib/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAoB/C;;;;;GAKG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,CAqB/C;AAuCD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAEhE;AAED,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,YAAY,GACnE,QAAQ,GACR,aAAa,CAIf;AAED,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAMvE;AAED,wBAAgB,YAAY,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAEhE;AAED,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,CAOxE;AAED,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,CAO9E;AAED,wBAAgB,8BAA8B,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAMlF;AAED,wBAAgB,4BAA4B,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,CAO/E;AAED,wBAAgB,6BAA6B,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,CAOhF"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../lib/config.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAiD/C;;;;;GAKG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,CAsB/C;AAuCD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAEhE;AAED,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,YAAY,GACnE,QAAQ,GACR,aAAa,GACb,QAAQ,CAIV;AAED,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAMvE;AAED,wBAAgB,YAAY,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAEhE;AAED,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,CAOxE;AAED,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,CAO9E;AAED,wBAAgB,8BAA8B,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAMlF;AAED,wBAAgB,4BAA4B,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,CAO/E;AAED,wBAAgB,6BAA6B,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,CAOhF"}
@@ -1,7 +1,36 @@
1
- import { readFileSync, existsSync } from "node:fs";
2
- import { join } from "node:path";
1
+ import { copyFileSync, existsSync, mkdirSync, readFileSync, renameSync, unlinkSync, } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
3
  import { homedir } from "node:os";
4
- const CONFIG_PATH = join(homedir(), ".opencode", "openai-codex-auth-config.json");
4
+ const CONFIG_FILE = "openai-codex-auth-config.json";
5
+ function getOpencodeConfigDir() {
6
+ const xdgConfigHome = process.env.XDG_CONFIG_HOME;
7
+ if (xdgConfigHome && xdgConfigHome.trim()) {
8
+ return join(xdgConfigHome, "opencode");
9
+ }
10
+ return join(homedir(), ".config", "opencode");
11
+ }
12
+ const CONFIG_PATH = join(getOpencodeConfigDir(), CONFIG_FILE);
13
+ const LEGACY_CONFIG_PATH = join(homedir(), ".opencode", CONFIG_FILE);
14
+ function migrateLegacyConfigIfNeeded() {
15
+ if (existsSync(CONFIG_PATH))
16
+ return;
17
+ if (!existsSync(LEGACY_CONFIG_PATH))
18
+ return;
19
+ try {
20
+ mkdirSync(dirname(CONFIG_PATH), { recursive: true });
21
+ try {
22
+ renameSync(LEGACY_CONFIG_PATH, CONFIG_PATH);
23
+ return;
24
+ }
25
+ catch {
26
+ copyFileSync(LEGACY_CONFIG_PATH, CONFIG_PATH);
27
+ unlinkSync(LEGACY_CONFIG_PATH);
28
+ }
29
+ }
30
+ catch {
31
+ // Best-effort migration; ignore.
32
+ }
33
+ }
5
34
  /**
6
35
  * Default plugin configuration
7
36
  * CODEX_MODE is enabled by default for better Codex CLI parity
@@ -18,13 +47,14 @@ const DEFAULT_CONFIG = {
18
47
  rateLimitToastDebounceMs: 60_000,
19
48
  };
20
49
  /**
21
- * Load plugin configuration from ~/.opencode/openai-codex-auth-config.json
50
+ * Load plugin configuration from ~/.config/opencode/openai-codex-auth-config.json
22
51
  * Falls back to defaults if file doesn't exist or is invalid
23
52
  *
24
53
  * @returns Plugin configuration
25
54
  */
26
55
  export function loadPluginConfig() {
27
56
  try {
57
+ migrateLegacyConfigIfNeeded();
28
58
  if (!existsSync(CONFIG_PATH)) {
29
59
  return DEFAULT_CONFIG;
30
60
  }
@@ -84,7 +114,7 @@ export function getCodexMode(pluginConfig) {
84
114
  }
85
115
  export function getAccountSelectionStrategy(pluginConfig) {
86
116
  const env = process.env.CODEX_AUTH_ACCOUNT_SELECTION_STRATEGY;
87
- if (env === "sticky" || env === "round-robin")
117
+ if (env === "sticky" || env === "round-robin" || env === "hybrid")
88
118
  return env;
89
119
  return pluginConfig.accountSelectionStrategy ?? "sticky";
90
120
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../lib/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../lib/config.ts"],"names":[],"mappings":"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"}
@@ -548,7 +548,7 @@
548
548
  <div class="terminal-button red"></div>
549
549
  <div class="terminal-button yellow"></div>
550
550
  <div class="terminal-button green"></div>
551
- <div class="terminal-title">opencode-openai-codex-multi-auth@4.4.1 — OAuth Authentication</div>
551
+ <div class="terminal-title">opencode-openai-codex-multi-auth@4.4.6 — OAuth Authentication</div>
552
552
  </div>
553
553
 
554
554
  <div class="status-box">
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Account Rotation System
3
+ *
4
+ * Provides the building blocks for the `hybrid` account selection strategy:
5
+ * - Health scoring: prefer accounts that are behaving well
6
+ * - Token bucket: client-side throttling to avoid repeatedly slamming one account
7
+ * - LRU/freshness bias: prefer accounts that have rested longer
8
+ */
9
+ export interface HealthScoreConfig {
10
+ /** Initial score for new accounts (default: 70) */
11
+ initial: number;
12
+ /** Points added on successful request (default: 1) */
13
+ successReward: number;
14
+ /** Points removed on rate limit (default: -10) */
15
+ rateLimitPenalty: number;
16
+ /** Points removed on failure (auth/network/server) (default: -20) */
17
+ failurePenalty: number;
18
+ /** Points recovered per hour of rest (default: 2) */
19
+ recoveryRatePerHour: number;
20
+ /** Minimum score to be considered usable (default: 50) */
21
+ minUsable: number;
22
+ /** Maximum score cap (default: 100) */
23
+ maxScore: number;
24
+ }
25
+ export declare const DEFAULT_HEALTH_SCORE_CONFIG: HealthScoreConfig;
26
+ export declare class HealthScoreTracker {
27
+ private readonly scores;
28
+ private readonly config;
29
+ constructor(config?: Partial<HealthScoreConfig>);
30
+ getScore(accountIndex: number): number;
31
+ isUsable(accountIndex: number): boolean;
32
+ recordSuccess(accountIndex: number): void;
33
+ recordRateLimit(accountIndex: number): void;
34
+ recordFailure(accountIndex: number): void;
35
+ }
36
+ export interface TokenBucketConfig {
37
+ /** Maximum tokens per account (default: 50) */
38
+ maxTokens: number;
39
+ /** Tokens regenerated per minute (default: 6) */
40
+ regenerationRatePerMinute: number;
41
+ /** Initial tokens for new accounts (default: 50) */
42
+ initialTokens: number;
43
+ }
44
+ export declare const DEFAULT_TOKEN_BUCKET_CONFIG: TokenBucketConfig;
45
+ export declare class TokenBucketTracker {
46
+ private readonly buckets;
47
+ private readonly config;
48
+ constructor(config?: Partial<TokenBucketConfig>);
49
+ getTokens(accountIndex: number): number;
50
+ hasTokens(accountIndex: number, cost?: number): boolean;
51
+ consume(accountIndex: number, cost?: number): boolean;
52
+ refund(accountIndex: number, amount?: number): void;
53
+ getMaxTokens(): number;
54
+ }
55
+ export interface AccountWithMetrics {
56
+ index: number;
57
+ lastUsed: number;
58
+ healthScore: number;
59
+ isRateLimited: boolean;
60
+ isCoolingDown: boolean;
61
+ }
62
+ export declare function selectHybridAccount(accounts: AccountWithMetrics[], tokenTracker: TokenBucketTracker, minHealthScore?: number): number | null;
63
+ export declare function getTokenTracker(): TokenBucketTracker;
64
+ export declare function getHealthTracker(): HealthScoreTracker;
65
+ //# sourceMappingURL=rotation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rotation.d.ts","sourceRoot":"","sources":["../../lib/rotation.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,MAAM,WAAW,iBAAiB;IACjC,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,aAAa,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,gBAAgB,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,cAAc,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,2BAA2B,EAAE,iBAQzC,CAAC;AAQF,qBAAa,kBAAkB;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAC9D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;gBAE/B,MAAM,GAAE,OAAO,CAAC,iBAAiB,CAAM;IAInD,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAWtC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAIvC,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAUzC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAW3C,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;CAUzC;AAMD,MAAM,WAAW,iBAAiB;IACjC,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,yBAAyB,EAAE,MAAM,CAAC;IAClC,oDAAoD;IACpD,aAAa,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,2BAA2B,EAAE,iBAIzC,CAAC;AAOF,qBAAa,kBAAkB;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuC;IAC/D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;gBAE/B,MAAM,GAAE,OAAO,CAAC,iBAAiB,CAAM;IAInD,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAUvC,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,SAAI,GAAG,OAAO;IAIlD,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,SAAI,GAAG,OAAO;IAUhD,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,SAAI,GAAG,IAAI;IAQ9C,YAAY,IAAI,MAAM;CAGtB;AAMD,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,mBAAmB,CAClC,QAAQ,EAAE,kBAAkB,EAAE,EAC9B,YAAY,EAAE,kBAAkB,EAChC,cAAc,SAAK,GACjB,MAAM,GAAG,IAAI,CAmBf;AAmBD,wBAAgB,eAAe,IAAI,kBAAkB,CAGpD;AAID,wBAAgB,gBAAgB,IAAI,kBAAkB,CAGrD"}
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Account Rotation System
3
+ *
4
+ * Provides the building blocks for the `hybrid` account selection strategy:
5
+ * - Health scoring: prefer accounts that are behaving well
6
+ * - Token bucket: client-side throttling to avoid repeatedly slamming one account
7
+ * - LRU/freshness bias: prefer accounts that have rested longer
8
+ */
9
+ export const DEFAULT_HEALTH_SCORE_CONFIG = {
10
+ initial: 70,
11
+ successReward: 1,
12
+ rateLimitPenalty: -10,
13
+ failurePenalty: -20,
14
+ recoveryRatePerHour: 2,
15
+ minUsable: 50,
16
+ maxScore: 100,
17
+ };
18
+ export class HealthScoreTracker {
19
+ scores = new Map();
20
+ config;
21
+ constructor(config = {}) {
22
+ this.config = { ...DEFAULT_HEALTH_SCORE_CONFIG, ...config };
23
+ }
24
+ getScore(accountIndex) {
25
+ const state = this.scores.get(accountIndex);
26
+ if (!state)
27
+ return this.config.initial;
28
+ const now = Date.now();
29
+ const hoursSinceUpdate = (now - state.lastUpdated) / (1000 * 60 * 60);
30
+ const recovered = Math.floor(hoursSinceUpdate * this.config.recoveryRatePerHour);
31
+ return Math.min(this.config.maxScore, state.score + recovered);
32
+ }
33
+ isUsable(accountIndex) {
34
+ return this.getScore(accountIndex) >= this.config.minUsable;
35
+ }
36
+ recordSuccess(accountIndex) {
37
+ const now = Date.now();
38
+ const current = this.getScore(accountIndex);
39
+ this.scores.set(accountIndex, {
40
+ score: Math.min(this.config.maxScore, current + this.config.successReward),
41
+ lastUpdated: now,
42
+ consecutiveFailures: 0,
43
+ });
44
+ }
45
+ recordRateLimit(accountIndex) {
46
+ const now = Date.now();
47
+ const previous = this.scores.get(accountIndex);
48
+ const current = this.getScore(accountIndex);
49
+ this.scores.set(accountIndex, {
50
+ score: Math.max(0, current + this.config.rateLimitPenalty),
51
+ lastUpdated: now,
52
+ consecutiveFailures: (previous?.consecutiveFailures ?? 0) + 1,
53
+ });
54
+ }
55
+ recordFailure(accountIndex) {
56
+ const now = Date.now();
57
+ const previous = this.scores.get(accountIndex);
58
+ const current = this.getScore(accountIndex);
59
+ this.scores.set(accountIndex, {
60
+ score: Math.max(0, current + this.config.failurePenalty),
61
+ lastUpdated: now,
62
+ consecutiveFailures: (previous?.consecutiveFailures ?? 0) + 1,
63
+ });
64
+ }
65
+ }
66
+ export const DEFAULT_TOKEN_BUCKET_CONFIG = {
67
+ maxTokens: 50,
68
+ regenerationRatePerMinute: 6,
69
+ initialTokens: 50,
70
+ };
71
+ export class TokenBucketTracker {
72
+ buckets = new Map();
73
+ config;
74
+ constructor(config = {}) {
75
+ this.config = { ...DEFAULT_TOKEN_BUCKET_CONFIG, ...config };
76
+ }
77
+ getTokens(accountIndex) {
78
+ const state = this.buckets.get(accountIndex);
79
+ if (!state)
80
+ return this.config.initialTokens;
81
+ const now = Date.now();
82
+ const minutesSinceUpdate = (now - state.lastUpdated) / (1000 * 60);
83
+ const recovered = minutesSinceUpdate * this.config.regenerationRatePerMinute;
84
+ return Math.min(this.config.maxTokens, state.tokens + recovered);
85
+ }
86
+ hasTokens(accountIndex, cost = 1) {
87
+ return this.getTokens(accountIndex) >= cost;
88
+ }
89
+ consume(accountIndex, cost = 1) {
90
+ const current = this.getTokens(accountIndex);
91
+ if (current < cost)
92
+ return false;
93
+ this.buckets.set(accountIndex, {
94
+ tokens: current - cost,
95
+ lastUpdated: Date.now(),
96
+ });
97
+ return true;
98
+ }
99
+ refund(accountIndex, amount = 1) {
100
+ const current = this.getTokens(accountIndex);
101
+ this.buckets.set(accountIndex, {
102
+ tokens: Math.min(this.config.maxTokens, current + amount),
103
+ lastUpdated: Date.now(),
104
+ });
105
+ }
106
+ getMaxTokens() {
107
+ return this.config.maxTokens;
108
+ }
109
+ }
110
+ export function selectHybridAccount(accounts, tokenTracker, minHealthScore = 50) {
111
+ const candidates = accounts
112
+ .filter((acc) => !acc.isRateLimited &&
113
+ !acc.isCoolingDown &&
114
+ acc.healthScore >= minHealthScore &&
115
+ tokenTracker.hasTokens(acc.index))
116
+ .map((acc) => ({ ...acc, tokens: tokenTracker.getTokens(acc.index) }));
117
+ if (candidates.length === 0)
118
+ return null;
119
+ const maxTokens = tokenTracker.getMaxTokens();
120
+ const scored = candidates
121
+ .map((acc) => ({ index: acc.index, score: calculateHybridScore(acc, maxTokens) }))
122
+ .sort((a, b) => b.score - a.score);
123
+ return scored[0]?.index ?? null;
124
+ }
125
+ function calculateHybridScore(account, maxTokens) {
126
+ const healthComponent = account.healthScore * 2;
127
+ const tokenComponent = (account.tokens / maxTokens) * 100 * 5;
128
+ const secondsSinceUsed = (Date.now() - account.lastUsed) / 1000;
129
+ const freshnessComponent = Math.min(secondsSinceUsed, 3600) * 0.1;
130
+ return Math.max(0, healthComponent + tokenComponent + freshnessComponent);
131
+ }
132
+ // ---------------------------------------------------------------------------
133
+ // SINGLETONS
134
+ // ---------------------------------------------------------------------------
135
+ let globalTokenTracker = null;
136
+ export function getTokenTracker() {
137
+ if (!globalTokenTracker)
138
+ globalTokenTracker = new TokenBucketTracker();
139
+ return globalTokenTracker;
140
+ }
141
+ let globalHealthTracker = null;
142
+ export function getHealthTracker() {
143
+ if (!globalHealthTracker)
144
+ globalHealthTracker = new HealthScoreTracker();
145
+ return globalHealthTracker;
146
+ }
147
+ //# sourceMappingURL=rotation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rotation.js","sourceRoot":"","sources":["../../lib/rotation.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../lib/storage.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAKnD,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CA8BrE;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAI3E"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../lib/storage.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA0BnD,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAkPD,wBAAsB,YAAY,IAAI,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAerE;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB3E"}