This commit is contained in:
Witwe Bolte 2026-04-24 17:26:27 -05:00 committed by GitHub
commit e9fd9f6109
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 100 additions and 0 deletions

View file

@ -33,6 +33,7 @@ class TestProviderRegistry:
("copilot-acp", "GitHub Copilot ACP", "external_process"),
("copilot", "GitHub Copilot", "api_key"),
("huggingface", "Hugging Face", "api_key"),
("ppq", "PPQ (PayPerQ)", "api_key"),
("zai", "Z.AI / GLM", "api_key"),
("xai", "xAI", "api_key"),
("nvidia", "NVIDIA NIM", "api_key"),
@ -67,6 +68,12 @@ class TestProviderRegistry:
assert pconfig.base_url_env_var == "NVIDIA_BASE_URL"
assert pconfig.inference_base_url == "https://integrate.api.nvidia.com/v1"
def test_ppq_env_vars(self):
pconfig = PROVIDER_REGISTRY["ppq"]
assert pconfig.api_key_env_vars == ("PPQ_API_KEY",)
assert pconfig.base_url_env_var == "PPQ_BASE_URL"
assert pconfig.inference_base_url == "https://api.ppq.ai"
def test_copilot_env_vars(self):
pconfig = PROVIDER_REGISTRY["copilot"]
assert pconfig.api_key_env_vars == ("COPILOT_GITHUB_TOKEN", "GH_TOKEN", "GITHUB_TOKEN")
@ -138,6 +145,7 @@ class TestProviderRegistry:
PROVIDER_ENV_VARS = (
"OPENROUTER_API_KEY", "OPENAI_API_KEY", "ANTHROPIC_API_KEY", "ANTHROPIC_TOKEN",
"CLAUDE_CODE_OAUTH_TOKEN",
"PPQ_API_KEY",
"GLM_API_KEY", "ZAI_API_KEY", "Z_AI_API_KEY",
"KIMI_API_KEY", "KIMI_BASE_URL", "STEPFUN_API_KEY", "STEPFUN_BASE_URL",
"MINIMAX_API_KEY", "MINIMAX_CN_API_KEY",

View file

@ -157,6 +157,8 @@ class TestNormalizeProvider:
def test_known_aliases(self):
assert normalize_provider("glm") == "zai"
assert normalize_provider("payperq") == "ppq"
assert normalize_provider("ppq.ai") == "ppq"
assert normalize_provider("kimi") == "kimi-coding"
assert normalize_provider("moonshot") == "kimi-coding"
assert normalize_provider("step") == "stepfun"
@ -173,6 +175,7 @@ class TestProviderLabel:
assert provider_label("stepfun") == "StepFun Step Plan"
assert provider_label("copilot") == "GitHub Copilot"
assert provider_label("copilot-acp") == "GitHub Copilot ACP"
assert provider_label("ppq") == "PPQ (PayPerQ)"
assert provider_label("auto") == "Auto"
def test_unknown_provider_preserves_original_name(self):
@ -210,6 +213,23 @@ class TestProviderModelIds:
):
assert provider_model_ids("stepfun") == ["step-3.5-flash", "step-3-agent-lite"]
def test_ppq_prefers_live_catalog(self):
with patch("hermes_cli.auth.resolve_api_key_provider_credentials", return_value={
"api_key": "***", "base_url": "https://api.ppq.ai",
}), patch("hermes_cli.models.fetch_api_models", return_value=[
"claude-sonnet-4.6", "openai/gpt-5.4",
]):
assert provider_model_ids("ppq") == ["claude-sonnet-4.6", "openai/gpt-5.4"]
def test_ppq_falls_back_to_curated(self):
"""When live fetch fails, PPQ falls back to the curated _PROVIDER_MODELS list."""
with patch("hermes_cli.auth.resolve_api_key_provider_credentials", return_value={
"api_key": "", "base_url": "https://api.ppq.ai",
}):
ids = provider_model_ids("ppq")
assert len(ids) > 0
assert "claude-opus-4.7" in ids
def test_copilot_prefers_live_catalog(self):
with patch("hermes_cli.auth.resolve_api_key_provider_credentials", return_value={"api_key": "gh-token"}), \
patch("hermes_cli.models._fetch_github_models", return_value=["gpt-5.4", "claude-sonnet-4.6"]):