fix(coding-agent): apply modelOverrides to extension providers
closes #6367
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user