fix: delegate all live model fetching to agent provider_model_ids() (#411)
* fix: delegate all live model fetching to agent's provider_model_ids() Previously _handle_live_models() maintained its own per-provider logic: - anthropic, google, gemini returned 'not_supported' (hardcoded exclusions) - openai-codex had a custom branch (added in v0.50.30) - openai/copilot had hardcoded base URLs - other providers fell through to a generic /v1/models fetch Now the handler delegates entirely to hermes_cli.models.provider_model_ids(), which is the agent's authoritative resolver: - anthropic: live fetch via /v1/models with correct API-key or OAuth headers - copilot: live fetch from api.githubcopilot.com/models with Copilot headers - openai-codex: Codex OAuth endpoint + ~/.codex/ cache fallback - nous: live fetch from Nous inference portal - deepseek, kimi-coding: generic OpenAI-compat /v1/models - opencode-zen/go: OpenCode live catalog - openrouter: curated static list (live returns 300+ which is overwhelming) - google/gemini, zai, minimax: static list (non-standard or Anthropic-compat endpoints) - any others: graceful static fallback Also removed the client-side skip guard in _fetchLiveModels() (ui.js) that blocked live fetching for anthropic, google, and gemini. The hardcoded model lists in _PROVIDER_MODELS remain as the fallback when credentials are missing or network is unavailable — they are never shown when live data is available. * docs: v0.50.31 release — version badge and CHANGELOG --------- Co-authored-by: Nathan Esquenazi <nesquena@gmail.com>
This commit is contained in:
19
CHANGELOG.md
19
CHANGELOG.md
@@ -1,5 +1,24 @@
|
||||
# Hermes Web UI -- Changelog
|
||||
|
||||
## [v0.50.31] fix: delegate all live model fetching to agent's provider_model_ids()
|
||||
|
||||
`_handle_live_models()` in `api/routes.py` previously maintained its own per-provider fetch logic and returned `not_supported` for Anthropic, Google, and Gemini. Now it delegates entirely to the agent's `hermes_cli.models.provider_model_ids()` — the single authoritative resolver — and `_fetchLiveModels()` in `ui.js` no longer skips any provider.
|
||||
|
||||
**What each provider now returns (live data where credentials are present, static fallback otherwise):**
|
||||
- `anthropic` — live from `api.anthropic.com/v1/models` (API key or OAuth token with correct beta headers)
|
||||
- `copilot` — live from `api.githubcopilot.com/models` with required Copilot headers
|
||||
- `openai-codex` — Codex OAuth endpoint → `~/.codex/` cache → `DEFAULT_CODEX_MODELS`
|
||||
- `nous` — live from Nous inference portal
|
||||
- `deepseek`, `kimi-coding` — generic OpenAI-compat `/v1/models`
|
||||
- `opencode-zen`, `opencode-go` — OpenCode live catalog
|
||||
- `openrouter` — curated static list (live returns 300+ which floods the picker)
|
||||
- `google`, `gemini`, `zai`, `minimax` — static list (non-standard or Anthropic-compat endpoints)
|
||||
- All others — graceful static fallback from `_PROVIDER_MODELS`
|
||||
|
||||
The hardcoded lists in `_PROVIDER_MODELS` remain as credential-missing / network-unavailable fallbacks. `api/routes.py` shrank by ~100 lines. Updated 2 tests to reflect the improved behavior.
|
||||
|
||||
- 1039 tests total (up from 1038)
|
||||
|
||||
## [v0.50.30] fix: openai-codex live model fetch routes through agent's get_codex_model_ids()
|
||||
|
||||
`_handle_live_models()` was grouping `openai-codex` with `openai` and sending `GET https://api.openai.com/v1/models` — which returns 403 because Codex auth is OAuth-based via `chatgpt.com`, not a standard API key. The live fetch silently failed, so users only ever saw the hardcoded static list.
|
||||
|
||||
Reference in New Issue
Block a user