@cortexkit/antigravity-auth-core 1.1.0 → 2.0.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 (105) hide show
  1. package/dist/account-manager.d.ts +325 -0
  2. package/dist/account-manager.d.ts.map +1 -0
  3. package/dist/account-manager.js +1480 -0
  4. package/dist/account-manager.js.map +1 -0
  5. package/dist/account-storage.d.ts +162 -0
  6. package/dist/account-storage.d.ts.map +1 -0
  7. package/dist/account-storage.js +635 -0
  8. package/dist/account-storage.js.map +1 -0
  9. package/dist/account-types.d.ts +155 -0
  10. package/dist/account-types.d.ts.map +1 -0
  11. package/dist/account-types.js +9 -0
  12. package/dist/account-types.js.map +1 -0
  13. package/dist/agy-request-metadata.d.ts +12 -5
  14. package/dist/agy-request-metadata.d.ts.map +1 -1
  15. package/dist/agy-request-metadata.js +64 -38
  16. package/dist/agy-request-metadata.js.map +1 -1
  17. package/dist/agy-transport.d.ts +2 -2
  18. package/dist/agy-transport.d.ts.map +1 -1
  19. package/dist/agy-transport.js +87 -74
  20. package/dist/agy-transport.js.map +1 -1
  21. package/dist/antigravity/oauth.d.ts +3 -2
  22. package/dist/antigravity/oauth.d.ts.map +1 -1
  23. package/dist/antigravity/oauth.js +65 -55
  24. package/dist/antigravity/oauth.js.map +1 -1
  25. package/dist/atomic-write.d.ts +23 -0
  26. package/dist/atomic-write.d.ts.map +1 -0
  27. package/dist/atomic-write.js +47 -0
  28. package/dist/atomic-write.js.map +1 -0
  29. package/dist/auth-types.d.ts +12 -2
  30. package/dist/auth-types.d.ts.map +1 -1
  31. package/dist/auth.d.ts +1 -1
  32. package/dist/auth.d.ts.map +1 -1
  33. package/dist/auth.js +9 -6
  34. package/dist/auth.js.map +1 -1
  35. package/dist/constants.d.ts +19 -12
  36. package/dist/constants.d.ts.map +1 -1
  37. package/dist/constants.js +51 -39
  38. package/dist/constants.js.map +1 -1
  39. package/dist/fetch-timeout.d.ts +26 -0
  40. package/dist/fetch-timeout.d.ts.map +1 -0
  41. package/dist/fetch-timeout.js +43 -0
  42. package/dist/fetch-timeout.js.map +1 -0
  43. package/dist/file-lock.d.ts +79 -0
  44. package/dist/file-lock.d.ts.map +1 -0
  45. package/dist/file-lock.js +438 -0
  46. package/dist/file-lock.js.map +1 -0
  47. package/dist/fingerprint.d.ts +9 -3
  48. package/dist/fingerprint.d.ts.map +1 -1
  49. package/dist/fingerprint.js +28 -20
  50. package/dist/fingerprint.js.map +1 -1
  51. package/dist/index.d.ts +23 -13
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +18 -9
  54. package/dist/index.js.map +1 -1
  55. package/dist/logger.d.ts +1 -1
  56. package/dist/logger.d.ts.map +1 -1
  57. package/dist/logger.js +10 -10
  58. package/dist/logger.js.map +1 -1
  59. package/dist/model-registry.d.ts +5 -5
  60. package/dist/model-registry.d.ts.map +1 -1
  61. package/dist/model-registry.js +119 -107
  62. package/dist/model-registry.js.map +1 -1
  63. package/dist/project.d.ts +4 -1
  64. package/dist/project.d.ts.map +1 -1
  65. package/dist/project.js +84 -31
  66. package/dist/project.js.map +1 -1
  67. package/dist/quota-manager.d.ts +203 -0
  68. package/dist/quota-manager.d.ts.map +1 -0
  69. package/dist/quota-manager.js +718 -0
  70. package/dist/quota-manager.js.map +1 -0
  71. package/dist/quota-types.d.ts +68 -0
  72. package/dist/quota-types.d.ts.map +1 -0
  73. package/dist/quota-types.js +50 -0
  74. package/dist/quota-types.js.map +1 -0
  75. package/dist/rotation.d.ts +175 -0
  76. package/dist/rotation.d.ts.map +1 -0
  77. package/dist/rotation.js +391 -0
  78. package/dist/rotation.js.map +1 -0
  79. package/dist/transform/claude.d.ts +1 -1
  80. package/dist/transform/claude.d.ts.map +1 -1
  81. package/dist/transform/claude.js +63 -41
  82. package/dist/transform/claude.js.map +1 -1
  83. package/dist/transform/cross-model-sanitizer.d.ts +1 -1
  84. package/dist/transform/cross-model-sanitizer.d.ts.map +1 -1
  85. package/dist/transform/cross-model-sanitizer.js +19 -16
  86. package/dist/transform/cross-model-sanitizer.js.map +1 -1
  87. package/dist/transform/gemini.d.ts +1 -1
  88. package/dist/transform/gemini.d.ts.map +1 -1
  89. package/dist/transform/gemini.js +111 -85
  90. package/dist/transform/gemini.js.map +1 -1
  91. package/dist/transform/index.d.ts +9 -9
  92. package/dist/transform/index.d.ts.map +1 -1
  93. package/dist/transform/index.js +6 -6
  94. package/dist/transform/index.js.map +1 -1
  95. package/dist/transform/model-resolver.d.ts +5 -5
  96. package/dist/transform/model-resolver.d.ts.map +1 -1
  97. package/dist/transform/model-resolver.js +97 -75
  98. package/dist/transform/model-resolver.js.map +1 -1
  99. package/dist/transform/types.d.ts +5 -5
  100. package/dist/transform/types.d.ts.map +1 -1
  101. package/dist/version.d.ts +1 -1
  102. package/dist/version.d.ts.map +1 -1
  103. package/dist/version.js +14 -16
  104. package/dist/version.js.map +1 -1
  105. package/package.json +16 -10
@@ -1 +1 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAe9E,UAAU,mBAAmB;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kCAAkC,CAAC,EAAE,OAAO,CAAC;CAC9C;AAED,UAAU,qBAAqB;IAC7B,uBAAuB,CAAC,EAAE,MAAM,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,WAAW,CAAC,EAAE;QACZ,EAAE,CAAC,EAAE,MAAM,CAAC;KACb,CAAC;IACF,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACtC;AAkED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAUpE;AAED,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CA+BvC;AAGD;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,SAAK,EACb,OAAO,SAAO,GACb,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA6C7B;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA4GhG"}
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AA6B7E,UAAU,mBAAmB;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,kCAAkC,CAAC,EAAE,OAAO,CAAA;CAC7C;AAED,UAAU,qBAAqB;IAC7B,uBAAuB,CAAC,EAAE,MAAM,GAAG;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAClD,WAAW,CAAC,EAAE;QACZ,EAAE,CAAC,EAAE,MAAM,CAAA;KACZ,CAAA;IACD,QAAQ,CAAC,EACL,MAAM,GACN;QACE,EAAE,CAAC,EAAE,MAAM,CAAA;KACZ,CAAA;IACL,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAA;CACrC;AAoFD;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAYpE;AAED,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAoCvC;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,SAAK,EACb,OAAO,SAAO,GACb,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAoD7B;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,oBAAoB,CAAC,CAqJ/B"}
package/dist/project.js CHANGED
@@ -1,9 +1,9 @@
1
- import { ANTIGRAVITY_ENDPOINT_FALLBACKS, ANTIGRAVITY_LOAD_ENDPOINTS, ANTIGRAVITY_ENDPOINT_PROD, ANTIGRAVITY_DEFAULT_PROJECT_ID, } from "./constants.js";
2
1
  import { fetchWithAgyCliTransport } from "./agy-transport.js";
3
2
  import { formatRefreshParts, parseRefreshParts } from "./auth.js";
3
+ import { ANTIGRAVITY_DEFAULT_PROJECT_ID, ANTIGRAVITY_ENDPOINT_FALLBACKS, ANTIGRAVITY_ENDPOINT_PROD, ANTIGRAVITY_LOAD_ENDPOINTS, } from "./constants.js";
4
4
  import { buildAntigravityHarnessBootstrapHeaders, buildAntigravityLoadCodeAssistMetadata, } from "./fingerprint.js";
5
5
  import { createLogger } from "./logger.js";
6
- const log = createLogger("project");
6
+ const log = createLogger('project');
7
7
  /** TTL for project context cache entries (30 minutes). */
8
8
  const PROJECT_CONTEXT_CACHE_TTL_MS = 30 * 60 * 1000;
9
9
  const projectContextResultCache = new Map();
@@ -33,7 +33,7 @@ function getDefaultTierId(allowedTiers) {
33
33
  * Promise-based delay utility.
34
34
  */
35
35
  function wait(ms) {
36
- return new Promise(function (resolve) {
36
+ return new Promise((resolve) => {
37
37
  setTimeout(resolve, ms);
38
38
  });
39
39
  }
@@ -44,20 +44,28 @@ function extractManagedProjectId(payload) {
44
44
  if (!payload) {
45
45
  return undefined;
46
46
  }
47
- if (typeof payload.cloudaicompanionProject === "string") {
47
+ if (typeof payload.cloudaicompanionProject === 'string') {
48
48
  return payload.cloudaicompanionProject;
49
49
  }
50
- if (payload.cloudaicompanionProject && typeof payload.cloudaicompanionProject.id === "string") {
50
+ if (payload.cloudaicompanionProject &&
51
+ typeof payload.cloudaicompanionProject.id === 'string') {
51
52
  return payload.cloudaicompanionProject.id;
52
53
  }
53
54
  return undefined;
54
55
  }
55
56
  /**
56
- * Generates a cache key for project context based on refresh token.
57
+ * Generates a stable cache key from the OAuth refresh token itself. Packed
58
+ * project fields may change after discovery, but they still identify the same
59
+ * credential and must hit the same project-context cache entry.
57
60
  */
61
+ function getCacheKeyFromRefresh(refresh) {
62
+ const packedRefresh = refresh?.trim();
63
+ if (!packedRefresh)
64
+ return undefined;
65
+ return parseRefreshParts(packedRefresh).refreshToken.trim() || packedRefresh;
66
+ }
58
67
  function getCacheKey(auth) {
59
- const refresh = auth.refresh?.trim();
60
- return refresh ? refresh : undefined;
68
+ return getCacheKeyFromRefresh(auth.refresh);
61
69
  }
62
70
  /**
63
71
  * Clears cached project context results and pending promises, globally or for a refresh key.
@@ -69,9 +77,12 @@ export function invalidateProjectContextCache(refresh) {
69
77
  provisionFailedKeys.clear();
70
78
  return;
71
79
  }
72
- projectContextPendingCache.delete(refresh);
73
- projectContextResultCache.delete(refresh);
74
- provisionFailedKeys.delete(refresh);
80
+ const cacheKey = getCacheKeyFromRefresh(refresh);
81
+ if (!cacheKey)
82
+ return;
83
+ projectContextPendingCache.delete(cacheKey);
84
+ projectContextResultCache.delete(cacheKey);
85
+ provisionFailedKeys.delete(cacheKey);
75
86
  }
76
87
  export function clearProvisionFailedKeys() {
77
88
  provisionFailedKeys.clear();
@@ -82,11 +93,14 @@ export function clearProvisionFailedKeys() {
82
93
  export async function loadManagedProject(accessToken, _projectId) {
83
94
  const requestBody = buildBootstrapRequestBody();
84
95
  const loadHeaders = buildAntigravityHarnessBootstrapHeaders(accessToken);
85
- const loadEndpoints = Array.from(new Set([...ANTIGRAVITY_LOAD_ENDPOINTS, ...ANTIGRAVITY_ENDPOINT_FALLBACKS]));
96
+ const loadEndpoints = Array.from(new Set([
97
+ ...ANTIGRAVITY_LOAD_ENDPOINTS,
98
+ ...ANTIGRAVITY_ENDPOINT_FALLBACKS,
99
+ ]));
86
100
  for (const baseEndpoint of loadEndpoints) {
87
101
  try {
88
102
  const response = await fetchWithAgyCliTransport(`${baseEndpoint}/v1internal:loadCodeAssist`, {
89
- method: "POST",
103
+ method: 'POST',
90
104
  headers: loadHeaders,
91
105
  body: JSON.stringify(requestBody),
92
106
  });
@@ -96,8 +110,10 @@ export async function loadManagedProject(accessToken, _projectId) {
96
110
  return (await response.json());
97
111
  }
98
112
  catch (error) {
99
- log.debug("Failed to load managed project", { endpoint: baseEndpoint, error: String(error) });
100
- continue;
113
+ log.debug('Failed to load managed project', {
114
+ endpoint: baseEndpoint,
115
+ error: String(error),
116
+ });
101
117
  }
102
118
  }
103
119
  return null;
@@ -107,17 +123,21 @@ export async function loadManagedProject(accessToken, _projectId) {
107
123
  */
108
124
  export async function onboardManagedProject(accessToken, tierId, projectId, attempts = 10, delayMs = 5000) {
109
125
  const requestBody = { tierId };
110
- const onboardEndpoints = Array.from(new Set([ANTIGRAVITY_ENDPOINT_PROD, ...ANTIGRAVITY_LOAD_ENDPOINTS, ...ANTIGRAVITY_ENDPOINT_FALLBACKS]));
126
+ const onboardEndpoints = Array.from(new Set([
127
+ ANTIGRAVITY_ENDPOINT_PROD,
128
+ ...ANTIGRAVITY_LOAD_ENDPOINTS,
129
+ ...ANTIGRAVITY_ENDPOINT_FALLBACKS,
130
+ ]));
111
131
  for (const baseEndpoint of onboardEndpoints) {
112
132
  for (let attempt = 0; attempt < attempts; attempt += 1) {
113
133
  try {
114
134
  const response = await fetchWithAgyCliTransport(`${baseEndpoint}/v1internal:onboardUser`, {
115
- method: "POST",
135
+ method: 'POST',
116
136
  headers: buildAntigravityHarnessBootstrapHeaders(accessToken),
117
137
  body: JSON.stringify(requestBody),
118
138
  });
119
139
  if (!response.ok) {
120
- log.debug("Onboard request failed", {
140
+ log.debug('Onboard request failed', {
121
141
  endpoint: baseEndpoint,
122
142
  status: response.status,
123
143
  statusText: response.statusText,
@@ -134,7 +154,10 @@ export async function onboardManagedProject(accessToken, tierId, projectId, atte
134
154
  }
135
155
  }
136
156
  catch (error) {
137
- log.debug("Failed to onboard managed project", { endpoint: baseEndpoint, error: String(error) });
157
+ log.debug('Failed to onboard managed project', {
158
+ endpoint: baseEndpoint,
159
+ error: String(error),
160
+ });
138
161
  break;
139
162
  }
140
163
  await wait(delayMs);
@@ -148,12 +171,12 @@ export async function onboardManagedProject(accessToken, tierId, projectId, atte
148
171
  export async function ensureProjectContext(auth) {
149
172
  const accessToken = auth.access;
150
173
  if (!accessToken) {
151
- return { auth, effectiveProjectId: "" };
174
+ return { auth, effectiveProjectId: '' };
152
175
  }
153
176
  const cacheKey = getCacheKey(auth);
154
177
  if (cacheKey) {
155
178
  const cached = projectContextResultCache.get(cacheKey);
156
- if (cached && (Date.now() - cached.cachedAt) < PROJECT_CONTEXT_CACHE_TTL_MS) {
179
+ if (cached && Date.now() - cached.cachedAt < PROJECT_CONTEXT_CACHE_TTL_MS) {
157
180
  return cached.result;
158
181
  }
159
182
  if (cached) {
@@ -175,7 +198,7 @@ export async function ensureProjectContext(auth) {
175
198
  const effectiveProjectId = parts.projectId || fallbackProjectId;
176
199
  return { auth, effectiveProjectId };
177
200
  }
178
- const persistManagedProject = async (managedProjectId) => {
201
+ const persistManagedProject = async (managedProjectId, capturedTier) => {
179
202
  const updatedAuth = {
180
203
  ...auth,
181
204
  refresh: formatRefreshParts({
@@ -184,34 +207,64 @@ export async function ensureProjectContext(auth) {
184
207
  managedProjectId,
185
208
  }),
186
209
  };
187
- return { auth: updatedAuth, effectiveProjectId: managedProjectId };
210
+ return {
211
+ auth: updatedAuth,
212
+ effectiveProjectId: managedProjectId,
213
+ capturedTier,
214
+ };
188
215
  };
189
216
  // Try to resolve a managed project from Antigravity if possible.
190
217
  const loadPayload = await loadManagedProject(accessToken, parts.projectId ?? fallbackProjectId);
218
+ // Capture tier from the loadCodeAssist payload. The raw id is stored
219
+ // as-is; absent payload or missing tier leaves capturedTier undefined.
220
+ const capturedTierId = loadPayload?.currentTier?.id;
221
+ const paidTierId = typeof loadPayload?.paidTier === 'string'
222
+ ? loadPayload.paidTier
223
+ : loadPayload?.paidTier?.id;
224
+ const tierFromPayload = capturedTierId
225
+ ? {
226
+ id: capturedTierId,
227
+ ...(paidTierId ? { paidId: paidTierId } : {}),
228
+ capturedAt: Date.now(),
229
+ }
230
+ : undefined;
191
231
  const resolvedManagedProjectId = extractManagedProjectId(loadPayload);
192
232
  if (resolvedManagedProjectId) {
193
- return persistManagedProject(resolvedManagedProjectId);
233
+ return persistManagedProject(resolvedManagedProjectId, tierFromPayload);
194
234
  }
195
235
  // No managed project found - try to auto-provision one via onboarding.
196
236
  // This handles accounts that were added before managed project provisioning was required.
197
- const tierId = getDefaultTierId(loadPayload?.allowedTiers) ?? "free-tier";
198
- log.debug("Auto-provisioning managed project", { tierId, projectId: parts.projectId });
237
+ const tierId = getDefaultTierId(loadPayload?.allowedTiers) ?? 'free-tier';
238
+ log.debug('Auto-provisioning managed project', {
239
+ tierId,
240
+ projectId: parts.projectId,
241
+ });
199
242
  const provisionedProjectId = await onboardManagedProject(accessToken, tierId, parts.projectId);
200
243
  if (provisionedProjectId) {
201
- log.debug("Successfully provisioned managed project", { provisionedProjectId });
202
- return persistManagedProject(provisionedProjectId);
244
+ log.debug('Successfully provisioned managed project', {
245
+ provisionedProjectId,
246
+ });
247
+ return persistManagedProject(provisionedProjectId, tierFromPayload);
203
248
  }
204
- log.warn("Failed to provision managed project - account may not work correctly", {
249
+ log.warn('Failed to provision managed project - account may not work correctly', {
205
250
  hasProjectId: !!parts.projectId,
206
251
  });
207
252
  if (cacheKey) {
208
253
  provisionFailedKeys.add(cacheKey);
209
254
  }
210
255
  if (parts.projectId) {
211
- return { auth, effectiveProjectId: parts.projectId };
256
+ return {
257
+ auth,
258
+ effectiveProjectId: parts.projectId,
259
+ capturedTier: tierFromPayload,
260
+ };
212
261
  }
213
262
  // No project id present in auth; fall back to the hardcoded id for requests.
214
- return { auth, effectiveProjectId: fallbackProjectId };
263
+ return {
264
+ auth,
265
+ effectiveProjectId: fallbackProjectId,
266
+ capturedTier: tierFromPayload,
267
+ };
215
268
  };
216
269
  if (!cacheKey) {
217
270
  return resolveContext();
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,203 @@
1
+ /**
2
+ * Harness-agnostic attributed quota manager.
3
+ *
4
+ * Owns the per-account quota cache, in-flight de-duplication, and exponential
5
+ * backoff that backgrounds proactive quota refreshes. The manager has no host
6
+ * dependencies — harnesses supply a `fetchAccountQuota` callback that returns
7
+ * the already-attributed `AccountQuotaResult` (with `index`, `email`,
8
+ * `updatedAccount`, etc.) so core stays harness-agnostic.
9
+ *
10
+ * Manual quota dialogs must force a refresh even when background refresh is
11
+ * backed off; proactive refreshes must dedupe by stable account identity and
12
+ * respect backoff. Account identity is supplied via `keyOf` so reorders/
13
+ * removals of the underlying array do not invalidate cache entries.
14
+ */
15
+ import type { AccountMetadataV3 } from './account-types.ts';
16
+ import type { AccountQuotaResult, GeminiCliQuotaSummary, QuotaGroup, QuotaSummary } from './quota-types.ts';
17
+ export declare const QUOTA_MANAGER_DEFAULT_BASE_BACKOFF_MS = 30000;
18
+ export declare const QUOTA_MANAGER_DEFAULT_MAX_BACKOFF_MS: number;
19
+ export declare const QUOTA_MANAGER_DEFAULT_TIMEOUT_MS = 10000;
20
+ /**
21
+ * Signature for the harness-supplied quota fetch callback.
22
+ *
23
+ * `index`/`email`/`updatedAccount` come from the harness — the manager
24
+ * preserves the harness's attribution and only injects status/error info
25
+ * for disabled accounts and failed fetches.
26
+ */
27
+ export type FetchAccountQuota = (account: AccountMetadataV3, signal: AbortSignal) => Promise<AccountQuotaResult>;
28
+ export interface QuotaManagerOptions {
29
+ fetchAccountQuota: FetchAccountQuota;
30
+ /**
31
+ * Stable identity for an account. Used as cache key + backoff key. Should
32
+ * NOT be the array index — reorders and removals would otherwise corrupt
33
+ * cached state. The harness can hash the refresh token or compose email +
34
+ * a refresh-token fallback.
35
+ */
36
+ keyOf: (account: AccountMetadataV3) => string;
37
+ now?: () => number;
38
+ baseBackoffMs?: number;
39
+ maxBackoffMs?: number;
40
+ /** Per-fetch active timeout for the harness callback. */
41
+ fetchTimeoutMs?: number;
42
+ }
43
+ export interface RefreshAccountOptions {
44
+ /** Position of the account in the harness-visible array. Preserved on result. */
45
+ index: number;
46
+ /** Bypass backoff (used by manual quota dialogs). */
47
+ force?: boolean;
48
+ }
49
+ export interface RefreshAccountsOptions {
50
+ indexFor: (account: AccountMetadataV3) => number;
51
+ force?: boolean;
52
+ }
53
+ export interface QuotaManager {
54
+ refreshAccount(account: AccountMetadataV3, options: RefreshAccountOptions): Promise<AccountQuotaResult>;
55
+ refreshAccounts(accounts: AccountMetadataV3[], options: RefreshAccountsOptions): Promise<AccountQuotaResult[]>;
56
+ getCached(account: AccountMetadataV3): AccountQuotaResult | undefined;
57
+ getBackoffUntil(account: AccountMetadataV3): number;
58
+ /** Stable hash for an account, used for log labels. */
59
+ hashedLogLabel(prefix: string, account: AccountMetadataV3 | string): string;
60
+ /**
61
+ * Await any in-flight refresh, then cancel and reject subsequent
62
+ * refreshes. Returns a promise so a lifecycle producer can fence its
63
+ * fire-and-forget sidebar writes: awaiting `dispose()` guarantees no
64
+ * refresh is still mid-flight (and therefore cannot enqueue a write)
65
+ * once it resolves.
66
+ */
67
+ dispose(): Promise<void>;
68
+ /** Pure helpers exposed for tests and adapter wiring. */
69
+ classifyQuotaGroup: typeof classifyQuotaGroup;
70
+ aggregateQuota: typeof aggregateQuota;
71
+ aggregateGeminiCliQuota: typeof aggregateGeminiCliQuota;
72
+ }
73
+ /**
74
+ * Default keyOf — prefers email, falls back to refresh-token hash so the
75
+ * same identity is keyed even when emails are missing.
76
+ */
77
+ export declare function defaultKeyOf(account: AccountMetadataV3): string;
78
+ export declare function createQuotaManager(options: QuotaManagerOptions): QuotaManager;
79
+ /**
80
+ * Classify a model into its quota group.
81
+ */
82
+ export declare function classifyQuotaGroup(modelName: string, displayName?: string): QuotaGroup | null;
83
+ export interface FetchAvailableModelEntry {
84
+ quotaInfo?: {
85
+ remainingFraction?: number;
86
+ resetTime?: string;
87
+ };
88
+ displayName?: string;
89
+ modelName?: string;
90
+ }
91
+ /**
92
+ * Aggregate per-model quota entries into group summaries + per-model list.
93
+ *
94
+ * Pure helper — exposed for harness adapters that want to reuse the same
95
+ * aggregation logic without re-implementing it.
96
+ */
97
+ export declare function aggregateQuota(models?: Record<string, FetchAvailableModelEntry>): QuotaSummary;
98
+ export interface RetrieveUserQuotaBucket {
99
+ remainingAmount?: string;
100
+ remainingFraction?: number;
101
+ resetTime?: string;
102
+ tokenType?: string;
103
+ modelId?: string;
104
+ }
105
+ export interface RetrieveUserQuotaResponse {
106
+ buckets?: RetrieveUserQuotaBucket[];
107
+ }
108
+ export interface FetchAvailableModelsResponse {
109
+ models?: Record<string, FetchAvailableModelEntry>;
110
+ }
111
+ export interface RetrieveUserQuotaSummaryBucket {
112
+ bucketId: string;
113
+ displayName: string;
114
+ window: 'weekly' | '5h';
115
+ resetTime: string;
116
+ remainingFraction: number;
117
+ description?: string;
118
+ }
119
+ export interface RetrieveUserQuotaSummaryGroup {
120
+ displayName: string;
121
+ description?: string;
122
+ buckets: RetrieveUserQuotaSummaryBucket[];
123
+ }
124
+ export interface RetrieveUserQuotaSummaryResponse {
125
+ groups: RetrieveUserQuotaSummaryGroup[];
126
+ description?: string;
127
+ }
128
+ /**
129
+ * Aggregate a retrieveUserQuotaSummary response into a QuotaSummary.
130
+ *
131
+ * Each RUQS group maps to a pool via bucketId prefix. Within a pool,
132
+ * windows are stored shortest-first (5h before weekly, etc.). The pool's
133
+ * `remainingFraction`/`resetTime` derive from the most-constrained window.
134
+ */
135
+ export declare function aggregateQuotaSummary(response: RetrieveUserQuotaSummaryResponse): QuotaSummary;
136
+ export interface FetchQuotaSummaryOptions {
137
+ accessToken: string;
138
+ /** Managed project ID. Falls back to regular projectId on 403. */
139
+ managedProjectId?: string;
140
+ /** Regular project ID — used as fallback when managedProjectId is missing or returns 403. */
141
+ projectId?: string;
142
+ endpoints: readonly string[];
143
+ timeoutMs?: number;
144
+ userAgent?: string;
145
+ fetchVia?: (url: string, options: RequestInit, extra: {
146
+ timeoutMs: number;
147
+ signal?: AbortSignal | null;
148
+ }) => Promise<Response>;
149
+ }
150
+ export interface FetchQuotaSummaryResult {
151
+ summary: RetrieveUserQuotaSummaryResponse;
152
+ /** True when the result came from the legacy fallback path. */
153
+ fellBackToLegacy?: boolean;
154
+ }
155
+ /**
156
+ * Fetch the windowed quota summary via `retrieveUserQuotaSummary`.
157
+ *
158
+ * Uses the same transport/UA/timeout conventions as `fetchAvailableModels`.
159
+ * On a 429 or 5xx against one endpoint, falls through to the next entry
160
+ * in `options.endpoints` (matching the legacy fetchers' failover
161
+ * convention). On 403 with the managedProjectId, retries with the
162
+ * regular projectId. If that also 403s, falls back to
163
+ * `fetchAvailableModels` so quota never goes dark. On missing
164
+ * managedProjectId, tries projectId first.
165
+ */
166
+ export declare function fetchQuotaSummary(options: FetchQuotaSummaryOptions): Promise<FetchQuotaSummaryResult>;
167
+ /**
168
+ * Aggregate Gemini CLI quota buckets into a summary.
169
+ */
170
+ export declare function aggregateGeminiCliQuota(response: RetrieveUserQuotaResponse): GeminiCliQuotaSummary;
171
+ export interface FetchAvailableModelsOptions {
172
+ accessToken: string;
173
+ projectId: string;
174
+ endpoints: readonly string[];
175
+ timeoutMs?: number;
176
+ userAgent?: string;
177
+ /**
178
+ * Override the transport used for the probe. Defaults to
179
+ * `fetchWithActiveTimeout` so callers get the same stream-safe active-fetch
180
+ * timeout that the rest of the core uses.
181
+ */
182
+ fetchVia?: (url: string, options: RequestInit, extra: {
183
+ timeoutMs: number;
184
+ signal?: AbortSignal | null;
185
+ }) => Promise<Response>;
186
+ }
187
+ export declare function fetchAvailableModels(options: FetchAvailableModelsOptions): Promise<FetchAvailableModelsResponse>;
188
+ export interface FetchGeminiCliQuotaOptions {
189
+ accessToken: string;
190
+ projectId: string;
191
+ endpoints: readonly string[];
192
+ timeoutMs?: number;
193
+ userAgent?: string;
194
+ /**
195
+ * Optional transport override. Production callers omit this; the e2e
196
+ * harness and tests inject a stub. Mirrors `fetchQuotaSummary`'s seam.
197
+ */
198
+ fetchVia?: (url: string, options: RequestInit, extra: {
199
+ timeoutMs: number;
200
+ }) => Promise<Response>;
201
+ }
202
+ export declare function fetchGeminiCliQuota(options: FetchGeminiCliQuotaOptions): Promise<RetrieveUserQuotaResponse>;
203
+ //# sourceMappingURL=quota-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quota-manager.d.ts","sourceRoot":"","sources":["../src/quota-manager.ts"],"names":[],"mappings":"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"}