oc-codex-multi-auth 6.17.0 → 6.19.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 +10 -6
- package/config/README.md +1 -1
- package/dist/lib/auth/token-utils.d.ts +21 -0
- package/dist/lib/auth/token-utils.d.ts.map +1 -1
- package/dist/lib/auth/token-utils.js +30 -0
- package/dist/lib/auth/token-utils.js.map +1 -1
- package/dist/lib/codex-reset.d.ts +13 -0
- package/dist/lib/codex-reset.d.ts.map +1 -1
- package/dist/lib/codex-reset.js +20 -4
- package/dist/lib/codex-reset.js.map +1 -1
- package/dist/lib/codex-usage.d.ts +64 -0
- package/dist/lib/codex-usage.d.ts.map +1 -1
- package/dist/lib/codex-usage.js +128 -0
- package/dist/lib/codex-usage.js.map +1 -1
- package/dist/lib/config.d.ts +2 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +7 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/prompts/codex.d.ts.map +1 -1
- package/dist/lib/prompts/codex.js +10 -11
- package/dist/lib/prompts/codex.js.map +1 -1
- package/dist/lib/quota-notifications.d.ts +1 -1
- package/dist/lib/quota-notifications.d.ts.map +1 -1
- package/dist/lib/quota-notifications.js +42 -13
- package/dist/lib/quota-notifications.js.map +1 -1
- package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
- package/dist/lib/request/fetch-helpers.js +13 -2
- package/dist/lib/request/fetch-helpers.js.map +1 -1
- package/dist/lib/request/helpers/responses-lite.d.ts.map +1 -1
- package/dist/lib/request/helpers/responses-lite.js +8 -26
- package/dist/lib/request/helpers/responses-lite.js.map +1 -1
- package/dist/lib/schemas.d.ts +1 -0
- package/dist/lib/schemas.d.ts.map +1 -1
- package/dist/lib/schemas.js +1 -0
- package/dist/lib/schemas.js.map +1 -1
- package/dist/lib/storage/normalize.d.ts.map +1 -1
- package/dist/lib/storage/normalize.js +50 -5
- package/dist/lib/storage/normalize.js.map +1 -1
- package/dist/lib/tools/codex-limits.d.ts.map +1 -1
- package/dist/lib/tools/codex-limits.js +28 -2
- package/dist/lib/tools/codex-limits.js.map +1 -1
- package/dist/lib/tui-status.d.ts.map +1 -1
- package/dist/lib/tui-status.js +176 -46
- package/dist/lib/tui-status.js.map +1 -1
- package/package.json +1 -1
- package/scripts/install-oc-codex-multi-auth-core.js +106 -19
package/dist/lib/tui-status.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { maskEmailForDisplay } from "./account-display.js";
|
|
1
2
|
import { getEffortSuffix } from "./request/helpers/effort-suffix.js";
|
|
2
3
|
import { formatPlanType } from "./auth/plan-tier.js";
|
|
3
4
|
const variantSuffixes = [
|
|
@@ -10,11 +11,15 @@ const variantSuffixes = [
|
|
|
10
11
|
"none",
|
|
11
12
|
];
|
|
12
13
|
const STATUS_SEPARATOR = ` ${String.fromCharCode(183)} `;
|
|
14
|
+
const MS_PER_DAY = 24 * 60 * 60 * 1000;
|
|
13
15
|
const WARNING_LIMIT_LEFT_PERCENT = 25;
|
|
14
16
|
const DANGER_LIMIT_LEFT_PERCENT = 10;
|
|
15
17
|
const MASKED_EMAIL = "*****";
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
+
const FLAT_MASKED_HINT = `[${MASKED_EMAIL}]`;
|
|
19
|
+
// Whitespace, brackets, `,` and `;` end a token: none can appear in an
|
|
20
|
+
// address, and all of them separate one address from the next in a label.
|
|
21
|
+
const EMAIL_PATTERN = /[^\s(),<>;]+@[^\s(),<>;]+/;
|
|
22
|
+
const TEXT_TOKEN_GLOBAL = /[^\s(),<>;]+/g;
|
|
18
23
|
function isRecord(value) {
|
|
19
24
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
20
25
|
}
|
|
@@ -128,14 +133,62 @@ function extractEmailFromLabel(label) {
|
|
|
128
133
|
const match = label?.match(EMAIL_PATTERN);
|
|
129
134
|
return match?.[0];
|
|
130
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* Mask one token that carries an `@`.
|
|
138
|
+
*
|
|
139
|
+
* `maskEmailForDisplay` preserves everything from the first `@` onward, which
|
|
140
|
+
* is the right trade for a single address - `ne***@example.com` names an
|
|
141
|
+
* account without disclosing it - and the wrong one for a token holding two.
|
|
142
|
+
* `alice@example.com/bob@corp.com` is a single token, because `/` is not a
|
|
143
|
+
* separator anything here splits on, and the tail preserved would be the
|
|
144
|
+
* whole second address. A token carrying more than one `@` is therefore
|
|
145
|
+
* flattened, since no part of it is known to be safe to keep.
|
|
146
|
+
*/
|
|
147
|
+
function maskEmailToken(token) {
|
|
148
|
+
const first = token.indexOf("@");
|
|
149
|
+
if (first <= 0)
|
|
150
|
+
return MASKED_EMAIL;
|
|
151
|
+
if (token.indexOf("@", first + 1) !== -1)
|
|
152
|
+
return MASKED_EMAIL;
|
|
153
|
+
return maskEmailForDisplay(token) ?? MASKED_EMAIL;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Render the bracketed account hint.
|
|
157
|
+
*
|
|
158
|
+
* With masking on, a value containing an address becomes that address masked,
|
|
159
|
+
* rather than having the address substituted inside the value. What reaches
|
|
160
|
+
* here is free text - `accountEmail` is whatever the snapshot on disk holds -
|
|
161
|
+
* and preserving what surrounds an address preserves exactly the identifying
|
|
162
|
+
* text masking exists to remove: substituting in place would render "Neil
|
|
163
|
+
* Smith neil@example.com" as "Neil Smith ne***@example.com". A value with no
|
|
164
|
+
* address in it flattens for the same reason.
|
|
165
|
+
*/
|
|
131
166
|
function formatAccountEmail(email, maskEmail) {
|
|
132
167
|
const trimmed = email?.trim() || undefined;
|
|
133
|
-
|
|
168
|
+
if (!trimmed)
|
|
169
|
+
return undefined;
|
|
170
|
+
if (!maskEmail)
|
|
171
|
+
return `[${trimmed}]`;
|
|
172
|
+
const address = extractEmailFromLabel(trimmed);
|
|
173
|
+
return `[${address ? maskEmailToken(address) : MASKED_EMAIL}]`;
|
|
134
174
|
}
|
|
175
|
+
/**
|
|
176
|
+
* Mask every address in text whose surrounding structure is worth keeping.
|
|
177
|
+
*
|
|
178
|
+
* Unlike the hint above, this is used on the account label in the details
|
|
179
|
+
* dialog, where "Account 2 (…)" is the structure that makes the line
|
|
180
|
+
* readable. It walks tokens rather than address matches: a match can span two
|
|
181
|
+
* addresses joined by punctuation the address class does not exclude, and
|
|
182
|
+
* replacing that match with a partial mask leaves the second address intact.
|
|
183
|
+
* Every token holding an `@` is masked, so no address survives whatever joins
|
|
184
|
+
* them.
|
|
185
|
+
*/
|
|
135
186
|
function maskEmailsInText(value, maskEmail) {
|
|
136
187
|
if (!value)
|
|
137
188
|
return undefined;
|
|
138
|
-
|
|
189
|
+
if (!maskEmail)
|
|
190
|
+
return value;
|
|
191
|
+
return value.replace(TEXT_TOKEN_GLOBAL, (token) => token.includes("@") ? maskEmailToken(token) : token);
|
|
139
192
|
}
|
|
140
193
|
function formatQuotaLimit(limit, resetLimit, includeReset) {
|
|
141
194
|
if (!isPercent(limit.leftPercent))
|
|
@@ -145,23 +198,38 @@ function formatQuotaLimit(limit, resetLimit, includeReset) {
|
|
|
145
198
|
const reset = includeReset && limit === resetLimit ? formatResetTime(limit.resetAtMs) : undefined;
|
|
146
199
|
return reset ? `${base} resets ${reset}` : base;
|
|
147
200
|
}
|
|
148
|
-
|
|
201
|
+
/**
|
|
202
|
+
* The account hint, longest form first.
|
|
203
|
+
*
|
|
204
|
+
* A masked partial hint is about twelve characters longer than the flat
|
|
205
|
+
* `[*****]` it replaced, and the candidate ladder drops the account hint
|
|
206
|
+
* entirely when a rung does not fit. Offering the flat form as a second try
|
|
207
|
+
* at the same rung is what stops turning masking on from removing the account
|
|
208
|
+
* from a 78- or 96-column status line, which would identify the account less
|
|
209
|
+
* rather than more.
|
|
210
|
+
*/
|
|
211
|
+
function formatAccountHints(quota, maskEmail = false) {
|
|
149
212
|
if (quota.type !== "ready")
|
|
150
|
-
return
|
|
213
|
+
return [];
|
|
151
214
|
if (typeof quota.accountIndex !== "number" ||
|
|
152
215
|
!Number.isFinite(quota.accountIndex)) {
|
|
153
|
-
return
|
|
216
|
+
return [];
|
|
154
217
|
}
|
|
155
218
|
if (typeof quota.accountCount === "number" &&
|
|
156
219
|
Number.isFinite(quota.accountCount) &&
|
|
157
220
|
quota.accountCount <= 1) {
|
|
158
|
-
return
|
|
221
|
+
return [];
|
|
159
222
|
}
|
|
160
223
|
const email = formatAccountEmail(quota.accountEmail, maskEmail) ??
|
|
161
224
|
formatAccountEmail(extractEmailFromLabel(quota.accountLabel), maskEmail);
|
|
162
|
-
if (email)
|
|
163
|
-
return
|
|
164
|
-
|
|
225
|
+
if (!email)
|
|
226
|
+
return [`A${quota.accountIndex}`];
|
|
227
|
+
// Only when masking is on: the flat form is a mask, and offering it as a
|
|
228
|
+
// narrow-width fallback with masking off would print `*****` for someone
|
|
229
|
+
// who asked to see the address.
|
|
230
|
+
return maskEmail && email !== FLAT_MASKED_HINT
|
|
231
|
+
? [email, FLAT_MASKED_HINT]
|
|
232
|
+
: [email];
|
|
165
233
|
}
|
|
166
234
|
function findResetLimitForStatus(limits) {
|
|
167
235
|
const eligible = limits.filter((limit) => isPercent(limit.leftPercent));
|
|
@@ -196,22 +264,41 @@ function formatQuota(quota) {
|
|
|
196
264
|
return "limits ?";
|
|
197
265
|
return undefined;
|
|
198
266
|
}
|
|
267
|
+
/**
|
|
268
|
+
* Return the character budget for the prompt status line at a given terminal
|
|
269
|
+
* width. Budgets scale to about 54% of each tier's minimum width so the
|
|
270
|
+
* day-context reset labels and typical account hints fit.
|
|
271
|
+
*/
|
|
199
272
|
function maxStatusChars(width) {
|
|
273
|
+
// Budgets are ~54% of each named tier's minimum width (up from ~40%): the
|
|
274
|
+
// day-context reset labels and typical account hints no longer fit at
|
|
275
|
+
// 40%, which degraded informative candidates on mid-width terminals. The
|
|
276
|
+
// last branch is the exception and stays at 12, because 54% of a
|
|
277
|
+
// 40-column terminal leaves nothing for the prompt itself.
|
|
278
|
+
//
|
|
279
|
+
// An unknown width cannot be scaled at all, so it takes the narrowest
|
|
280
|
+
// tier budget rather than a mid-tier one: a 42-character line on the
|
|
281
|
+
// 40-column terminal this branch also covers wraps and pushes the prompt,
|
|
282
|
+
// and there is nothing here to detect that it happened.
|
|
200
283
|
if (!width || !Number.isFinite(width))
|
|
201
284
|
return 32;
|
|
202
285
|
if (width >= 120)
|
|
203
|
-
return
|
|
286
|
+
return 64;
|
|
204
287
|
if (width >= 96)
|
|
205
|
-
return
|
|
288
|
+
return 52;
|
|
206
289
|
if (width >= 78)
|
|
207
|
-
return
|
|
290
|
+
return 42;
|
|
208
291
|
if (width >= 60)
|
|
209
|
-
return
|
|
210
|
-
|
|
292
|
+
return 32;
|
|
293
|
+
// Clamped, not a flat 12: below twelve columns a 12-character budget is
|
|
294
|
+
// wider than the terminal itself, and the line wraps and pushes the
|
|
295
|
+
// prompt. Nothing fits at that size, and printing nothing is the correct
|
|
296
|
+
// answer rather than printing something that does not fit.
|
|
297
|
+
return Math.min(12, width);
|
|
211
298
|
}
|
|
212
299
|
export function formatPromptStatusText(params) {
|
|
213
300
|
const variant = params.variant;
|
|
214
|
-
const
|
|
301
|
+
const accountForms = formatAccountHints(params.quota, params.maskEmail);
|
|
215
302
|
const quotaParts = formatQuotaParts(params.quota, true);
|
|
216
303
|
const quotaPartsWithoutReset = formatQuotaParts(params.quota, false);
|
|
217
304
|
const quota = quotaParts.length > 0
|
|
@@ -222,19 +309,22 @@ export function formatPromptStatusText(params) {
|
|
|
222
309
|
? quotaPartsWithoutReset.join(STATUS_SEPARATOR)
|
|
223
310
|
: quota;
|
|
224
311
|
const primaryQuotaWithoutReset = quotaPartsWithoutReset[0] ?? primaryQuota;
|
|
312
|
+
// Each account-bearing rung tries every hint form before the ladder gives
|
|
313
|
+
// up on showing the account at all.
|
|
314
|
+
const withAccount = (rest, prefix) => accountForms.map((form) => [prefix, form, rest].filter(Boolean).join(STATUS_SEPARATOR));
|
|
225
315
|
const candidates = [
|
|
226
|
-
|
|
227
|
-
|
|
316
|
+
...withAccount(quota),
|
|
317
|
+
...withAccount(primaryQuota),
|
|
228
318
|
quota,
|
|
229
319
|
primaryQuota,
|
|
230
|
-
|
|
231
|
-
|
|
320
|
+
...withAccount(quotaWithoutReset),
|
|
321
|
+
...withAccount(primaryQuotaWithoutReset),
|
|
232
322
|
quotaWithoutReset,
|
|
233
323
|
primaryQuotaWithoutReset,
|
|
234
|
-
|
|
324
|
+
...withAccount(quota, variant),
|
|
235
325
|
[variant, quota].filter(Boolean).join(STATUS_SEPARATOR),
|
|
236
326
|
variant,
|
|
237
|
-
|
|
327
|
+
...accountForms,
|
|
238
328
|
].filter((candidate) => Boolean(candidate));
|
|
239
329
|
const maxChars = maxStatusChars(params.width);
|
|
240
330
|
return candidates.find((candidate) => candidate.length <= maxChars) ?? "";
|
|
@@ -259,7 +349,16 @@ export function resolveQuotaPromptTone(quota) {
|
|
|
259
349
|
return "unknown";
|
|
260
350
|
return "warning";
|
|
261
351
|
}
|
|
262
|
-
|
|
352
|
+
/**
|
|
353
|
+
* Decompose a reset timestamp once for both renderings below.
|
|
354
|
+
*
|
|
355
|
+
* The compact status line and the quota details dialog word the same instant
|
|
356
|
+
* differently - `Sep 15 02:25` against `02:25 on Sep 15` - but they agree on
|
|
357
|
+
* every decision behind it: the same validity guard, the same 24-hour clock,
|
|
358
|
+
* the same same-day test. Keeping those in one place is what stops the two
|
|
359
|
+
* surfaces drifting apart on which reset is "today".
|
|
360
|
+
*/
|
|
361
|
+
function describeReset(resetAtMs) {
|
|
263
362
|
if (!resetAtMs || !Number.isFinite(resetAtMs) || resetAtMs <= 0) {
|
|
264
363
|
return undefined;
|
|
265
364
|
}
|
|
@@ -267,34 +366,64 @@ function formatReset(resetAtMs) {
|
|
|
267
366
|
if (!Number.isFinite(date.getTime()))
|
|
268
367
|
return undefined;
|
|
269
368
|
const now = new Date();
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
369
|
+
return {
|
|
370
|
+
date,
|
|
371
|
+
time: date.toLocaleTimeString(undefined, {
|
|
372
|
+
hour: "2-digit",
|
|
373
|
+
minute: "2-digit",
|
|
374
|
+
hour12: false,
|
|
375
|
+
}),
|
|
376
|
+
sameDay: now.getFullYear() === date.getFullYear() &&
|
|
377
|
+
now.getMonth() === date.getMonth() &&
|
|
378
|
+
now.getDate() === date.getDate(),
|
|
379
|
+
dayDiff: calendarDayDiff(now, date),
|
|
380
|
+
};
|
|
381
|
+
}
|
|
382
|
+
function formatResetDay(date) {
|
|
383
|
+
return date.toLocaleDateString(undefined, {
|
|
281
384
|
month: "short",
|
|
282
385
|
day: "2-digit",
|
|
283
386
|
});
|
|
284
|
-
return `${time} on ${day}`;
|
|
285
387
|
}
|
|
388
|
+
function formatReset(resetAtMs) {
|
|
389
|
+
const parts = describeReset(resetAtMs);
|
|
390
|
+
if (!parts)
|
|
391
|
+
return undefined;
|
|
392
|
+
if (parts.sameDay)
|
|
393
|
+
return parts.time;
|
|
394
|
+
return `${parts.time} on ${formatResetDay(parts.date)}`;
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* Format a reset timestamp for the compact status line. Same-day resets keep
|
|
398
|
+
* the time only (`02:25`); resets within the coming week add the weekday
|
|
399
|
+
* (`Tue 02:25`); later resets use the absolute date (`Sep 15 02:25`). The
|
|
400
|
+
* time is always kept so short windows such as the 5h limit stay meaningful.
|
|
401
|
+
*/
|
|
286
402
|
function formatResetTime(resetAtMs) {
|
|
287
|
-
|
|
403
|
+
const parts = describeReset(resetAtMs);
|
|
404
|
+
if (!parts)
|
|
288
405
|
return undefined;
|
|
406
|
+
if (parts.sameDay)
|
|
407
|
+
return parts.time;
|
|
408
|
+
// Within a week each weekday occurs exactly once, so the weekday alone
|
|
409
|
+
// disambiguates weekly windows; beyond that the absolute date does.
|
|
410
|
+
if (parts.dayDiff > 0 && parts.dayDiff < 7) {
|
|
411
|
+
const weekday = parts.date.toLocaleDateString(undefined, {
|
|
412
|
+
weekday: "short",
|
|
413
|
+
});
|
|
414
|
+
return `${weekday} ${parts.time}`;
|
|
289
415
|
}
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
416
|
+
return `${formatResetDay(parts.date)} ${parts.time}`;
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* Count calendar days between two dates, ignoring wall-clock length. Comparing
|
|
420
|
+
* UTC-normalized year/month/day makes the count immune to DST transitions,
|
|
421
|
+
* which make a seven-day gap span 167 or 169 hours.
|
|
422
|
+
*/
|
|
423
|
+
function calendarDayDiff(from, to) {
|
|
424
|
+
const fromDay = Date.UTC(from.getFullYear(), from.getMonth(), from.getDate());
|
|
425
|
+
const toDay = Date.UTC(to.getFullYear(), to.getMonth(), to.getDate());
|
|
426
|
+
return Math.round((toDay - fromDay) / MS_PER_DAY);
|
|
298
427
|
}
|
|
299
428
|
function formatUpdatedAge(fetchedAt, now) {
|
|
300
429
|
if (!fetchedAt || !Number.isFinite(fetchedAt))
|
|
@@ -327,7 +456,8 @@ export function formatQuotaDetailsText(quota, now = Date.now(), options = {}) {
|
|
|
327
456
|
if (quota.type === "unavailable")
|
|
328
457
|
return "Quota is unavailable.";
|
|
329
458
|
const lines = [];
|
|
330
|
-
|
|
459
|
+
// The dialog has a full line to itself, so it always takes the longest form.
|
|
460
|
+
const accountHint = formatAccountHints(quota, options.maskEmail)[0];
|
|
331
461
|
const accountLabel = maskEmailsInText(quota.accountLabel, Boolean(options.maskEmail));
|
|
332
462
|
if (accountLabel && accountHint) {
|
|
333
463
|
lines.push(`Account: ${accountHint} (${accountLabel})`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui-status.js","sourceRoot":"","sources":["../../lib/tui-status.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tui-status.js","sourceRoot":"","sources":["../../lib/tui-status.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.19.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",
|
|
@@ -307,6 +307,29 @@ function mergeStandaloneAccounts(target, source) {
|
|
|
307
307
|
return mergeStandaloneAccounts(source, target);
|
|
308
308
|
}
|
|
309
309
|
|
|
310
|
+
// Mirror of `isStaleGeneratedAccountLabel` / `dropStaleGeneratedLabel` in
|
|
311
|
+
// lib/auth/token-utils.ts and lib/storage/normalize.ts. The standalone CLI
|
|
312
|
+
// reads the pool through this normalizer and never through the compiled
|
|
313
|
+
// `normalizeAccountStorage`, so without the mirror `status`, `list`, `health`,
|
|
314
|
+
// `doctor` and `dashboard` keep printing the org-derived label the plugin
|
|
315
|
+
// itself now drops - next to the account id, which is the identity the label
|
|
316
|
+
// was misnaming. The marker must hold this account's own id suffix so a name
|
|
317
|
+
// set with `codex-label` survives.
|
|
318
|
+
const GENERATED_LABEL_PATTERN = /\s\[id:[^\]]*\]$/;
|
|
319
|
+
|
|
320
|
+
function dropStaleStandaloneLabel(account) {
|
|
321
|
+
const label = typeof account?.accountLabel === "string" ? account.accountLabel.trim() : "";
|
|
322
|
+
const accountId = typeof account?.accountId === "string" ? account.accountId.trim() : "";
|
|
323
|
+
if (!label || !accountId) return account;
|
|
324
|
+
const marker = label.match(GENERATED_LABEL_PATTERN)?.[0];
|
|
325
|
+
if (!marker) return account;
|
|
326
|
+
const suffix = accountId.length > 6 ? accountId.slice(-6) : accountId;
|
|
327
|
+
if (marker !== ` [id:${suffix}]`) return account;
|
|
328
|
+
const next = { ...account };
|
|
329
|
+
delete next.accountLabel;
|
|
330
|
+
return next;
|
|
331
|
+
}
|
|
332
|
+
|
|
310
333
|
function normalizeStandaloneStorage(storage) {
|
|
311
334
|
if (!Array.isArray(storage.accounts)) return storage;
|
|
312
335
|
const accounts = [...storage.accounts];
|
|
@@ -324,7 +347,9 @@ function normalizeStandaloneStorage(storage) {
|
|
|
324
347
|
if (sourceIndex === i) break;
|
|
325
348
|
}
|
|
326
349
|
}
|
|
327
|
-
const normalizedAccounts = accounts
|
|
350
|
+
const normalizedAccounts = accounts
|
|
351
|
+
.filter((_, index) => !removed.has(index))
|
|
352
|
+
.map(dropStaleStandaloneLabel);
|
|
328
353
|
return {
|
|
329
354
|
...storage,
|
|
330
355
|
accounts: normalizedAccounts,
|
|
@@ -332,9 +357,37 @@ function normalizeStandaloneStorage(storage) {
|
|
|
332
357
|
};
|
|
333
358
|
}
|
|
334
359
|
|
|
360
|
+
const MASKED_VALUE = "*****";
|
|
361
|
+
// The head/tail mask keeps eight characters, so it conceals nothing worth
|
|
362
|
+
// concealing below thirteen: `me@x.io` would print in full and `me@x.io12`
|
|
363
|
+
// all but its middle character. `doctor` output is what users paste into
|
|
364
|
+
// issues, so anything shorter is replaced outright instead. Input is trimmed
|
|
365
|
+
// first, or `" me@x.io "` clears the cutoff on padding alone and drops back
|
|
366
|
+
// into the partial mask.
|
|
367
|
+
const MASK_MIN_LENGTH = 13;
|
|
368
|
+
|
|
335
369
|
function maskValue(value, includeSensitive) {
|
|
336
|
-
if (includeSensitive || typeof value !== "string"
|
|
337
|
-
|
|
370
|
+
if (includeSensitive || typeof value !== "string") return value;
|
|
371
|
+
const trimmed = value.trim();
|
|
372
|
+
if (!trimmed) return trimmed;
|
|
373
|
+
if (trimmed.length < MASK_MIN_LENGTH) return MASKED_VALUE;
|
|
374
|
+
return `${trimmed.slice(0, 4)}...${trimmed.slice(-4)}`;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
// Six characters when the id is shown in full, matching what the
|
|
378
|
+
// in-conversation surfaces print as `id:`. Four when it is head/tail masked,
|
|
379
|
+
// which is the tail `maskValue` already discloses as `accountId` in the same
|
|
380
|
+
// payload, so the printed identity never reveals more of an id than the field
|
|
381
|
+
// beside it. Nothing at all when the id was too short for that mask: the
|
|
382
|
+
// `accountId` next to it is then `*****`, and four raw characters of a short
|
|
383
|
+
// id can be the whole id.
|
|
384
|
+
function accountIdSuffix(accountId, includeSensitive) {
|
|
385
|
+
if (!accountId) return undefined;
|
|
386
|
+
if (includeSensitive) {
|
|
387
|
+
return accountId.length > 6 ? accountId.slice(-6) : accountId;
|
|
388
|
+
}
|
|
389
|
+
if (accountId.length < MASK_MIN_LENGTH) return undefined;
|
|
390
|
+
return accountId.slice(-4);
|
|
338
391
|
}
|
|
339
392
|
|
|
340
393
|
function summarizeStandaloneAccounts(storage, includeSensitive, tag) {
|
|
@@ -345,21 +398,27 @@ function summarizeStandaloneAccounts(storage, includeSensitive, tag) {
|
|
|
345
398
|
.filter(({ account }) => !normalizedTag ||
|
|
346
399
|
(Array.isArray(account?.accountTags) &&
|
|
347
400
|
account.accountTags.some((entry) => String(entry).toLowerCase() === normalizedTag)))
|
|
348
|
-
.map(({ account, index }) =>
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
401
|
+
.map(({ account, index }) => {
|
|
402
|
+
const trimmedId =
|
|
403
|
+
typeof account?.accountId === "string" ? account.accountId.trim() : "";
|
|
404
|
+
const accountId = trimmedId || undefined;
|
|
405
|
+
return {
|
|
406
|
+
index,
|
|
407
|
+
label: account?.accountLabel ?? `Account ${index + 1}`,
|
|
408
|
+
email: maskValue(account?.email, includeSensitive),
|
|
409
|
+
accountId: maskValue(accountId, includeSensitive),
|
|
410
|
+
idSuffix: accountIdSuffix(accountId, includeSensitive),
|
|
411
|
+
accountIdSource: account?.accountIdSource,
|
|
412
|
+
enabled: account?.enabled !== false,
|
|
413
|
+
hasRefreshToken: typeof account?.refreshToken === "string" && account.refreshToken.length > 0,
|
|
414
|
+
hasAccessToken: typeof account?.accessToken === "string" && account.accessToken.length > 0,
|
|
415
|
+
expiresAt: account?.expiresAt,
|
|
416
|
+
expired: typeof account?.expiresAt === "number" ? account.expiresAt <= Date.now() : undefined,
|
|
417
|
+
tags: Array.isArray(account?.accountTags) ? account.accountTags : [],
|
|
418
|
+
note: account?.accountNote,
|
|
419
|
+
rateLimitResetTimes: account?.rateLimitResetTimes ?? {},
|
|
420
|
+
};
|
|
421
|
+
});
|
|
363
422
|
}
|
|
364
423
|
|
|
365
424
|
function printStandaloneResult(command, payload, json) {
|
|
@@ -373,7 +432,11 @@ function printStandaloneResult(command, payload, json) {
|
|
|
373
432
|
console.log(`Accounts: ${payload.totalAccounts}`);
|
|
374
433
|
if (Array.isArray(payload.accounts)) {
|
|
375
434
|
for (const account of payload.accounts) {
|
|
376
|
-
|
|
435
|
+
const identity = [account.email, account.idSuffix ? `id:${account.idSuffix}` : undefined]
|
|
436
|
+
.filter(Boolean)
|
|
437
|
+
.join(", ");
|
|
438
|
+
const name = identity ? `${account.label} (${identity})` : account.label;
|
|
439
|
+
console.log(`- [${account.index}] ${name} enabled=${account.enabled} refresh=${account.hasRefreshToken} access=${account.hasAccessToken}`);
|
|
377
440
|
}
|
|
378
441
|
}
|
|
379
442
|
if (payload.error) console.log(`Error: ${payload.error}`);
|
|
@@ -609,8 +672,29 @@ export async function runLimitsCommand(parsed, options = {}) {
|
|
|
609
672
|
organizationId: account.organizationId,
|
|
610
673
|
}),
|
|
611
674
|
);
|
|
675
|
+
const quotaExhaustedResetAtMs = usageMod.getUsageQuotaExhaustedResetAtMs([
|
|
676
|
+
usage.primary,
|
|
677
|
+
usage.secondary,
|
|
678
|
+
]);
|
|
679
|
+
if (quotaExhaustedResetAtMs !== undefined) {
|
|
680
|
+
try {
|
|
681
|
+
await usageMod.persistUsageQuotaExhaustion(account, quotaExhaustedResetAtMs);
|
|
682
|
+
} catch (error) {
|
|
683
|
+
loggerMod.logWarn(
|
|
684
|
+
`[${PACKAGE_NAME}] Failed to persist exhausted usage quota: ${formatErrorForLog(error)}`,
|
|
685
|
+
);
|
|
686
|
+
}
|
|
687
|
+
}
|
|
612
688
|
entry.planType = usage.planType;
|
|
613
689
|
entry.credits = usage.credits;
|
|
690
|
+
// Raw counts stay in `resetCredits` and the rendered line lives in
|
|
691
|
+
// its own field: embedding the English summary inside the counts
|
|
692
|
+
// object would make `--json` consumers parse presentation text to
|
|
693
|
+
// reach a number that is already beside it.
|
|
694
|
+
entry.resetCredits = usage.resetCredits;
|
|
695
|
+
entry.resetCreditsSummary = usage.resetCredits
|
|
696
|
+
? usageMod.formatResetCredits(usage.resetCredits)
|
|
697
|
+
: null;
|
|
614
698
|
entry.limits = usage.limits;
|
|
615
699
|
} catch (error) {
|
|
616
700
|
// `ensureCodexUsageAccessToken` can surface a raw OAuth refresh
|
|
@@ -662,6 +746,9 @@ function printLimitsResult(payload, json) {
|
|
|
662
746
|
}
|
|
663
747
|
if (account.planType) console.log(` Plan: ${account.planType}`);
|
|
664
748
|
if (account.credits) console.log(` Credits: ${account.credits}`);
|
|
749
|
+
if (account.resetCredits && account.resetCredits.available > 0) {
|
|
750
|
+
console.log(` Resets: ${account.resetCreditsSummary}`);
|
|
751
|
+
}
|
|
665
752
|
}
|
|
666
753
|
if (payload.nextAction) console.log(`Next: ${payload.nextAction}`);
|
|
667
754
|
}
|