feat: gemini 3.0 pro preview added (as default gemini pro model)

refactor: code cleanup
This commit is contained in:
Fahad
2025-11-18 20:28:27 +04:00
parent 749bc73079
commit 25fd72fbd3
19 changed files with 61 additions and 43 deletions

View File

@@ -23,7 +23,7 @@
}
],
"generationConfig": {
"temperature": 0.5,
"temperature": 1.0,
"candidateCount": 1,
"thinkingConfig": {
"thinkingBudget": 10813

View File

@@ -80,7 +80,7 @@ class TestAutoModeComprehensive:
"OPENROUTER_API_KEY": None,
},
{
"EXTENDED_REASONING": "gemini-2.5-pro", # Pro for deep thinking
"EXTENDED_REASONING": "gemini-3-pro-preview", # Gemini 3 Pro Preview for deep thinking
"FAST_RESPONSE": "gemini-2.5-flash", # Flash for speed
"BALANCED": "gemini-2.5-flash", # Flash as balanced
},
@@ -122,7 +122,7 @@ class TestAutoModeComprehensive:
"OPENROUTER_API_KEY": None,
},
{
"EXTENDED_REASONING": "gemini-2.5-pro", # Gemini comes first in priority
"EXTENDED_REASONING": "gemini-3-pro-preview", # Gemini 3 Pro Preview comes first in priority
"FAST_RESPONSE": "gemini-2.5-flash", # Prefer flash for speed
"BALANCED": "gemini-2.5-flash", # Prefer flash for balanced
},
@@ -136,7 +136,7 @@ class TestAutoModeComprehensive:
"OPENROUTER_API_KEY": None,
},
{
"EXTENDED_REASONING": "gemini-2.5-pro", # Gemini comes first in priority
"EXTENDED_REASONING": "gemini-3-pro-preview", # Gemini 3 Pro Preview comes first in priority
"FAST_RESPONSE": "gemini-2.5-flash", # Prefer flash for speed
"BALANCED": "gemini-2.5-flash", # Prefer flash for balanced
},

View File

@@ -59,7 +59,7 @@ class TestAutoModeProviderSelection:
balanced = ModelProviderRegistry.get_preferred_fallback_model(ToolModelCategory.BALANCED)
# Should select appropriate Gemini models
assert extended_reasoning in ["gemini-2.5-pro", "pro"]
assert extended_reasoning in ["gemini-3-pro-preview", "gemini-2.5-pro", "pro"]
assert fast_response in ["gemini-2.5-flash", "flash"]
assert balanced in ["gemini-2.5-flash", "flash"]
@@ -139,7 +139,7 @@ class TestAutoModeProviderSelection:
fast_response = ModelProviderRegistry.get_preferred_fallback_model(ToolModelCategory.FAST_RESPONSE)
# Should prefer Gemini now (based on new provider priority: Gemini before OpenAI)
assert extended_reasoning == "gemini-2.5-pro" # Gemini has higher priority now
assert extended_reasoning == "gemini-3-pro-preview" # Gemini 3 Pro Preview has higher priority now
# Should prefer Gemini for fast response
assert fast_response == "gemini-2.5-flash" # Gemini has higher priority now
@@ -317,7 +317,7 @@ class TestAutoModeProviderSelection:
# Test that providers resolve aliases correctly
test_cases = [
("flash", ProviderType.GOOGLE, "gemini-2.5-flash"),
("pro", ProviderType.GOOGLE, "gemini-2.5-pro"),
("pro", ProviderType.GOOGLE, "gemini-3-pro-preview"), # "pro" now resolves to gemini-3-pro-preview
("mini", ProviderType.OPENAI, "gpt-5-mini"), # "mini" now resolves to gpt-5-mini
("o3mini", ProviderType.OPENAI, "o3-mini"),
("grok", ProviderType.XAI, "grok-4"),

View File

@@ -28,7 +28,7 @@ class TestChallengeTool:
assert "reflexive agreement" in self.tool.get_description()
assert "critical thinking" in self.tool.get_description()
assert "reasoned analysis" in self.tool.get_description()
assert self.tool.get_default_temperature() == 0.2 # TEMPERATURE_ANALYTICAL
assert self.tool.get_default_temperature() == 1.0 # TEMPERATURE_ANALYTICAL
def test_requires_model(self):
"""Test that challenge tool doesn't require a model"""

View File

@@ -35,6 +35,6 @@ class TestConfig:
def test_temperature_defaults(self):
"""Test temperature constants"""
assert TEMPERATURE_ANALYTICAL == 0.2
assert TEMPERATURE_BALANCED == 0.5
assert TEMPERATURE_CREATIVE == 0.7
assert TEMPERATURE_ANALYTICAL == 1.0
assert TEMPERATURE_BALANCED == 1.0
assert TEMPERATURE_CREATIVE == 1.0

View File

@@ -19,7 +19,7 @@ class TestConsensusTool:
assert tool.get_name() == "consensus"
assert "consensus" in tool.get_description()
assert tool.get_default_temperature() == 0.2 # TEMPERATURE_ANALYTICAL
assert tool.get_default_temperature() == 1.0 # TEMPERATURE_ANALYTICAL
assert tool.get_model_category() == ToolModelCategory.EXTENDED_REASONING
assert tool.requires_model() is False # Consensus manages its own models

View File

@@ -29,6 +29,7 @@ GEMINI_REPLAY_ID = "consensus/step2_gemini25_flash_against/mldev"
GEMINI_REPLAY_PATH = GEMINI_REPLAY_DIR / "consensus" / "step2_gemini25_flash_against" / "mldev.json"
@pytest.mark.integration
@pytest.mark.asyncio
@pytest.mark.no_mock_provider
@pytest.mark.parametrize("openai_model", ["gpt-5", "gpt-5.1"])

View File

@@ -15,7 +15,7 @@ class TestDebugTool:
assert tool.get_name() == "debug"
assert "debugging and root cause analysis" in tool.get_description()
assert tool.get_default_temperature() == 0.2 # TEMPERATURE_ANALYTICAL
assert tool.get_default_temperature() == 1.0 # TEMPERATURE_ANALYTICAL
assert tool.get_model_category() == ToolModelCategory.EXTENDED_REASONING
assert tool.requires_model() is True

View File

@@ -66,7 +66,7 @@ class TestListModelsTool:
# Check Gemini shows as configured
assert "Google Gemini ✅" in content
assert "`flash` → `gemini-2.5-flash`" in content
assert "`pro` → `gemini-2.5-pro`" in content
assert "`pro` → `gemini-3-pro-preview`" in content
assert "1M context" in content
assert "Supports structured code generation" in content

View File

@@ -74,7 +74,7 @@ class TestModelRestrictionService:
# Check Google models
assert service.is_allowed(ProviderType.GOOGLE, "flash")
assert service.is_allowed(ProviderType.GOOGLE, "pro")
assert service.is_allowed(ProviderType.GOOGLE, "gemini-2.5-pro")
assert service.is_allowed(ProviderType.GOOGLE, "gemini-3-pro-preview")
def test_case_insensitive_and_whitespace_handling(self):
"""Test that model names are case-insensitive and whitespace is trimmed."""

View File

@@ -117,7 +117,7 @@ class TestModelSelection:
model = ModelProviderRegistry.get_preferred_fallback_model(ToolModelCategory.EXTENDED_REASONING)
# Gemini should return one of its models for extended reasoning
# The default behavior may return flash when pro is not explicitly preferred
assert model in ["gemini-2.5-pro", "gemini-2.5-flash", "gemini-2.0-flash"]
assert model in ["gemini-3-pro-preview", "gemini-2.5-flash", "gemini-2.0-flash"]
def test_fast_response_with_openai(self):
"""Test FAST_RESPONSE with OpenAI provider."""

View File

@@ -20,7 +20,7 @@ class TestPlannerTool:
assert tool.get_name() == "planner"
assert "sequential planning" in tool.get_description()
assert tool.get_default_temperature() == 0.5 # TEMPERATURE_BALANCED
assert tool.get_default_temperature() == 1.0 # TEMPERATURE_BALANCED
assert tool.get_model_category() == ToolModelCategory.EXTENDED_REASONING
assert tool.get_default_thinking_mode() == "medium"

View File

@@ -34,8 +34,8 @@ class TestPrecommitWorkflowTool:
"""Test analytical temperature setting"""
tool = PrecommitTool()
temp = tool.get_default_temperature()
# Should be analytical temperature (0.2)
assert temp == 0.2
# Should be analytical temperature (now 1.0)
assert temp == 1.0
def test_request_model_basic_validation(self):
"""Test basic request model validation"""

View File

@@ -17,7 +17,7 @@ class TestSecauditTool:
assert tool.get_name() == "secaudit"
assert "security audit" in tool.get_description()
assert tool.get_default_temperature() == 0.2 # TEMPERATURE_ANALYTICAL
assert tool.get_default_temperature() == 1.0 # TEMPERATURE_ANALYTICAL
assert tool.get_model_category() == ToolModelCategory.EXTENDED_REASONING
assert tool.requires_model() is True

View File

@@ -20,7 +20,7 @@ class TestSupportedModelsAliases:
# Test specific aliases
assert "flash" in provider.MODEL_CAPABILITIES["gemini-2.5-flash"].aliases
assert "pro" in provider.MODEL_CAPABILITIES["gemini-2.5-pro"].aliases
assert "pro" in provider.MODEL_CAPABILITIES["gemini-3-pro-preview"].aliases
assert "flash-2.0" in provider.MODEL_CAPABILITIES["gemini-2.0-flash"].aliases
assert "flash2" in provider.MODEL_CAPABILITIES["gemini-2.0-flash"].aliases
assert "flashlite" in provider.MODEL_CAPABILITIES["gemini-2.0-flash-lite"].aliases
@@ -28,14 +28,14 @@ class TestSupportedModelsAliases:
# Test alias resolution
assert provider._resolve_model_name("flash") == "gemini-2.5-flash"
assert provider._resolve_model_name("pro") == "gemini-2.5-pro"
assert provider._resolve_model_name("pro") == "gemini-3-pro-preview"
assert provider._resolve_model_name("flash-2.0") == "gemini-2.0-flash"
assert provider._resolve_model_name("flash2") == "gemini-2.0-flash"
assert provider._resolve_model_name("flashlite") == "gemini-2.0-flash-lite"
# Test case insensitive resolution
assert provider._resolve_model_name("Flash") == "gemini-2.5-flash"
assert provider._resolve_model_name("PRO") == "gemini-2.5-pro"
assert provider._resolve_model_name("PRO") == "gemini-3-pro-preview"
def test_openai_provider_aliases(self):
"""Test OpenAI provider's alias structure."""
@@ -133,7 +133,7 @@ class TestSupportedModelsAliases:
gemini_models = gemini_provider.list_models(respect_restrictions=False)
assert "gemini-2.5-flash" in gemini_models
assert "flash" in gemini_models
assert "gemini-2.5-pro" in gemini_models
assert "gemini-3-pro-preview" in gemini_models
assert "pro" in gemini_models
# Test OpenAI
@@ -170,7 +170,7 @@ class TestSupportedModelsAliases:
)
assert "gemini-2.5-flash" in gemini_all
assert "flash" in gemini_all
assert "gemini-2.5-pro" in gemini_all
assert "gemini-3-pro-preview" in gemini_all
assert "pro" in gemini_all
# All should be lowercase
assert all(model == model.lower() for model in gemini_all)

View File

@@ -23,7 +23,7 @@ class TestThinkDeepTool:
"""Test tool metadata"""
assert tool.get_name() == "thinkdeep"
assert "investigation and reasoning" in tool.get_description()
assert tool.get_default_temperature() == 0.7
assert tool.get_default_temperature() == 1.0
schema = tool.get_input_schema()
# ThinkDeep is now a workflow tool with step-based fields
@@ -124,7 +124,7 @@ class TestCodeReviewTool:
"""Test tool metadata"""
assert tool.get_name() == "codereview"
assert "code review" in tool.get_description()
assert tool.get_default_temperature() == 0.2
assert tool.get_default_temperature() == 1.0
schema = tool.get_input_schema()
assert "relevant_files" in schema["properties"]
@@ -217,7 +217,7 @@ class TestAnalyzeTool:
"""Test tool metadata"""
assert tool.get_name() == "analyze"
assert "code analysis" in tool.get_description()
assert tool.get_default_temperature() == 0.2
assert tool.get_default_temperature() == 1.0
schema = tool.get_input_schema()
# New workflow tool requires step-based fields