From 6e848f60eff7ddc8f48fb25411d052bdb3d1448a Mon Sep 17 00:00:00 2001 From: Wesley Simplicio Date: Sat, 9 May 2026 15:05:55 -0300 Subject: [PATCH] fix(doctor): normalize provider name and aliases before dedicated-skip check --- hermes_cli/doctor.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/hermes_cli/doctor.py b/hermes_cli/doctor.py index a987a76f710..aaa490a3372 100644 --- a/hermes_cli/doctor.py +++ b/hermes_cli/doctor.py @@ -254,13 +254,21 @@ def _build_apikey_providers_list() -> list: try: from providers import list_providers from providers.base import ProviderProfile as _PP + try: + from hermes_cli.providers import normalize_provider as _normalize_provider + except Exception: # pragma: no cover - normalization is best-effort + def _normalize_provider(_name: str) -> str: + return (_name or "").strip().lower() for _pp in list_providers(): if not isinstance(_pp, _PP) or _pp.auth_type != "api_key" or not _pp.env_vars: continue _label = _pp.display_name or _pp.name if _label in _known_names or _pp.name in _known_canonical: continue - if any(_alias in _dedicated_canonical for _alias in (_pp.aliases or ())): + _candidates = {_normalize_provider(_pp.name)} + for _alias in (_pp.aliases or ()): + _candidates.add(_normalize_provider(_alias)) + if _candidates & _dedicated_canonical: continue # Separate API-key vars from base-URL override vars — the health-check # loop sends the first found value as Authorization: Bearer, so a URL