diff --git a/src/commands/models.ts b/src/commands/models.ts index fabd950..de5c424 100644 --- a/src/commands/models.ts +++ b/src/commands/models.ts @@ -344,15 +344,33 @@ function switchConfig(opts: SwitchOptions) { // Switch auxiliary tasks if (!config.auxiliary) config.auxiliary = {} as Record; + // Look up provider from cfg registry to get base_url & api_key + const registryProvider = findProviderFromRegistry(opts.provider); + const providerValue = registryProvider ? `custom:${registryProvider.name}` : opts.provider; + + // Ensure custom_providers in config.yaml contains this provider + if (registryProvider) { + if (!config.custom_providers) config.custom_providers = []; + const existing = config.custom_providers.find((p) => p.name === registryProvider.name); + if (!existing) { + config.custom_providers.push(registryProvider); + } + } + for (const task of opts.auxTasks) { if (!config.auxiliary[task]) { config.auxiliary[task] = { provider: "", model: "", timeout: 30 }; } - config.auxiliary[task].provider = opts.provider; + config.auxiliary[task].provider = providerValue; + if (registryProvider) { + config.auxiliary[task].base_url = registryProvider.base_url; + const apiKey = getProviderApiKey(registryProvider); + if (apiKey) config.auxiliary[task].api_key = apiKey; + } if (opts.model) { config.auxiliary[task].model = opts.model; } - console.log(` auxiliary.${task} → provider=${opts.provider}${opts.model ? ` model=${opts.model}` : ""}`); + console.log(` auxiliary.${task} → provider=${providerValue}${opts.model ? ` model=${opts.model}` : ""}`); } } else { // Switch main provider — look up from cfg registry