mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-28 06:51:16 +08:00
fix(cli): prefer auth.py env vars over models.dev in provider detection (#6755)
list_authenticated_providers() was using env var names from the external models.dev registry to detect credentials. This registry has incorrect mappings for 5 providers: minimax-cn, zai, opencode-zen, opencode-go, and kilocode — causing them to not appear in /model even when the correct API key is set. Now checks PROVIDER_REGISTRY from auth.py first (our source of truth), falling back to models.dev only for providers not in our registry. Fixes #6620. Based on devorun's investigation in PR #6625.
This commit is contained in:
@@ -733,6 +733,7 @@ def list_authenticated_providers(
|
|||||||
fetch_models_dev,
|
fetch_models_dev,
|
||||||
get_provider_info as _mdev_pinfo,
|
get_provider_info as _mdev_pinfo,
|
||||||
)
|
)
|
||||||
|
from hermes_cli.auth import PROVIDER_REGISTRY
|
||||||
from hermes_cli.models import OPENROUTER_MODELS, _PROVIDER_MODELS
|
from hermes_cli.models import OPENROUTER_MODELS, _PROVIDER_MODELS
|
||||||
|
|
||||||
results: List[dict] = []
|
results: List[dict] = []
|
||||||
@@ -753,9 +754,16 @@ def list_authenticated_providers(
|
|||||||
if not isinstance(pdata, dict):
|
if not isinstance(pdata, dict):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
env_vars = pdata.get("env", [])
|
# Prefer auth.py PROVIDER_REGISTRY for env var names — it's our
|
||||||
if not isinstance(env_vars, list):
|
# source of truth. models.dev can have wrong mappings (e.g.
|
||||||
continue
|
# minimax-cn → MINIMAX_API_KEY instead of MINIMAX_CN_API_KEY).
|
||||||
|
pconfig = PROVIDER_REGISTRY.get(hermes_id)
|
||||||
|
if pconfig and pconfig.api_key_env_vars:
|
||||||
|
env_vars = list(pconfig.api_key_env_vars)
|
||||||
|
else:
|
||||||
|
env_vars = pdata.get("env", [])
|
||||||
|
if not isinstance(env_vars, list):
|
||||||
|
continue
|
||||||
|
|
||||||
# Check if any env var is set
|
# Check if any env var is set
|
||||||
has_creds = any(os.environ.get(ev) for ev in env_vars)
|
has_creds = any(os.environ.get(ev) for ev in env_vars)
|
||||||
|
|||||||
Reference in New Issue
Block a user