diff --git a/hermes_cli/config.py b/hermes_cli/config.py index b95b1c666a89..0754933d6082 100644 --- a/hermes_cli/config.py +++ b/hermes_cli/config.py @@ -3707,6 +3707,21 @@ OPTIONAL_ENV_VARS = { "category": "provider", "advanced": True, }, + "UPSTAGE_API_KEY": { + "description": "Upstage API key for Solar LLM models", + "prompt": "Upstage API Key", + "url": "https://console.upstage.ai/api-keys", + "password": True, + "category": "provider", + }, + "UPSTAGE_BASE_URL": { + "description": "Upstage base URL override (default: https://api.upstage.ai/v1)", + "prompt": "Upstage base URL (leave empty for default)", + "url": None, + "password": False, + "category": "provider", + "advanced": True, + }, "AWS_REGION": { "description": "AWS region for Bedrock API calls (e.g. us-east-1, eu-central-1)", "prompt": "AWS Region", diff --git a/tests/hermes_cli/test_upstage_provider.py b/tests/hermes_cli/test_upstage_provider.py index 621b86f8d413..4e2829f61419 100644 --- a/tests/hermes_cli/test_upstage_provider.py +++ b/tests/hermes_cli/test_upstage_provider.py @@ -68,6 +68,26 @@ class TestUpstageOverlay: assert get_label("upstage") == "Upstage Solar" +class TestUpstageEnvCatalog: + """The dashboard/desktop Providers page lists only OPTIONAL_ENV_VARS keys + whose category is "provider". Without these entries UPSTAGE_API_KEY / + UPSTAGE_BASE_URL never reach the frontend and Upstage stays invisible even + though EnvPage.tsx has a matching PROVIDER_GROUPS prefix. + """ + + def test_optional_env_vars_include_upstage(self): + from hermes_cli.config import OPTIONAL_ENV_VARS + + assert "UPSTAGE_API_KEY" in OPTIONAL_ENV_VARS + assert OPTIONAL_ENV_VARS["UPSTAGE_API_KEY"]["category"] == "provider" + assert OPTIONAL_ENV_VARS["UPSTAGE_API_KEY"]["password"] is True + assert OPTIONAL_ENV_VARS["UPSTAGE_API_KEY"]["url"] + + assert "UPSTAGE_BASE_URL" in OPTIONAL_ENV_VARS + assert OPTIONAL_ENV_VARS["UPSTAGE_BASE_URL"]["category"] == "provider" + assert OPTIONAL_ENV_VARS["UPSTAGE_BASE_URL"]["password"] is False + + class TestUpstageConfigProviderWins: """End-to-end: an explicit config provider must beat env auto-detect.