refactor(hermes_cli): models.py — flatten provider_model_ids / profile catalog fall-through

This commit is contained in:
Teknium
2026-09-02 21:34:05 -07:00
parent 43eccd23eb
commit 2a9481274c

View File

@@ -1164,11 +1164,9 @@ def _anthropic_catalog(normalized: str, force_refresh: bool) -> list[str]:
curated = list(_PROVIDER_MODELS.get("anthropic", []))
if not live:
return curated
if cfg_base_url:
return live
# The live /v1/models dump lags newly-routed curated aliases (reachable before enumerated):
# curated first, then live-only extras, so a fresh curated model never disappears.
return _merge_unique(curated, live)
return live if cfg_base_url else _merge_unique(curated, live)
def _openai_catalog(normalized: str, force_refresh: bool) -> Optional[list[str]]:
@@ -1184,7 +1182,7 @@ def _openai_catalog(normalized: str, force_refresh: bool) -> Optional[list[str]]
try:
live = fetch_api_models(api_key, base)
except Exception:
return None
live = None
if not live:
return None
if not is_official_openai_host(base):
@@ -1265,15 +1263,14 @@ def _profile_live_catalog(normalized: str) -> Optional[list[str]]:
if not (profile and profile.auth_type == "api_key" and profile.base_url):
return None
api_key, base_url = _api_key_credentials(normalized)
if api_key:
live = profile.fetch_models(api_key=api_key, base_url=base_url or profile.base_url or None)
if live:
curated = list(_PROVIDER_MODELS.get(normalized, [])) or list(profile.fallback_models or ())
if not curated:
return live
primary, secondary = (live, curated) if normalized in _LIVE_FIRST_PICKER_PROVIDERS else (curated, live)
return _merge_unique(primary, secondary, key=_model_dedup_key)
return list(profile.fallback_models) if profile.fallback_models else None
live = profile.fetch_models(api_key=api_key, base_url=base_url or profile.base_url or None) if api_key else None
if not live:
return list(profile.fallback_models) if profile.fallback_models else None
curated = list(_PROVIDER_MODELS.get(normalized, [])) or list(profile.fallback_models or ())
if not curated:
return live
primary, secondary = (live, curated) if normalized in _LIVE_FIRST_PICKER_PROVIDERS else (curated, live)
return _merge_unique(primary, secondary, key=_model_dedup_key)
def provider_model_ids(provider: Optional[str], *, force_refresh: bool = False) -> list[str]:
@@ -1289,21 +1286,18 @@ def provider_model_ids(provider: Optional[str], *, force_refresh: bool = False)
models = fetcher(normalized, force_refresh)
if models is not None:
return models
try:
models = _profile_live_catalog(normalized)
if models is not None:
return models
except Exception:
pass
models = None
if models is not None:
return models
curated_static = list(_PROVIDER_MODELS.get(normalized, []))
if normalized in _MODELS_DEV_PREFERRED:
merged = _merge_with_models_dev(normalized, curated_static)
if normalized in {"xai", "xai-oauth"}:
return _xai_finalize_catalog(merged)
return merged
return curated_static
if normalized not in _MODELS_DEV_PREFERRED:
return curated_static
merged = _merge_with_models_dev(normalized, curated_static)
return _xai_finalize_catalog(merged) if normalized in {"xai", "xai-oauth"} else merged
# ---------------------------------------------------------------------------