diff --git a/pkg/config/config.go b/pkg/config/config.go index 7a51236a1..004d860a4 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -904,26 +904,26 @@ func SaveConfig(path string, cfg *Config) error { func applyModelEnvOverrides(cfg *Config) { // Maps provider prefix (from "provider/model" format) to env var name. providerEnvMap := map[string]string{ - "openai": "OPENAI_API_KEY", - "anthropic": "ANTHROPIC_API_KEY", - "anthropic-messages": "ANTHROPIC_API_KEY", - "openrouter": "OPENROUTER_API_KEY", - "groq": "GROQ_API_KEY", - "gemini": "GEMINI_API_KEY", - "google": "GEMINI_API_KEY", - "deepseek": "DEEPSEEK_API_KEY", - "zhipu": "ZHIPU_API_KEY", - "moonshot": "MOONSHOT_API_KEY", - "mistral": "MISTRAL_API_KEY", - "cerebras": "CEREBRAS_API_KEY", - "volcengine": "VOLCENGINE_API_KEY", - "modelscope": "MODELSCOPE_API_KEY", - "longcat": "LONGCAT_API_KEY", - "nvidia": "NVIDIA_API_KEY", - "perplexity": "PERPLEXITY_API_KEY", - "avian": "AVIAN_API_KEY", - "qwen-portal": "QWEN_API_KEY", - "ollama": "OLLAMA_API_KEY", + "openai": "OPENAI_API_KEY", + "anthropic": "ANTHROPIC_API_KEY", + "anthropic-messages": "ANTHROPIC_API_KEY", + "openrouter": "OPENROUTER_API_KEY", + "groq": "GROQ_API_KEY", + "gemini": "GEMINI_API_KEY", + "google": "GEMINI_API_KEY", + "deepseek": "DEEPSEEK_API_KEY", + "zhipu": "ZHIPU_API_KEY", + "moonshot": "MOONSHOT_API_KEY", + "mistral": "MISTRAL_API_KEY", + "cerebras": "CEREBRAS_API_KEY", + "volcengine": "VOLCENGINE_API_KEY", + "modelscope": "MODELSCOPE_API_KEY", + "longcat": "LONGCAT_API_KEY", + "nvidia": "NVIDIA_API_KEY", + "perplexity": "PERPLEXITY_API_KEY", + "avian": "AVIAN_API_KEY", + "qwen-portal": "QWEN_API_KEY", + "ollama": "OLLAMA_API_KEY", } for i, m := range cfg.ModelList { // Resolve ${VAR} references in sensitive/configurable fields first. diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go index f234b03f7..eecc7eea4 100644 --- a/pkg/config/config_test.go +++ b/pkg/config/config_test.go @@ -629,12 +629,12 @@ func TestResolveEnvRef(t *testing.T) { input string want string }{ - {"${MY_SECRET}", "resolved-value"}, // set var → resolved - {"${UNSET_VAR_XYZ}", "${UNSET_VAR_XYZ}"}, // unset var → unchanged - {"literal-value", "literal-value"}, // no pattern → unchanged + {"${MY_SECRET}", "resolved-value"}, // set var → resolved + {"${UNSET_VAR_XYZ}", "${UNSET_VAR_XYZ}"}, // unset var → unchanged + {"literal-value", "literal-value"}, // no pattern → unchanged {"prefix-${MY_SECRET}", "prefix-${MY_SECRET}"}, // partial → unchanged (no partial substitution) {"${MY_SECRET}-suffix", "${MY_SECRET}-suffix"}, // partial → unchanged - {"${}", "${}"}, // empty name → unchanged + {"${}", "${}"}, // empty name → unchanged } for _, tc := range tests {