diff --git a/src/config/index.ts b/src/config/index.ts index 17fa577..b50df32 100755 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -537,6 +537,8 @@ class ConfigManager { join(homedir(), '.env'), ]; + let envProvider: string | undefined; + for (const envPath of envPaths) { if (existsSync(envPath)) { const envContent = readFileSync(envPath, 'utf-8'); @@ -553,9 +555,18 @@ class ConfigManager { // empty OPENROUTER_API_KEY= — the .env file no longer clobbers it. if (key && value && process.env[key] === undefined) { process.env[key] = value; + + // Track LLM_PROVIDER for default provider + if (key === 'LLM_PROVIDER') { + envProvider = value; + } } } } + // Set TEMPEST_DEFAULT_PROVIDER if LLM_PROVIDER found + if (envProvider && !process.env.TEMPEST_DEFAULT_PROVIDER) { + process.env.TEMPEST_DEFAULT_PROVIDER = envProvider; + } break; } } @@ -674,7 +685,16 @@ class ConfigManager { * Get the LLM configuration for the default or specified provider */ getLLMConfig(provider?: LLMProvider, model?: string): LLMConfig { - const actualProvider = provider || this.config.get('defaultProvider'); + let actualProvider = provider; + + if (!actualProvider) { + const envProvider = process.env.TEMPEST_DEFAULT_PROVIDER?.trim(); + if (envProvider) { + actualProvider = envProvider as LLMProvider; + } else { + actualProvider = this.config.get('defaultProvider'); + } + } let apiKey: string | undefined; let baseUrl: string | undefined;