fix(image): preserve provider config overrides in OpenRouter fallback

Honor providerConfig.baseUrl, providerConfig.api, and headers in
the OpenRouter fallback path instead of hardcoding defaults. This
ensures custom OpenRouter gateways/proxies and auth headers are
preserved when plugin-based capability lookup returns nothing.
This commit is contained in:
Jerry-Xin 2026-03-16 15:28:40 +08:00
parent 2355b0603c
commit e39a8515f2

View File

@ -323,6 +323,13 @@ export function resolveModelWithRegistry(params: {
? ["text", "image"]
: ["text"];
const providerHeaders = sanitizeModelHeaders(providerConfig?.headers, {
stripSecretRefMarkers: true,
});
const modelHeaders = sanitizeModelHeaders(configuredOpenRouterModel?.headers, {
stripSecretRefMarkers: true,
});
return normalizeResolvedModel({
provider,
cfg,
@ -330,15 +337,18 @@ export function resolveModelWithRegistry(params: {
model: {
id: modelId,
name: modelId,
api: "openai-completions",
api: configuredOpenRouterModel?.api ?? providerConfig?.api ?? "openai-completions",
provider,
baseUrl: "https://openrouter.ai/api/v1",
baseUrl: providerConfig?.baseUrl ?? "https://openrouter.ai/api/v1",
reasoning: configuredOpenRouterModel?.reasoning ?? false,
input: resolvedInput,
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
contextWindow: configuredOpenRouterModel?.contextWindow ?? DEFAULT_CONTEXT_TOKENS,
// Align with OPENROUTER_DEFAULT_MAX_TOKENS in models-config.providers.ts
maxTokens: configuredOpenRouterModel?.maxTokens ?? 8192,
...(providerHeaders || modelHeaders
? { headers: { ...providerHeaders, ...modelHeaders } }
: {}),
} as Model<Api>,
});
}