fix(model-catalog): fall through to raw.github when Vercel 403s; swap step-3.5-flash for step-3.7-flash on OpenRouter+Nous

The docs site (Vercel) serves /docs/api/model-catalog.json behind a bot
mitigation rule that returns HTTP 403 + x-vercel-mitigated: challenge for
non-browser User-Agents — including urllib (what the CLI uses) and curl.
When that happens, get_catalog() falls back to the stale disk cache and
new model releases (Opus 4.8, etc.) never reach the /model picker even
though they're already in OPENROUTER_MODELS and the live OpenRouter API.

Adds a fallback URL chain: when the primary catalog URL fails, walk
DEFAULT_CATALOG_FALLBACK_URLS — currently the raw.githubusercontent.com
copy of the same file. GitHub raw doesn't bot-gate, so the manifest stays
reachable through Vercel firewall hiccups. Per-provider override URLs
keep their direct-fetch semantics (operators configure those specifically,
no implicit fallback).

Also swaps stepfun/step-3.5-flash for stepfun/step-3.7-flash in the
OpenRouter + Nous Portal curated picker lists. Native stepfun provider
configuration (api.stepfun.ai) is left alone — that depends on what
stepfun.ai itself serves, not what OpenRouter routes.

Test plan: 5 new TestFallbackChain tests cover primary-success,
primary-failure-fallback-success, all-fail, primary==fallback-dedup, and
end-to-end get_catalog routing through the new helper. Existing 23 tests
in test_model_catalog.py still pass (28 total). Wider tests/hermes_cli/
sweep: 5701/5701 pass.
This commit is contained in:
teknium1
2026-05-29 00:25:36 -07:00
committed by Teknium
parent 8d57281650
commit f2d88c820c
4 changed files with 124 additions and 6 deletions
+3 -3
View File
@@ -1,6 +1,6 @@
{
"version": 1,
"updated_at": "2026-05-28T17:19:08Z",
"updated_at": "2026-05-29T06:55:44Z",
"metadata": {
"source": "hermes-agent repo",
"docs": "https://hermes-agent.nousresearch.com/docs/reference/model-catalog"
@@ -97,7 +97,7 @@
"description": ""
},
{
"id": "stepfun/step-3.5-flash",
"id": "stepfun/step-3.7-flash",
"description": ""
},
{
@@ -210,7 +210,7 @@
"id": "qwen/qwen3.6-35b-a3b"
},
{
"id": "stepfun/step-3.5-flash"
"id": "stepfun/step-3.7-flash"
},
{
"id": "minimax/minimax-m2.7"