diff --git a/libs/code/deepagents_code/reasoning_effort.py b/libs/code/deepagents_code/reasoning_effort.py index 22b16df315..23e02e4c92 100644 --- a/libs/code/deepagents_code/reasoning_effort.py +++ b/libs/code/deepagents_code/reasoning_effort.py @@ -86,7 +86,7 @@ class ReasoningProviderConfig(NamedTuple): """Gemini `thinking_level` labels. Applied to every `gemini-3*` model (the gate in `_classify_reasoning_provider`), -including Gemini 3 Pro/Flash, 3.1 Pro, and 3.5 Flash — all accept +including Gemini 3 Pro/Flash, 3.1 Pro, and 3.6 Flash — all accept low/medium/high. `minimal` is Flash-Lite / original-Pro territory, neither of which is offered here. See https://ai.google.dev/gemini-api/docs/thinking. """ @@ -278,7 +278,7 @@ def _google_supported_efforts(_model: str) -> tuple[EffortLabel, ...]: def _google_default_effort(model: str) -> EffortLabel | None: """Return the Gemini default thinking level when known.""" - if model.startswith("gemini-3.5-flash"): + if model.startswith("gemini-3.6-flash"): return "medium" if model.startswith(("gemini-3.1-pro", "gemini-3-flash", "gemini-3-pro")): return "high" diff --git a/libs/code/deepagents_code/tui/widgets/model_selector.py b/libs/code/deepagents_code/tui/widgets/model_selector.py index fc75e5b74e..ad793403e5 100644 --- a/libs/code/deepagents_code/tui/widgets/model_selector.py +++ b/libs/code/deepagents_code/tui/widgets/model_selector.py @@ -77,7 +77,7 @@ "fireworks:accounts/fireworks/models/kimi-k2p7-code": "Kimi K2.7 Code", "fireworks:accounts/fireworks/models/minimax-m3": "MiniMax-M3", "fireworks:accounts/fireworks/models/qwen3p7-plus": "Qwen 3.7 Plus", - "google_genai:gemini-3.5-flash": "Gemini 3.5 Flash", + "google_genai:gemini-3.6-flash": "Gemini 3.6 Flash", "google_genai:gemini-3.1-pro-preview": "Gemini 3.1 Pro Preview", "meta:muse-spark-1.1": "Muse Spark 1.1", "ollama:deepseek-v4-flash:cloud": "DeepSeek V4 Flash", @@ -109,7 +109,7 @@ "openrouter:deepseek/deepseek-v4-flash": "DeepSeek V4 Flash", "openrouter:deepseek/deepseek-v4-flash:free": "DeepSeek V4 Flash (free)", "openrouter:deepseek/deepseek-v4-pro": "DeepSeek V4 Pro", - "openrouter:google/gemini-3.5-flash": "Gemini 3.5 Flash", + "openrouter:google/gemini-3.6-flash": "Gemini 3.6 Flash", "openrouter:google/gemini-3.1-pro-preview": "Gemini 3.1 Pro Preview", "openrouter:moonshotai/kimi-k2.7-code": "Kimi K2.7 Code", "openrouter:moonshotai/kimi-k3": "Kimi K3", diff --git a/libs/code/tests/unit_tests/test_configurable_model.py b/libs/code/tests/unit_tests/test_configurable_model.py index badf5978c1..7261557685 100644 --- a/libs/code/tests/unit_tests/test_configurable_model.py +++ b/libs/code/tests/unit_tests/test_configurable_model.py @@ -622,7 +622,7 @@ def test_existing_headers_preserved_and_session_affinity_not_overwritten( } def test_non_fireworks_non_openai_model_unchanged_with_thread_id(self) -> None: - model = _make_model("gemini-3.5-flash") + model = _make_model("gemini-3.6-flash") model._get_ls_params.return_value = {"ls_provider": "google_genai"} request = _make_request( model, diff --git a/libs/code/tests/unit_tests/test_reasoning_effort.py b/libs/code/tests/unit_tests/test_reasoning_effort.py index 9933b84b3a..8bfa42faec 100644 --- a/libs/code/tests/unit_tests/test_reasoning_effort.py +++ b/libs/code/tests/unit_tests/test_reasoning_effort.py @@ -86,7 +86,7 @@ def _restore_settings( # single-digit version it prefixes (`opus-4-1` must not match # `opus-4-16`); it falls through to the full range instead. ("anthropic:claude-opus-4-16", ("low", "medium", "high", "xhigh", "max")), - ("google_genai:gemini-3.5-flash", ("low", "medium", "high")), + ("google_genai:gemini-3.6-flash", ("low", "medium", "high")), ("google_genai:gemini-3.1-pro-preview", ("low", "medium", "high")), ("xai:grok-4.5", ("low", "medium", "high")), ("xai:grok-4.5-latest", ("low", "medium", "high")), @@ -140,7 +140,7 @@ def test_supported_efforts_for_model(model_spec: str, efforts: tuple[str, ...]) ("anthropic:claude-sonnet-4-6", "high"), ("anthropic:claude-sonnet-4-5", None), ("anthropic:claude-opus-4-1", None), - ("google_genai:gemini-3.5-flash", "medium"), + ("google_genai:gemini-3.6-flash", "medium"), ("google_genai:gemini-3.1-pro-preview", "high"), ("google_genai:gemini-3-pro", "high"), ("google_genai:gemini-3-flash", "high"), @@ -168,7 +168,7 @@ def test_model_params_for_effort_maps_provider_kwargs() -> None: "thinking": {"type": "adaptive", "display": "summarized"}, "output_config": {"effort": "xhigh"}, } - assert model_params_for_effort("google_genai:gemini-3.5-flash", "low") == { + assert model_params_for_effort("google_genai:gemini-3.6-flash", "low") == { "thinking_level": "low" } assert model_params_for_effort( @@ -253,7 +253,7 @@ def test_merge_and_clear_xai_effort_preserves_extra_body_params() -> None: ("openai:gpt-5.5", {"reasoning": {"effort": 5}}), ("anthropic:claude-opus-4-8", {"output_config": {"effort": 5}}), ("anthropic:claude-opus-4-8", {"output_config": "high"}), - ("google_genai:gemini-3.5-flash", {"thinking_level": 5}), + ("google_genai:gemini-3.6-flash", {"thinking_level": 5}), ( "fireworks:accounts/fireworks/models/deepseek-v4-pro", {"model_kwargs": {"reasoning_effort": 5}}, @@ -710,7 +710,7 @@ def test_without_effort_clears_legacy_anthropic_top_level_effort() -> None: def test_without_effort_clears_google_thinking_level() -> None: - effort_params = model_params_for_effort("google_genai:gemini-3.5-flash", "low") + effort_params = model_params_for_effort("google_genai:gemini-3.6-flash", "low") assert effort_params is not None assert without_effort_model_params(effort_params) is None @@ -736,7 +736,7 @@ def test_without_effort_preserves_non_dict_model_kwargs() -> None: ("openai:gpt-5.5", "none"), ("openai:gpt-5.5", "high"), ("anthropic:claude-opus-4-8", "xhigh"), - ("google_genai:gemini-3.5-flash", "low"), + ("google_genai:gemini-3.6-flash", "low"), ("fireworks:accounts/fireworks/models/deepseek-v4-pro", "max"), ], )