From f64cedefe5c8705728a8c42a36a5d5f4d99921a0 Mon Sep 17 00:00:00 2001 From: Praveen K Palaniswamy Date: Fri, 21 Aug 2026 20:03:53 -0400 Subject: [PATCH] fix(resilience): honor shared passthrough providers --- open-sse/services/accountFallback.ts | 4 +++- tests/unit/account-fallback-service.test.ts | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/open-sse/services/accountFallback.ts b/open-sse/services/accountFallback.ts index 5204c7410d4..900e8b62240 100644 --- a/open-sse/services/accountFallback.ts +++ b/open-sse/services/accountFallback.ts @@ -31,7 +31,7 @@ import { looksLikeQuotaExhausted, type FailureKind, } from "../../src/shared/utils/classify429"; -import { resolveProviderId } from "../../src/shared/constants/providers"; +import { getProviderById, resolveProviderId } from "../../src/shared/constants/providers"; import { resolveUseUpstream429BreakerHints } from "../../src/shared/utils/providerHints"; import { getCodexModelScope } from "../config/codexQuotaScopes.ts"; import { getQuotaScopedModelForProvider } from "./antigravityQuotaFamily.ts"; @@ -711,6 +711,8 @@ export function hasPerModelQuota( if (getCanonicalLockProvider(provider) === "codex") return true; if (provider === "gemini" || provider === "github") return true; if (getPassthroughProviders().has(provider)) return true; + const sharedProvider = getProviderById(resolveProviderId(provider)); + if (sharedProvider?.passthroughModels === true) return true; if (isCompatibleProvider(provider)) return true; return false; } diff --git a/tests/unit/account-fallback-service.test.ts b/tests/unit/account-fallback-service.test.ts index 26da5a7d5a4..9ee2ba08ca0 100644 --- a/tests/unit/account-fallback-service.test.ts +++ b/tests/unit/account-fallback-service.test.ts @@ -435,6 +435,13 @@ test("hasPerModelQuota returns true for GitHub Copilot provider (#1624)", () => assert.equal(hasPerModelQuota("github", "gpt-5-mini"), true); }); +test("hasPerModelQuota honors shared passthrough provider metadata (#11071)", () => { + assert.equal(hasPerModelQuota("ollama-local"), true); + assert.equal(hasPerModelQuota("lm-studio"), true); + assert.equal(hasPerModelQuota("vllm"), true); + assert.equal(hasPerModelQuota("mlx-gemma"), false); +}); + test("Codex Spark 429s are scoped away from normal Codex models", () => { const connectionId = `codex-${Date.now()}`; clearModelLock("codex", connectionId, "gpt-5.3-codex-spark");