@eddyskywalker/dsh-chatgpt-subscription 0.2.10 → 0.2.11

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/lib/index.js CHANGED
@@ -3568,9 +3568,11 @@ const PROVIDER_ID = "antigravity";
3568
3568
  const STREAM_IDLE_TIMEOUT_MS = 3e5;
3569
3569
  const STREAM_IDLE_TIMEOUT_CODE = "LLM_STREAM_IDLE_TIMEOUT";
3570
3570
  const DISCOVERY_TIMEOUT_MS = 8e3;
3571
- const PROJECT_CACHE_TTL_MS = 1800 * 1e3;
3572
3571
  const OAUTH_CALLBACK_TIMEOUT_MS = 300 * 1e3;
3573
3572
  const ENDPOINT_FALLBACKS = ["https://daily-cloudcode-pa.googleapis.com", "https://cloudcode-pa.googleapis.com"];
3573
+ const FREE_TIER_ID = "free-tier";
3574
+ const ONBOARD_TIMEOUT_MS = 3e4;
3575
+ const ONBOARD_POLL_INTERVAL_MS = 1e3;
3574
3576
  const REDIRECT_PATH = "/oauth-callback";
3575
3577
  const AUTH_URL = "https://accounts.google.com/o/oauth2/v2/auth";
3576
3578
  const TOKEN_URL = "https://oauth2.googleapis.com/token";
@@ -4202,13 +4204,13 @@ var FileModelSettingsStore = class {
4202
4204
  return next;
4203
4205
  }
4204
4206
  };
4205
- //#endregion
4206
- //#region src/host/antigravity/client.ts
4207
- const projectCache = /* @__PURE__ */ new Map();
4208
4207
  let cachedQuota;
4208
+ let quotaFetchInFlight = null;
4209
4209
  const PLATFORM = process.platform === "darwin" ? "MACOS" : process.platform === "win32" ? "WINDOWS" : "LINUX";
4210
4210
  function defaultUserAgent() {
4211
- return `antigravity/1.15.8 ${process.platform === "darwin" ? "darwin" : process.platform === "win32" ? "windows" : "linux"}/${process.arch === "x64" ? "amd64" : process.arch}`;
4211
+ const version = process.env.DSH_ANTIGRAVITY_VERSION || "2.8.0";
4212
+ const cl = process.env.DSH_ANTIGRAVITY_CL || "963137146";
4213
+ return `antigravity/hub/${version} (aidev_client; os_type=${process.env.DSH_ANTIGRAVITY_OS || "darwin"}; arch=${process.env.DSH_ANTIGRAVITY_ARCH || "arm64"}; cl=${cl})`;
4212
4214
  }
4213
4215
  function antigravityHeaders(token) {
4214
4216
  return {
@@ -4254,50 +4256,97 @@ function extractProjectId(data) {
4254
4256
  }
4255
4257
  }
4256
4258
  }
4257
- async function listCloudAICompanionProjects(token, fetchFn = fetch) {
4259
+ async function loadCodeAssistDetail(token, fetchFn = fetch, signal) {
4260
+ const metadata = {
4261
+ ideType: "ANTIGRAVITY",
4262
+ platform: "PLATFORM_UNSPECIFIED",
4263
+ pluginType: "GEMINI"
4264
+ };
4258
4265
  for (const endpoint of endpointCandidates()) try {
4259
- const response = await fetchFn(`${endpoint}/v1internal:listCloudAICompanionProjects`, {
4266
+ const response = await fetchFn(`${endpoint}/v1internal:loadCodeAssist`, {
4260
4267
  method: "POST",
4261
- headers: antigravityHeaders(token),
4262
- body: JSON.stringify({}),
4263
- signal: AbortSignal.timeout(DISCOVERY_TIMEOUT_MS)
4268
+ headers: jsonHeaders(token),
4269
+ body: JSON.stringify({ metadata }),
4270
+ signal: signal ? AbortSignal.any([signal, AbortSignal.timeout(DISCOVERY_TIMEOUT_MS)]) : AbortSignal.timeout(DISCOVERY_TIMEOUT_MS)
4264
4271
  });
4265
4272
  if (!response.ok) continue;
4266
- return extractProjectId(await response.json());
4273
+ const data = await response.json();
4274
+ const projectId = extractProjectId(data);
4275
+ const allowedTiers = Array.isArray(data.allowedTiers) ? data.allowedTiers : [];
4276
+ const ineligibleTiers = Array.isArray(data.ineligibleTiers) ? data.ineligibleTiers : [];
4277
+ return {
4278
+ currentTier: data.currentTier || null,
4279
+ paidTier: data.paidTier || null,
4280
+ allowedTiers,
4281
+ ineligibleTiers,
4282
+ projectId,
4283
+ raw: data
4284
+ };
4267
4285
  } catch {}
4268
4286
  }
4269
- async function loadCodeAssist(token, fetchFn = fetch) {
4270
- const cached = projectCache.get(token);
4271
- if (cached && cached.expiresAt > Date.now()) return cached.projectId;
4272
- const body = JSON.stringify({ metadata: {
4273
- ideType: "ANTIGRAVITY",
4274
- platform: "PLATFORM_UNSPECIFIED",
4275
- pluginType: "GEMINI"
4276
- } });
4287
+ async function onboardUser(token, fetchFn = fetch, signal) {
4288
+ const deadline = Date.now() + ONBOARD_TIMEOUT_MS;
4289
+ const body = JSON.stringify({
4290
+ tierId: FREE_TIER_ID,
4291
+ metadata: { ideType: "ANTIGRAVITY" }
4292
+ });
4277
4293
  for (const endpoint of endpointCandidates()) try {
4278
- const response = await fetchFn(`${endpoint}/v1internal:loadCodeAssist`, {
4294
+ const remainingTime = Math.max(1e3, deadline - Date.now());
4295
+ const timeoutSignal = AbortSignal.timeout(remainingTime);
4296
+ const callSignal = signal ? AbortSignal.any([signal, timeoutSignal]) : timeoutSignal;
4297
+ const response = await fetchFn(`${endpoint}/v1internal:onboardUser`, {
4279
4298
  method: "POST",
4280
- headers: antigravityHeaders(token),
4299
+ headers: jsonHeaders(token),
4281
4300
  body,
4282
- signal: AbortSignal.timeout(DISCOVERY_TIMEOUT_MS)
4301
+ signal: callSignal
4283
4302
  });
4284
- if (!response.ok) continue;
4285
- const project = extractProjectId(await response.json());
4286
- if (project) {
4287
- projectCache.set(token, {
4288
- projectId: project,
4289
- expiresAt: Date.now() + PROJECT_CACHE_TTL_MS
4290
- });
4291
- return project;
4303
+ if (!response.ok) {
4304
+ const errorText = await response.text().catch(() => "");
4305
+ throw new Error(`onboardUser failed: ${response.status} ${response.statusText}: ${errorText}`);
4292
4306
  }
4293
- const listProj = await listCloudAICompanionProjects(token, fetchFn);
4294
- if (listProj) {
4295
- projectCache.set(token, {
4296
- projectId: listProj,
4297
- expiresAt: Date.now() + PROJECT_CACHE_TTL_MS
4307
+ let operation = await response.json();
4308
+ while (true) {
4309
+ if (operation.done === true) {
4310
+ if (operation.error) {
4311
+ const msg = operation.error.message || `Error code ${operation.error.code}`;
4312
+ throw new Error(`OnboardUser operation failed: ${msg}`);
4313
+ }
4314
+ return;
4315
+ }
4316
+ const waitMs = Math.min(ONBOARD_POLL_INTERVAL_MS, Math.max(100, deadline - Date.now()));
4317
+ if (Date.now() >= deadline) throw new Error(`onboardUser timed out after ${ONBOARD_TIMEOUT_MS}ms`);
4318
+ await new Promise((r) => setTimeout(r, waitMs));
4319
+ if (signal?.aborted) throw new Error("OAuth login cancelled");
4320
+ const operationName = operation.name || "";
4321
+ if (!operationName) throw new Error("onboardUser returned an operation without a name");
4322
+ const pollTime = Math.max(1e3, deadline - Date.now());
4323
+ const pollTimeoutSignal = AbortSignal.timeout(pollTime);
4324
+ const pollSignal = signal ? AbortSignal.any([signal, pollTimeoutSignal]) : pollTimeoutSignal;
4325
+ const pollResp = await fetchFn(`${endpoint}/v1internal/${operationName}`, {
4326
+ method: "GET",
4327
+ headers: jsonHeaders(token),
4328
+ signal: pollSignal
4298
4329
  });
4299
- return listProj;
4330
+ if (!pollResp.ok) {
4331
+ const pollErr = await pollResp.text().catch(() => "");
4332
+ throw new Error(`onboardUser operation poll failed: ${pollResp.status}: ${pollErr}`);
4333
+ }
4334
+ operation = await pollResp.json();
4300
4335
  }
4336
+ } catch (err) {
4337
+ if (Date.now() >= deadline || signal?.aborted) throw err;
4338
+ }
4339
+ }
4340
+ async function listCloudAICompanionProjects(token, fetchFn = fetch) {
4341
+ for (const endpoint of endpointCandidates()) try {
4342
+ const response = await fetchFn(`${endpoint}/v1internal:listCloudAICompanionProjects`, {
4343
+ method: "POST",
4344
+ headers: antigravityHeaders(token),
4345
+ body: JSON.stringify({}),
4346
+ signal: AbortSignal.timeout(DISCOVERY_TIMEOUT_MS)
4347
+ });
4348
+ if (!response.ok) continue;
4349
+ return extractProjectId(await response.json());
4301
4350
  } catch {}
4302
4351
  }
4303
4352
  async function postJson(path, token, body, fetchFn = fetch) {
@@ -4365,50 +4414,63 @@ function parseCatalogModels(data) {
4365
4414
  }
4366
4415
  return list;
4367
4416
  }
4368
- async function fetchAccountQuota(store = new FileCredentialStore(), modelSettings, fetchFn = fetch) {
4369
- const { token, projectId: credentialProjectId } = await ensureApiKey(store, fetchFn);
4370
- const [assistResult, summaryResult] = await Promise.all([postJson("/v1internal:loadCodeAssist", token, { metadata: {
4371
- ideType: "ANTIGRAVITY",
4372
- platform: "PLATFORM_UNSPECIFIED",
4373
- pluginType: "GEMINI"
4374
- } }, fetchFn).catch(() => null), postJson("/v1internal:retrieveUserQuotaSummary", token, {}, fetchFn).catch(() => null)]);
4375
- const discoveredProject = assistResult ? extractProjectId(assistResult.data) : void 0;
4376
- const projectId = credentialProjectId || discoveredProject || "antigravity-default";
4377
- const modelsData = (await postJson("/v1internal:fetchAvailableModels", token, { project: projectId }, fetchFn).catch(() => null))?.data;
4378
- const { groups, description } = summaryResult ? parseQuotaSummary(summaryResult.data) : { groups: [] };
4379
- const catalogModels = modelsData ? parseCatalogModels(modelsData) : [];
4380
- const assistData = assistResult?.data || {};
4381
- const currentTier = assistData.currentTier;
4382
- const paidTier = assistData.paidTier;
4383
- const planLabel = paidTier?.name || currentTier?.name || void 0;
4384
- cachedQuota = {
4385
- projectId,
4386
- endpoint: summaryResult?.endpoint || ENDPOINT_FALLBACKS[0],
4387
- planLabel,
4388
- productTier: currentTier,
4389
- paidTier,
4390
- groups,
4391
- groupDescription: description,
4392
- models: catalogModels.map((m) => ({
4393
- modelId: m.id,
4394
- displayName: m.name,
4395
- description: m.description
4396
- })),
4397
- catalogModels,
4398
- fetchedAt: Date.now()
4399
- };
4400
- if (modelSettings && catalogModels.length > 0) {
4401
- const current = await modelSettings.read();
4402
- const isFirstTime = current.catalogModels.length === 0 && current.enabledModelIds.length === 0;
4403
- const catalogIds = new Set(catalogModels.map((m) => m.id));
4404
- const mergedEnabled = isFirstTime ? catalogModels.map((m) => m.id) : current.enabledModelIds.filter((id) => catalogIds.has(id));
4405
- await modelSettings.setCatalogModels(catalogModels, { enabledModelIds: mergedEnabled });
4406
- }
4407
- return cachedQuota;
4417
+ async function fetchAccountQuota(store = new FileCredentialStore(), modelSettings, fetchFn = fetch, force = false) {
4418
+ if (!force && cachedQuota && Date.now() - (cachedQuota.fetchedAt || 0) < 12e4) return cachedQuota;
4419
+ if (quotaFetchInFlight) return quotaFetchInFlight;
4420
+ quotaFetchInFlight = (async () => {
4421
+ try {
4422
+ const { token, projectId: credentialProjectId } = await ensureApiKey(store, fetchFn);
4423
+ const [assistResult, summaryResult] = await Promise.all([postJson("/v1internal:loadCodeAssist", token, { metadata: {
4424
+ ideType: "ANTIGRAVITY",
4425
+ platform: "PLATFORM_UNSPECIFIED",
4426
+ pluginType: "GEMINI"
4427
+ } }, fetchFn).catch(() => null), postJson("/v1internal:retrieveUserQuotaSummary", token, {}, fetchFn).catch(() => null)]);
4428
+ const discoveredProject = assistResult ? extractProjectId(assistResult.data) : void 0;
4429
+ const projectId = credentialProjectId || discoveredProject || "antigravity-default";
4430
+ const modelsData = (await postJson("/v1internal:fetchAvailableModels", token, { project: projectId }, fetchFn).catch(() => null))?.data;
4431
+ const { groups, description } = summaryResult ? parseQuotaSummary(summaryResult.data) : { groups: [] };
4432
+ const catalogModels = modelsData ? parseCatalogModels(modelsData) : [];
4433
+ const assistData = assistResult?.data || {};
4434
+ const currentTier = assistData.currentTier;
4435
+ const paidTier = assistData.paidTier;
4436
+ const planLabel = paidTier?.name || currentTier?.name || void 0;
4437
+ cachedQuota = {
4438
+ projectId,
4439
+ endpoint: summaryResult?.endpoint || ENDPOINT_FALLBACKS[0],
4440
+ planLabel,
4441
+ productTier: currentTier,
4442
+ paidTier,
4443
+ groups,
4444
+ groupDescription: description,
4445
+ models: catalogModels.map((m) => ({
4446
+ modelId: m.id,
4447
+ displayName: m.name,
4448
+ description: m.description
4449
+ })),
4450
+ catalogModels,
4451
+ fetchedAt: Date.now()
4452
+ };
4453
+ if (modelSettings && catalogModels.length > 0) {
4454
+ const current = await modelSettings.read();
4455
+ const isFirstTime = current.catalogModels.length === 0 && current.enabledModelIds.length === 0;
4456
+ const catalogIds = new Set(catalogModels.map((m) => m.id));
4457
+ const mergedEnabled = isFirstTime ? catalogModels.map((m) => m.id) : current.enabledModelIds.filter((id) => catalogIds.has(id));
4458
+ await modelSettings.setCatalogModels(catalogModels, { enabledModelIds: mergedEnabled });
4459
+ }
4460
+ return cachedQuota;
4461
+ } finally {
4462
+ quotaFetchInFlight = null;
4463
+ }
4464
+ })();
4465
+ return quotaFetchInFlight;
4408
4466
  }
4409
4467
  function getCachedQuota() {
4410
4468
  return cachedQuota;
4411
4469
  }
4470
+ function clearCachedQuota() {
4471
+ cachedQuota = void 0;
4472
+ quotaFetchInFlight = null;
4473
+ }
4412
4474
  //#endregion
4413
4475
  //#region src/host/antigravity/oauth.ts
4414
4476
  let webLoginFlow = { status: "idle" };
@@ -4553,7 +4615,36 @@ function startCallbackServer(expectedState) {
4553
4615
  });
4554
4616
  });
4555
4617
  }
4556
- async function exchangeOAuthCode(code, verifier, callbackUrl, fetchFn = fetch) {
4618
+ function extractGoogleValidationUrl(text) {
4619
+ const match = /https:\/\/[^\s"'><]+/i.exec(text);
4620
+ return match ? match[0] : void 0;
4621
+ }
4622
+ function assertFreeTierEligible(payload) {
4623
+ if (payload.allowedTiers?.some((tier) => tier.id === "free-tier") === true) return;
4624
+ const ineligibility = payload.ineligibleTiers?.find((c) => c.tierId === FREE_TIER_ID);
4625
+ if (!ineligibility?.reasonMessage) return;
4626
+ const validation = ineligibility.validationUrl ? `\nValidation URL: ${ineligibility.validationUrl}` : "";
4627
+ const err = /* @__PURE__ */ new Error(`${ineligibility.reasonMessage}${validation}`);
4628
+ if (ineligibility.validationUrl) err.validationUrl = ineligibility.validationUrl;
4629
+ throw err;
4630
+ }
4631
+ async function discoverAntigravityProject(token, fetchFn = fetch, signal, onProgress) {
4632
+ onProgress?.("正在检查 Cloud Code Assist 账号状态...");
4633
+ const initial = await loadCodeAssistDetail(token, fetchFn, signal);
4634
+ if (!initial) throw new Error("无法连接到 Cloud Code Assist 服务,请检查网络连接");
4635
+ assertFreeTierEligible(initial);
4636
+ if (initial.allowedTiers?.some((tier) => tier.id === "free-tier") === true && !initial.currentTier) {
4637
+ onProgress?.("正在为新账号开通 Antigravity 免费额度...");
4638
+ await onboardUser(token, fetchFn, signal);
4639
+ onProgress?.("正在获取专属项目 (Project ID)...");
4640
+ const refreshed = await loadCodeAssistDetail(token, fetchFn, signal);
4641
+ if (refreshed?.projectId) return refreshed.projectId;
4642
+ } else if (initial.projectId) return initial.projectId;
4643
+ const fallback = await listCloudAICompanionProjects(token, fetchFn);
4644
+ if (fallback) return fallback;
4645
+ return initial.projectId;
4646
+ }
4647
+ async function exchangeOAuthCode(code, verifier, callbackUrl, fetchFn = fetch, signal, onProgress) {
4557
4648
  const tokenResponse = await fetchFn(TOKEN_URL, {
4558
4649
  method: "POST",
4559
4650
  headers: { "Content-Type": "application/x-www-form-urlencoded" },
@@ -4564,7 +4655,8 @@ async function exchangeOAuthCode(code, verifier, callbackUrl, fetchFn = fetch) {
4564
4655
  grant_type: "authorization_code",
4565
4656
  redirect_uri: callbackUrl,
4566
4657
  code_verifier: verifier
4567
- }).toString()
4658
+ }).toString(),
4659
+ signal
4568
4660
  });
4569
4661
  if (!tokenResponse.ok) throw new Error(`Token exchange failed: ${sanitizeOAuthProviderError(await tokenResponse.text())}`);
4570
4662
  const tokenData = await tokenResponse.json();
@@ -4572,7 +4664,7 @@ async function exchangeOAuthCode(code, verifier, callbackUrl, fetchFn = fetch) {
4572
4664
  const accessToken = typeof tokenData.access_token === "string" ? tokenData.access_token : "";
4573
4665
  const expiresIn = typeof tokenData.expires_in === "number" ? tokenData.expires_in : 3600;
4574
4666
  if (!refreshToken) throw new Error("No refresh token received. Re-run login and allow offline access.");
4575
- const [email, discoveredProject] = await Promise.all([getUserEmail(accessToken, fetchFn), loadCodeAssist(accessToken, fetchFn).catch(() => void 0)]);
4667
+ const [email, discoveredProject] = await Promise.all([getUserEmail(accessToken, fetchFn), discoverAntigravityProject(accessToken, fetchFn, signal, onProgress)]);
4576
4668
  return {
4577
4669
  refresh: refreshToken,
4578
4670
  refresh_token: refreshToken,
@@ -4584,7 +4676,7 @@ async function exchangeOAuthCode(code, verifier, callbackUrl, fetchFn = fetch) {
4584
4676
  email
4585
4677
  };
4586
4678
  }
4587
- async function beginWebLogin(store, fetchFn = fetch) {
4679
+ async function beginWebLogin(store, fetchFn = fetch, signal) {
4588
4680
  if (webLoginFlow.status === "pending") return { ...webLoginFlow };
4589
4681
  const { verifier, challenge } = generatePKCE();
4590
4682
  const state = base64Url(randomBytes(32));
@@ -4604,20 +4696,28 @@ async function beginWebLogin(store, fetchFn = fetch) {
4604
4696
  prompt: "consent"
4605
4697
  }).toString()}`,
4606
4698
  startedAt: Date.now(),
4607
- error: void 0
4699
+ progress: "等待浏览器授权...",
4700
+ error: void 0,
4701
+ validationUrl: void 0
4608
4702
  };
4609
4703
  (async () => {
4610
4704
  try {
4611
4705
  const { code, state: returnedState } = await waitForCode();
4612
4706
  if (returnedState !== state) throw new Error("OAuth state mismatch");
4613
- const credentials = await exchangeOAuthCode(code, verifier, callbackUrl, fetchFn);
4707
+ const credentials = await exchangeOAuthCode(code, verifier, callbackUrl, fetchFn, signal, (stage) => {
4708
+ webLoginFlow.progress = stage;
4709
+ });
4614
4710
  await store.write(credentials);
4615
4711
  webLoginFlow.status = "complete";
4616
4712
  webLoginFlow.email = credentials.email;
4617
4713
  webLoginFlow.completedAt = Date.now();
4714
+ webLoginFlow.progress = "授权成功";
4618
4715
  } catch (error) {
4619
4716
  webLoginFlow.status = "error";
4620
- webLoginFlow.error = error instanceof Error ? error.message : String(error);
4717
+ const errText = error instanceof Error ? error.message : String(error);
4718
+ webLoginFlow.error = errText;
4719
+ const validationUrl = error?.validationUrl || extractGoogleValidationUrl(errText);
4720
+ if (validationUrl) webLoginFlow.validationUrl = validationUrl;
4621
4721
  webLoginFlow.completedAt = Date.now();
4622
4722
  } finally {
4623
4723
  server.close();
@@ -4653,7 +4753,8 @@ async function refreshAntigravityToken(credentials, fetchFn = fetch) {
4653
4753
  access: accessToken,
4654
4754
  access_token: accessToken,
4655
4755
  expires: Date.now() + expiresIn * 1e3 - 300 * 1e3,
4656
- expires_at: Date.now() + expiresIn * 1e3 - 300 * 1e3
4756
+ expires_at: Date.now() + expiresIn * 1e3 - 300 * 1e3,
4757
+ projectId: credentials.projectId
4657
4758
  };
4658
4759
  }
4659
4760
  async function ensureApiKey(store, fetchFn = fetch) {
@@ -4669,7 +4770,7 @@ async function ensureApiKey(store, fetchFn = fetch) {
4669
4770
  projectId: credentials.projectId
4670
4771
  };
4671
4772
  }
4672
- async function loginAndSave(store, signal, onUrl, fetchFn = fetch) {
4773
+ async function loginAndSave(store, signal, onUrl, fetchFn = fetch, onProgress) {
4673
4774
  const { verifier, challenge } = generatePKCE();
4674
4775
  const state = base64Url(randomBytes(32));
4675
4776
  const { server, waitForCode } = await startCallbackServer(state);
@@ -4691,7 +4792,7 @@ async function loginAndSave(store, signal, onUrl, fetchFn = fetch) {
4691
4792
  if (signal?.aborted) throw new Error("OAuth login aborted");
4692
4793
  const { code, state: returnedState } = await waitForCode();
4693
4794
  if (returnedState !== state) throw new Error("OAuth state mismatch");
4694
- const credentials = await exchangeOAuthCode(code, verifier, callbackUrl, fetchFn);
4795
+ const credentials = await exchangeOAuthCode(code, verifier, callbackUrl, fetchFn, signal, onProgress);
4695
4796
  await store.write(credentials);
4696
4797
  return credentials;
4697
4798
  } finally {
@@ -5482,6 +5583,10 @@ function registerAntigravityRoutes(ctx, store, modelSettings, preferences, fetch
5482
5583
  try {
5483
5584
  if (path === "status" || path === "") {
5484
5585
  if (request.method !== "GET") return sendMethodNotAllowed(response);
5586
+ const credentials = await store.read();
5587
+ const authenticated = !!(credentials?.access || credentials?.access_token);
5588
+ const cached = getCachedQuota();
5589
+ if (authenticated && (!cached || Date.now() - (cached.fetchedAt || 0) > 12e4)) await fetchAccountQuota(store, modelSettings, fetchFn).catch(() => void 0);
5485
5590
  return sendJson(response, 200, {
5486
5591
  ok: true,
5487
5592
  value: await getAntigravityWebStatus(store, modelSettings, preferences)
@@ -5503,7 +5608,7 @@ function registerAntigravityRoutes(ctx, store, modelSettings, preferences, fetch
5503
5608
  }
5504
5609
  if (path === "quota") {
5505
5610
  if (request.method !== "GET" && request.method !== "POST") return sendMethodNotAllowed(response);
5506
- const quota = await fetchAccountQuota(store, modelSettings, fetchFn);
5611
+ const quota = await fetchAccountQuota(store, modelSettings, fetchFn, true);
5507
5612
  return sendJson(response, 200, {
5508
5613
  ok: true,
5509
5614
  value: {
@@ -5541,6 +5646,7 @@ function registerAntigravityRoutes(ctx, store, modelSettings, preferences, fetch
5541
5646
  if (path === "logout") {
5542
5647
  if (request.method !== "POST") return sendMethodNotAllowed(response);
5543
5648
  await store.delete();
5649
+ clearCachedQuota();
5544
5650
  return sendJson(response, 200, {
5545
5651
  ok: true,
5546
5652
  value: await getAntigravityWebStatus(store, modelSettings)
@@ -5628,4 +5734,4 @@ function localWebServerBaseUrl(host, port) {
5628
5734
  return `http://${host === "0.0.0.0" ? "127.0.0.1" : host}:${port}`;
5629
5735
  }
5630
5736
  //#endregion
5631
- export { AntigravityAdapter, CodexChatGptAdapter, FileCredentialStore, FileModelSettingsStore, LinuxFileTokenStore, MacKeychainTokenStore, OAuthService, ProxyManager, ResponsesClient, UsageService, WindowsDpapiTokenStore, apply, beginWebLogin, createCodexFetchProvider, createCodexImageTool, createCodexSearchProvider, createPlatformTokenStore, credentialPath, detectSystemProxy, fetchAccountQuota, getCachedQuota, inject, loginAndSave, mapCodexUsage, modelSettingsPath, parseCodexUsage, parseResponsesStream, refreshAntigravityToken };
5737
+ export { AntigravityAdapter, CodexChatGptAdapter, FileCredentialStore, FileModelSettingsStore, LinuxFileTokenStore, MacKeychainTokenStore, OAuthService, ProxyManager, ResponsesClient, UsageService, WindowsDpapiTokenStore, apply, beginWebLogin, clearCachedQuota, createCodexFetchProvider, createCodexImageTool, createCodexSearchProvider, createPlatformTokenStore, credentialPath, detectSystemProxy, fetchAccountQuota, getCachedQuota, inject, loginAndSave, mapCodexUsage, modelSettingsPath, parseCodexUsage, parseResponsesStream, refreshAntigravityToken };
@@ -1 +1 @@
1
- {"version":3,"file":"AntigravityComposerQuota.d.ts","sourceRoot":"","sources":["../../../../src/client/antigravity/AntigravityComposerQuota.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAA;AAC3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAA;AAC5F,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAEjF,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAmB7C,KAAK,KAAK,GAAG,YAAY,CAAC,0BAA0B,CAAC,GACnD,WAAW,CAAC,OAAO,cAAc,CAAC,GAAG;IACnC,SAAS,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAA;IAC7C,kBAAkB,EAAE,MAAM,IAAI,CAAA;CAC/B,CAAA;AAqCH,wBAAgB,wBAAwB,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAgF3G"}
1
+ {"version":3,"file":"AntigravityComposerQuota.d.ts","sourceRoot":"","sources":["../../../../src/client/antigravity/AntigravityComposerQuota.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAA;AAC3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAA;AAC5F,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAEjF,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAmB7C,KAAK,KAAK,GAAG,YAAY,CAAC,0BAA0B,CAAC,GACnD,WAAW,CAAC,OAAO,cAAc,CAAC,GAAG;IACnC,SAAS,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAA;IAC7C,kBAAkB,EAAE,MAAM,IAAI,CAAA;CAC/B,CAAA;AAqCH,wBAAgB,wBAAwB,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAyF3G"}
@@ -1 +1 @@
1
- {"version":3,"file":"AntigravitySection.d.ts","sourceRoot":"","sources":["../../../../src/client/antigravity/AntigravitySection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAM/D,UAAU,KAAK;IACb,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;CAChC;AAiBD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOlE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIpD;AAuBD,wBAAgB,kBAAkB,CAAC,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,YAAY,CAuanG"}
1
+ {"version":3,"file":"AntigravitySection.d.ts","sourceRoot":"","sources":["../../../../src/client/antigravity/AntigravitySection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAM/D,UAAU,KAAK;IACb,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;CAChC;AAiBD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOlE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIpD;AAuBD,wBAAgB,kBAAkB,CAAC,EAAE,aAAa,EAAE,kBAAkB,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,YAAY,CAmdnG"}
@@ -264,6 +264,6 @@ export declare const dictionaries: {
264
264
  readonly retry: "重试";
265
265
  readonly unknown: "未知";
266
266
  };
267
- en: Record<"tokens" | "title" | "intro" | "account" | "signedOut" | "signedIn" | "plan" | "accountId" | "expires" | "storage" | "storageWindows" | "storageMacKeychain" | "storageLinuxFile" | "storageMemory" | "storageUnavailable" | "securityWindows" | "securityMacKeychain" | "securityLinuxFile" | "securityMemory" | "securityUnavailable" | "signIn" | "signInAgain" | "cancel" | "signOut" | "refreshToken" | "pending" | "popupBlocked" | "continueLogin" | "loading" | "connection" | "provider" | "connectionState" | "connected" | "untested" | "testConnection" | "testing" | "latency" | "models" | "modelsHint" | "proxySettings" | "proxyMode" | "proxyModeHint" | "proxyModeAuto" | "proxyModeCustom" | "proxyModeDirect" | "customProxyUrl" | "customProxyUrlHint" | "customProxyUrlPlaceholder" | "saveProxyUrl" | "proxyDetected" | "proxyDetectedEffective" | "proxyNoneDetected" | "proxyDirectHint" | "enhancements" | "fastMode" | "fastModeHint" | "outputVerbosity" | "outputVerbosityHint" | "verbosityLow" | "verbosityMedium" | "verbosityHigh" | "reasoningSummary" | "reasoningSummaryHint" | "summaryAuto" | "summaryConcise" | "summaryDetailed" | "summaryNone" | "searchProvider" | "searchProviderHint" | "searchProviderDsh" | "searchProviderCodex" | "providerDefault" | "subagentEnhancements" | "subagentContextWindow" | "subagentContextWindowHint" | "subagentMaxDepth" | "subagentMaxDepthHint" | "subagentDisabled" | "levels" | "contextWindows" | "contextWindowsHint" | "contextWindow" | "contextWindowInvalid" | "saveContextWindow" | "save" | "quickQuota" | "quickQuotaHint" | "quota" | "quotaIntro" | "refreshQuota" | "refreshing" | "noQuota" | "quotaSignedOut" | "stale" | "updated" | "primary" | "secondary" | "limitWindow" | "used" | "remaining" | "available" | "unavailable" | "unlimited" | "credits" | "monthlySpend" | "resetCredits" | "resetCreditExpires" | "useResetCredit" | "usingResetCredit" | "useResetCreditConfirm" | "resetCreditUsed" | "spendControlReached" | "limit" | "exhausted" | "resets" | "quickQuotaLabel" | "quickQuotaLoading" | "imageToolRunning" | "imageToolDone" | "imageToolFailed" | "image" | "openImage" | "openNamedImage" | "imageLoading" | "imageLoadFailed" | "imagePreviewClose" | "imagePreviewOpenOriginal" | "retry" | "unknown", string>;
267
+ en: Record<"quota" | "account" | "storage" | "stale" | "pending" | "tokens" | "title" | "intro" | "signedOut" | "signedIn" | "plan" | "accountId" | "expires" | "storageWindows" | "storageMacKeychain" | "storageLinuxFile" | "storageMemory" | "storageUnavailable" | "securityWindows" | "securityMacKeychain" | "securityLinuxFile" | "securityMemory" | "securityUnavailable" | "signIn" | "signInAgain" | "cancel" | "signOut" | "refreshToken" | "popupBlocked" | "continueLogin" | "loading" | "connection" | "provider" | "connectionState" | "connected" | "untested" | "testConnection" | "testing" | "latency" | "models" | "modelsHint" | "proxySettings" | "proxyMode" | "proxyModeHint" | "proxyModeAuto" | "proxyModeCustom" | "proxyModeDirect" | "customProxyUrl" | "customProxyUrlHint" | "customProxyUrlPlaceholder" | "saveProxyUrl" | "proxyDetected" | "proxyDetectedEffective" | "proxyNoneDetected" | "proxyDirectHint" | "enhancements" | "fastMode" | "fastModeHint" | "outputVerbosity" | "outputVerbosityHint" | "verbosityLow" | "verbosityMedium" | "verbosityHigh" | "reasoningSummary" | "reasoningSummaryHint" | "summaryAuto" | "summaryConcise" | "summaryDetailed" | "summaryNone" | "searchProvider" | "searchProviderHint" | "searchProviderDsh" | "searchProviderCodex" | "providerDefault" | "subagentEnhancements" | "subagentContextWindow" | "subagentContextWindowHint" | "subagentMaxDepth" | "subagentMaxDepthHint" | "subagentDisabled" | "levels" | "contextWindows" | "contextWindowsHint" | "contextWindow" | "contextWindowInvalid" | "saveContextWindow" | "save" | "quickQuota" | "quickQuotaHint" | "quotaIntro" | "refreshQuota" | "refreshing" | "noQuota" | "quotaSignedOut" | "updated" | "primary" | "secondary" | "limitWindow" | "used" | "remaining" | "available" | "unavailable" | "unlimited" | "credits" | "monthlySpend" | "resetCredits" | "resetCreditExpires" | "useResetCredit" | "usingResetCredit" | "useResetCreditConfirm" | "resetCreditUsed" | "spendControlReached" | "limit" | "exhausted" | "resets" | "quickQuotaLabel" | "quickQuotaLoading" | "imageToolRunning" | "imageToolDone" | "imageToolFailed" | "image" | "openImage" | "openNamedImage" | "imageLoading" | "imageLoadFailed" | "imagePreviewClose" | "imagePreviewOpenOriginal" | "retry" | "unknown", string>;
268
268
  };
269
269
  //# sourceMappingURL=locales.d.ts.map
@@ -1,9 +1,30 @@
1
1
  import { FileCredentialStore, FileModelSettingsStore, type AntigravityCatalogModel } from './token-store.ts';
2
2
  import type { AntigravityAccountQuota, AntigravityQuotaGroup } from '../../shared/antigravity-contracts.ts';
3
+ export declare const ANTIGRAVITY_QUOTA_CACHE_TTL_MS: number;
3
4
  export declare function defaultUserAgent(): string;
4
5
  export declare function antigravityHeaders(token: string): Record<string, string>;
5
6
  export declare function jsonHeaders(token: string): Record<string, string>;
6
7
  export declare function endpointCandidates(): string[];
8
+ export interface AntigravityTierInfo {
9
+ id?: string;
10
+ name?: string;
11
+ description?: string;
12
+ }
13
+ export interface AntigravityIneligibleTier {
14
+ tierId?: string;
15
+ reasonMessage?: string;
16
+ validationUrl?: string;
17
+ }
18
+ export interface LoadCodeAssistDetailResult {
19
+ currentTier?: AntigravityTierInfo | null;
20
+ paidTier?: AntigravityTierInfo | null;
21
+ allowedTiers?: AntigravityTierInfo[];
22
+ ineligibleTiers?: AntigravityIneligibleTier[];
23
+ projectId?: string;
24
+ raw?: Record<string, unknown>;
25
+ }
26
+ export declare function loadCodeAssistDetail(token: string, fetchFn?: typeof fetch, signal?: AbortSignal): Promise<LoadCodeAssistDetailResult | undefined>;
27
+ export declare function onboardUser(token: string, fetchFn?: typeof fetch, signal?: AbortSignal): Promise<void>;
7
28
  export declare function listCloudAICompanionProjects(token: string, fetchFn?: typeof fetch): Promise<string | undefined>;
8
29
  export declare function loadCodeAssist(token: string, fetchFn?: typeof fetch): Promise<string | undefined>;
9
30
  export declare function postJson(path: string, token: string, body: Record<string, unknown>, fetchFn?: typeof fetch): Promise<{
@@ -16,6 +37,7 @@ export declare function parseQuotaSummary(data: unknown): {
16
37
  description?: string;
17
38
  };
18
39
  export declare function parseCatalogModels(data: unknown): AntigravityCatalogModel[];
19
- export declare function fetchAccountQuota(store?: FileCredentialStore, modelSettings?: FileModelSettingsStore, fetchFn?: typeof fetch): Promise<AntigravityAccountQuota>;
40
+ export declare function fetchAccountQuota(store?: FileCredentialStore, modelSettings?: FileModelSettingsStore, fetchFn?: typeof fetch, force?: boolean): Promise<AntigravityAccountQuota>;
20
41
  export declare function getCachedQuota(): AntigravityAccountQuota | undefined;
42
+ export declare function clearCachedQuota(): void;
21
43
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/host/antigravity/client.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,KAAK,uBAAuB,EAC7B,MAAM,kBAAkB,CAAA;AAEzB,OAAO,KAAK,EACV,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,uCAAuC,CAAA;AAO9C,wBAAgB,gBAAgB,IAAI,MAAM,CAIzC;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAaxE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKjE;AAED,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAI7C;AA+BD,wBAAsB,4BAA4B,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,OAAO,KAAa,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAgB5H;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,OAAO,KAAa,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAsC9G;AAED,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAoB9D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG;IAChD,MAAM,EAAE,qBAAqB,EAAE,CAAA;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAyCA;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,uBAAuB,EAAE,CAmB3E;AAED,wBAAsB,iBAAiB,CACrC,KAAK,sBAA4B,EACjC,aAAa,CAAC,EAAE,sBAAsB,EACtC,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC,uBAAuB,CAAC,CAoDlC;AAED,wBAAgB,cAAc,IAAI,uBAAuB,GAAG,SAAS,CAEpE"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/host/antigravity/client.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { type Server } from 'node:http';
2
2
  import { FileCredentialStore, type AntigravityCredentials } from './token-store.ts';
3
+ import { type LoadCodeAssistDetailResult } from './client.ts';
3
4
  export interface WebLoginFlowState {
4
5
  status: 'idle' | 'pending' | 'complete' | 'error';
5
6
  authUrl?: string;
@@ -7,6 +8,8 @@ export interface WebLoginFlowState {
7
8
  completedAt?: number;
8
9
  email?: string;
9
10
  error?: string;
11
+ validationUrl?: string;
12
+ progress?: string;
10
13
  }
11
14
  export declare function callbackPort(): number;
12
15
  export declare function resolveCallbackHost(raw?: string | undefined): string;
@@ -26,13 +29,16 @@ export declare function startCallbackServer(expectedState: string): Promise<{
26
29
  state: string;
27
30
  }>;
28
31
  }>;
29
- export declare function exchangeOAuthCode(code: string, verifier: string, callbackUrl: string, fetchFn?: typeof fetch): Promise<AntigravityCredentials>;
30
- export declare function beginWebLogin(store: FileCredentialStore, fetchFn?: typeof fetch): Promise<WebLoginFlowState>;
32
+ export declare function extractGoogleValidationUrl(text: string): string | undefined;
33
+ export declare function assertFreeTierEligible(payload: LoadCodeAssistDetailResult): void;
34
+ export declare function discoverAntigravityProject(token: string, fetchFn?: typeof fetch, signal?: AbortSignal, onProgress?: (stage: string) => void): Promise<string | undefined>;
35
+ export declare function exchangeOAuthCode(code: string, verifier: string, callbackUrl: string, fetchFn?: typeof fetch, signal?: AbortSignal, onProgress?: (stage: string) => void): Promise<AntigravityCredentials>;
36
+ export declare function beginWebLogin(store: FileCredentialStore, fetchFn?: typeof fetch, signal?: AbortSignal): Promise<WebLoginFlowState>;
31
37
  export declare function getWebLoginStatus(): WebLoginFlowState;
32
38
  export declare function refreshAntigravityToken(credentials: AntigravityCredentials, fetchFn?: typeof fetch): Promise<AntigravityCredentials>;
33
39
  export declare function ensureApiKey(store: FileCredentialStore, fetchFn?: typeof fetch): Promise<{
34
40
  token: string;
35
41
  projectId?: string;
36
42
  }>;
37
- export declare function loginAndSave(store: FileCredentialStore, signal?: AbortSignal, onUrl?: (url: string) => void, fetchFn?: typeof fetch): Promise<AntigravityCredentials>;
43
+ export declare function loginAndSave(store: FileCredentialStore, signal?: AbortSignal, onUrl?: (url: string) => void, fetchFn?: typeof fetch, onProgress?: (stage: string) => void): Promise<AntigravityCredentials>;
38
44
  //# sourceMappingURL=oauth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../../src/host/antigravity/oauth.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,WAAW,CAAA;AAYrD,OAAO,EAAE,mBAAmB,EAAE,KAAK,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAGnF,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAA;IACjD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AASD,wBAAgB,YAAY,IAAI,MAAM,CAMrC;AAED,wBAAgB,mBAAmB,CAAC,GAAG,qBAAkC,GAAG,MAAM,CAIjF;AAED,wBAAgB,WAAW,IAAI,MAAM,CAKpC;AAED,wBAAgB,QAAQ,IAAI,MAAM,CAEjC;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAMD,wBAAgB,YAAY,IAAI;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAItE;AAeD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAY7C;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,OAAO,KAAa,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAW5G;AAED,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;IAClE,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC5D,CAAC,CAyED;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC,sBAAsB,CAAC,CA0CjC;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,mBAAmB,EAAE,OAAO,GAAE,OAAO,KAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAgDzH;AAED,wBAAgB,iBAAiB,IAAI,iBAAiB,CAErD;AAED,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,sBAAsB,EACnC,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC,sBAAsB,CAAC,CAiCjC;AAED,wBAAsB,YAAY,CAChC,KAAK,EAAE,mBAAmB,EAC1B,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAkBhD;AAED,wBAAsB,YAAY,CAChC,KAAK,EAAE,mBAAmB,EAC1B,MAAM,CAAC,EAAE,WAAW,EACpB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EAC7B,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC,sBAAsB,CAAC,CAgCjC"}
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../../src/host/antigravity/oauth.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../../src/host/antigravity/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,KAAK,0BAA0B,EAAE,MAAM,kBAAkB,CAAA;AAI/G,OAAO,KAAK,EAA0B,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AA+BzG,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,mBAAmB,EAC1B,aAAa,EAAE,sBAAsB,EACrC,WAAW,CAAC,EAAE,0BAA0B,GACvC,OAAO,CAAC,oBAAoB,CAAC,CA4B/B;AAED,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,mBAAmB,EAC1B,aAAa,EAAE,sBAAsB,EACrC,WAAW,CAAC,EAAE,0BAA0B,EACxC,OAAO,GAAE,OAAO,KAAa,GAC5B,MAAM,IAAI,CAgFZ"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../../src/host/antigravity/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,KAAK,0BAA0B,EAAE,MAAM,kBAAkB,CAAA;AAI/G,OAAO,KAAK,EAA0B,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AA+BzG,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,mBAAmB,EAC1B,aAAa,EAAE,sBAAsB,EACrC,WAAW,CAAC,EAAE,0BAA0B,GACvC,OAAO,CAAC,oBAAoB,CAAC,CA4B/B;AAED,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,mBAAmB,EAC1B,aAAa,EAAE,sBAAsB,EACrC,WAAW,CAAC,EAAE,0BAA0B,EACxC,OAAO,GAAE,OAAO,KAAa,GAC5B,MAAM,IAAI,CAuFZ"}
@@ -8,7 +8,13 @@ export declare const MODEL_CACHE_TTL_MS: number;
8
8
  export declare const OAUTH_CALLBACK_TIMEOUT_MS: number;
9
9
  export declare const DEFAULT_ENDPOINT = "https://cloudcode-pa.googleapis.com";
10
10
  export declare const DAILY_ENDPOINT = "https://daily-cloudcode-pa.googleapis.com";
11
+ export declare const SANDBOX_ENDPOINT = "https://daily-cloudcode-pa.sandbox.googleapis.com";
11
12
  export declare const ENDPOINT_FALLBACKS: string[];
13
+ export declare const FREE_TIER_ID = "free-tier";
14
+ export declare const ONBOARD_TIMEOUT_MS = 30000;
15
+ export declare const ONBOARD_POLL_INTERVAL_MS = 1000;
16
+ export declare const DEFAULT_ANTIGRAVITY_VERSION = "2.8.0";
17
+ export declare const DEFAULT_ANTIGRAVITY_CL = "963137146";
12
18
  export declare const REDIRECT_PATH = "/oauth-callback";
13
19
  export declare const AUTH_URL = "https://accounts.google.com/o/oauth2/v2/auth";
14
20
  export declare const TOKEN_URL = "https://oauth2.googleapis.com/token";
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/host/antigravity/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,gBAAgB,CAAA;AAC1C,eAAO,MAAM,WAAW,gBAAgB,CAAA;AAExC,eAAO,MAAM,sBAAsB,SAAU,CAAA;AAC7C,eAAO,MAAM,wBAAwB,4BAA4B,CAAA;AACjE,eAAO,MAAM,oBAAoB,OAAQ,CAAA;AACzC,eAAO,MAAM,oBAAoB,QAAiB,CAAA;AAClD,eAAO,MAAM,kBAAkB,QAAiB,CAAA;AAChD,eAAO,MAAM,yBAAyB,QAAgB,CAAA;AAEtD,eAAO,MAAM,gBAAgB,wCAAwC,CAAA;AAGrE,eAAO,MAAM,cAAc,8CAA8C,CAAA;AACzE,eAAO,MAAM,kBAAkB,UAG9B,CAAA;AAED,eAAO,MAAM,aAAa,oBAAoB,CAAA;AAC9C,eAAO,MAAM,QAAQ,iDAAiD,CAAA;AACtE,eAAO,MAAM,SAAS,wCAAwC,CAAA;AAC9D,eAAO,MAAM,MAAM,UAOlB,CAAA;AAED,eAAO,MAAM,iBAAiB,QAIZ,CAAA;AAElB,eAAO,MAAM,qBAAqB,QAGhB,CAAA;AAElB,eAAO,MAAM,8BAA8B,QAE2D,CAAA;AAEtG,eAAO,MAAM,mCAAmC,+KAC8H,CAAA;AAE9K,eAAO,MAAM,WAAW;;;CAGd,CAAA;AAEV,eAAO,MAAM,iBAAiB;;;;;CAKpB,CAAA;AAEV,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,gBAAgB,EAAE,MAAM,CAAA;IACxB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC9B;AAED,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAwI3D,CAAA;AAED,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAyB5D,CAAA;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,eAAe,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAA;IACxC,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC5B;AAED,eAAO,MAAM,MAAM,EAAE,mBAAmB,EA6FvC,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/host/antigravity/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,gBAAgB,CAAA;AAC1C,eAAO,MAAM,WAAW,gBAAgB,CAAA;AAExC,eAAO,MAAM,sBAAsB,SAAU,CAAA;AAC7C,eAAO,MAAM,wBAAwB,4BAA4B,CAAA;AACjE,eAAO,MAAM,oBAAoB,OAAQ,CAAA;AACzC,eAAO,MAAM,oBAAoB,QAAiB,CAAA;AAClD,eAAO,MAAM,kBAAkB,QAAiB,CAAA;AAChD,eAAO,MAAM,yBAAyB,QAAgB,CAAA;AAEtD,eAAO,MAAM,gBAAgB,wCAAwC,CAAA;AAErE,eAAO,MAAM,cAAc,8CAA8C,CAAA;AACzE,eAAO,MAAM,gBAAgB,sDAAsD,CAAA;AACnF,eAAO,MAAM,kBAAkB,UAG9B,CAAA;AAED,eAAO,MAAM,YAAY,cAAc,CAAA;AACvC,eAAO,MAAM,kBAAkB,QAAS,CAAA;AACxC,eAAO,MAAM,wBAAwB,OAAQ,CAAA;AAE7C,eAAO,MAAM,2BAA2B,UAAU,CAAA;AAClD,eAAO,MAAM,sBAAsB,cAAc,CAAA;AAGjD,eAAO,MAAM,aAAa,oBAAoB,CAAA;AAC9C,eAAO,MAAM,QAAQ,iDAAiD,CAAA;AACtE,eAAO,MAAM,SAAS,wCAAwC,CAAA;AAC9D,eAAO,MAAM,MAAM,UAOlB,CAAA;AAED,eAAO,MAAM,iBAAiB,QAIZ,CAAA;AAElB,eAAO,MAAM,qBAAqB,QAGhB,CAAA;AAElB,eAAO,MAAM,8BAA8B,QAE2D,CAAA;AAEtG,eAAO,MAAM,mCAAmC,+KAC8H,CAAA;AAE9K,eAAO,MAAM,WAAW;;;CAGd,CAAA;AAEV,eAAO,MAAM,iBAAiB;;;;;CAKpB,CAAA;AAEV,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,gBAAgB,EAAE,MAAM,CAAA;IACxB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC9B;AAED,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAwI3D,CAAA;AAED,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAyB5D,CAAA;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,eAAe,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAA;IACxC,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC5B;AAED,eAAO,MAAM,MAAM,EAAE,mBAAmB,EA6FvC,CAAA"}
@@ -17,5 +17,5 @@ export type { TokenStore, StoredOAuthCredentials } from './host/token-store.ts';
17
17
  export { AntigravityAdapter } from './host/antigravity/adapter.ts';
18
18
  export { FileCredentialStore, FileModelSettingsStore, credentialPath, modelSettingsPath, } from './host/antigravity/token-store.ts';
19
19
  export { loginAndSave, beginWebLogin, refreshAntigravityToken } from './host/antigravity/oauth.ts';
20
- export { fetchAccountQuota, getCachedQuota } from './host/antigravity/client.ts';
20
+ export { clearCachedQuota, fetchAccountQuota, getCachedQuota } from './host/antigravity/client.ts';
21
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AA+BlD,eAAO,MAAM,MAAM,UAAqE,CAAA;AAExF,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAuExC;AAED,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAClF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACtF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,YAAY,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAE/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAClE,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,cAAc,EACd,iBAAiB,GAClB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AAClG,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AA+BlD,eAAO,MAAM,MAAM,UAAqE,CAAA;AAExF,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAuExC;AAED,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAClF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACtF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,YAAY,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAE/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAClE,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,cAAc,EACd,iBAAiB,GAClB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AAClG,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA"}