From e25d516c8cb3bc39d8598d3f4a7fea6a8539c748 Mon Sep 17 00:00:00 2001 From: kosta Date: Thu, 23 Jul 2026 19:11:30 -0400 Subject: [PATCH] fix(gemini): bump native provider aux default to gemini-3.6-flash The native Gemini provider profile's default_aux_model and the curated model picker catalog were still pinned to gemini-3.5-flash, a stale generation now superseded by gemini-3.6-flash (documented GA). Bump both so the auxiliary-task default and the picker stay in sync with the current model. Contract test asserts the durable lockstep invariant only (default_aux_model is a member of _PROVIDER_MODELS["gemini"]) rather than pinning either side to a frozen model-name string, so it doesn't need updating on the next model-generation bump. --- hermes_cli/models.py | 2 +- plugins/model-providers/gemini/__init__.py | 2 +- .../model_providers/test_gemini_profile.py | 27 +++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 tests/plugins/model_providers/test_gemini_profile.py diff --git a/hermes_cli/models.py b/hermes_cli/models.py index 8fef8ad051bf..5556da9fdbcf 100644 --- a/hermes_cli/models.py +++ b/hermes_cli/models.py @@ -290,7 +290,7 @@ _PROVIDER_MODELS: dict[str, list[str]] = { "gemini": [ "gemini-3.1-pro-preview", "gemini-3-pro-preview", - "gemini-3.5-flash", + "gemini-3.6-flash", "gemini-3.1-flash-lite-preview", ], "zai": [ diff --git a/plugins/model-providers/gemini/__init__.py b/plugins/model-providers/gemini/__init__.py index 94e8bba66c7c..b136fb2434e7 100644 --- a/plugins/model-providers/gemini/__init__.py +++ b/plugins/model-providers/gemini/__init__.py @@ -55,7 +55,7 @@ gemini = GeminiProfile( env_vars=("GOOGLE_API_KEY", "GEMINI_API_KEY"), base_url="https://generativelanguage.googleapis.com/v1beta", auth_type="api_key", - default_aux_model="gemini-3.5-flash", + default_aux_model="gemini-3.6-flash", ) register_provider(gemini) diff --git a/tests/plugins/model_providers/test_gemini_profile.py b/tests/plugins/model_providers/test_gemini_profile.py new file mode 100644 index 000000000000..cbb4e257d155 --- /dev/null +++ b/tests/plugins/model_providers/test_gemini_profile.py @@ -0,0 +1,27 @@ +"""Contract tests for the native Google Gemini provider profile.""" + +from __future__ import annotations + +import pytest + + +@pytest.fixture +def gemini_profile(): + import model_tools # noqa: F401 + import providers + + profile = providers.get_provider_profile("gemini") + assert profile is not None, "gemini provider profile must be registered" + return profile + + +def test_native_gemini_auxiliary_default_is_in_curated_catalog(gemini_profile): + """The profile's default_aux_model must stay in lockstep with the curated + model picker catalog — whatever model the default points at has to be + one the picker can actually offer. Deliberately durable against future + model-generation bumps: it does not pin either side to a frozen + model-name string, only to the invariant that they never drift apart. + """ + from hermes_cli.models import _PROVIDER_MODELS + + assert gemini_profile.default_aux_model in _PROVIDER_MODELS["gemini"]