fix: preserve user overrides (cost, headers, compat) during model merge

Only override capability fields (input, reasoning, contextWindow, maxTokens)
from code; spread explicitModel first so user-specific fields like cost,
headers, and compat are preserved.
This commit is contained in:
manikv12 2026-01-30 01:29:41 -06:00
parent 8bca9fd828
commit 8cfd737186

View File

@ -45,8 +45,14 @@ function mergeProviderModels(implicit: ProviderConfig, explicit: ProviderConfig)
const implicitModel = id ? implicitById.get(id) : undefined;
if (!implicitModel) return explicitModel;
// Merge: code-defined capability fields override stale config values,
// while config-only fields (cost, headers, compat) are preserved.
return { ...explicitModel, ...implicitModel };
// while user-specific fields (cost, headers, compat) are preserved.
return {
...explicitModel,
input: implicitModel.input,
reasoning: implicitModel.reasoning,
contextWindow: implicitModel.contextWindow,
maxTokens: implicitModel.maxTokens,
};
});
// Append implicit models whose IDs are not present in the explicit list.