From 1ed9583a25893c430d48acd35d762c007a658423 Mon Sep 17 00:00:00 2001 From: TheCheetah Date: Sun, 2 Aug 2026 23:20:35 +0100 Subject: [PATCH] fix: route free DeepSeek V4 Flash from DeepSeek group --- src/clawrouter_hermes/models.py | 2 +- .../provider_template/init.py.tmpl | 2 +- src/clawrouter_hermes/skills/clawrouter/SKILL.md | 2 +- tests/test_provider_template.py | 13 +++++++------ 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/clawrouter_hermes/models.py b/src/clawrouter_hermes/models.py index eb64214..f311f58 100644 --- a/src/clawrouter_hermes/models.py +++ b/src/clawrouter_hermes/models.py @@ -46,10 +46,10 @@ "blockrun/moonshot/kimi-k3", "blockrun/qwen/qwen3.7-max", "blockrun/deepseek/deepseek-v4-pro", + "blockrun/free/deepseek-v4-flash", "blockrun/deepseek/deepseek-chat", "blockrun/deepseek/deepseek-reasoner", "blockrun/free/mistral-large-3-675b", - "blockrun/free/deepseek-v4-flash", "blockrun/free/seed-oss-36b", "blockrun/free/nemotron-3-nano-omni-30b-a3b-reasoning", "blockrun/free/mistral-nemotron", diff --git a/src/clawrouter_hermes/provider_template/init.py.tmpl b/src/clawrouter_hermes/provider_template/init.py.tmpl index 381b36b..0791c79 100644 --- a/src/clawrouter_hermes/provider_template/init.py.tmpl +++ b/src/clawrouter_hermes/provider_template/init.py.tmpl @@ -81,10 +81,10 @@ _STATIC_FALLBACKS = ( "blockrun/moonshot/kimi-k3", "blockrun/qwen/qwen3.7-max", "blockrun/deepseek/deepseek-v4-pro", + "blockrun/free/deepseek-v4-flash", "blockrun/deepseek/deepseek-chat", "blockrun/deepseek/deepseek-reasoner", "blockrun/free/mistral-large-3-675b", - "blockrun/free/deepseek-v4-flash", "blockrun/free/seed-oss-36b", "blockrun/free/nemotron-3-nano-omni-30b-a3b-reasoning", "blockrun/free/mistral-nemotron", diff --git a/src/clawrouter_hermes/skills/clawrouter/SKILL.md b/src/clawrouter_hermes/skills/clawrouter/SKILL.md index fbd1fec..a151258 100644 --- a/src/clawrouter_hermes/skills/clawrouter/SKILL.md +++ b/src/clawrouter_hermes/skills/clawrouter/SKILL.md @@ -164,7 +164,7 @@ Rules handle ~80% of requests in <1ms. Only ambiguous queries hit the LLM classi ## Available Models -66 models including: claude-fable-5, claude-opus-5, claude-opus-4.8, claude-opus-4.7, claude-sonnet-5, claude-sonnet-4.6, gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna, gpt-5.5, gpt-5.4, gemini-3.1-pro, gemini-3.5-flash, grok-4.5, grok-4.3, grok-build-0.1, deepseek-v4-pro, deepseek-chat, glm-5.2, kimi-k3, minimax-m3, qwen3.7-max, and the curated free models (mistral-large-3-675b, deepseek-v4-flash, seed-oss-36b, nemotron-3-nano-omni-30b-a3b-reasoning [vision], mistral-nemotron, step-3.7-flash, nemotron-nano-9b-v2, nemotron-nano-12b-v2-vl [vision], qwen3-next-80b-a3b-instruct). +66 models including: claude-fable-5, claude-opus-5, claude-opus-4.8, claude-opus-4.7, claude-sonnet-5, claude-sonnet-4.6, gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna, gpt-5.5, gpt-5.4, gemini-3.1-pro, gemini-3.5-flash, grok-4.5, grok-4.3, grok-build-0.1, deepseek-v4-pro, deepseek-v4-flash, deepseek-chat, glm-5.2, kimi-k3, minimax-m3, qwen3.7-max, and the curated free models (mistral-large-3-675b, seed-oss-36b, nemotron-3-nano-omni-30b-a3b-reasoning [vision], mistral-nemotron, step-3.7-flash, nemotron-nano-9b-v2, nemotron-nano-12b-v2-vl [vision], qwen3-next-80b-a3b-instruct). ## Built-in Agent Tools diff --git a/tests/test_provider_template.py b/tests/test_provider_template.py index 33726d1..7cea5fb 100644 --- a/tests/test_provider_template.py +++ b/tests/test_provider_template.py @@ -32,8 +32,8 @@ "blockrun/moonshot/kimi-k3", "blockrun/qwen/qwen3.7-max", "blockrun/deepseek/deepseek-v4-pro", - "blockrun/free/mistral-large-3-675b", "blockrun/free/deepseek-v4-flash", + "blockrun/free/mistral-large-3-675b", ) @@ -127,6 +127,7 @@ def test_curated_picker_catalog_contains_free_models(): chat_models = models.chat_models() free_models = [model for model in chat_models if models.is_free_model(model)] assert "blockrun/free" in free_models + assert "blockrun/free/deepseek-v4-flash" in free_models assert any(model.startswith("blockrun/free/") for model in free_models) @@ -149,10 +150,12 @@ def test_curated_picker_catalog_orders_featured_models(): # and match the live free tier exactly (order mirrors top-models.json, # with post-top-models catalog additions appended). free_tail = [m for m in chat_models if m.startswith("blockrun/free/")] - assert chat_models[-len(free_tail):] == free_tail + assert chat_models[-(len(free_tail) - 1):] == [ + model for model in free_tail if model != "blockrun/free/deepseek-v4-flash" + ] assert free_tail == [ - "blockrun/free/mistral-large-3-675b", "blockrun/free/deepseek-v4-flash", + "blockrun/free/mistral-large-3-675b", "blockrun/free/seed-oss-36b", "blockrun/free/nemotron-3-nano-omni-30b-a3b-reasoning", "blockrun/free/mistral-nemotron", @@ -165,9 +168,7 @@ def test_curated_picker_catalog_orders_featured_models(): # catalog retirement so a bad merge can't resurrect them. retired_models = frozenset({ "blockrun/free/qwen3-coder-480b", # NVIDIA EOL 2026-06-14 - # Never a real SKU: the gateway removed paid V4 Flash and kept only a - # legacy alias to deepseek/deepseek-chat, so this ID smoke-tests green - # while duplicating deepseek-chat. The free model is free/deepseek-v4-flash. + # Never a real SKU: keep the free route ID in the DeepSeek group instead. "blockrun/deepseek/deepseek-v4-flash", # Dropped from the live BlockRun catalog by 2026-07-17: "blockrun/xai/grok-4-1-fast-reasoning",