oc-codex-multi-auth 6.1.3 → 6.1.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.
@@ -3,13 +3,9 @@
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, withAccountStorageTransaction, } from "../storage.js";
7
- import { extractAccountId } from "../accounts.js";
8
- import { queuedRefresh } from "../refresh-queue.js";
9
- import { createCodexHeaders } from "../request/fetch-helpers.js";
10
- import { createUsageRequestTimeoutError } from "../error-sentinels.js";
11
- import { CODEX_BASE_URL, PLUGIN_NAME } from "../constants.js";
12
- import { getFetchTimeoutMs, loadPluginConfig } from "../config.js";
6
+ import { loadAccounts } from "../storage.js";
7
+ import { deduplicateUsageAccountIndices, ensureCodexUsageAccessToken, fetchCodexUsage, formatUsageLimitSummary, formatUsageLimitTitle, hasUsageWindow, parseCodexUsagePayload, resolveCodexUsageAccountId, } from "../codex-usage.js";
8
+ import { PLUGIN_NAME } from "../constants.js";
13
9
  import { logWarn } from "../logger.js";
14
10
  import { formatUiBadge, formatUiHeader, formatUiItem, formatUiKeyValue, } from "../ui/format.js";
15
11
  import { normalizeToolOutputFormat, renderJsonOutput } from "../runtime.js";
@@ -52,251 +48,7 @@ export function createCodexLimitsTool(ctx) {
52
48
  }
53
49
  return "No Codex accounts configured. Run: opencode auth login";
54
50
  }
55
- const formatWindowLabel = (windowMinutes) => {
56
- if (!windowMinutes ||
57
- !Number.isFinite(windowMinutes) ||
58
- windowMinutes <= 0) {
59
- return "quota";
60
- }
61
- if (windowMinutes % 1440 === 0)
62
- return `${windowMinutes / 1440}d`;
63
- if (windowMinutes % 60 === 0)
64
- return `${windowMinutes / 60}h`;
65
- return `${windowMinutes}m`;
66
- };
67
- const formatReset = (resetAtMs) => {
68
- if (!resetAtMs ||
69
- !Number.isFinite(resetAtMs) ||
70
- resetAtMs <= 0)
71
- return undefined;
72
- const date = new Date(resetAtMs);
73
- if (!Number.isFinite(date.getTime()))
74
- return undefined;
75
- const now = new Date();
76
- const sameDay = now.getFullYear() === date.getFullYear() &&
77
- now.getMonth() === date.getMonth() &&
78
- now.getDate() === date.getDate();
79
- const time = date.toLocaleTimeString(undefined, {
80
- hour: "2-digit",
81
- minute: "2-digit",
82
- hour12: false,
83
- });
84
- if (sameDay)
85
- return time;
86
- const day = date.toLocaleDateString(undefined, {
87
- month: "short",
88
- day: "2-digit",
89
- });
90
- return `${time} on ${day}`;
91
- };
92
- const mapWindow = (window) => {
93
- if (!window)
94
- return {};
95
- return {
96
- usedPercent: typeof window.used_percent === "number" &&
97
- Number.isFinite(window.used_percent)
98
- ? window.used_percent
99
- : undefined,
100
- windowMinutes: typeof window.limit_window_seconds === "number" &&
101
- Number.isFinite(window.limit_window_seconds)
102
- ? Math.max(1, Math.ceil(window.limit_window_seconds / 60))
103
- : undefined,
104
- resetAtMs: typeof window.reset_at === "number" && window.reset_at > 0
105
- ? window.reset_at * 1000
106
- : typeof window.reset_after_seconds === "number" &&
107
- window.reset_after_seconds > 0
108
- ? Date.now() + window.reset_after_seconds * 1000
109
- : undefined,
110
- };
111
- };
112
- const formatLimitTitle = (windowMinutes, fallback = "quota") => {
113
- if (windowMinutes === 300)
114
- return "5h limit";
115
- if (windowMinutes === 10080)
116
- return "Weekly limit";
117
- if (fallback !== "quota")
118
- return fallback;
119
- return `${formatWindowLabel(windowMinutes)} limit`;
120
- };
121
- const formatLimitSummary = (window) => {
122
- const used = window.usedPercent;
123
- const left = typeof used === "number" && Number.isFinite(used)
124
- ? Math.max(0, Math.min(100, Math.round(100 - used)))
125
- : undefined;
126
- const reset = formatReset(window.resetAtMs);
127
- if (left !== undefined && reset)
128
- return `${left}% left (resets ${reset})`;
129
- if (left !== undefined)
130
- return `${left}% left`;
131
- if (reset)
132
- return `resets ${reset}`;
133
- return "unavailable";
134
- };
135
- const toLimitPayload = (name, window) => ({
136
- name,
137
- windowMinutes: window.windowMinutes ?? null,
138
- usedPercent: typeof window.usedPercent === "number" ? window.usedPercent : null,
139
- leftPercent: typeof window.usedPercent === "number"
140
- ? Math.max(0, Math.min(100, Math.round(100 - window.usedPercent)))
141
- : null,
142
- resetAtMs: window.resetAtMs ?? null,
143
- summary: formatLimitSummary(window),
144
- });
145
- const formatCredits = (credits) => {
146
- if (!credits)
147
- return undefined;
148
- if (credits.unlimited)
149
- return "unlimited";
150
- if (typeof credits.balance === "string" &&
151
- credits.balance.trim()) {
152
- return credits.balance.trim();
153
- }
154
- if (credits.has_credits)
155
- return "available";
156
- return undefined;
157
- };
158
- const formatExtraName = (name) => {
159
- if (!name)
160
- return "Additional limit";
161
- if (name === "code_review_rate_limit")
162
- return "Code review";
163
- return name
164
- .replace(/[_-]+/g, " ")
165
- .replace(/\b\w/g, (match) => match.toUpperCase());
166
- };
167
- const sanitizeUsageErrorMessage = (status, bodyText) => {
168
- const normalized = bodyText.replace(/\s+/g, " ").trim();
169
- const redacted = normalized
170
- .replace(/Bearer\s+\S+/gi, "Bearer [redacted]")
171
- .replace(/eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+/g, "[redacted-token]")
172
- .replace(/\bsk-[A-Za-z0-9][A-Za-z0-9._:-]{19,}\b/gi, "[redacted-token]")
173
- .replace(/\b[a-f0-9]{40,}\b/gi, "[redacted-token]");
174
- return redacted
175
- ? `HTTP ${status}: ${redacted.slice(0, 200)}`
176
- : `HTTP ${status}`;
177
- };
178
- const isAbortError = (error) => (error instanceof Error && error.name === "AbortError") ||
179
- (typeof DOMException !== "undefined" &&
180
- error instanceof DOMException &&
181
- error.name === "AbortError");
182
- const applyRefreshedCredentials = (target, result) => {
183
- target.refreshToken = result.refresh;
184
- target.accessToken = result.access;
185
- target.expiresAt = result.expires;
186
- };
187
- const usageErrorBodyMaxChars = 4096;
188
- const persistRefreshedCredentials = async (params) => {
189
- return await withAccountStorageTransaction(async (current, persist) => {
190
- const latestStorage = current ??
191
- {
192
- version: 3,
193
- accounts: [],
194
- activeIndex: 0,
195
- activeIndexByFamily: {},
196
- };
197
- const uniqueMatch = (matches) => matches.length === 1 ? matches[0] : undefined;
198
- let updated = false;
199
- if (params.previousRefreshToken) {
200
- for (const storedAccount of latestStorage.accounts) {
201
- if (storedAccount.refreshToken === params.previousRefreshToken) {
202
- applyRefreshedCredentials(storedAccount, params.refreshResult);
203
- updated = true;
204
- }
205
- }
206
- }
207
- if (!updated) {
208
- const normalizedOrganizationId = params.organizationId?.trim() ?? "";
209
- const normalizedEmail = params.email?.trim().toLowerCase();
210
- const orgScopedMatches = params.accountId
211
- ? latestStorage.accounts.filter((storedAccount) => storedAccount.accountId === params.accountId &&
212
- (storedAccount.organizationId?.trim() ?? "") ===
213
- normalizedOrganizationId)
214
- : [];
215
- const accountIdMatches = params.accountId
216
- ? latestStorage.accounts.filter((storedAccount) => storedAccount.accountId === params.accountId)
217
- : [];
218
- const emailMatches = normalizedEmail && !params.accountId
219
- ? latestStorage.accounts.filter((storedAccount) => storedAccount.email?.trim().toLowerCase() ===
220
- normalizedEmail)
221
- : [];
222
- const fallbackTarget = uniqueMatch(orgScopedMatches) ??
223
- uniqueMatch(accountIdMatches) ??
224
- uniqueMatch(emailMatches);
225
- if (fallbackTarget) {
226
- applyRefreshedCredentials(fallbackTarget, params.refreshResult);
227
- updated = true;
228
- }
229
- }
230
- if (updated) {
231
- await persist(latestStorage);
232
- }
233
- if (!updated) {
234
- logWarn(`[${PLUGIN_NAME}] persistRefreshedCredentials could not find a matching stored account. Refreshed credentials remain in-memory for this invocation only.`, {
235
- accountId: params.accountId,
236
- organizationId: params.organizationId,
237
- });
238
- }
239
- return updated;
240
- });
241
- };
242
- const usageFetchTimeoutMs = getFetchTimeoutMs(loadPluginConfig());
243
- const fetchUsage = async (params) => {
244
- const headers = createCodexHeaders(undefined, params.accountId, params.accessToken, {
245
- organizationId: params.organizationId,
246
- });
247
- headers.set("accept", "application/json");
248
- const controller = new AbortController();
249
- const timeout = setTimeout(() => controller.abort(), usageFetchTimeoutMs);
250
- try {
251
- const response = await fetch(`${CODEX_BASE_URL}/wham/usage`, {
252
- method: "GET",
253
- headers,
254
- signal: controller.signal,
255
- });
256
- if (!response.ok) {
257
- let bodyText = "";
258
- try {
259
- bodyText = (await response.text()).slice(0, usageErrorBodyMaxChars);
260
- }
261
- catch (error) {
262
- if (isAbortError(error) || controller.signal.aborted) {
263
- throw createUsageRequestTimeoutError();
264
- }
265
- throw error;
266
- }
267
- if (controller.signal.aborted) {
268
- throw createUsageRequestTimeoutError();
269
- }
270
- throw new Error(sanitizeUsageErrorMessage(response.status, bodyText));
271
- }
272
- return (await response.json());
273
- }
274
- catch (error) {
275
- if (isAbortError(error)) {
276
- throw createUsageRequestTimeoutError();
277
- }
278
- throw error;
279
- }
280
- finally {
281
- clearTimeout(timeout);
282
- }
283
- };
284
- // Deduplicate accounts by refreshToken (same credential = same limits)
285
- const seenTokens = new Set();
286
- const uniqueIndices = [];
287
- for (let i = 0; i < storage.accounts.length; i++) {
288
- const acct = storage.accounts[i];
289
- if (!acct)
290
- continue;
291
- const refreshToken = typeof acct.refreshToken === "string"
292
- ? acct.refreshToken.trim()
293
- : "";
294
- if (refreshToken && seenTokens.has(refreshToken))
295
- continue;
296
- if (refreshToken)
297
- seenTokens.add(refreshToken);
298
- uniqueIndices.push(i);
299
- }
51
+ const uniqueIndices = deduplicateUsageAccountIndices(storage);
300
52
  const lines = ui.v2Enabled
301
53
  ? [...formatUiHeader(ui, "Codex limits"), ""]
302
54
  : [
@@ -332,74 +84,27 @@ export function createCodexLimitsTool(ctx) {
332
84
  : " [active]"
333
85
  : "";
334
86
  try {
335
- let accessToken = account.accessToken;
336
- if (typeof accessToken !== "string" ||
337
- !accessToken ||
338
- typeof account.expiresAt !== "number" ||
339
- account.expiresAt <= Date.now() + 30_000) {
340
- const previousRefreshToken = account.refreshToken;
341
- if (!previousRefreshToken) {
342
- throw new Error("Cannot refresh: account has no refresh token");
343
- }
344
- const refreshResult = await queuedRefresh(previousRefreshToken);
345
- if (refreshResult.type !== "success") {
346
- throw new Error(refreshResult.message ?? refreshResult.reason);
347
- }
348
- let refreshedCount = 0;
349
- for (const storedAccount of storage.accounts) {
350
- if (!storedAccount)
351
- continue;
352
- if (storedAccount.refreshToken === previousRefreshToken) {
353
- applyRefreshedCredentials(storedAccount, refreshResult);
354
- refreshedCount += 1;
355
- }
356
- }
357
- if (refreshedCount === 0) {
358
- applyRefreshedCredentials(account, refreshResult);
359
- }
360
- const persistedRefresh = await persistRefreshedCredentials({
361
- previousRefreshToken,
362
- accountId: account.accountId,
363
- organizationId: account.organizationId,
364
- email: account.email,
365
- refreshResult,
366
- });
367
- accessToken = refreshResult.access;
368
- storageChanged = storageChanged || persistedRefresh;
369
- }
87
+ const credentials = await ensureCodexUsageAccessToken({
88
+ storage,
89
+ account,
90
+ });
91
+ storageChanged = storageChanged || credentials.persisted;
370
92
  const effectiveAccount = sharesActiveCredential
371
93
  ? effectiveDisplayAccount
372
94
  : account;
373
- const accountId = effectiveAccount.accountId ?? extractAccountId(accessToken);
95
+ const accountId = resolveCodexUsageAccountId({
96
+ account: effectiveAccount,
97
+ accessToken: credentials.accessToken,
98
+ });
374
99
  if (!accountId) {
375
100
  throw new Error("Missing account id");
376
101
  }
377
- const payload = await fetchUsage({
102
+ const payload = await fetchCodexUsage({
378
103
  accountId,
379
- accessToken,
104
+ accessToken: credentials.accessToken,
380
105
  organizationId: effectiveAccount.organizationId,
381
106
  });
382
- const primary = mapWindow(payload.rate_limit?.primary_window ?? null);
383
- const secondary = mapWindow(payload.rate_limit?.secondary_window ?? null);
384
- const codeReviewRateLimit = payload.code_review_rate_limit ??
385
- payload.additional_rate_limits?.find((entry) => entry.limit_name === "code_review_rate_limit")?.rate_limit ??
386
- null;
387
- const codeReview = mapWindow(codeReviewRateLimit?.primary_window ?? null);
388
- const credits = formatCredits(payload.credits ?? null);
389
- const additionalLimits = (payload.additional_rate_limits ?? []).filter((entry) => entry.limit_name !== "code_review_rate_limit");
390
- const limits = [
391
- toLimitPayload(formatLimitTitle(primary.windowMinutes), primary),
392
- toLimitPayload(formatLimitTitle(secondary.windowMinutes), secondary),
393
- ];
394
- if (codeReview.windowMinutes ||
395
- typeof codeReview.usedPercent === "number" ||
396
- codeReview.resetAtMs) {
397
- limits.push(toLimitPayload("Code review", codeReview));
398
- }
399
- for (const limit of additionalLimits) {
400
- const extraWindow = mapWindow(limit.rate_limit?.primary_window ?? null);
401
- limits.push(toLimitPayload(formatExtraName(limit.limit_name ?? limit.metered_feature), extraWindow));
402
- }
107
+ const usage = parseCodexUsagePayload(payload);
403
108
  jsonAccounts.push({
404
109
  ...buildJsonAccountIdentity(displayIndex, {
405
110
  includeSensitive: includeSensitiveOutput,
@@ -408,48 +113,42 @@ export function createCodexLimitsTool(ctx) {
408
113
  }),
409
114
  isActive,
410
115
  sharesActiveCredential,
411
- planType: payload.plan_type ?? null,
412
- credits: credits ?? null,
413
- limits,
116
+ planType: usage.planType,
117
+ credits: usage.credits,
118
+ limits: usage.limits,
414
119
  });
415
120
  if (ui.v2Enabled) {
416
121
  lines.push(formatUiItem(ui, `${label}${activeSuffix}`));
417
- lines.push(` ${formatUiKeyValue(ui, formatLimitTitle(primary.windowMinutes), formatLimitSummary(primary), "muted")}`);
418
- lines.push(` ${formatUiKeyValue(ui, formatLimitTitle(secondary.windowMinutes), formatLimitSummary(secondary), "muted")}`);
419
- if (codeReview.windowMinutes ||
420
- typeof codeReview.usedPercent === "number" ||
421
- codeReview.resetAtMs) {
422
- lines.push(` ${formatUiKeyValue(ui, "Code review", formatLimitSummary(codeReview), "muted")}`);
122
+ lines.push(` ${formatUiKeyValue(ui, formatUsageLimitTitle(usage.primary.windowMinutes), formatUsageLimitSummary(usage.primary), "muted")}`);
123
+ lines.push(` ${formatUiKeyValue(ui, formatUsageLimitTitle(usage.secondary.windowMinutes), formatUsageLimitSummary(usage.secondary), "muted")}`);
124
+ if (hasUsageWindow(usage.codeReview)) {
125
+ lines.push(` ${formatUiKeyValue(ui, "Code review", formatUsageLimitSummary(usage.codeReview), "muted")}`);
423
126
  }
424
- for (const limit of additionalLimits) {
425
- const extraWindow = mapWindow(limit.rate_limit?.primary_window ?? null);
426
- lines.push(` ${formatUiKeyValue(ui, formatExtraName(limit.limit_name ?? limit.metered_feature), formatLimitSummary(extraWindow), "muted")}`);
127
+ for (const limit of usage.additionalLimits) {
128
+ lines.push(` ${formatUiKeyValue(ui, limit.name, formatUsageLimitSummary(limit.window), "muted")}`);
427
129
  }
428
- if (payload.plan_type) {
429
- lines.push(` ${formatUiKeyValue(ui, "Plan", payload.plan_type, "muted")}`);
130
+ if (usage.planType) {
131
+ lines.push(` ${formatUiKeyValue(ui, "Plan", usage.planType, "muted")}`);
430
132
  }
431
- if (credits) {
432
- lines.push(` ${formatUiKeyValue(ui, "Credits", credits, "muted")}`);
133
+ if (usage.credits) {
134
+ lines.push(` ${formatUiKeyValue(ui, "Credits", usage.credits, "muted")}`);
433
135
  }
434
136
  }
435
137
  else {
436
138
  lines.push(`${label}${activeSuffix}:`);
437
- lines.push(` ${formatLimitTitle(primary.windowMinutes)}: ${formatLimitSummary(primary)}`);
438
- lines.push(` ${formatLimitTitle(secondary.windowMinutes)}: ${formatLimitSummary(secondary)}`);
439
- if (codeReview.windowMinutes ||
440
- typeof codeReview.usedPercent === "number" ||
441
- codeReview.resetAtMs) {
442
- lines.push(` Code review: ${formatLimitSummary(codeReview)}`);
139
+ lines.push(` ${formatUsageLimitTitle(usage.primary.windowMinutes)}: ${formatUsageLimitSummary(usage.primary)}`);
140
+ lines.push(` ${formatUsageLimitTitle(usage.secondary.windowMinutes)}: ${formatUsageLimitSummary(usage.secondary)}`);
141
+ if (hasUsageWindow(usage.codeReview)) {
142
+ lines.push(` Code review: ${formatUsageLimitSummary(usage.codeReview)}`);
443
143
  }
444
- for (const limit of additionalLimits) {
445
- const extraWindow = mapWindow(limit.rate_limit?.primary_window ?? null);
446
- lines.push(` ${formatExtraName(limit.limit_name ?? limit.metered_feature)}: ${formatLimitSummary(extraWindow)}`);
144
+ for (const limit of usage.additionalLimits) {
145
+ lines.push(` ${limit.name}: ${formatUsageLimitSummary(limit.window)}`);
447
146
  }
448
- if (payload.plan_type) {
449
- lines.push(` Plan: ${payload.plan_type}`);
147
+ if (usage.planType) {
148
+ lines.push(` Plan: ${usage.planType}`);
450
149
  }
451
- if (credits) {
452
- lines.push(` Credits: ${credits}`);
150
+ if (usage.credits) {
151
+ lines.push(` Credits: ${usage.credits}`);
453
152
  }
454
153
  }
455
154
  }
@@ -1 +1 @@
1
- {"version":3,"file":"codex-limits.js","sourceRoot":"","sources":["../../../lib/tools/codex-limits.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-limits.js","sourceRoot":"","sources":["../../../lib/tools/codex-limits.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"codex-switch.d.ts","sourceRoot":"","sources":["../../../lib/tools/codex-switch.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,qBAAqB,CAAC,GAAG,EAAE,WAAW,GAAG,cAAc,CAyJtE"}
1
+ {"version":3,"file":"codex-switch.d.ts","sourceRoot":"","sources":["../../../lib/tools/codex-switch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAWrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,WAAW,GAAG,cAAc,CAgKtE"}
@@ -7,6 +7,7 @@ import { loadAccounts, saveAccounts } from "../storage.js";
7
7
  import { AccountManager } from "../accounts.js";
8
8
  import { logWarn } from "../logger.js";
9
9
  import { MODEL_FAMILIES } from "../prompts/codex.js";
10
+ import { clearTuiQuotaSnapshot } from "../tui-quota-cache.js";
10
11
  import { formatUiHeader, formatUiItem, formatUiKeyValue, } from "../ui/format.js";
11
12
  export function createCodexSwitchTool(ctx) {
12
13
  const { resolveUiRuntime, promptAccountIndexSelection, supportsInteractiveMenus, formatCommandAccountLabel, getStatusMarker, cachedAccountManagerRef, accountManagerPromiseRef, } = ctx;
@@ -102,6 +103,14 @@ export function createCodexSwitchTool(ctx) {
102
103
  }
103
104
  return `Switched to ${label} but failed to persist. Changes may be lost on restart.`;
104
105
  }
106
+ try {
107
+ await clearTuiQuotaSnapshot();
108
+ }
109
+ catch (cacheError) {
110
+ logWarn("Failed to clear TUI quota cache after account switch", {
111
+ error: String(cacheError),
112
+ });
113
+ }
105
114
  if (cachedAccountManagerRef.current) {
106
115
  const reloadedManager = await AccountManager.loadFromDisk();
107
116
  cachedAccountManagerRef.current = reloadedManager;
@@ -1 +1 @@
1
- {"version":3,"file":"codex-switch.js","sourceRoot":"","sources":["../../../lib/tools/codex-switch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-switch.js","sourceRoot":"","sources":["../../../lib/tools/codex-switch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAuB,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EACN,cAAc,EACd,YAAY,EACZ,gBAAgB,GAChB,MAAM,iBAAiB,CAAC;AAGzB,MAAM,UAAU,qBAAqB,CAAC,GAAgB;IACrD,MAAM,EACL,gBAAgB,EAChB,2BAA2B,EAC3B,wBAAwB,EACxB,yBAAyB,EACzB,eAAe,EACf,uBAAuB,EACvB,wBAAwB,GACxB,GAAG,GAAG,CAAC;IACR,OAAO,IAAI,CAAC;QACX,WAAW,EACV,6FAA6F;QAC9F,IAAI,EAAE;YACL,KAAK,EAAE,IAAI,CAAC,MAAM;iBAChB,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACR,kEAAkE,CAClE;SACF;QACD,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,KAAyB,EAAE;YAC/C,MAAM,EAAE,GAAG,gBAAgB,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,MAAM,YAAY,EAAE,CAAC;YACrC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/C,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;oBAClB,OAAO;wBACN,GAAG,cAAc,CAAC,EAAE,EAAE,gBAAgB,CAAC;wBACvC,EAAE;wBACF,YAAY,CAAC,EAAE,EAAE,yBAAyB,EAAE,SAAS,CAAC;wBACtD,YAAY,CAAC,EAAE,EAAE,0BAA0B,EAAE,QAAQ,CAAC;qBACtD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,CAAC;gBACD,OAAO,wDAAwD,CAAC;YACjE,CAAC;YAED,IAAI,aAAa,GAAG,KAAK,CAAC;YAC1B,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBACjC,MAAM,aAAa,GAAG,MAAM,2BAA2B,CACtD,EAAE,EACF,OAAO,EACP,gBAAgB,CAChB,CAAC;gBACF,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;oBAC5B,IAAI,wBAAwB,EAAE,EAAE,CAAC;wBAChC,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;4BAClB,OAAO;gCACN,GAAG,cAAc,CAAC,EAAE,EAAE,gBAAgB,CAAC;gCACvC,EAAE;gCACF,YAAY,CAAC,EAAE,EAAE,sBAAsB,EAAE,SAAS,CAAC;gCACnD,YAAY,CACX,EAAE,EACF,8DAA8D,EAC9D,OAAO,CACP;6BACD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACd,CAAC;wBACD,OAAO,sBAAsB,CAAC;oBAC/B,CAAC;oBACD,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;wBAClB,OAAO;4BACN,GAAG,cAAc,CAAC,EAAE,EAAE,gBAAgB,CAAC;4BACvC,EAAE;4BACF,YAAY,CAAC,EAAE,EAAE,yBAAyB,EAAE,SAAS,CAAC;4BACtD,YAAY,CAAC,EAAE,EAAE,2BAA2B,EAAE,QAAQ,CAAC;yBACvD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACd,CAAC;oBACD,OAAO,mDAAmD,CAAC;gBAC5D,CAAC;gBACD,aAAa,GAAG,aAAa,GAAG,CAAC,CAAC;YACnC,CAAC;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzD,IACC,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAC7B,WAAW,GAAG,CAAC;gBACf,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,EACrC,CAAC;gBACF,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;oBAClB,OAAO;wBACN,GAAG,cAAc,CAAC,EAAE,EAAE,gBAAgB,CAAC;wBACvC,EAAE;wBACF,YAAY,CACX,EAAE,EACF,2BAA2B,aAAa,EAAE,EAC1C,QAAQ,CACR;wBACD,gBAAgB,CACf,EAAE,EACF,aAAa,EACb,KAAK,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,EAC9B,OAAO,CACP;qBACD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,CAAC;gBACD,OAAO,2BAA2B,aAAa,sBAAsB,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAChG,CAAC;YAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC9C,IAAI,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC;gBACvB,OAAO,CAAC,gBAAgB,GAAG,UAAU,CAAC;YACvC,CAAC;YAED,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;YAClC,OAAO,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,IAAI,EAAE,CAAC;YAChE,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;gBACrC,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC;YACnD,CAAC;YACD,IAAI,CAAC;gBACJ,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;YAAC,OAAO,SAAS,EAAE,CAAC;gBACpB,OAAO,CAAC,+BAA+B,EAAE;oBACxC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC;iBACxB,CAAC,CAAC;gBACH,MAAM,KAAK,GAAG,yBAAyB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;gBAC9D,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;oBAClB,OAAO;wBACN,GAAG,cAAc,CAAC,EAAE,EAAE,gBAAgB,CAAC;wBACvC,EAAE;wBACF,YAAY,CAAC,EAAE,EAAE,eAAe,KAAK,EAAE,EAAE,SAAS,CAAC;wBACnD,YAAY,CACX,EAAE,EACF,sDAAsD,EACtD,QAAQ,CACR;qBACD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,CAAC;gBACD,OAAO,eAAe,KAAK,yDAAyD,CAAC;YACtF,CAAC;YACD,IAAI,CAAC;gBACJ,MAAM,qBAAqB,EAAE,CAAC;YAC/B,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACrB,OAAO,CAAC,sDAAsD,EAAE;oBAC/D,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC;iBACzB,CAAC,CAAC;YACJ,CAAC;YAED,IAAI,uBAAuB,CAAC,OAAO,EAAE,CAAC;gBACrC,MAAM,eAAe,GAAG,MAAM,cAAc,CAAC,YAAY,EAAE,CAAC;gBAC5D,uBAAuB,CAAC,OAAO,GAAG,eAAe,CAAC;gBAClD,wBAAwB,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YACrE,CAAC;YAED,MAAM,KAAK,GAAG,yBAAyB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC9D,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;gBAClB,OAAO;oBACN,GAAG,cAAc,CAAC,EAAE,EAAE,gBAAgB,CAAC;oBACvC,EAAE;oBACF,YAAY,CACX,EAAE,EACF,GAAG,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,gBAAgB,KAAK,EAAE,EACnD,SAAS,CACT;iBACD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,CAAC;YACD,OAAO,wBAAwB,KAAK,EAAE,CAAC;QACxC,CAAC;KACD,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,33 @@
1
+ import type { CompactQuotaLimit } from "./tui-status.js";
2
+ export declare const TUI_QUOTA_CACHE_VERSION = 1;
3
+ export declare const TUI_QUOTA_CACHE_FILE = "oc-codex-multi-auth-tui-quota.json";
4
+ export type TuiQuotaSource = "headers" | "usage";
5
+ export type TuiQuotaLimit = CompactQuotaLimit & {
6
+ usedPercent?: number;
7
+ windowMinutes?: number;
8
+ resetAtMs?: number;
9
+ };
10
+ export type TuiQuotaSnapshot = {
11
+ version: typeof TUI_QUOTA_CACHE_VERSION;
12
+ fingerprint: string;
13
+ fetchedAt: number;
14
+ source: TuiQuotaSource;
15
+ accountIndex?: number;
16
+ accountCount?: number;
17
+ accountEmail?: string;
18
+ accountLabel?: string;
19
+ planType?: string;
20
+ activeLimit?: number;
21
+ limits: TuiQuotaLimit[];
22
+ };
23
+ export type TuiQuotaSnapshotInput = Omit<TuiQuotaSnapshot, "version" | "fetchedAt"> & {
24
+ fetchedAt?: number;
25
+ };
26
+ export declare function getTuiQuotaCachePath(stateDir?: string): string;
27
+ export declare function createTuiQuotaSnapshot(input: TuiQuotaSnapshotInput): TuiQuotaSnapshot;
28
+ export declare function parseTuiQuotaSnapshotFromHeaders(headers: Headers, input: Omit<TuiQuotaSnapshotInput, "source" | "limits">): TuiQuotaSnapshot | undefined;
29
+ export declare function isTuiQuotaSnapshot(value: unknown): value is TuiQuotaSnapshot;
30
+ export declare function readTuiQuotaSnapshot(cachePath?: string): Promise<TuiQuotaSnapshot | undefined>;
31
+ export declare function writeTuiQuotaSnapshot(snapshot: TuiQuotaSnapshot, cachePath?: string): Promise<void>;
32
+ export declare function clearTuiQuotaSnapshot(cachePath?: string): Promise<void>;
33
+ //# sourceMappingURL=tui-quota-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tui-quota-cache.d.ts","sourceRoot":"","sources":["../../lib/tui-quota-cache.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,oBAAoB,uCAAuC,CAAC;AAGzE,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,OAAO,CAAC;AAEjD,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC9B,OAAO,EAAE,OAAO,uBAAuB,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,cAAc,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,aAAa,EAAE,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,IAAI,CACvC,gBAAgB,EAChB,SAAS,GAAG,WAAW,CACvB,GAAG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAcF,wBAAgB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAG9D;AA4GD,wBAAgB,sBAAsB,CACrC,KAAK,EAAE,qBAAqB,GAC1B,gBAAgB,CAMlB;AAsBD,wBAAgB,gCAAgC,CAC/C,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,IAAI,CAAC,qBAAqB,EAAE,QAAQ,GAAG,QAAQ,CAAC,GACrD,gBAAgB,GAAG,SAAS,CAmB9B;AAgCD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB,CAoB5E;AAED,wBAAsB,oBAAoB,CACzC,SAAS,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAQvC;AAED,wBAAsB,qBAAqB,CAC1C,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAyCf;AAED,wBAAsB,qBAAqB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS7E"}