from agent.smart_model_routing import choose_cheap_model_route _BASE_CONFIG = { "enabled": True, "cheap_model": { "provider": "openrouter", "model": "google/gemini-2.5-flash", }, } def test_returns_none_when_disabled(): cfg = {**_BASE_CONFIG, "enabled": False} assert choose_cheap_model_route("what time is it in tokyo?", cfg) is None def test_routes_short_simple_prompt(): result = choose_cheap_model_route("what time is it in tokyo?", _BASE_CONFIG) assert result is not None assert result["provider"] == "openrouter" assert result["model"] == "google/gemini-2.5-flash" assert result["routing_reason"] == "simple_turn" def test_skips_long_prompt(): prompt = "please summarize this carefully " * 20 assert choose_cheap_model_route(prompt, _BASE_CONFIG) is None def test_skips_code_like_prompt(): prompt = "debug this traceback: ```python\nraise ValueError('bad')\n```" assert choose_cheap_model_route(prompt, _BASE_CONFIG) is None def test_skips_tool_heavy_prompt_keywords(): prompt = "implement a patch for this docker error" assert choose_cheap_model_route(prompt, _BASE_CONFIG) is None def test_resolve_turn_route_falls_back_to_primary_when_route_runtime_cannot_be_resolved(monkeypatch): from agent.smart_model_routing import resolve_turn_route monkeypatch.setattr( "hermes_cli.runtime_provider.resolve_runtime_provider", lambda **kwargs: (_ for _ in ()).throw(RuntimeError("bad route")), ) result = resolve_turn_route( "what time is it in tokyo?", _BASE_CONFIG, { "model": "anthropic/claude-sonnet-4", "provider": "openrouter", "base_url": "https://openrouter.ai/api/v1", "api_mode": "chat_completions", "api_key": "sk-primary", }, ) assert result["model"] == "anthropic/claude-sonnet-4" assert result["runtime"]["provider"] == "openrouter" assert result["label"] is None