fix(providers): stabilize runtime normalization hooks

This commit is contained in:
Peter Steinberger
2026-04-04 19:33:30 +01:00
parent e06e36d41a
commit ca200eb480
19 changed files with 196 additions and 126 deletions

View File

@@ -412,7 +412,25 @@ export function normalizeProviderConfigWithPlugin(params: {
env?: NodeJS.ProcessEnv;
context: ProviderNormalizeConfigContext;
}): ModelProviderConfig | undefined {
return resolveProviderHookPlugin(params)?.normalizeConfig?.(params.context) ?? undefined;
const hasConfigChange = (normalized: ModelProviderConfig) =>
normalized !== params.context.providerConfig;
const matchedPlugin = resolveProviderHookPlugin(params);
const normalizedMatched = matchedPlugin?.normalizeConfig?.(params.context);
if (normalizedMatched && hasConfigChange(normalizedMatched)) {
return normalizedMatched;
}
for (const candidate of resolveProviderPluginsForHooks(params)) {
if (!candidate.normalizeConfig || candidate === matchedPlugin) {
continue;
}
const normalized = candidate.normalizeConfig(params.context);
if (normalized && hasConfigChange(normalized)) {
return normalized;
}
}
return undefined;
}
export function applyProviderNativeStreamingUsageCompatWithPlugin(params: {