oc-codex-multi-auth 6.7.1 → 6.8.1

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.
Files changed (84) hide show
  1. package/README.md +1 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +13 -2
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/accounts/persistence.d.ts +10 -0
  6. package/dist/lib/accounts/persistence.d.ts.map +1 -1
  7. package/dist/lib/accounts/persistence.js +69 -2
  8. package/dist/lib/accounts/persistence.js.map +1 -1
  9. package/dist/lib/accounts/state.d.ts +2 -0
  10. package/dist/lib/accounts/state.d.ts.map +1 -1
  11. package/dist/lib/accounts/state.js +10 -0
  12. package/dist/lib/accounts/state.js.map +1 -1
  13. package/dist/lib/auth/login-runner.d.ts +1 -0
  14. package/dist/lib/auth/login-runner.d.ts.map +1 -1
  15. package/dist/lib/auth/login-runner.js +8 -0
  16. package/dist/lib/auth/login-runner.js.map +1 -1
  17. package/dist/lib/codex-reset.d.ts +122 -0
  18. package/dist/lib/codex-reset.d.ts.map +1 -0
  19. package/dist/lib/codex-reset.js +196 -0
  20. package/dist/lib/codex-reset.js.map +1 -0
  21. package/dist/lib/codex-usage.d.ts +15 -0
  22. package/dist/lib/codex-usage.d.ts.map +1 -1
  23. package/dist/lib/codex-usage.js +44 -13
  24. package/dist/lib/codex-usage.js.map +1 -1
  25. package/dist/lib/proactive-refresh.d.ts.map +1 -1
  26. package/dist/lib/proactive-refresh.js +6 -4
  27. package/dist/lib/proactive-refresh.js.map +1 -1
  28. package/dist/lib/refresh-queue.d.ts +9 -0
  29. package/dist/lib/refresh-queue.d.ts.map +1 -1
  30. package/dist/lib/refresh-queue.js +29 -0
  31. package/dist/lib/refresh-queue.js.map +1 -1
  32. package/dist/lib/request/fetch-helpers.d.ts.map +1 -1
  33. package/dist/lib/request/fetch-helpers.js +21 -2
  34. package/dist/lib/request/fetch-helpers.js.map +1 -1
  35. package/dist/lib/request/request-transformer.d.ts +10 -0
  36. package/dist/lib/request/request-transformer.d.ts.map +1 -1
  37. package/dist/lib/request/request-transformer.js +20 -0
  38. package/dist/lib/request/request-transformer.js.map +1 -1
  39. package/dist/lib/request/response-handler.d.ts.map +1 -1
  40. package/dist/lib/request/response-handler.js +28 -5
  41. package/dist/lib/request/response-handler.js.map +1 -1
  42. package/dist/lib/schemas.d.ts +3 -0
  43. package/dist/lib/schemas.d.ts.map +1 -1
  44. package/dist/lib/schemas.js +1 -0
  45. package/dist/lib/schemas.js.map +1 -1
  46. package/dist/lib/storage/migrations.d.ts +7 -0
  47. package/dist/lib/storage/migrations.d.ts.map +1 -1
  48. package/dist/lib/storage/migrations.js.map +1 -1
  49. package/dist/lib/storage.d.ts +1 -1
  50. package/dist/lib/storage.d.ts.map +1 -1
  51. package/dist/lib/storage.js +10 -1
  52. package/dist/lib/storage.js.map +1 -1
  53. package/dist/lib/tools/codex-keychain.d.ts.map +1 -1
  54. package/dist/lib/tools/codex-keychain.js +153 -77
  55. package/dist/lib/tools/codex-keychain.js.map +1 -1
  56. package/dist/lib/tools/codex-label.d.ts.map +1 -1
  57. package/dist/lib/tools/codex-label.js +60 -34
  58. package/dist/lib/tools/codex-label.js.map +1 -1
  59. package/dist/lib/tools/codex-limits.js +10 -4
  60. package/dist/lib/tools/codex-limits.js.map +1 -1
  61. package/dist/lib/tools/codex-refresh.d.ts.map +1 -1
  62. package/dist/lib/tools/codex-refresh.js +80 -5
  63. package/dist/lib/tools/codex-refresh.js.map +1 -1
  64. package/dist/lib/tools/codex-remove.d.ts.map +1 -1
  65. package/dist/lib/tools/codex-remove.js +85 -56
  66. package/dist/lib/tools/codex-remove.js.map +1 -1
  67. package/dist/lib/tools/codex-reset.d.ts +16 -0
  68. package/dist/lib/tools/codex-reset.d.ts.map +1 -0
  69. package/dist/lib/tools/codex-reset.js +332 -0
  70. package/dist/lib/tools/codex-reset.js.map +1 -0
  71. package/dist/lib/tools/codex-switch.d.ts.map +1 -1
  72. package/dist/lib/tools/codex-switch.js +57 -35
  73. package/dist/lib/tools/codex-switch.js.map +1 -1
  74. package/dist/lib/tools/index.d.ts.map +1 -1
  75. package/dist/lib/tools/index.js +2 -0
  76. package/dist/lib/tools/index.js.map +1 -1
  77. package/dist/lib/tui-quota-cache.d.ts +25 -0
  78. package/dist/lib/tui-quota-cache.d.ts.map +1 -1
  79. package/dist/lib/tui-quota-cache.js +42 -1
  80. package/dist/lib/tui-quota-cache.js.map +1 -1
  81. package/dist/tui.d.ts.map +1 -1
  82. package/dist/tui.js +17 -5
  83. package/dist/tui.js.map +1 -1
  84. package/package.json +153 -153
@@ -0,0 +1,196 @@
1
+ /**
2
+ * Client for Codex banked rate-limit reset credits.
3
+ *
4
+ * OpenAI grants eligible ChatGPT plans a small number of "reset credits" that
5
+ * clear the current rate-limit windows early. Redemption is exposed in the
6
+ * Codex desktop app, the IDE extensions, and the Codex CLI `/usage` screen —
7
+ * but not on a surface Linux users of this plugin can reach. This module wraps
8
+ * the same two backend endpoints those clients use so `codex-reset` can list
9
+ * and redeem credits:
10
+ *
11
+ * - `GET /wham/rate-limit-reset-credits` — list credits
12
+ * - `POST /wham/rate-limit-reset-credits/consume` — redeem one credit
13
+ *
14
+ * Both are undocumented and authenticate exactly like `/wham/usage` (see
15
+ * `lib/codex-usage.ts`), so they share its bearer credentials, timeout, and
16
+ * error-body sanitization. Redeeming is irreversible and consumes a real,
17
+ * finite credit, so the redeem path is never taken implicitly — the caller must
18
+ * pass an explicit confirmation (see `lib/tools/codex-reset.ts`).
19
+ */
20
+ import { createHash } from "node:crypto";
21
+ import { isCodexAbortError, sanitizeCodexApiErrorMessage, } from "./codex-usage.js";
22
+ import { getFetchTimeoutMs, loadPluginConfig } from "./config.js";
23
+ import { CODEX_BASE_URL } from "./constants.js";
24
+ import { createUsageRequestTimeoutError } from "./error-sentinels.js";
25
+ import { createCodexHeaders } from "./request/fetch-helpers.js";
26
+ /** Status string the backend uses for a credit that can still be redeemed. */
27
+ export const CODEX_RESET_CREDIT_AVAILABLE_STATUS = "available";
28
+ const RESET_CREDITS_PATH = "/wham/rate-limit-reset-credits";
29
+ const RESET_CREDITS_CONSUME_PATH = "/wham/rate-limit-reset-credits/consume";
30
+ const resetErrorBodyMaxChars = 4096;
31
+ function toTrimmedString(value) {
32
+ return typeof value === "string" && value.trim() ? value.trim() : null;
33
+ }
34
+ /**
35
+ * Normalize the list response.
36
+ *
37
+ * Credits without an `id` are dropped: an id is required to redeem, so an
38
+ * entry lacking one is not actionable and would only pad the display. The
39
+ * server's `available_count` is trusted when it is a sane number and otherwise
40
+ * derived from the credits themselves, so a missing counter never understates
41
+ * what the user actually has.
42
+ */
43
+ export function parseCodexResetCredits(payload) {
44
+ const credits = [];
45
+ for (const entry of payload.credits ?? []) {
46
+ const id = toTrimmedString(entry?.id);
47
+ if (!id)
48
+ continue;
49
+ const status = toTrimmedString(entry?.status) ?? "unknown";
50
+ credits.push({
51
+ id,
52
+ status,
53
+ isAvailable: status === CODEX_RESET_CREDIT_AVAILABLE_STATUS,
54
+ resetType: toTrimmedString(entry?.reset_type),
55
+ grantedAt: toTrimmedString(entry?.granted_at),
56
+ expiresAt: toTrimmedString(entry?.expires_at),
57
+ title: toTrimmedString(entry?.title),
58
+ });
59
+ }
60
+ const reported = payload.available_count;
61
+ const availableCount = typeof reported === "number" && Number.isFinite(reported) && reported >= 0
62
+ ? Math.trunc(reported)
63
+ : credits.filter((credit) => credit.isAvailable).length;
64
+ return { availableCount, credits };
65
+ }
66
+ /**
67
+ * Pick the credit to redeem.
68
+ *
69
+ * Only credits the backend still reports as available are eligible, so an
70
+ * explicit `creditId` naming an expired or already-redeemed credit is reported
71
+ * as not-found rather than being sent to the consume endpoint.
72
+ */
73
+ export function selectRedeemableCredit(summary, creditId) {
74
+ const available = summary.credits.filter((credit) => credit.isAvailable);
75
+ const requestedId = creditId?.trim();
76
+ if (requestedId) {
77
+ const credit = available.find((entry) => entry.id === requestedId);
78
+ return credit
79
+ ? { type: "selected", credit }
80
+ : { type: "not-found", creditId: requestedId };
81
+ }
82
+ const credit = available[0];
83
+ return credit ? { type: "selected", credit } : { type: "none-available" };
84
+ }
85
+ export function formatCodexResetCredit(credit) {
86
+ const parts = [credit.id, `status=${credit.status}`];
87
+ if (credit.resetType)
88
+ parts.push(`type=${credit.resetType}`);
89
+ if (credit.grantedAt)
90
+ parts.push(`granted=${credit.grantedAt}`);
91
+ if (credit.expiresAt)
92
+ parts.push(`expires=${credit.expiresAt}`);
93
+ return parts.join(" ");
94
+ }
95
+ /**
96
+ * Idempotency key for redeeming a specific credit.
97
+ *
98
+ * The key must be STABLE across invocations for the same credit: a credit can
99
+ * be redeemed at most once, so "the same logical redemption" is exactly "the
100
+ * same credit id". A per-call random UUID would hand the backend a brand-new
101
+ * key on every retry, making the idempotency mechanism inert — a consume whose
102
+ * response was lost could then be retried without the backend recognizing it.
103
+ * The key is derived deterministically from the credit id (UUID-shaped so the
104
+ * backend sees the same format the official clients send).
105
+ */
106
+ export function createRedeemRequestId(creditId) {
107
+ const digest = createHash("sha256")
108
+ .update(`oc-codex-multi-auth:redeem-request:${creditId}`)
109
+ .digest();
110
+ const bytes = digest.subarray(0, 16);
111
+ bytes[6] = ((bytes[6] ?? 0) & 0x0f) | 0x50;
112
+ bytes[8] = ((bytes[8] ?? 0) & 0x3f) | 0x80;
113
+ const hex = bytes.toString("hex");
114
+ return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
115
+ }
116
+ async function requestCodexResetJson(params) {
117
+ const headers = createCodexHeaders(undefined, params.accountId, params.accessToken, { organizationId: params.organizationId });
118
+ headers.set("accept", "application/json");
119
+ if (params.body !== undefined) {
120
+ headers.set("content-type", "application/json");
121
+ }
122
+ const controller = new AbortController();
123
+ const timeout = setTimeout(() => controller.abort(), params.timeoutMs ?? getFetchTimeoutMs(loadPluginConfig()));
124
+ try {
125
+ const response = await fetch(`${CODEX_BASE_URL}${params.path}`, {
126
+ method: params.method,
127
+ headers,
128
+ body: params.body === undefined ? undefined : JSON.stringify(params.body),
129
+ signal: controller.signal,
130
+ });
131
+ if (!response.ok) {
132
+ let bodyText = "";
133
+ try {
134
+ bodyText = (await response.text()).slice(0, resetErrorBodyMaxChars);
135
+ }
136
+ catch (error) {
137
+ if (isCodexAbortError(error) || controller.signal.aborted) {
138
+ throw createUsageRequestTimeoutError();
139
+ }
140
+ throw error;
141
+ }
142
+ if (controller.signal.aborted) {
143
+ throw createUsageRequestTimeoutError();
144
+ }
145
+ throw new Error(sanitizeCodexApiErrorMessage(response.status, bodyText));
146
+ }
147
+ return (await response.json());
148
+ }
149
+ catch (error) {
150
+ if (isCodexAbortError(error)) {
151
+ throw createUsageRequestTimeoutError();
152
+ }
153
+ throw error;
154
+ }
155
+ finally {
156
+ clearTimeout(timeout);
157
+ }
158
+ }
159
+ export async function fetchCodexResetCredits(params) {
160
+ return await requestCodexResetJson({
161
+ ...params,
162
+ path: RESET_CREDITS_PATH,
163
+ method: "GET",
164
+ });
165
+ }
166
+ /**
167
+ * Redeem one banked credit. Irreversible.
168
+ *
169
+ * `redeemRequestId` is echoed to the backend as an idempotency key so a retry
170
+ * of the same logical redemption cannot spend two credits.
171
+ */
172
+ export async function consumeCodexResetCredit(params) {
173
+ const { creditId, redeemRequestId, ...rest } = params;
174
+ return await requestCodexResetJson({
175
+ ...rest,
176
+ path: RESET_CREDITS_CONSUME_PATH,
177
+ method: "POST",
178
+ body: { credit_id: creditId, redeem_request_id: redeemRequestId },
179
+ });
180
+ }
181
+ export function formatCodexResetConsumeResult(result) {
182
+ const parts = [];
183
+ if (result.code)
184
+ parts.push(`code=${result.code}`);
185
+ const redeemedAt = toTrimmedString(result.credit?.redeemed_at);
186
+ if (redeemedAt)
187
+ parts.push(`redeemed=${redeemedAt}`);
188
+ if (Array.isArray(result.windows_reset) && result.windows_reset.length > 0) {
189
+ parts.push(`windows_reset=${result.windows_reset.join(", ")}`);
190
+ }
191
+ else if (typeof result.windows_reset === "string") {
192
+ parts.push(`windows_reset=${result.windows_reset}`);
193
+ }
194
+ return parts.length > 0 ? parts.join(" ") : "redeemed";
195
+ }
196
+ //# sourceMappingURL=codex-reset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-reset.js","sourceRoot":"","sources":["../../lib/codex-reset.ts"],"names":[],"mappings":"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"}
@@ -69,8 +69,23 @@ export declare function formatUsageLimitSummary(window: LimitWindow): string;
69
69
  export declare function toUsageLimitPayload(name: string, window: LimitWindow): UsageLimitPayload;
70
70
  export declare function formatUsageCredits(credits: UsageCredits): string | undefined;
71
71
  export declare function formatAdditionalUsageLimitName(name: string | undefined): string;
72
+ /**
73
+ * A window reported with a length of zero is disabled for the plan (e.g. the
74
+ * 5-hour window on plans where OpenAI has switched it off), not a window whose
75
+ * length is merely unknown. It still reports `used_percent: 0`, so it has to be
76
+ * rejected on the explicit zero length or it renders as a full quota.
77
+ */
72
78
  export declare function hasUsageWindow(window: LimitWindow): boolean;
73
79
  export declare function parseCodexUsagePayload(payload: UsagePayload): CodexUsageSummary;
80
+ /**
81
+ * Build a safe error message from a failed Codex backend response.
82
+ *
83
+ * Shared with the reset-credit client in `lib/codex-reset.ts`: both talk to
84
+ * `chatgpt.com/backend-api` with the same bearer credentials, so both must
85
+ * scrub tokens out of an error body before it reaches tool output or logs.
86
+ */
87
+ export declare function sanitizeCodexApiErrorMessage(status: number, bodyText: string): string;
88
+ export declare function isCodexAbortError(error: unknown): boolean;
74
89
  export declare function fetchCodexUsage(params: {
75
90
  accountId: string;
76
91
  accessToken: string;
@@ -1 +1 @@
1
- {"version":3,"file":"codex-usage.d.ts","sourceRoot":"","sources":["../../lib/codex-usage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-usage.d.ts","sourceRoot":"","sources":["../../lib/codex-usage.ts"],"names":[],"mappings":"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"}
@@ -49,6 +49,23 @@ export function formatUsageReset(resetAtMs) {
49
49
  });
50
50
  return `${time} on ${day}`;
51
51
  }
52
+ /**
53
+ * Convert a reported window length in seconds to minutes.
54
+ *
55
+ * A non-positive length means the plan has the window switched off, and is
56
+ * preserved as `0` — the disabled marker {@link hasUsageWindow} filters on.
57
+ * Rounding it up to `1` would surface a disabled window as a real `1m` limit.
58
+ * A missing/non-finite length is an unknown window, which stays `undefined`.
59
+ */
60
+ function mapUsageWindowMinutes(limitWindowSeconds) {
61
+ if (typeof limitWindowSeconds !== "number" ||
62
+ !Number.isFinite(limitWindowSeconds)) {
63
+ return undefined;
64
+ }
65
+ if (limitWindowSeconds <= 0)
66
+ return 0;
67
+ return Math.max(1, Math.ceil(limitWindowSeconds / 60));
68
+ }
52
69
  export function mapUsageWindow(window) {
53
70
  if (!window)
54
71
  return {};
@@ -57,10 +74,7 @@ export function mapUsageWindow(window) {
57
74
  Number.isFinite(window.used_percent)
58
75
  ? window.used_percent
59
76
  : undefined,
60
- windowMinutes: typeof window.limit_window_seconds === "number" &&
61
- Number.isFinite(window.limit_window_seconds)
62
- ? Math.max(1, Math.ceil(window.limit_window_seconds / 60))
63
- : undefined,
77
+ windowMinutes: mapUsageWindowMinutes(window.limit_window_seconds),
64
78
  resetAtMs: typeof window.reset_at === "number" && window.reset_at > 0
65
79
  ? window.reset_at * 1000
66
80
  : typeof window.reset_after_seconds === "number" &&
@@ -120,7 +134,15 @@ export function formatAdditionalUsageLimitName(name) {
120
134
  .replace(/[_-]+/g, " ")
121
135
  .replace(/\b\w/g, (match) => match.toUpperCase());
122
136
  }
137
+ /**
138
+ * A window reported with a length of zero is disabled for the plan (e.g. the
139
+ * 5-hour window on plans where OpenAI has switched it off), not a window whose
140
+ * length is merely unknown. It still reports `used_percent: 0`, so it has to be
141
+ * rejected on the explicit zero length or it renders as a full quota.
142
+ */
123
143
  export function hasUsageWindow(window) {
144
+ if (window.windowMinutes === 0)
145
+ return false;
124
146
  return Boolean(window.windowMinutes ||
125
147
  typeof window.usedPercent === "number" ||
126
148
  window.resetAtMs);
@@ -139,10 +161,12 @@ export function parseCodexUsagePayload(payload) {
139
161
  name: formatAdditionalUsageLimitName(entry.limit_name ?? entry.metered_feature),
140
162
  window: mapUsageWindow(entry.rate_limit?.primary_window ?? null),
141
163
  }));
142
- const limits = [
143
- toUsageLimitPayload(formatUsageLimitTitle(primary.windowMinutes), primary),
144
- toUsageLimitPayload(formatUsageLimitTitle(secondary.windowMinutes), secondary),
145
- ];
164
+ const limits = [];
165
+ for (const window of [primary, secondary]) {
166
+ if (!hasUsageWindow(window))
167
+ continue;
168
+ limits.push(toUsageLimitPayload(formatUsageLimitTitle(window.windowMinutes), window));
169
+ }
146
170
  if (hasUsageWindow(codeReview)) {
147
171
  limits.push(toUsageLimitPayload("Code review", codeReview));
148
172
  }
@@ -159,7 +183,14 @@ export function parseCodexUsagePayload(payload) {
159
183
  limits,
160
184
  };
161
185
  }
162
- function sanitizeUsageErrorMessage(status, bodyText) {
186
+ /**
187
+ * Build a safe error message from a failed Codex backend response.
188
+ *
189
+ * Shared with the reset-credit client in `lib/codex-reset.ts`: both talk to
190
+ * `chatgpt.com/backend-api` with the same bearer credentials, so both must
191
+ * scrub tokens out of an error body before it reaches tool output or logs.
192
+ */
193
+ export function sanitizeCodexApiErrorMessage(status, bodyText) {
163
194
  const normalized = bodyText.replace(/\s+/g, " ").trim();
164
195
  const redacted = normalized
165
196
  .replace(/Bearer\s+\S+/gi, "Bearer [redacted]")
@@ -168,7 +199,7 @@ function sanitizeUsageErrorMessage(status, bodyText) {
168
199
  .replace(/\b[a-f0-9]{40,}\b/gi, "[redacted-token]");
169
200
  return redacted ? `HTTP ${status}: ${redacted.slice(0, 200)}` : `HTTP ${status}`;
170
201
  }
171
- function isAbortError(error) {
202
+ export function isCodexAbortError(error) {
172
203
  return ((error instanceof Error && error.name === "AbortError") ||
173
204
  (typeof DOMException !== "undefined" &&
174
205
  error instanceof DOMException &&
@@ -193,7 +224,7 @@ export async function fetchCodexUsage(params) {
193
224
  bodyText = (await response.text()).slice(0, usageErrorBodyMaxChars);
194
225
  }
195
226
  catch (error) {
196
- if (isAbortError(error) || controller.signal.aborted) {
227
+ if (isCodexAbortError(error) || controller.signal.aborted) {
197
228
  throw createUsageRequestTimeoutError();
198
229
  }
199
230
  throw error;
@@ -201,12 +232,12 @@ export async function fetchCodexUsage(params) {
201
232
  if (controller.signal.aborted) {
202
233
  throw createUsageRequestTimeoutError();
203
234
  }
204
- throw new Error(sanitizeUsageErrorMessage(response.status, bodyText));
235
+ throw new Error(sanitizeCodexApiErrorMessage(response.status, bodyText));
205
236
  }
206
237
  return (await response.json());
207
238
  }
208
239
  catch (error) {
209
- if (isAbortError(error)) {
240
+ if (isCodexAbortError(error)) {
210
241
  throw createUsageRequestTimeoutError();
211
242
  }
212
243
  throw error;
@@ -1 +1 @@
1
- {"version":3,"file":"codex-usage.js","sourceRoot":"","sources":["../../lib/codex-usage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-usage.js","sourceRoot":"","sources":["../../lib/codex-usage.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"proactive-refresh.d.ts","sourceRoot":"","sources":["../../lib/proactive-refresh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C,4EAA4E;AAC5E,eAAO,MAAM,2BAA2B,QAAgB,CAAC;AAEzD,mEAAmE;AACnE,eAAO,MAAM,uBAAuB,QAAY,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,MAAM,EAAE,YAAY,GAAG,kBAAkB,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACvC,OAAO,EAAE,cAAc,EACvB,QAAQ,GAAE,MAAoC,GAC5C,OAAO,CAoBT;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAKlE;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC5C,OAAO,EAAE,cAAc,EACvB,QAAQ,GAAE,MAAoC,GAC5C,OAAO,CAAC,sBAAsB,CAAC,CAoCjC;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC5C,QAAQ,EAAE,cAAc,EAAE,EAC1B,QAAQ,GAAE,MAAoC,GAC5C,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC,CA2D9C;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CACjC,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,GAC/C,IAAI,CAMN"}
1
+ {"version":3,"file":"proactive-refresh.d.ts","sourceRoot":"","sources":["../../lib/proactive-refresh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C,4EAA4E;AAC5E,eAAO,MAAM,2BAA2B,QAAgB,CAAC;AAEzD,mEAAmE;AACnE,eAAO,MAAM,uBAAuB,QAAY,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,MAAM,EAAE,YAAY,GAAG,kBAAkB,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACvC,OAAO,EAAE,cAAc,EACvB,QAAQ,GAAE,MAAoC,GAC5C,OAAO,CAsBT;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAKlE;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC5C,OAAO,EAAE,cAAc,EACvB,QAAQ,GAAE,MAAoC,GAC5C,OAAO,CAAC,sBAAsB,CAAC,CAoCjC;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC5C,QAAQ,EAAE,cAAc,EAAE,EAC1B,QAAQ,GAAE,MAAoC,GAC5C,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC,CA2D9C;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CACjC,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,GAC/C,IAAI,CAMN"}
@@ -24,14 +24,16 @@ export const MIN_PROACTIVE_BUFFER_MS = 30 * 1000;
24
24
  * @returns True if token is approaching expiry and should be refreshed
25
25
  */
26
26
  export function shouldRefreshProactively(account, bufferMs = DEFAULT_PROACTIVE_BUFFER_MS) {
27
+ // No access token - definitely needs refresh. Checked BEFORE the expiry
28
+ // guard: an account with a refresh token but neither access token nor
29
+ // expiry would otherwise never refresh proactively.
30
+ if (!account.access) {
31
+ return true;
32
+ }
27
33
  // No expiry set - can't determine if refresh is needed
28
34
  if (account.expires === undefined) {
29
35
  return false;
30
36
  }
31
- // No access token - definitely needs refresh
32
- if (!account.access) {
33
- return true;
34
- }
35
37
  // Clamp buffer to minimum
36
38
  const safeBufferMs = Math.max(MIN_PROACTIVE_BUFFER_MS, bufferMs);
37
39
  // Check if token expires within buffer window
@@ -1 +1 @@
1
- {"version":3,"file":"proactive-refresh.js","sourceRoot":"","sources":["../../lib/proactive-refresh.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proactive-refresh.js","sourceRoot":"","sources":["../../lib/proactive-refresh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,MAAM,GAAG,GAAG,YAAY,CAAC,mBAAmB,CAAC,CAAC;AAE9C,4EAA4E;AAC5E,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAEzD,mEAAmE;AACnE,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,GAAG,IAAI,CAAC;AAYjD;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CACvC,OAAuB,EACvB,WAAmB,2BAA2B;IAE9C,wEAAwE;IACxE,sEAAsE;IACtE,oDAAoD;IACpD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,uDAAuD;IACvD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACd,CAAC;IAED,0BAA0B;IAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC;IAEjE,8CAA8C;IAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAClC,MAAM,gBAAgB,GAAG,SAAS,GAAG,YAAY,CAAC;IAElD,OAAO,GAAG,IAAI,gBAAgB,CAAC;AAChC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAuB;IACzD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,QAAQ,CAAC;IACjB,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC5C,OAAuB,EACvB,WAAmB,2BAA2B;IAE9C,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;QAClD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAC3B,GAAG,CAAC,IAAI,CAAC,0DAA0D,EAAE;YACpE,YAAY,EAAE,OAAO,CAAC,KAAK;SAC3B,CAAC,CAAC;QACH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;IACzD,CAAC;IAED,MAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACpD,GAAG,CAAC,IAAI,CAAC,8BAA8B,EAAE;QACxC,YAAY,EAAE,OAAO,CAAC,KAAK;QAC3B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,eAAe;QAC5B,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC;KACrD,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,GAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE;YACvC,YAAY,EAAE,OAAO,CAAC,KAAK;YAC3B,KAAK,EAAE,OAAO,CAAC,KAAK;SACpB,CAAC,CAAC;QACH,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACpE,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE;QACpC,YAAY,EAAE,OAAO,CAAC,KAAK;QAC3B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,aAAa,EAAE,MAAM,CAAC,MAAM;KAC5B,CAAC,CAAC;IACH,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACnE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC5C,QAA0B,EAC1B,WAAmB,2BAA2B;IAE9C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkC,CAAC;IAC1D,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/C,wBAAwB,CAAC,CAAC,EAAE,QAAQ,CAAC,CACrC,CAAC;IAEF,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,GAAG,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAChD,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,0BAA0B,iBAAiB,CAAC,MAAM,aAAa,CAAC,CAAC;IAE1E,qCAAqC;IACrC,MAAM,eAAe,GAAG,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAC/D,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAChE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,GAAG,CAAC,KAAK,CAAC,8CAA8C,EAAE;gBACzD,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,KAAK,EAAE,YAAY;aACnB,CAAC,CAAC;YACH,MAAM,eAAe,GAA2B;gBAC/C,SAAS,EAAE,KAAK;gBAChB,MAAM,EAAE,WAAW;gBACnB,YAAY;aACZ,CAAC;YACF,OAAO;gBACN,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,eAAe;aACvB,CAAC;QACH,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAEpD,KAAK,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,cAAc;IACd,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CACpD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAC7B,CAAC,MAAM,CAAC;IACT,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CACjD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAC5B,CAAC,MAAM,CAAC;IAET,IAAI,SAAS,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,GAAG,CAAC,IAAI,CAAC,4BAA4B,EAAE;YACtC,KAAK,EAAE,iBAAiB,CAAC,MAAM;YAC/B,SAAS;YACT,MAAM;SACN,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CACjC,OAAuB,EACvB,MAAiD;IAEjD,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/B,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IACjC,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC;QAC7C,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC;IACvC,CAAC;AACF,CAAC"}
@@ -61,6 +61,15 @@ export declare class RefreshQueue {
61
61
  * Format: oldToken → newToken
62
62
  */
63
63
  private tokenRotationMap;
64
+ /**
65
+ * Successful results of recently-SETTLED rotations, keyed by the consumed
66
+ * (pre-rotation) token. The in-flight dedup above only protects callers
67
+ * that arrive while the refresh is pending; a sibling that captured the
68
+ * old token just before rotation and calls refresh() after the first
69
+ * refresh settles would otherwise burn the single-use token and take a
70
+ * spurious 401. Entries live for `maxEntryAgeMs`, same as pending entries.
71
+ */
72
+ private recentRotations;
64
73
  /**
65
74
  * Maximum time to keep a refresh entry in the queue (prevents memory leaks
66
75
  * from stuck requests). After this timeout, the entry is removed and new
@@ -1 +1 @@
1
- {"version":3,"file":"refresh-queue.d.ts","sourceRoot":"","sources":["../../lib/refresh-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAa9C,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;CAChB;AAkBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,OAAO,CAA+C;IAE9D;;;;OAIG;IACH,OAAO,CAAC,gBAAgB,CAAkC;IAE1D;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC;;;OAGG;gBACS,aAAa,GAAE,MAAe;IAI1C;;;;;;;;OAQG;IACG,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAiDzD,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,sBAAsB;YAShB,kCAAkC;IAehD;;OAEG;YACW,cAAc;IAgD5B;;;OAGG;IACH,OAAO,CAAC,OAAO;IAuBf;;;;OAIG;IACH,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI3C;;;OAGG;IACH,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb,kBAAkB,IAAI,mBAAmB;CAM1C;AAQD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,YAAY,CAKpE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAGxC;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAE9E;AAED,wBAAgB,sBAAsB,IAAI,mBAAmB,CAE5D"}
1
+ {"version":3,"file":"refresh-queue.d.ts","sourceRoot":"","sources":["../../lib/refresh-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAa9C,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;CAChB;AAkBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,OAAO,CAA+C;IAE9D;;;;OAIG;IACH,OAAO,CAAC,gBAAgB,CAAkC;IAE1D;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe,CACX;IAEZ;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC;;;OAGG;gBACS,aAAa,GAAE,MAAe;IAI1C;;;;;;;;OAQG;IACG,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IA4DzD,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,sBAAsB;YAShB,kCAAkC;IAmBhD;;OAEG;YACW,cAAc;IAgD5B;;;OAGG;IACH,OAAO,CAAC,OAAO;IA6Bf;;;;OAIG;IACH,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI3C;;;OAGG;IACH,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb,kBAAkB,IAAI,mBAAmB;CAM1C;AAQD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,YAAY,CAKpE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAGxC;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAE9E;AAED,wBAAgB,sBAAsB,IAAI,mBAAmB,CAE5D"}
@@ -65,6 +65,15 @@ export class RefreshQueue {
65
65
  * Format: oldToken → newToken
66
66
  */
67
67
  tokenRotationMap = new Map();
68
+ /**
69
+ * Successful results of recently-SETTLED rotations, keyed by the consumed
70
+ * (pre-rotation) token. The in-flight dedup above only protects callers
71
+ * that arrive while the refresh is pending; a sibling that captured the
72
+ * old token just before rotation and calls refresh() after the first
73
+ * refresh settles would otherwise burn the single-use token and take a
74
+ * spurious 401. Entries live for `maxEntryAgeMs`, same as pending entries.
75
+ */
76
+ recentRotations = new Map();
68
77
  /**
69
78
  * Maximum time to keep a refresh entry in the queue (prevents memory leaks
70
79
  * from stuck requests). After this timeout, the entry is removed and new
@@ -100,6 +109,16 @@ export class RefreshQueue {
100
109
  });
101
110
  return existing.promise;
102
111
  }
112
+ // A refresh with this exact token already rotated and settled moments
113
+ // ago: hand back that result instead of re-consuming a single-use token.
114
+ const recentRotation = this.recentRotations.get(refreshToken);
115
+ if (recentRotation) {
116
+ this.metrics.rotationReused += 1;
117
+ log.info("Reusing settled rotation result for consumed token", {
118
+ ageMs: Date.now() - recentRotation.settledAt,
119
+ });
120
+ return recentRotation.result;
121
+ }
103
122
  // Check if this token was rotated FROM another token that's still refreshing
104
123
  // This handles: Request A starts with oldToken, gets newToken, Request B arrives with newToken
105
124
  const rotatedFrom = this.findOriginalToken(refreshToken);
@@ -151,6 +170,10 @@ export class RefreshQueue {
151
170
  const result = await this.executeRefresh(refreshToken);
152
171
  if (result.type === "success" && result.refresh !== refreshToken) {
153
172
  this.tokenRotationMap.set(refreshToken, result.refresh);
173
+ this.recentRotations.set(refreshToken, {
174
+ result,
175
+ settledAt: Date.now(),
176
+ });
154
177
  this.metrics.rotated += 1;
155
178
  log.info("Token rotated during refresh", {
156
179
  oldTokenSuffix: refreshToken.slice(-6),
@@ -230,6 +253,11 @@ export class RefreshQueue {
230
253
  this.pending.delete(token);
231
254
  }
232
255
  this.metrics.pending = this.pending.size;
256
+ for (const [token, entry] of this.recentRotations.entries()) {
257
+ if (now - entry.settledAt > this.maxEntryAgeMs) {
258
+ this.recentRotations.delete(token);
259
+ }
260
+ }
233
261
  }
234
262
  /**
235
263
  * Check if there's an in-flight refresh for a given token.
@@ -252,6 +280,7 @@ export class RefreshQueue {
252
280
  clear() {
253
281
  this.pending.clear();
254
282
  this.tokenRotationMap.clear();
283
+ this.recentRotations.clear();
255
284
  this.metrics = createInitialMetrics();
256
285
  }
257
286
  getMetricsSnapshot() {
@@ -1 +1 @@
1
- {"version":3,"file":"refresh-queue.js","sourceRoot":"","sources":["../../lib/refresh-queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"refresh-queue.js","sourceRoot":"","sources":["../../lib/refresh-queue.ts"],"names":[],"mappings":"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"}