From e23eb63b81343f5ff98f8adee0a35ce6c29ad391 Mon Sep 17 00:00:00 2001 From: t Date: Mon, 7 Sep 2026 01:48:26 +0900 Subject: [PATCH 1/3] fix(gui): render subscription credit quota bars consistently Carries #3728 with raw-label and partial-coverage preservation. Co-authored-by: Yumi Co-authored-by: SB Yoon <44089734+yansigit@users.noreply.github.com> --- gui/src/components/QuotaBars.tsx | 58 ++++++++++-- tests/gui/quota-bars-rows.test.ts | 142 ++++++++++++++++++++++++++++++ 2 files changed, 195 insertions(+), 5 deletions(-) diff --git a/gui/src/components/QuotaBars.tsx b/gui/src/components/QuotaBars.tsx index 2715f48608..8b8fd9c4e6 100644 --- a/gui/src/components/QuotaBars.tsx +++ b/gui/src/components/QuotaBars.tsx @@ -20,15 +20,38 @@ export type QuotaBarRow = { /** * Window ordering is computed from RAW wire identities BEFORE localization * (ranking on translated labels breaks the moment a locale changes copy): - * shorter windows first — 5h, weekly, cursor first-party, cursor API, monthly. + * shorter windows first — 5h, weekly, cursor first-party, cursor API, monthly, + * then subscription credits before other custom windows. */ function rawCustomWindowRank(rawLabel: string): number { if (rawLabel === "5h") return 0; if (rawLabel === "First-party models") return 2; if (rawLabel === "API usage") return 3; + if (rawLabel === "Total subscription credits") return 4.5; return 5; } +const SUBSCRIPTION_CREDITS_LABEL = "Total subscription credits"; + +function canonicalCustomWindowLabel(rawLabel: string): string { + return rawLabel.trim().toLowerCase() === SUBSCRIPTION_CREDITS_LABEL.toLowerCase() + ? SUBSCRIPTION_CREDITS_LABEL + : rawLabel; +} + +/** Coverage metadata carries raw labels, while subscription rows use a canonical identity. */ +export function isCustomQuotaWindowIncomplete( + customLabel: string | undefined, + incompleteLabels?: ReadonlySet, +): boolean { + if (customLabel === undefined || !incompleteLabels) return false; + const canonical = canonicalCustomWindowLabel(customLabel); + for (const label of incompleteLabels) { + if (canonicalCustomWindowLabel(label) === canonical) return true; + } + return false; +} + function localizeCustomQuotaLabel(rawLabel: string, t: TFn): string { switch (rawLabel) { case "First-party models": @@ -84,11 +107,12 @@ export function buildQuotaRows(quota: AccountQuota | null, plan: string | null | }); } for (const w of displayQuota.customWindows ?? []) { - const localized = localizeCustomQuotaLabel(w.label, t); + const customLabel = canonicalCustomWindowLabel(w.label); + const localized = localizeCustomQuotaLabel(customLabel, t); ranked.push({ - rank: rawCustomWindowRank(w.label), + rank: rawCustomWindowRank(customLabel), row: { - customLabel: w.label, + customLabel, label: localized, limitLabel: localized, percent: w.percent, @@ -96,6 +120,24 @@ export function buildQuotaRows(quota: AccountQuota | null, plan: string | null | }, }); } + if (displayQuota.creditsUsd && typeof displayQuota.creditsUsd.percent === "number") { + const hasSubscriptionCreditsCustom = displayQuota.customWindows?.some( + w => canonicalCustomWindowLabel(w.label) === SUBSCRIPTION_CREDITS_LABEL, + ); + if (!hasSubscriptionCreditsCustom) { + const localized = localizeCustomQuotaLabel(SUBSCRIPTION_CREDITS_LABEL, t); + ranked.push({ + rank: rawCustomWindowRank(SUBSCRIPTION_CREDITS_LABEL), + row: { + customLabel: SUBSCRIPTION_CREDITS_LABEL, + label: localized, + limitLabel: localized, + percent: displayQuota.creditsUsd.percent, + resetAt: displayQuota.creditsUsd.expiresAt, + }, + }); + } + } return ranked.sort((a, b) => a.rank - b.rank).map(entry => entry.row); } @@ -107,6 +149,12 @@ export function maxQuotaUtilisation(quota: AccountQuota | null): number { for (const w of quota.customWindows ?? []) { if (typeof w.percent === "number") vals.push(w.percent); } + const hasSubscriptionCreditsCustom = quota.customWindows?.some( + w => canonicalCustomWindowLabel(w.label) === SUBSCRIPTION_CREDITS_LABEL, + ); + if (!hasSubscriptionCreditsCustom && typeof quota.creditsUsd?.percent === "number") { + vals.push(quota.creditsUsd.percent); + } return vals.length ? Math.max(...vals) : -1; } @@ -279,7 +327,7 @@ export default function QuotaBars({ locale={locale} incomplete={row.windowKey ? incompleteWindowKeys?.has(row.windowKey) === true - : row.customLabel !== undefined && incompleteCustomWindowLabels?.has(row.customLabel) === true} + : isCustomQuotaWindowIncomplete(row.customLabel, incompleteCustomWindowLabels)} /> ))} diff --git a/tests/gui/quota-bars-rows.test.ts b/tests/gui/quota-bars-rows.test.ts index 57ddd47cfd..8ca5a27579 100644 --- a/tests/gui/quota-bars-rows.test.ts +++ b/tests/gui/quota-bars-rows.test.ts @@ -3,6 +3,7 @@ import { barWidth, buildQuotaRows, formatResetFuture, + isCustomQuotaWindowIncomplete, isQuotaExhausted, isQuotaWarn, maxQuotaUtilisation, @@ -69,6 +70,102 @@ describe("buildQuotaRows (WP070)", () => { expect(rows.map(r => r.label)).toEqual(["quota.totalSubscriptionCredits"]); }); + test("direct creditsUsd renders Total subscription credits with resetAt", () => { + const reported = quota({ + creditsUsd: { used: 89.96, limit: 90, remaining: 0.04, percent: 99.96, expiresAt: 1790430938000 }, + }); + expect(buildQuotaRows(reported, null, t)).toEqual([{ + customLabel: "Total subscription credits", + label: "quota.totalSubscriptionCredits", + limitLabel: "quota.totalSubscriptionCredits", + percent: 99.96, + resetAt: 1790430938000, + }]); + expect(maxQuotaUtilisation(reported)).toBe(99.96); + }); + + test("zero direct credit usage remains a row without an invented expiry", () => { + const reported = quota({ + creditsUsd: { used: 0, limit: 100, remaining: 100, percent: 0 }, + }); + const rows = buildQuotaRows(reported, null, t); + expect(rows).toHaveLength(1); + expect(rows[0]?.customLabel).toBe("Total subscription credits"); + expect(rows[0]?.percent).toBe(0); + expect(rows[0]?.resetAt).toBeUndefined(); + expect(maxQuotaUtilisation(reported)).toBe(0); + }); + + test("subscription credits rank after monthly and before other custom windows", () => { + const rows = buildQuotaRows(quota({ + fiveHourPercent: 10, + weeklyPercent: 40, + monthlyPercent: 70, + customWindows: [ + { label: "Gem", percent: 1 }, + { label: "API usage", percent: 55 }, + { label: "First-party models", percent: 25 }, + ], + creditsUsd: { used: 80, limit: 100, remaining: 20, percent: 80 }, + }), null, t); + expect(rows.map(r => r.limitLabel)).toEqual([ + "quota.fiveHourLimit", + "quota.weeklyLimit", + "quota.cursorFirstParty", + "quota.cursorApiUsage", + "quota.monthlyLimit", + "quota.totalSubscriptionCredits", + "Gem", + ]); + }); + + test.each(["Total subscription credits", " TOTAL SUBSCRIPTION CREDITS "])( + "direct creditsUsd does not duplicate the canonical custom window: %s", + label => { + const customOnly = quota({ customWindows: [{ label, percent: 25, resetAt: 1790430938000 }] }); + const withDirect = quota({ + ...customOnly, + creditsUsd: { used: 99, limit: 100, remaining: 1, percent: 99, expiresAt: 1790517338000 }, + }); + for (const reported of [customOnly, withDirect]) { + expect(buildQuotaRows(reported, null, t)).toEqual([{ + customLabel: "Total subscription credits", + label: "quota.totalSubscriptionCredits", + limitLabel: "quota.totalSubscriptionCredits", + percent: 25, + resetAt: 1790430938000, + }]); + } + }, + ); + + test("unrelated credit windows keep their raw identity and do not suppress direct credits", () => { + const reported = quota({ + customWindows: [ + { label: "API credits", percent: 20 }, + { label: " Gem ", percent: 10 }, + ], + creditsUsd: { used: 50, limit: 100, remaining: 50, percent: 50 }, + }); + const rows = buildQuotaRows(reported, null, t); + expect(rows.map(r => r.label)).toEqual(["quota.totalSubscriptionCredits", "API credits", " Gem "]); + expect(rows.map(r => r.customLabel)).toEqual(["Total subscription credits", "API credits", " Gem "]); + expect(maxQuotaUtilisation(reported)).toBe(50); + }); + + test.each(["go", "free"])("30-day plan %s retains direct credits after normalization", plan => { + const rows = buildQuotaRows(quota({ + shortPercent: 10, + shortWindowSeconds: 5 * 60 * 60, + weeklyPercent: 30, + monthlyPercent: 60, + customWindows: [{ label: "Total subscription credits", percent: 99 }], + creditsUsd: { used: 80, limit: 100, remaining: 20, percent: 80 }, + }), plan, t); + expect(rows.map(r => r.limitLabel)).toEqual(["quota.monthlyLimit", "quota.totalSubscriptionCredits"]); + expect(rows.map(r => r.percent)).toEqual([60, 80]); + }); + test("null and empty quotas produce no rows; 30-day plans strip to monthly", () => { expect(buildQuotaRows(null, null, t)).toEqual([]); expect(buildQuotaRows(quota({}), null, t)).toEqual([]); @@ -93,6 +190,51 @@ describe("maxQuotaUtilisation", () => { fiveHourPercent: 10, customWindows: [{ label: "x", percent: 95 }], }))).toBe(95); + expect(maxQuotaUtilisation(quota({ + fiveHourPercent: 0, + weeklyPercent: 0, + creditsUsd: { used: 90, limit: 90, remaining: 0, percent: 100 }, + }))).toBe(100); + }); + + test.each(["Total subscription credits", " total subscription credits "])( + "subscription-credit urgency follows the visible custom window: %s", + label => { + expect(maxQuotaUtilisation(quota({ + customWindows: [{ label, percent: 25 }], + creditsUsd: { used: 99, limit: 100, remaining: 1, percent: 99 }, + }))).toBe(25); + }, + ); +}); + +describe("isCustomQuotaWindowIncomplete", () => { + test("canonical subscription rows retain raw-label coverage metadata", () => { + const rows = buildQuotaRows(quota({ + customWindows: [{ label: " TOTAL SUBSCRIPTION CREDITS ", percent: 25 }], + }), null, t); + expect(rows[0]?.customLabel).toBe("Total subscription credits"); + expect(isCustomQuotaWindowIncomplete( + rows[0]?.customLabel, + new Set(["API credits", " TOTAL SUBSCRIPTION CREDITS "]), + )).toBe(true); + expect(isCustomQuotaWindowIncomplete( + " total subscription credits ", + new Set(["Total subscription credits"]), + )).toBe(true); + }); + + test("absent and unrelated coverage does not mark a subscription row incomplete", () => { + expect(isCustomQuotaWindowIncomplete(undefined, new Set(["Total subscription credits"]))).toBe(false); + expect(isCustomQuotaWindowIncomplete("Total subscription credits")).toBe(false); + expect(isCustomQuotaWindowIncomplete("Total subscription credits", new Set())).toBe(false); + expect(isCustomQuotaWindowIncomplete("Total subscription credits", new Set(["API credits"]))).toBe(false); + }); + + test("unknown window coverage preserves exact raw-label matching", () => { + expect(isCustomQuotaWindowIncomplete(" Gem ", new Set([" Gem "]))).toBe(true); + expect(isCustomQuotaWindowIncomplete(" Gem ", new Set(["Gem"]))).toBe(false); + expect(isCustomQuotaWindowIncomplete("Gem", new Set(["gem"]))).toBe(false); }); }); From 20d84d30d233f503dfb7253ff5c20e579e698855 Mon Sep 17 00:00:00 2001 From: t Date: Mon, 7 Sep 2026 01:55:06 +0900 Subject: [PATCH 2/3] fix(gui): keep subscription quota rows readable in narrow cards --- .../pr-screenshots/t4-credit-bars-81a8.png | Bin 0 -> 194622 bytes gui/src/components/QuotaBars.tsx | 6 ++++-- gui/src/styles/provider-quota.css | 15 +++++++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 docs-site/public/pr-screenshots/t4-credit-bars-81a8.png diff --git a/docs-site/public/pr-screenshots/t4-credit-bars-81a8.png b/docs-site/public/pr-screenshots/t4-credit-bars-81a8.png new file mode 100644 index 0000000000000000000000000000000000000000..3d63f634b79ed17b4ee531a1a63031dc640bedb3 GIT binary patch literal 194622 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%0DP}9yD{q3F9&!);_#|2!CwcX|gGY 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 literal 0 HcmV?d00001 diff --git a/gui/src/components/QuotaBars.tsx b/gui/src/components/QuotaBars.tsx index 8b8fd9c4e6..a1a32e1cfa 100644 --- a/gui/src/components/QuotaBars.tsx +++ b/gui/src/components/QuotaBars.tsx @@ -339,6 +339,7 @@ export default function QuotaBars({ {rows.map(row => ( +
{label} {hasReset ? t("codexAuth.resets") : ""} {reset.day} diff --git a/gui/src/styles/provider-quota.css b/gui/src/styles/provider-quota.css index 05f616b20c..37fb87223a 100644 --- a/gui/src/styles/provider-quota.css +++ b/gui/src/styles/provider-quota.css @@ -101,3 +101,18 @@ color: var(--amber); font-size: 12px; } + +/* Long subscription labels and reset/value text need separate rows in narrow cards. */ +.quota-compact { container: quota-compact / inline-size; } +@container quota-compact (max-width: 440px) { + .quota-row--credits { + grid-template-columns: max-content max-content minmax(0, 1fr) max-content; + row-gap: 4px; + } + .quota-row--credits .quota-label { grid-column: 1 / -1; grid-row: 1; } + .quota-row--credits .quota-reset-label { grid-column: 1; grid-row: 2; } + .quota-row--credits .quota-reset-day { grid-column: 2; grid-row: 2; } + .quota-row--credits .quota-reset-time { grid-column: 3 / -1; grid-row: 2; } + .quota-row--credits .bar { grid-column: 1 / 4; grid-row: 3; } + .quota-row--credits .quota-val { grid-column: 4; grid-row: 3; white-space: nowrap; } +} From 59a2f0d01f7141a1c971aafad927a7b789f4315a Mon Sep 17 00:00:00 2001 From: t Date: Mon, 7 Sep 2026 01:55:06 +0900 Subject: [PATCH 3/3] fix(quota): align Antigravity probes with fixed outbound destinations --- .../src/content/docs/fr/guides/providers.md | 3 + .../src/content/docs/guides/providers.md | 3 + .../src/content/docs/ja/guides/providers.md | 3 + .../src/content/docs/ko/guides/providers.md | 3 + .../src/content/docs/ru/guides/providers.md | 3 + .../src/content/docs/tr/guides/providers.md | 3 + .../content/docs/zh-cn/guides/providers.md | 3 + .../content/docs/zh-tw/guides/providers.md | 3 + src/providers/quota.ts | 41 ++- .../providers/provider-account-quota.test.ts | 106 ++++++- tests/providers/provider-quota.test.ts | 264 ++++++++++++++++-- 11 files changed, 392 insertions(+), 43 deletions(-) diff --git a/docs-site/src/content/docs/fr/guides/providers.md b/docs-site/src/content/docs/fr/guides/providers.md index 5de4260813..988ca03cf7 100644 --- a/docs-site/src/content/docs/fr/guides/providers.md +++ b/docs-site/src/content/docs/fr/guides/providers.md @@ -124,6 +124,9 @@ ocx logout | `cursor` | `cursor` | `https://api2.cursor.sh` | Connexion PKCE expérimentale, transport HTTP/2 en direct et découverte de modèles filtrés par compte. | | `github-copilot` | `openai-chat` | `https://api.githubcopilot.com` | Expérimental. Flux d'appareil GitHub et échange `copilot_internal` (client OAuth de VS Code). Nécessite un abonnement Copilot actif ; il ne s'agit pas d'une API tierce officielle. | +Les vérifications de quota Google Antigravity utilisent des points de terminaison Google fixes, y compris le repli vers la liste des modèles. Elles prennent en charge le DNS Fake-IP transparent pour ces destinations en conservant la vérification TLS, le refus des redirections et les contrôles des adresses privées. Une URL de base personnalisée ne modifie que les requêtes de modèles ; `NO_PROXY` conserve la politique de connexion directe. + + Après un échec définitif d'actualisation de Nous, exécutez `ocx login nous` pour vous réauthentifier. Pour les préréglages canoniques du forfait Kimi Coding (`kimi` pour la connexion au compte et `kimi-code` diff --git a/docs-site/src/content/docs/guides/providers.md b/docs-site/src/content/docs/guides/providers.md index 255c0d8dc4..05f586a816 100644 --- a/docs-site/src/content/docs/guides/providers.md +++ b/docs-site/src/content/docs/guides/providers.md @@ -125,6 +125,9 @@ ocx logout | `cursor` | `cursor` | `https://api2.cursor.sh` | Experimental PKCE login, live HTTP/2 transport with an opt-in HTTP/1.1 compatibility path, and account-filtered model discovery. | | `github-copilot` | `openai-chat` | `https://api.githubcopilot.com` | Experimental. GitHub device flow + `copilot_internal` exchange (VS Code OAuth client). Requires an active Copilot subscription; not an official third-party API. | +Google Antigravity account and provider quota probes use fixed Google accounting endpoints, including the models fallback. They support transparent Fake-IP DNS for those destinations while retaining TLS verification, redirect rejection and private-address checks. A custom provider base URL changes model requests, not quota destinations; `NO_PROXY` continues to select the direct-route policy. + + After a terminal Nous refresh failure, run `ocx login nous` to reauthenticate. For the canonical Kimi Coding Plan presets (`kimi` account login and `kimi-code` API key), diff --git a/docs-site/src/content/docs/ja/guides/providers.md b/docs-site/src/content/docs/ja/guides/providers.md index 51d018f478..33be9fc694 100644 --- a/docs-site/src/content/docs/ja/guides/providers.md +++ b/docs-site/src/content/docs/ja/guides/providers.md @@ -114,6 +114,9 @@ ocx logout | `cursor` | `cursor` | `https://api2.cursor.sh` | 実験的 PKCE ログイン、HTTP/2 トランスポート、アカウント別モデル探索をサポート。 | | `github-copilot` | `openai-chat` | `https://api.githubcopilot.com` | 実験的。GitHub デバイスフロー + `copilot_internal` 交換(VS Code OAuth クライアント)。有効な Copilot サブスクリプションが必要で、公式のサードパーティ API ではありません。 | +Google Antigravity のアカウント・プロバイダーのクォータ確認は、モデル一覧へのフォールバックも含め、固定の Google エンドポイントを使用します。その宛先では透過 Fake-IP DNS に対応し、TLS 検証、リダイレクト拒否、プライベートアドレス検査を維持します。カスタム base URL はモデル要求にのみ適用されます。`NO_PROXY` は直接接続のポリシーを維持します。 + + Nous の refresh が終端失敗した場合は、再認証に `ocx login nous` を実行してください。 正規の Kimi Coding Plan プリセット(`kimi` アカウントログインと `kimi-code` API key)では、 diff --git a/docs-site/src/content/docs/ko/guides/providers.md b/docs-site/src/content/docs/ko/guides/providers.md index 3c28be0a59..7781cc4f52 100644 --- a/docs-site/src/content/docs/ko/guides/providers.md +++ b/docs-site/src/content/docs/ko/guides/providers.md @@ -113,6 +113,9 @@ ocx logout | `cursor` | `cursor` | `https://api2.cursor.sh` | 실험적 PKCE 로그인, HTTP/2 전송, 계정별 모델 탐색을 지원합니다. | | `github-copilot` | `openai-chat` | `https://api.githubcopilot.com` | 실험적. GitHub 디바이스 플로우 + `copilot_internal` 교환(VS Code OAuth 클라이언트). 활성 Copilot 구독 필요; 공식 서드파티 API가 아닙니다. | +Google Antigravity 계정·제공자 할당량 확인은 모델 목록 폴백을 포함해 고정된 Google 회계 엔드포인트를 사용합니다. 해당 목적지의 투명 Fake-IP DNS를 지원하며 TLS 검증, 리다이렉트 거부, 사설 주소 검사는 유지합니다. 사용자 지정 base URL은 모델 요청에만 적용되며 할당량 목적지는 바꾸지 않습니다. `NO_PROXY`는 기존 직접 연결 정책을 유지합니다. + + Nous refresh가 종료 실패한 경우, `ocx login nous`로 재인증하세요. 정식 Kimi Coding Plan 프리셋(`kimi` 계정 로그인과 `kimi-code` API key)의 경우, opencodex는 diff --git a/docs-site/src/content/docs/ru/guides/providers.md b/docs-site/src/content/docs/ru/guides/providers.md index b99eb88ec2..b057cf77c6 100644 --- a/docs-site/src/content/docs/ru/guides/providers.md +++ b/docs-site/src/content/docs/ru/guides/providers.md @@ -123,6 +123,9 @@ ocx logout | `cursor` | `cursor` | `https://api2.cursor.sh` | Экспериментальный PKCE-вход, живой транспорт HTTP/2 и обнаружение моделей с фильтрацией по аккаунту. | | `github-copilot` | `openai-chat` | `https://api.githubcopilot.com` | Экспериментально. Device flow GitHub + обмен `copilot_internal` (OAuth-клиент VS Code). Требуется активная подписка Copilot; это не официальный сторонний API. | +Проверки квот аккаунтов и провайдера Google Antigravity используют фиксированные адреса Google, включая резервный запрос списка моделей. Для этих адресов поддерживается прозрачный Fake-IP DNS с сохранением проверки TLS, запрета перенаправлений и проверки частных адресов. Пользовательский base URL меняет только запросы моделей; `NO_PROXY` сохраняет политику прямого подключения. + + После терминального сбоя обновления Nous выполните `ocx login nous`, чтобы пройти повторную аутентификацию. Для канонических пресетов Kimi Coding Plan (вход через аккаунт `kimi` и API-ключ `kimi-code`) diff --git a/docs-site/src/content/docs/tr/guides/providers.md b/docs-site/src/content/docs/tr/guides/providers.md index 4559133d43..c5564e74a1 100644 --- a/docs-site/src/content/docs/tr/guides/providers.md +++ b/docs-site/src/content/docs/tr/guides/providers.md @@ -138,6 +138,9 @@ ocx logout | `cursor` | `cursor` | `https://api2.cursor.sh` | Deneysel PKCE girişi, canlı HTTP/2 aktarımı ve hesap filtreli model keşfi. | | `github-copilot` | `openai-chat` | `https://api.githubcopilot.com` | Deneysel. GitHub cihaz akışı + `copilot_internal` değişimi (VS Code OAuth istemcisi). Aktif bir Copilot aboneliği gerektirir; resmi bir üçüncü taraf API değildir. | +Google Antigravity hesap ve sağlayıcı kota sorguları, model listesine geri dönüş dahil sabit Google uç noktalarını kullanır. Bu hedefler için şeffaf Fake-IP DNS desteklenirken TLS doğrulaması, yönlendirme reddi ve özel adres kontrolleri korunur. Özel base URL yalnızca model isteklerini değiştirir; `NO_PROXY` doğrudan bağlantı politikasını korur. + + Uç bir Nous yenileme hatasından sonra yeniden kimlik doğrulamak için `ocx login nous` çalıştırın. diff --git a/docs-site/src/content/docs/zh-cn/guides/providers.md b/docs-site/src/content/docs/zh-cn/guides/providers.md index a4bbab6186..3fb72a4e6a 100644 --- a/docs-site/src/content/docs/zh-cn/guides/providers.md +++ b/docs-site/src/content/docs/zh-cn/guides/providers.md @@ -104,6 +104,9 @@ ocx logout | `cursor` | `cursor` | `https://api2.cursor.sh` | 实验性 PKCE 登录、带可选 HTTP/1.1 兼容路径的 HTTP/2 传输,以及按账号筛选的模型发现。 | | `github-copilot` | `openai-chat` | `https://api.githubcopilot.com` | 实验性。GitHub 设备流 + `copilot_internal` 交换(VS Code OAuth 客户端)。需要有效的 Copilot 订阅;不是官方第三方 API。 | +Google Antigravity 账户和提供方的配额查询(包括模型列表回退)使用固定的 Google 计量端点。这些目标支持透明 Fake-IP DNS,同时保留 TLS 验证、重定向拒绝和私有地址检查。自定义 base URL 仅改变模型请求,不改变配额目标;`NO_PROXY` 仍使用直连策略。 + + Nous refresh 发生终止性失败后,请运行 `ocx login nous` 重新认证。 对于规范的 Kimi Coding Plan 预设(`kimi` 账号登录和 `kimi-code` API key),opencodex diff --git a/docs-site/src/content/docs/zh-tw/guides/providers.md b/docs-site/src/content/docs/zh-tw/guides/providers.md index 0c20867124..96cf91ccfb 100644 --- a/docs-site/src/content/docs/zh-tw/guides/providers.md +++ b/docs-site/src/content/docs/zh-tw/guides/providers.md @@ -112,6 +112,9 @@ ocx logout | `cursor` | `cursor` | `https://api2.cursor.sh` | 實驗性 PKCE 登入、即時 HTTP/2 transport 與按帳號篩選的模型探索。 | | `github-copilot` | `openai-chat` | `https://api.githubcopilot.com` | 實驗性。GitHub device flow + `copilot_internal` exchange(VS Code OAuth client)。需要有效 Copilot 訂閱;不是官方第三方 API。 | +Google Antigravity 帳戶與供應商的配額查詢(包括模型清單備援)使用固定的 Google 計量端點。這些目標支援透明 Fake-IP DNS,同時保留 TLS 驗證、重新導向拒絕與私有位址檢查。自訂 base URL 只改變模型請求,不改變配額目標;`NO_PROXY` 仍使用直連政策。 + + 終端 Nous refresh 失敗後,執行 `ocx login nous` 重新認證。 對 canonical Kimi Coding Plan preset(`kimi` 帳號登入與 `kimi-code` API key),opencodex 只會把 caller diff --git a/src/providers/quota.ts b/src/providers/quota.ts index bb35c7ead1..7136cd3c70 100644 --- a/src/providers/quota.ts +++ b/src/providers/quota.ts @@ -2607,11 +2607,22 @@ function parseAntigravityQuotaSummary(body: Record | null): Pro } const ANTIGRAVITY_ACCOUNT_QUOTA_BASE = "https://daily-cloudcode-pa.googleapis.com"; -let antigravityOutboundDependencies: ProviderOutboundDependencies = {}; +const ANTIGRAVITY_QUOTA_SUMMARY_URL = `${ANTIGRAVITY_ACCOUNT_QUOTA_BASE}/v1internal:retrieveUserQuotaSummary`; +const ANTIGRAVITY_QUOTA_MODELS_URL = `${ANTIGRAVITY_ACCOUNT_QUOTA_BASE}/v1internal:fetchAvailableModels`; -/** Test seam: inject resolver/pinned transport for the per-account Antigravity probe. */ +/** Only these fixed accounting destinations may use transparent Fake-IP DNS. */ +export function isCanonicalAntigravityQuotaUrl(name: string, url: string): boolean { + return name === "google-antigravity" + && (url === ANTIGRAVITY_QUOTA_SUMMARY_URL || url === ANTIGRAVITY_QUOTA_MODELS_URL); +} + +let antigravityOutboundDependencies: ProviderOutboundDependencies = { + isCanonicalUrl: isCanonicalAntigravityQuotaUrl, +}; + +/** Test seam: inject resolver/pinned transport for provider and per-account probes. */ export function setAntigravityAccountQuotaTransportForTests(dependencies: ProviderOutboundDependencies | null): void { - antigravityOutboundDependencies = dependencies ?? {}; + antigravityOutboundDependencies = { ...dependencies, isCanonicalUrl: isCanonicalAntigravityQuotaUrl }; } /** @@ -2622,7 +2633,7 @@ export function setAntigravityAccountQuotaTransportForTests(dependencies: Provid * A redirect or non-2xx yields null (unavailable), never a partial row. */ export async function fetchAntigravityUsageQuota(accessToken: string, projectId: string): Promise { - const summaryUrl = `${ANTIGRAVITY_ACCOUNT_QUOTA_BASE}/v1internal:retrieveUserQuotaSummary`; + const summaryUrl = ANTIGRAVITY_QUOTA_SUMMARY_URL; try { const summaryResponse = await providerOutboundPost("google-antigravity", { baseUrl: ANTIGRAVITY_ACCOUNT_QUOTA_BASE }, summaryUrl, { headers: { @@ -2644,7 +2655,7 @@ export async function fetchAntigravityUsageQuota(accessToken: string, projectId: // Fallback to fetchAvailableModels on error } - const url = `${ANTIGRAVITY_ACCOUNT_QUOTA_BASE}/v1internal:fetchAvailableModels`; + const url = ANTIGRAVITY_QUOTA_MODELS_URL; const response = await providerOutboundPost("google-antigravity", { baseUrl: ANTIGRAVITY_ACCOUNT_QUOTA_BASE }, url, { headers: { Accept: "application/json", @@ -2662,7 +2673,7 @@ export async function fetchAntigravityUsageQuota(accessToken: string, projectId: return { customWindows, updatedAt: Date.now() }; } -async function fetchAntigravityQuota(provider: string, config: OcxProviderConfig): Promise { +async function fetchAntigravityQuota(provider: string): Promise { const credential = getCredential("google-antigravity"); if (!credential?.projectId) return null; let accessToken: string; @@ -2671,13 +2682,12 @@ async function fetchAntigravityQuota(provider: string, config: OcxProviderConfig } catch { return null; } - const baseUrl = (config.baseUrl || ANTIGRAVITY_ACCOUNT_QUOTA_BASE).replace(/\/+$/, ""); - // The summary probe is pinned to Google's own host through the provider-outbound + // Both probes are pinned to Google's own host through the provider-outbound // transport, mirroring `fetchAntigravityUsageQuota` above: a configured `baseUrl` is a - // routing choice for requests, not a second source of Google's accounting, and this - // request carries the account bearer. - const summaryUrl = `${ANTIGRAVITY_ACCOUNT_QUOTA_BASE}/v1internal:retrieveUserQuotaSummary`; + // routing choice for requests, not a second source of Google's accounting, and these + // requests carry the account bearer. + const summaryUrl = ANTIGRAVITY_QUOTA_SUMMARY_URL; try { const summaryResponse = await providerOutboundPost("google-antigravity", { baseUrl: ANTIGRAVITY_ACCOUNT_QUOTA_BASE }, summaryUrl, { headers: { @@ -2701,8 +2711,8 @@ async function fetchAntigravityQuota(provider: string, config: OcxProviderConfig // Fallback on network/fetch error } - const response = await fetch(`${baseUrl}/v1internal:fetchAvailableModels`, { - method: "POST", + const url = ANTIGRAVITY_QUOTA_MODELS_URL; + const response = await providerOutboundPost("google-antigravity", { baseUrl: ANTIGRAVITY_ACCOUNT_QUOTA_BASE }, url, { headers: { Accept: "application/json", "Content-Type": "application/json", @@ -2711,7 +2721,8 @@ async function fetchAntigravityQuota(provider: string, config: OcxProviderConfig }, body: JSON.stringify({ project: credential.projectId }), signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS), - }); + }, antigravityOutboundDependencies); + if (await providerRedirectError(response, url)) return null; if (!response.ok) return null; const customWindows = antigravityWindowsFromModels(asRecord(await readQuotaJson(response))); if (customWindows.length === 0) return null; @@ -2783,7 +2794,7 @@ async function maybeFetchProviderQuota( } if (provider.authMode === "oauth" && explicitAccountReader(name)) return await fetchExplicitCurrentQuota(name, provider, config); if (provider.authMode === "oauth" && name === "anthropic") return fetchAnthropicQuota(name); - if (provider.authMode === "oauth" && name === "google-antigravity") return fetchAntigravityQuota(name, provider); + if (provider.authMode === "oauth" && name === "google-antigravity") return await fetchAntigravityQuota(name); if (provider.authMode === "oauth" && name === "kiro") return fetchKiroQuota(name); // Passive providers (meta-muse): Meta publishes no quota endpoint, so there is no // probe to run — the row is the active account's last in-band observation. diff --git a/tests/providers/provider-account-quota.test.ts b/tests/providers/provider-account-quota.test.ts index 1855e92d66..989f55a410 100644 --- a/tests/providers/provider-account-quota.test.ts +++ b/tests/providers/provider-account-quota.test.ts @@ -15,6 +15,7 @@ import { supportsPerAccountQuota, providerOAuthAccountQuotaMode, } from "../../src/providers/quota"; +import { PROXY_ENV_KEYS } from "../../src/lib/proxy-env"; import { removeTreeWithRetry } from "../helpers/remove-tree"; const originalFetch = globalThis.fetch; @@ -681,7 +682,21 @@ describe("google-antigravity per-account quota (#1082)", () => { }); } - afterEach(() => setAntigravityAccountQuotaTransportForTests(null)); + const proxyKeys = PROXY_ENV_KEYS.flatMap(key => [key, key.toLowerCase()]); + const originalProxyEnv = Object.fromEntries(proxyKeys.map(key => [key, process.env[key]])); + const summaryUrl = "https://daily-cloudcode-pa.googleapis.com/v1internal:retrieveUserQuotaSummary"; + const modelsUrl = "https://daily-cloudcode-pa.googleapis.com/v1internal:fetchAvailableModels"; + + beforeEach(() => { + for (const key of proxyKeys) delete process.env[key]; + }); + afterEach(() => { + setAntigravityAccountQuotaTransportForTests(null); + for (const key of proxyKeys) { + if (originalProxyEnv[key] === undefined) delete process.env[key]; + else process.env[key] = originalProxyEnv[key]; + } + }); test("probes each account with its own bearer and project id on the fixed Google host using retrieveUserQuotaSummary", async () => { const expires = Date.now() + 60 * 60_000; @@ -748,6 +763,95 @@ describe("google-antigravity per-account quota (#1082)", () => { expect(byId[idA]!.quota!.customWindows![0]!.resetAt).toBeDefined(); }); + for (const fallback of [false, true]) { + test(`Fake-IP ${fallback ? "models fallback" : "summary"} keeps each account bearer and project separate`, async () => { + const expires = Date.now() + 3600_000; + await saveCredential("google-antigravity", { access: "agy-first", refresh: "r1", expires, projectId: "proj-first", accountId: "agy-a", email: "a@example.com" }); + await saveCredential("google-antigravity", { access: "agy-second", refresh: "r2", expires, projectId: "proj-second", accountId: "agy-b", email: "b@example.com" }); + let plainFetchCalls = 0; + globalThis.fetch = (async () => { plainFetchCalls += 1; throw new Error("unexpected raw quota fetch"); }) as typeof fetch; + const resolved: Array<{ url: string; benchmark?: boolean; private?: boolean; mihomo?: boolean }> = []; + const posted: Array<{ url: string; auth: string | null; project: string; address: string; tls?: boolean; signal: boolean }> = []; + setAntigravityAccountQuotaTransportForTests(null); + setAntigravityAccountQuotaTransportForTests({ + resolveAddresses: async (url, options) => { + const policy = typeof options === "object" ? options : undefined; + resolved.push({ url, benchmark: policy?.allowBenchmarkAddresses, private: policy?.allowPrivateNetwork, mihomo: policy?.allowMihomoIpv6FakeIp }); + if (!policy?.allowBenchmarkAddresses) throw new Error("benchmark address rejected"); + return { hostname: "daily-cloudcode-pa.googleapis.com", addresses: [{ address: "198.18.56.214", family: 4 }], privateNetwork: false }; + }, + pinnedPost: async (url, pinned, body, signal, options) => { + const auth = new Headers(options?.headers).get("authorization"); + posted.push({ url, auth, project: String(JSON.parse(body).project), address: pinned.address, tls: options?.rejectUnauthorized, signal: signal instanceof AbortSignal }); + if (url === summaryUrl && fallback) return new Response(null, { status: 404 }); + const [gem, cla]: [number, number] = auth === "Bearer agy-first" ? [0.86, 0.38] : [0.97, 0.91]; + return new Response(url === summaryUrl ? antigravitySummaryBody(gem, cla) : antigravityBody(gem, cla)); + }, + }); + const rows = await fetchProviderAccountQuotas("google-antigravity"); + const urls = fallback ? [summaryUrl, modelsUrl] : [summaryUrl]; + expect(resolved).toHaveLength(urls.length * 2); + expect(posted).toHaveLength(urls.length * 2); + for (const url of urls) { + expect(resolved.filter(row => row.url === url)).toEqual([ + { url, benchmark: true, private: false, mihomo: false }, + { url, benchmark: true, private: false, mihomo: false }, + ]); + } + for (const [auth, project] of [["Bearer agy-first", "proj-first"], ["Bearer agy-second", "proj-second"]]) { + expect(posted.filter(row => row.auth === auth)).toEqual(urls.map(url => ({ url, auth, project, address: "198.18.56.214", tls: true, signal: true }))); + } + const byId = Object.fromEntries(rows.map(row => [row.accountId, row])); + expect(byId[idFor("a@example.com")]?.quota?.customWindows?.map(w => w.percent)).toEqual(fallback ? [14, 62] : [14, 14, 62, 62]); + expect(byId[idFor("b@example.com")]?.quota?.customWindows?.map(w => w.percent)).toEqual(fallback ? [3, 9] : [3, 3, 9, 9]); + expect(plainFetchCalls).toBe(0); + }); + } + + test("NO_PROXY denial preserves an unavailable account row without sending its bearer", async () => { + await saveCredential("google-antigravity", { access: "agy-first", refresh: "r1", expires: Date.now() + 3600_000, projectId: "proj-first", accountId: "agy-a", email: "a@example.com" }); + process.env.no_proxy = "daily-cloudcode-pa.googleapis.com"; + const admitted: Array = []; + let posted = 0; + let plainFetchCalls = 0; + globalThis.fetch = (async () => { plainFetchCalls += 1; throw new Error("unexpected raw quota fetch"); }) as typeof fetch; + setAntigravityAccountQuotaTransportForTests({ + resolveAddresses: async (_url, options) => { + const allow = typeof options === "object" ? options?.allowBenchmarkAddresses : undefined; + admitted.push(allow); + if (!allow) throw new Error("benchmark address rejected"); + return { hostname: "daily-cloudcode-pa.googleapis.com", addresses: [{ address: "198.18.56.214", family: 4 }], privateNetwork: false }; + }, + pinnedPost: async () => { posted += 1; return new Response(antigravitySummaryBody(0.5, 0.5)); }, + }); + expect(await fetchProviderAccountQuotas("google-antigravity")).toEqual([{ accountId: idFor("a@example.com"), quota: null, unavailable: true }]); + expect(admitted).toEqual([false, false]); + expect(posted).toBe(0); + expect(plainFetchCalls).toBe(0); + }); + + for (const status of [302, 307, 308, 401, 403]) { + for (const fallback of [false, true]) { + test(`account ${fallback ? "models" : "summary"} ${status} returns unavailable without following Location`, async () => { + await saveCredential("google-antigravity", { access: "agy-first", refresh: "r1", expires: Date.now() + 3600_000, projectId: "proj-first", accountId: "agy-a", email: "a@example.com" }); + const posted: string[] = []; + let plainFetchCalls = 0; + globalThis.fetch = (async () => { plainFetchCalls += 1; throw new Error("unexpected raw quota fetch"); }) as typeof fetch; + setAntigravityAccountQuotaTransportForTests({ + resolveAddresses: async () => ({ hostname: "daily-cloudcode-pa.googleapis.com", addresses: [{ address: "142.250.0.1", family: 4 }], privateNetwork: false }), + pinnedPost: async url => { + posted.push(url); + if (url === summaryUrl && fallback) return new Response(null, { status: 404 }); + return new Response(null, { status, headers: { location: "https://daily-cloudcode-pa.googleapis.com/redirect-target" } }); + }, + }); + expect(await fetchProviderAccountQuotas("google-antigravity")).toEqual([{ accountId: idFor("a@example.com"), quota: null, unavailable: true }]); + expect(posted).toEqual(fallback ? [summaryUrl, modelsUrl] : [summaryUrl]); + expect(plainFetchCalls).toBe(0); + }); + } + } + test("a rejected destination never receives a bearer; the row is unavailable, not 0%", async () => { const expires = Date.now() + 60 * 60_000; await saveCredential("google-antigravity", { access: "agy-first", refresh: "r1", expires, projectId: "proj-first", accountId: "agy-a", email: "a@example.com" }); diff --git a/tests/providers/provider-quota.test.ts b/tests/providers/provider-quota.test.ts index 5a02e53f28..9c12869b04 100644 --- a/tests/providers/provider-quota.test.ts +++ b/tests/providers/provider-quota.test.ts @@ -13,6 +13,7 @@ import { saveCredential } from "../../src/oauth/store"; import { clearProviderQuotaCache, fetchProviderQuotaReports, + isCanonicalAntigravityQuotaUrl, parseOllamaCloudQuota, parseXaiCreditsResponse, QUOTA_RESPONSE_MAX_BYTES, @@ -21,7 +22,10 @@ import { setProviderQuotaBeforePublishForTests, } from "../../src/providers/quota"; import type { OcxConfig } from "../../src/types"; +import { PROXY_ENV_KEYS } from "../../src/lib/proxy-env"; import { repoPath } from "../helpers/repo-root"; +const proxyKeys = PROXY_ENV_KEYS.flatMap(key => [key, key.toLowerCase()]); +const originalProxyEnv = Object.fromEntries(proxyKeys.map(key => [key, process.env[key]])); const originalFetch = globalThis.fetch; const previousOpencodexHome = process.env.OPENCODEX_HOME; const previousCodexHome = process.env.CODEX_HOME; @@ -75,6 +79,7 @@ function testConfig(): OcxConfig { } beforeEach(() => { + for (const key of proxyKeys) delete process.env[key]; opencodexHome = mkdtempSync(join(tmpdir(), "ocx-quota-")); codexHome = mkdtempSync(join(tmpdir(), "codex-quota-")); process.env.OPENCODEX_HOME = opencodexHome; @@ -90,6 +95,10 @@ beforeEach(() => { }); afterEach(() => { + for (const key of proxyKeys) { + if (originalProxyEnv[key] === undefined) delete process.env[key]; + else process.env[key] = originalProxyEnv[key]; + } globalThis.fetch = originalFetch; clearAccountQuota(); clearProviderQuotaCache(); @@ -203,15 +212,39 @@ describe("fetchProviderQuotaReports", () => { await saveCredential("google-antigravity", { access: "agy-access-secret", refresh: "agy-refresh-secret", expires: Date.now() + 3600_000, projectId: "agy-project-secret" }); await saveCredential("kimi", { access: "kimi-access-secret", refresh: "kimi-refresh-secret", expires: Date.now() + 3600_000 }); - // The Antigravity summary probe is pinned to Google's host through the provider-outbound - // transport and never touches globalThis.fetch; without this seam the test would make a - // real network request. A 404 here exercises the fetchAvailableModels fallback below. + const seen: { url: string; authorization?: string; body?: string }[] = []; + // Both Antigravity accounting requests use the pinned transport. Keep the + // summary unavailable so this fixture still exercises the models fallback. setAntigravityAccountQuotaTransportForTests({ resolveAddresses: async () => ({ hostname: "daily-cloudcode-pa.googleapis.com", addresses: [{ address: "142.250.0.1", family: 4 }], privateNetwork: false }), - pinnedPost: async () => new Response("not found", { status: 404 }), + pinnedPost: async (url, _pinned, body, _signal, options) => { + seen.push({ url, authorization: new Headers(options?.headers).get("authorization") ?? undefined, body }); + if (url === "https://daily-cloudcode-pa.googleapis.com/v1internal:fetchAvailableModels") { + return new Response(JSON.stringify({ + models: { + "gemini-3.6-flash-medium": { + displayName: "Gemini 3.6 Flash (Medium)", + quotaInfo: { remainingFraction: 0.64, resetTime: "2026-07-05T14:00:00Z" }, + }, + "claude-sonnet-4.6": { + displayName: "Claude Sonnet", + quotaInfoByTier: { + sonnet: { remainingFraction: 0.21, resetTime: "2026-07-05T15:00:00Z" }, + }, + }, + autocomplete: { + displayName: "Autocomplete", + quotaInfo: { remainingFraction: 0.01, resetTime: "2026-07-05T16:00:00Z" }, + }, + }, + rawProject: "agy-project-secret", + rawToken: "agy-access-secret", + }), { status: 200, headers: { "content-type": "application/json" } }); + } + return new Response("not found", { status: 404 }); + }, }); - const seen: { url: string; authorization?: string; body?: string }[] = []; globalThis.fetch = (async (input: RequestInfo | URL, init?: RequestInit) => { const url = String(input); const headers = init?.headers as Record | undefined; @@ -258,28 +291,6 @@ describe("fetchProviderQuotaReports", () => { billingCycleEnd: "2026-08-01T00:00:00.000Z", }), { status: 200, headers: { "content-type": "application/json" } }); } - if (url === "https://daily-cloudcode-pa.googleapis.com/v1internal:fetchAvailableModels") { - return new Response(JSON.stringify({ - models: { - "gemini-3.6-flash-medium": { - displayName: "Gemini 3.6 Flash (Medium)", - quotaInfo: { remainingFraction: 0.64, resetTime: "2026-07-05T14:00:00Z" }, - }, - "claude-sonnet-4.6": { - displayName: "Claude Sonnet", - quotaInfoByTier: { - sonnet: { remainingFraction: 0.21, resetTime: "2026-07-05T15:00:00Z" }, - }, - }, - autocomplete: { - displayName: "Autocomplete", - quotaInfo: { remainingFraction: 0.01, resetTime: "2026-07-05T16:00:00Z" }, - }, - }, - rawProject: "agy-project-secret", - rawToken: "agy-access-secret", - }), { status: 200, headers: { "content-type": "application/json" } }); - } if (url === "https://api.kimi.com/coding/v1/usages") { return new Response(JSON.stringify({ user: { userId: "kimi-user-secret", businessId: "kimi-business-secret" }, @@ -3078,6 +3089,205 @@ describe("fetchProviderQuotaReports", () => { expect(posted).toEqual(["https://daily-cloudcode-pa.googleapis.com/v1internal:retrieveUserQuotaSummary"]); }); + describe("Google Antigravity canonical quota transport (#3781)", () => { + const summaryUrl = "https://daily-cloudcode-pa.googleapis.com/v1internal:retrieveUserQuotaSummary"; + const modelsUrl = "https://daily-cloudcode-pa.googleapis.com/v1internal:fetchAvailableModels"; + const summaryBody = JSON.stringify({ groups: [{ displayName: "Gemini", buckets: [{ window: "5h", remainingFraction: 0.6 }] }] }); + const modelsBody = JSON.stringify({ models: { gemini: { quotaInfo: { remainingFraction: 0.75 } } } }); + const publicAddress = { hostname: "daily-cloudcode-pa.googleapis.com", addresses: [{ address: "142.250.0.1", family: 4 }], privateNetwork: false }; + let plainFetchCalls: string[]; + + function config(baseUrl = "https://daily-cloudcode-pa.googleapis.com"): OcxConfig { + return { + defaultProvider: "google-antigravity", + providers: { "google-antigravity": { adapter: "google", authMode: "oauth", baseUrl, allowPrivateNetwork: true } }, + } as OcxConfig; + } + + beforeEach(async () => { + await saveCredential("google-antigravity", { + access: "agy-canonical-access", refresh: "agy-canonical-refresh", expires: Date.now() + 3600_000, projectId: "agy-canonical-project", + }); + plainFetchCalls = []; + globalThis.fetch = (async (input) => { + plainFetchCalls.push(String(input)); + throw new Error("unexpected quota-owned raw fetch"); + }) as typeof fetch; + }); + + test("canonical proof accepts only the two exact Google accounting URLs", () => { + for (const url of [summaryUrl, modelsUrl]) { + expect(isCanonicalAntigravityQuotaUrl("google-antigravity", url)).toBe(true); + expect(isCanonicalAntigravityQuotaUrl("custom", url)).toBe(false); + for (const candidate of [ + "", "not a URL", url.replace("https:", "http:"), + url.replace(".googleapis.com", ".googleapis.com.evil.example"), + url.replace("daily-cloudcode-pa", "cloudcode-pa"), + url.replace("https://", "https://user:pass@"), + url.replace(".com/", ".com:443/"), url.replace(".com/", ".com:8443/"), + url.replace("https://", "HTTPS://"), `${url}/`, `${url}/extra`, + `${url}?token=secret`, `${url}#fragment`, ` ${url}`, + url.replace("v1internal:", "v1internal%3A"), + url.replace("v1internal:", "prefix/v1internal:"), + "https://daily-cloudcode-pa.googleapis.com/v1internal:other", + "https://198.18.0.1/v1internal:fetchAvailableModels", + "https://127.0.0.1/v1internal:fetchAvailableModels", + "https://169.254.169.254/v1internal:fetchAvailableModels", + ]) expect(isCanonicalAntigravityQuotaUrl("google-antigravity", candidate)).toBe(false); + } + }); + + for (const fallback of [false, true]) { + test(`production proof survives reset for Fake-IP ${fallback ? "fallback" : "summary"}`, async () => { + const resolved: Array<{ url: string; benchmark?: boolean; private?: boolean; mihomo?: boolean }> = []; + const posted: Array<{ url: string; address: string; tls?: boolean; auth: string | null; body: string; signal: boolean }> = []; + setAntigravityAccountQuotaTransportForTests({ isCanonicalUrl: () => false }); + setAntigravityAccountQuotaTransportForTests(null); + // Resolver/pinned-only overrides must retain the production canonical proof. + setAntigravityAccountQuotaTransportForTests({ + resolveAddresses: async (url, options) => { + const policy = typeof options === "object" ? options : undefined; + resolved.push({ url, benchmark: policy?.allowBenchmarkAddresses, private: policy?.allowPrivateNetwork, mihomo: policy?.allowMihomoIpv6FakeIp }); + if (!policy?.allowBenchmarkAddresses) throw new Error("benchmark address rejected"); + return { ...publicAddress, addresses: [{ address: "198.18.56.214", family: 4 }] }; + }, + pinnedPost: async (url, pinned, body, signal, options) => { + posted.push({ url, address: pinned.address, tls: options?.rejectUnauthorized, auth: new Headers(options?.headers).get("authorization"), body, signal: signal instanceof AbortSignal }); + if (url === summaryUrl && fallback) return new Response(null, { status: 404 }); + return new Response(url === summaryUrl ? summaryBody : modelsBody); + }, + }); + const result = await fetchProviderQuotaReports(config(), true); + const urls = fallback ? [summaryUrl, modelsUrl] : [summaryUrl]; + expect(resolved).toEqual(urls.map(url => ({ url, benchmark: true, private: false, mihomo: false }))); + expect(posted).toEqual(urls.map(url => ({ url, address: "198.18.56.214", tls: true, auth: "Bearer agy-canonical-access", body: JSON.stringify({ project: "agy-canonical-project" }), signal: true }))); + expect(result.reports[0]?.source).toBe(fallback ? "google-antigravity:fetchAvailableModels" : "google-antigravity:retrieveUserQuotaSummary"); + expect(result.reports[0]?.quota.customWindows).toEqual([{ label: "Gem", percent: fallback ? 25 : 40 }]); + expect(plainFetchCalls).toEqual([]); + }); + } + + for (const baseUrl of ["https://custom.example/v1", "http://127.0.0.1:1/", "https://169.254.169.254/", "https://daily-cloudcode-pa.googleapis.com.evil.example/"]) { + test(`models fallback ignores configured destination ${baseUrl}`, async () => { + const resolved: Array<{ url: string; private?: boolean }> = []; + const posted: string[] = []; + setAntigravityAccountQuotaTransportForTests({ + resolveAddresses: async (url, options) => { + resolved.push({ url, private: typeof options === "object" ? options?.allowPrivateNetwork : undefined }); + return publicAddress; + }, + pinnedPost: async (url) => { + posted.push(url); + return url === summaryUrl ? new Response(null, { status: 404 }) : new Response(modelsBody); + }, + }); + const result = await fetchProviderQuotaReports(config(baseUrl), true); + expect(result.reports[0]?.quota.customWindows).toEqual([{ label: "Gem", percent: 25 }]); + expect(resolved).toEqual([{ url: summaryUrl, private: false }, { url: modelsUrl, private: false }]); + expect(posted).toEqual([summaryUrl, modelsUrl]); + expect(plainFetchCalls).toEqual([]); + }); + } + + for (const noProxy of ["daily-cloudcode-pa.googleapis.com", "*"]) { + test(`NO_PROXY ${noProxy} keeps benchmark DNS blocked`, async () => { + process.env.NO_PROXY = noProxy; + const admitted: Array = []; + let posted = 0; + setAntigravityAccountQuotaTransportForTests({ + resolveAddresses: async (_url, options) => { + const allow = typeof options === "object" ? options?.allowBenchmarkAddresses : undefined; + admitted.push(allow); + if (!allow) throw new Error("benchmark address rejected"); + return publicAddress; + }, + pinnedPost: async () => { posted += 1; return new Response(summaryBody); }, + }); + expect((await fetchProviderQuotaReports(config(), true)).reports).toEqual([]); + expect(admitted).toEqual([false, false]); + expect(posted).toBe(0); + expect(plainFetchCalls).toEqual([]); + }); + } + + test("resolved-address policy rejection cannot escape to raw fallback fetch", async () => { + // The real classifier's mixed-address cases live in destination-policy-resolved.test.ts; + // this checks that quota cannot bypass its rejection through a second transport. + const resolved: string[] = []; + let posted = 0; + setAntigravityAccountQuotaTransportForTests({ + resolveAddresses: async url => { resolved.push(url); throw new Error("provider URL resolves to metadata"); }, + pinnedPost: async () => { posted += 1; return new Response(modelsBody); }, + }); + expect((await fetchProviderQuotaReports(config("https://custom.example"), true)).reports).toEqual([]); + expect(resolved).toEqual([summaryUrl, modelsUrl]); + expect(posted).toBe(0); + expect(plainFetchCalls).toEqual([]); + }); + + for (const summary of ["{}", "invalid JSON"]) { + test(`unusable summary ${summary} falls back through the fixed models transport`, async () => { + const posted: string[] = []; + setAntigravityAccountQuotaTransportForTests({ + resolveAddresses: async () => publicAddress, + pinnedPost: async url => { + posted.push(url); + return new Response(url === summaryUrl ? summary : modelsBody); + }, + }); + const result = await fetchProviderQuotaReports(config(), true); + expect(result.reports[0]?.quota.customWindows).toEqual([{ label: "Gem", percent: 25 }]); + expect(posted).toEqual([summaryUrl, modelsUrl]); + expect(plainFetchCalls).toEqual([]); + }); + } + + for (const status of [200, 500]) { + test(`unusable models payload with HTTP ${status} produces no fabricated quota`, async () => { + const posted: string[] = []; + setAntigravityAccountQuotaTransportForTests({ + resolveAddresses: async () => publicAddress, + pinnedPost: async url => { + posted.push(url); + return url === summaryUrl ? new Response(null, { status: 404 }) : new Response("invalid JSON", { status }); + }, + }); + expect((await fetchProviderQuotaReports(config(), true)).reports).toEqual([]); + expect(posted).toEqual([summaryUrl, modelsUrl]); + expect(plainFetchCalls).toEqual([]); + }); + } + + for (const status of [302, 307, 308, 401, 403]) { + test(`summary ${status} terminates without a models request`, async () => { + const posted: string[] = []; + setAntigravityAccountQuotaTransportForTests({ + resolveAddresses: async () => publicAddress, + pinnedPost: async url => { posted.push(url); return new Response(null, { status, headers: { location: modelsUrl } }); }, + }); + expect((await fetchProviderQuotaReports(config(), true)).reports).toEqual([]); + expect(posted).toEqual([summaryUrl]); + expect(plainFetchCalls).toEqual([]); + }); + } + + for (const status of [302, 307, 308]) { + test(`models ${status} does not follow even a same-host redirect`, async () => { + const posted: string[] = []; + setAntigravityAccountQuotaTransportForTests({ + resolveAddresses: async () => publicAddress, + pinnedPost: async url => { + posted.push(url); + return url === summaryUrl ? new Response(null, { status: 404 }) : new Response(null, { status, headers: { location: summaryUrl } }); + }, + }); + expect((await fetchProviderQuotaReports(config(), true)).reports).toEqual([]); + expect(posted).toEqual([summaryUrl, modelsUrl]); + expect(plainFetchCalls).toEqual([]); + }); + } + }); + test("Ollama Cloud maps 5-hour session and weekly windows from /api/usage (legacy plan)", async () => { const seen: Array<{ url: string; authorization?: string; redirect?: RequestRedirect }> = []; globalThis.fetch = (async (input: RequestInfo | URL, init?: RequestInit) => {