diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e12005..45d77b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,20 @@ All notable changes to blockrun-llm will be documented in this file. +## 1.21.1 — 2026-10-20 + +### Changed +- **Router Core re-synced to upstream `3aca0e1`** (was `2cd5a10`; the + TypeScript SDK moves to the same commit in 3.24.4). The only upstream change + is a `google/gemini-4-argon` capability entry — 1M context, 65,536 max + output, vision, `supports_tools` False until a paid tool probe verifies it, + so tool requests fail closed. The 88-decision parity fixture is re-copied + and byte-identical, so no routing decision changes. + +### Docs +- README model list adds `google/gemini-4-argon` (Gemini 4 Argon, live on Base + and Solana since 2026-10-20). Catalog only: no routing tier picks it. + ## 1.21.0 — 2026-10-20 ### Changed diff --git a/VERSION b/VERSION index 3500250..2844977 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.21.0 +1.21.1 diff --git a/blockrun_llm/__init__.py b/blockrun_llm/__init__.py index a62ca39..dec00e3 100644 --- a/blockrun_llm/__init__.py +++ b/blockrun_llm/__init__.py @@ -196,7 +196,7 @@ create_wallet as generate_wallet, # User-friendly alias ) -__version__ = "1.21.0" +__version__ = "1.21.1" __all__ = [ "DEFAULT_API_KEY_URL", "ENV_API_KEY", diff --git a/blockrun_llm/router_core/__init__.py b/blockrun_llm/router_core/__init__.py index 36c1fb9..155a4fe 100644 --- a/blockrun_llm/router_core/__init__.py +++ b/blockrun_llm/router_core/__init__.py @@ -2,7 +2,7 @@ Router Core — deterministic, constraint-first model routing. Python port of `@blockrun/router-core `_ -(upstream commit ``2cd5a10``), the same routing engine the TypeScript SDK and +(upstream commit ``3aca0e1``), the same routing engine the TypeScript SDK and the BlockRun gateway use. The package is deliberately product-neutral: task classification, hard capability filtering, portfolio scoring, ordered fallbacks, and routing configuration. It contains no wallet, gateway client, diff --git a/blockrun_llm/router_core/config.py b/blockrun_llm/router_core/config.py index 8915fde..a4ffdf7 100644 --- a/blockrun_llm/router_core/config.py +++ b/blockrun_llm/router_core/config.py @@ -2,7 +2,7 @@ Default Routing Config Python port of ``@blockrun/router-core`` ``config.ts`` (upstream commit -``2cd5a10``; the file is unchanged since ``e38958b``, 2026-09-29, so it is the +``3aca0e1``; the file is unchanged since ``e38958b``, 2026-09-29, so it is the same table the TypeScript SDK bundles). V3.5: every tier rung is a public catalog id. diff --git a/blockrun_llm/router_core/model_capabilities.py b/blockrun_llm/router_core/model_capabilities.py index f7722f7..0ed119a 100644 --- a/blockrun_llm/router_core/model_capabilities.py +++ b/blockrun_llm/router_core/model_capabilities.py @@ -200,6 +200,13 @@ "supports_tools": True, "supports_vision": True, }, + # supportsTools: not probed — fails closed + "google/gemini-4-argon": { + "context_window": 1_048_576, + "max_output_tokens": 65_536, + "supports_tools": False, + "supports_vision": True, + }, "minimax/minimax-m2.7": { "context_window": 204_800, "max_output_tokens": 16_384, diff --git a/pyproject.toml b/pyproject.toml index 04e47ba..6f91879 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "blockrun-llm" -version = "1.21.0" +version = "1.21.1" description = "BlockRun SDK - Pay-per-request AI (LLM, Image, Video, Music, Voice) via x402 on Base and Solana" readme = "README.md" license = "MIT" diff --git a/tests/unit/test_router_core.py b/tests/unit/test_router_core.py index 6590bff..00cac0f 100644 --- a/tests/unit/test_router_core.py +++ b/tests/unit/test_router_core.py @@ -5,7 +5,7 @@ case (``model-capabilities.test.ts``, ``portfolio.test.ts``, ``rules.test.ts``, ``selector.test.ts``, ``strategy.test.ts``, ``tokens.test.ts``, ``tool-intent.test.ts``, ``unavailable-models.test.ts`` at commit -``2cd5a10``). They are the regression guard +``3aca0e1``). They are the regression guard that the Python port keeps choosing the same models as the TypeScript SDK — when upstream is re-synced, re-port these alongside the source. """ diff --git a/tests/unit/test_router_core_snapshot.py b/tests/unit/test_router_core_snapshot.py index 7fd79c2..a11b403 100644 --- a/tests/unit/test_router_core_snapshot.py +++ b/tests/unit/test_router_core_snapshot.py @@ -2,7 +2,7 @@ Cross-language decision-snapshot parity. ``router_core_decisions.snapshot.json`` is a verbatim copy of upstream -``decisions.snapshot.json`` at commit ``2cd5a10`` — 88 complete decisions the +``decisions.snapshot.json`` at commit ``3aca0e1`` — 88 complete decisions the TypeScript engine produced for a frozen corpus (22 prompts x 4 profiles with rotating tool/vision/structured-output shapes, frozen pricing, frozen clock). This test recomputes every decision with the Python port and compares field