feat(core): Wire up chat code path for model configs. (#12850)

This commit is contained in:
joshualitt
2025-11-19 20:41:16 -08:00
committed by GitHub
parent 43d6dc3668
commit 257cd07a3a
19 changed files with 485 additions and 347 deletions

View File

@@ -56,9 +56,15 @@ export interface _ResolvedModelConfig {
}
export class ModelConfigService {
private readonly runtimeAliases: Record<string, ModelConfigAlias> = {};
// TODO(12597): Process config to build a typed alias hierarchy.
constructor(private readonly config: ModelConfigServiceConfig) {}
registerRuntimeModelConfig(aliasName: string, alias: ModelConfigAlias): void {
this.runtimeAliases[aliasName] = alias;
}
private resolveAlias(
aliasName: string,
aliases: Record<string, ModelConfigAlias>,
@@ -99,12 +105,13 @@ export class ModelConfigService {
} {
const config = this.config || {};
const { aliases = {}, overrides = [] } = config;
const allAliases = { ...aliases, ...this.runtimeAliases };
let baseModel: string | undefined = context.model;
let resolvedConfig: GenerateContentConfig = {};
// Step 1: Alias Resolution
if (aliases[context.model]) {
const resolvedAlias = this.resolveAlias(context.model, aliases);
if (allAliases[context.model]) {
const resolvedAlias = this.resolveAlias(context.model, allAliases);
baseModel = resolvedAlias.modelConfig.model; // This can now be undefined
resolvedConfig = this.deepMerge(
resolvedConfig,