fix(coding-agent): apply modelOverrides to extension providers

closes #6367
This commit is contained in:
Mario Zechner
2026-07-09 11:22:35 +02:00
parent 4285712bae
commit c6251a866b
4 changed files with 82 additions and 7 deletions
@@ -353,6 +353,7 @@ export class ModelRegistry {
private models: Model<Api>[] = [];
private providerRequestConfigs: Map<string, ProviderRequestConfig> = new Map();
private modelRequestHeaders: Map<string, Record<string, string>> = new Map();
private configModelOverrides: Map<string, Map<string, ModelOverride>> = new Map();
private registeredProviders: Map<string, ProviderConfigInput> = new Map();
private loadError: string | undefined = undefined;
readonly authStorage: AuthStorage;
@@ -406,6 +407,7 @@ export class ModelRegistry {
modelOverrides,
error,
} = this.modelsJsonPath ? this.loadCustomModels(this.modelsJsonPath) : emptyCustomModelsResult();
this.configModelOverrides = modelOverrides;
if (error) {
this.loadError = error;
@@ -459,6 +461,15 @@ export class ModelRegistry {
});
}
private getConfiguredModelOverride(providerName: string, modelId: string): ModelOverride | undefined {
return this.configModelOverrides.get(providerName)?.get(modelId);
}
private applyConfiguredModelOverride(providerName: string, model: Model<Api>): Model<Api> {
const modelOverride = this.getConfiguredModelOverride(providerName, model.id);
return modelOverride ? applyModelOverride(model, modelOverride) : model;
}
/** Merge custom models into built-in list by provider+id (custom wins on conflicts). */
private mergeCustomModels(builtInModels: Model<Api>[], customModels: Model<Api>[]): Model<Api>[] {
const merged = [...builtInModels];
@@ -921,9 +932,14 @@ export class ModelRegistry {
// Parse and add new models
for (const modelDef of config.models) {
const api = modelDef.api || config.api;
this.storeModelHeaders(providerName, modelDef.id, modelDef.headers);
const modelOverride = this.getConfiguredModelOverride(providerName, modelDef.id);
const headers =
modelDef.headers || modelOverride?.headers
? { ...modelDef.headers, ...modelOverride?.headers }
: undefined;
this.storeModelHeaders(providerName, modelDef.id, headers);
this.models.push({
const model = this.applyConfiguredModelOverride(providerName, {
id: modelDef.id,
name: modelDef.name,
api: api as Api,
@@ -938,6 +954,7 @@ export class ModelRegistry {
headers: undefined,
compat: modelDef.compat,
} as Model<Api>);
this.models.push(model);
}
// Apply OAuth modifyModels if credentials exist (e.g., to update baseUrl)