From 1d2d70a8fd59e1a7a0fd5302ff2446a01a7ca4a6 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 5 Apr 2026 14:37:29 +0100 Subject: [PATCH] perf: trim provider policy runtime lookups --- src/agents/models-config.e2e-harness.ts | 6 +++ .../models-config.providers.policy.test.ts | 12 +++++ src/agents/models-config.providers.policy.ts | 50 ++++++++++++------- 3 files changed, 51 insertions(+), 17 deletions(-) diff --git a/src/agents/models-config.e2e-harness.ts b/src/agents/models-config.e2e-harness.ts index 1992a2ed7c1..20276b4cbc5 100644 --- a/src/agents/models-config.e2e-harness.ts +++ b/src/agents/models-config.e2e-harness.ts @@ -299,6 +299,12 @@ async function inferImplicitProviderTestPluginIds(params: { providerIds.add(pluginId); } } + const legacyGrokApiKey = ( + params.config?.tools?.web?.search as { grok?: { apiKey?: unknown } } | undefined + )?.grok?.apiKey; + if (legacyGrokApiKey !== undefined) { + providerIds.add("xai"); + } if (providerIds.size === 0) { // No config/env/auth hints: keep ambient local auto-discovery focused on the // one provider that is expected to probe localhost in tests. diff --git a/src/agents/models-config.providers.policy.test.ts b/src/agents/models-config.providers.policy.test.ts index 37ed0c1e197..7156ade508c 100644 --- a/src/agents/models-config.providers.policy.test.ts +++ b/src/agents/models-config.providers.policy.test.ts @@ -38,4 +38,16 @@ describe("models-config.providers.policy", () => { baseUrl: "https://generativelanguage.googleapis.com/v1beta", }); }); + + it("does not treat generic transport APIs as provider plugin ids", () => { + const provider = { + api: "openai-completions" as const, + baseUrl: "https://example.invalid/v1", + apiKey: "EXAMPLE_KEY", + models: [], + }; + + expect(resolveProviderConfigApiKeyResolver("dashscope-vision", provider)).toBeUndefined(); + expect(normalizeProviderSpecificConfig("dashscope-vision", provider)).toBe(provider); + }); }); diff --git a/src/agents/models-config.providers.policy.ts b/src/agents/models-config.providers.policy.ts index aad8a6817bf..85477b619fd 100644 --- a/src/agents/models-config.providers.policy.ts +++ b/src/agents/models-config.providers.policy.ts @@ -1,19 +1,35 @@ +import { resolveMantleBearerToken } from "../../extensions/amazon-bedrock-mantle/discovery.js"; import { resolveBedrockConfigApiKey } from "../../extensions/amazon-bedrock/api.js"; +import { resolveAnthropicVertexConfigApiKey } from "../../extensions/anthropic-vertex/region.js"; import { normalizeGoogleProviderConfig, shouldNormalizeGoogleProviderConfig, } from "../../extensions/google/api.js"; +import { MODEL_APIS } from "../config/types.models.js"; import { applyProviderNativeStreamingUsageCompatWithPlugin, normalizeProviderConfigWithPlugin, - resolveProviderConfigApiKeyWithPlugin, - resolveProviderRuntimePlugin, } from "../plugins/provider-runtime.js"; import type { ProviderConfig } from "./models-config.providers.secrets.js"; +const GENERIC_PROVIDER_APIS = new Set([ + "openai-completions", + "openai-responses", + "anthropic-messages", + "google-generative-ai", +]); +const PROVIDERS_WITH_RUNTIME_NORMALIZE_CONFIG = new Set(["anthropic"]); + function resolveProviderPluginLookupKey(providerKey: string, provider?: ProviderConfig): string { const api = typeof provider?.api === "string" ? provider.api.trim() : ""; - return api || providerKey; + if ( + api && + MODEL_APIS.includes(api as (typeof MODEL_APIS)[number]) && + !GENERIC_PROVIDER_APIS.has(api) + ) { + return api; + } + return providerKey; } export function applyNativeStreamingUsageCompat( @@ -47,6 +63,9 @@ export function normalizeProviderSpecificConfig( return normalizeGoogleProviderConfig(providerKey, provider); } const runtimeProviderKey = resolveProviderPluginLookupKey(providerKey, provider); + if (!PROVIDERS_WITH_RUNTIME_NORMALIZE_CONFIG.has(runtimeProviderKey)) { + return provider; + } const normalized = normalizeProviderConfigWithPlugin({ provider: runtimeProviderKey, @@ -71,19 +90,16 @@ export function resolveProviderConfigApiKeyResolver( return resolved?.trim() || undefined; }; } - const runtimeProviderKey = resolveProviderPluginLookupKey(providerKey, provider); - if (!resolveProviderRuntimePlugin({ provider: runtimeProviderKey })?.resolveConfigApiKey) { - return undefined; + const runtimeProviderKey = resolveProviderPluginLookupKey(providerKey, provider).trim(); + if (runtimeProviderKey === "anthropic-vertex") { + return (env) => { + const resolved = resolveAnthropicVertexConfigApiKey(env); + return resolved?.trim() || undefined; + }; } - return (env) => { - const resolved = resolveProviderConfigApiKeyWithPlugin({ - provider: runtimeProviderKey, - env, - context: { - provider: providerKey, - env, - }, - }); - return resolved?.trim() || undefined; - }; + if (runtimeProviderKey === "amazon-bedrock-mantle") { + return (env) => + resolveMantleBearerToken(env)?.trim() ? "AWS_BEARER_TOKEN_BEDROCK" : undefined; + } + return undefined; }