Files

1 line
33 KiB
JSON

{"repo": "aditya-ps-05/codesm", "files": {"codesm/provider/router.py": {"c83f2d55a9406b29d7eff71582cdf32ff8e2f8f8": {"t": 1785746448.3537738, "n": 4106, "h": "0c554a6ad6252b12", "c": "\"\"\"Model routing and provider selection\"\"\"\n\nfrom typing import Dict, Type\nfrom .base import Provider\nfrom .anthropic import AnthropicProvider\nfrom .openai import OpenAIProvider\nfrom .openrouter import OpenRouterProvider\nfrom .ollama import OllamaProvider\n\n\nclass ModelRouter:\n \"\"\"Routes model requests to appropriate providers\"\"\"\n\n # Map of provider names to provider classes\n PROVIDERS: Dict[str, Type[Provider]] = {\n \"anthropic\": AnthropicProvider,\n \"openai\": OpenAIProvider,\n \"openrouter\": OpenRouterProvider,\n \"ollama\": OllamaProvider,\n }\n\n # Common model aliases - can use OpenRouter for multi-model access\n MODEL_ALIASES = {\n # Direct provider access\n \"claude\": \"anthropic/claude-sonnet-4-5-20250929\",\n \"claude-sonnet\": \"anthropic/claude-sonnet-4-5-20250929\",\n \"claude-opus\": \"anthropic/claude-opus-4-5-20251101\",\n \"gpt-4\": \"openai/gpt-4-turbo\",\n \"gpt-4-turbo\": \"openai/gpt-4-turbo\",\n \"gpt-4o\": \"openai/gpt-4o\",\n \n # OpenRouter aliases for multi-model orchestration\n \"or-claude-sonnet\": \"openrouter/anthropic/claude-sonnet-4\",\n \"or-claude-opus\": \"openrouter/anthropic/claude-opus-4\",\n \"or-claude-haiku\": \"openrouter/anthropic/claude-3.5-haiku\",\n \"or-gpt-4o\": \"openrouter/openai/gpt-4o\",\n \"or-gpt-4o-mini\": \"openrouter/openai/gpt-4o-mini\",\n \"or-o1\": \"openrouter/openai/o1\",\n \"or-o1-mini\": \"openrouter/openai/o1-mini\",\n \"or-gemini-flash\": \"openrouter/google/gemini-flash-1.5\",\n \"or-gemini-pro\": \"openrouter/google/gemini-pro-1.5\",\n \"or-deepseek\": \"openrouter/deepseek/deepseek-chat\",\n \"or-llama\": \"openrouter/meta-llama/llama-3.1-70b-instruct\",\n \n # Task-specific aliases (for subagent routing)\n \"smart\": \"openrouter/anthropic/claude-sonnet-4\",\n \"rush\": \"openrouter/anthropic/claude-3.5-haiku\",\n \"oracle\": \"openrouter/openai/o1-mini\",\n \"search\": \"openrouter/google/gemini-flash-1.5\",\n \"review\": \"openrouter/google/gemini-pro-1.5\",\n \n # Gemini 2.5 Flash for high-speed codebase retrieval\n \"gemini-3-flash\": \"openrouter/google/gemini-2.5-flash-preview\",\n \"finder\": \"openrouter/google/gemini-2.5-flash-preview\",\n \n # Handoff system - context analysis and task continuation\n \"handoff\": \"openrouter/google/gemini-2.5-flash-preview\",\n \n # Topics/Indexing - thread categorization (Flash-Lite for speed/cost)\n \"topics\": \"openrouter/google/gemini-2.0-flash-lite-001\",\n \n # Task Router - fast complexity classification\n \"router\": \"openrouter/google/gemini-2.0-flash-lite-001\",\n \n # Diagram generation\n \"diagram\": \"openrouter/google/gemini-2.5-flash-preview\",\n \n # Local/Ollama aliases - for offline/private use\n \"local\": \"ollama/qwen3:14b\",\n \"local-fast\": \"ollama/qwen3:4b\",\n \"local-code\": \"ollama/deepseek-coder-v2:16b\",\n \"local-large\": \"ollama/llama3.3:70b\",\n }\n\n @classmethod\n def resolve_model(cls, model_string: str) -> tuple[str, str]:\n \"\"\"Resolve model string to (provider, model_id)\"\"\"\n # Check if it's an alias\n if model_string in cls.MODEL_ALIASES:\n model_string = cls.MODEL_ALIASES[model_string]\n\n # Parse provider/model format\n if \"/\" in model_string:\n provider, model_id = model_string.split(\"/\", 1)\n return provider, model_id\n\n # Default to anthropic if no provider specified\n return \"anthropic\", model_string\n\n @classmethod\n def get_provider(cls, model_string: str) -> Provider:\n \"\"\"Get appropriate provider instance for a model\"\"\"\n provider_name, model_id = cls.resolve_model(model_string)\n\n if provider_name not in cls.PROVIDERS:\n raise ValueError(\n f\"Unknown provider: {provider_name}. \"\n f\"Available: {', '.join(cls.PROVIDERS.keys())}\"\n )\n\n provider_class = cls.PROVIDERS[provider_name]\n return provider_class(model_id)\n"}, "a02788ff6e7a4cfd538c8ce8e21e9142ed37fbf1": {"t": 1785764350.7735097, "n": 4106, "h": "0c554a6ad6252b12", "c": "\"\"\"Model routing and provider selection\"\"\"\n\nfrom typing import Dict, Type\nfrom .base import Provider\nfrom .anthropic import AnthropicProvider\nfrom .openai import OpenAIProvider\nfrom .openrouter import OpenRouterProvider\nfrom .ollama import OllamaProvider\n\n\nclass ModelRouter:\n \"\"\"Routes model requests to appropriate providers\"\"\"\n\n # Map of provider names to provider classes\n PROVIDERS: Dict[str, Type[Provider]] = {\n \"anthropic\": AnthropicProvider,\n \"openai\": OpenAIProvider,\n \"openrouter\": OpenRouterProvider,\n \"ollama\": OllamaProvider,\n }\n\n # Common model aliases - can use OpenRouter for multi-model access\n MODEL_ALIASES = {\n # Direct provider access\n \"claude\": \"anthropic/claude-sonnet-4-5-20250929\",\n \"claude-sonnet\": \"anthropic/claude-sonnet-4-5-20250929\",\n \"claude-opus\": \"anthropic/claude-opus-4-5-20251101\",\n \"gpt-4\": \"openai/gpt-4-turbo\",\n \"gpt-4-turbo\": \"openai/gpt-4-turbo\",\n \"gpt-4o\": \"openai/gpt-4o\",\n \n # OpenRouter aliases for multi-model orchestration\n \"or-claude-sonnet\": \"openrouter/anthropic/claude-sonnet-4\",\n \"or-claude-opus\": \"openrouter/anthropic/claude-opus-4\",\n \"or-claude-haiku\": \"openrouter/anthropic/claude-3.5-haiku\",\n \"or-gpt-4o\": \"openrouter/openai/gpt-4o\",\n \"or-gpt-4o-mini\": \"openrouter/openai/gpt-4o-mini\",\n \"or-o1\": \"openrouter/openai/o1\",\n \"or-o1-mini\": \"openrouter/openai/o1-mini\",\n \"or-gemini-flash\": \"openrouter/google/gemini-flash-1.5\",\n \"or-gemini-pro\": \"openrouter/google/gemini-pro-1.5\",\n \"or-deepseek\": \"openrouter/deepseek/deepseek-chat\",\n \"or-llama\": \"openrouter/meta-llama/llama-3.1-70b-instruct\",\n \n # Task-specific aliases (for subagent routing)\n \"smart\": \"openrouter/anthropic/claude-sonnet-4\",\n \"rush\": \"openrouter/anthropic/claude-3.5-haiku\",\n \"oracle\": \"openrouter/openai/o1-mini\",\n \"search\": \"openrouter/google/gemini-flash-1.5\",\n \"review\": \"openrouter/google/gemini-pro-1.5\",\n \n # Gemini 2.5 Flash for high-speed codebase retrieval\n \"gemini-3-flash\": \"openrouter/google/gemini-2.5-flash-preview\",\n \"finder\": \"openrouter/google/gemini-2.5-flash-preview\",\n \n # Handoff system - context analysis and task continuation\n \"handoff\": \"openrouter/google/gemini-2.5-flash-preview\",\n \n # Topics/Indexing - thread categorization (Flash-Lite for speed/cost)\n \"topics\": \"openrouter/google/gemini-2.0-flash-lite-001\",\n \n # Task Router - fast complexity classification\n \"router\": \"openrouter/google/gemini-2.0-flash-lite-001\",\n \n # Diagram generation\n \"diagram\": \"openrouter/google/gemini-2.5-flash-preview\",\n \n # Local/Ollama aliases - for offline/private use\n \"local\": \"ollama/qwen3:14b\",\n \"local-fast\": \"ollama/qwen3:4b\",\n \"local-code\": \"ollama/deepseek-coder-v2:16b\",\n \"local-large\": \"ollama/llama3.3:70b\",\n }\n\n @classmethod\n def resolve_model(cls, model_string: str) -> tuple[str, str]:\n \"\"\"Resolve model string to (provider, model_id)\"\"\"\n # Check if it's an alias\n if model_string in cls.MODEL_ALIASES:\n model_string = cls.MODEL_ALIASES[model_string]\n\n # Parse provider/model format\n if \"/\" in model_string:\n provider, model_id = model_string.split(\"/\", 1)\n return provider, model_id\n\n # Default to anthropic if no provider specified\n return \"anthropic\", model_string\n\n @classmethod\n def get_provider(cls, model_string: str) -> Provider:\n \"\"\"Get appropriate provider instance for a model\"\"\"\n provider_name, model_id = cls.resolve_model(model_string)\n\n if provider_name not in cls.PROVIDERS:\n raise ValueError(\n f\"Unknown provider: {provider_name}. \"\n f\"Available: {', '.join(cls.PROVIDERS.keys())}\"\n )\n\n provider_class = cls.PROVIDERS[provider_name]\n return provider_class(model_id)\n"}, "c0ea00064bb5f312c0ae6271541eb60e9302958b": {"t": 1785764352.959561, "n": 3793, "h": "f8b7f3e54ecb1457", "c": "\"\"\"Model routing and provider selection\"\"\"\n\nfrom typing import Dict, Type\nfrom .base import Provider\nfrom .anthropic import AnthropicProvider\nfrom .openai import OpenAIProvider\nfrom .openrouter import OpenRouterProvider\n\n\nclass ModelRouter:\n \"\"\"Routes model requests to appropriate providers\"\"\"\n\n # Map of provider names to provider classes\n PROVIDERS: Dict[str, Type[Provider]] = {\n \"anthropic\": AnthropicProvider,\n \"openai\": OpenAIProvider,\n \"openrouter\": OpenRouterProvider,\n }\n\n # Common model aliases - can use OpenRouter for multi-model access\n MODEL_ALIASES = {\n # Direct provider access\n \"claude\": \"anthropic/claude-sonnet-4-5-20250929\",\n \"claude-sonnet\": \"anthropic/claude-sonnet-4-5-20250929\",\n \"claude-opus\": \"anthropic/claude-opus-4-5-20251101\",\n \"gpt-4\": \"openai/gpt-4-turbo\",\n \"gpt-4-turbo\": \"openai/gpt-4-turbo\",\n \"gpt-4o\": \"openai/gpt-4o\",\n \n # OpenRouter aliases for multi-model orchestration\n \"or-claude-sonnet\": \"openrouter/anthropic/claude-sonnet-4\",\n \"or-claude-opus\": \"openrouter/anthropic/claude-opus-4\",\n \"or-claude-haiku\": \"openrouter/anthropic/claude-3.5-haiku\",\n \"or-gpt-4o\": \"openrouter/openai/gpt-4o\",\n \"or-gpt-4o-mini\": \"openrouter/openai/gpt-4o-mini\",\n \"or-o1\": \"openrouter/openai/o1\",\n \"or-o1-mini\": \"openrouter/openai/o1-mini\",\n \"or-gemini-flash\": \"openrouter/google/gemini-flash-1.5\",\n \"or-gemini-pro\": \"openrouter/google/gemini-pro-1.5\",\n \"or-deepseek\": \"openrouter/deepseek/deepseek-chat\",\n \"or-llama\": \"openrouter/meta-llama/llama-3.1-70b-instruct\",\n \n # Task-specific aliases (for subagent routing)\n \"smart\": \"openrouter/anthropic/claude-sonnet-4\",\n \"rush\": \"openrouter/anthropic/claude-3.5-haiku\",\n \"oracle\": \"openrouter/openai/o1-mini\",\n \"search\": \"openrouter/google/gemini-flash-1.5\",\n \"review\": \"openrouter/google/gemini-pro-1.5\",\n \n # Gemini 2.5 Flash for high-speed codebase retrieval\n \"gemini-3-flash\": \"openrouter/google/gemini-2.5-flash-preview\",\n \"finder\": \"openrouter/google/gemini-2.5-flash-preview\",\n \n # Handoff system - context analysis and task continuation\n \"handoff\": \"openrouter/google/gemini-2.5-flash-preview\",\n \n # Topics/Indexing - thread categorization (Flash-Lite for speed/cost)\n \"topics\": \"openrouter/google/gemini-2.0-flash-lite-001\",\n \n # Task Router - fast complexity classification\n \"router\": \"openrouter/google/gemini-2.0-flash-lite-001\",\n \n # Diagram generation\n \"diagram\": \"openrouter/google/gemini-2.5-flash-preview\",\n }\n\n @classmethod\n def resolve_model(cls, model_string: str) -> tuple[str, str]:\n \"\"\"Resolve model string to (provider, model_id)\"\"\"\n # Check if it's an alias\n if model_string in cls.MODEL_ALIASES:\n model_string = cls.MODEL_ALIASES[model_string]\n\n # Parse provider/model format\n if \"/\" in model_string:\n provider, model_id = model_string.split(\"/\", 1)\n return provider, model_id\n\n # Default to anthropic if no provider specified\n return \"anthropic\", model_string\n\n @classmethod\n def get_provider(cls, model_string: str) -> Provider:\n \"\"\"Get appropriate provider instance for a model\"\"\"\n provider_name, model_id = cls.resolve_model(model_string)\n\n if provider_name not in cls.PROVIDERS:\n raise ValueError(\n f\"Unknown provider: {provider_name}. \"\n f\"Available: {', '.join(cls.PROVIDERS.keys())}\"\n )\n\n provider_class = cls.PROVIDERS[provider_name]\n return provider_class(model_id)\n"}, "0539d304c670f9837b015d1b53f2597b82a6cbaf": {"t": 1785764354.6946714, "n": 3690, "h": "0998c5753235c23b", "c": "\"\"\"Model routing and provider selection\"\"\"\n\nfrom typing import Dict, Type\nfrom .base import Provider\nfrom .anthropic import AnthropicProvider\nfrom .openai import OpenAIProvider\nfrom .openrouter import OpenRouterProvider\n\n\nclass ModelRouter:\n \"\"\"Routes model requests to appropriate providers\"\"\"\n\n # Map of provider names to provider classes\n PROVIDERS: Dict[str, Type[Provider]] = {\n \"anthropic\": AnthropicProvider,\n \"openai\": OpenAIProvider,\n \"openrouter\": OpenRouterProvider,\n }\n\n # Common model aliases - can use OpenRouter for multi-model access\n MODEL_ALIASES = {\n # Direct provider access\n \"claude\": \"anthropic/claude-sonnet-4-5-20250929\",\n \"claude-sonnet\": \"anthropic/claude-sonnet-4-5-20250929\",\n \"claude-opus\": \"anthropic/claude-opus-4-5-20251101\",\n \"gpt-4\": \"openai/gpt-4-turbo\",\n \"gpt-4-turbo\": \"openai/gpt-4-turbo\",\n \"gpt-4o\": \"openai/gpt-4o\",\n \n # OpenRouter aliases for multi-model orchestration\n \"or-claude-sonnet\": \"openrouter/anthropic/claude-sonnet-4\",\n \"or-claude-opus\": \"openrouter/anthropic/claude-opus-4\",\n \"or-claude-haiku\": \"openrouter/anthropic/claude-3.5-haiku\",\n \"or-gpt-4o\": \"openrouter/openai/gpt-4o\",\n \"or-gpt-4o-mini\": \"openrouter/openai/gpt-4o-mini\",\n \"or-o1\": \"openrouter/openai/o1\",\n \"or-o1-mini\": \"openrouter/openai/o1-mini\",\n \"or-gemini-flash\": \"openrouter/google/gemini-flash-1.5\",\n \"or-gemini-pro\": \"openrouter/google/gemini-pro-1.5\",\n \"or-deepseek\": \"openrouter/deepseek/deepseek-chat\",\n \"or-llama\": \"openrouter/meta-llama/llama-3.1-70b-instruct\",\n \n # Task-specific aliases (for subagent routing)\n \"smart\": \"openrouter/anthropic/claude-sonnet-4\",\n \"rush\": \"openrouter/anthropic/claude-3.5-haiku\",\n \"oracle\": \"openrouter/openai/o1-mini\",\n \"search\": \"openrouter/google/gemini-flash-1.5\",\n \"review\": \"openrouter/google/gemini-pro-1.5\",\n \n # Gemini 2.5 Flash for high-speed codebase retrieval\n \"gemini-3-flash\": \"openrouter/google/gemini-2.5-flash-preview\",\n \"finder\": \"openrouter/google/gemini-2.5-flash-preview\",\n \n # Handoff system - context analysis and task continuation\n \"handoff\": \"openrouter/google/gemini-2.5-flash-preview\",\n \n # Topics/Indexing - thread categorization (Flash-Lite for speed/cost)\n \"topics\": \"openrouter/google/gemini-2.0-flash-lite-001\",\n \n # Task Router - fast complexity classification\n \"router\": \"openrouter/google/gemini-2.0-flash-lite-001\",\n }\n\n @classmethod\n def resolve_model(cls, model_string: str) -> tuple[str, str]:\n \"\"\"Resolve model string to (provider, model_id)\"\"\"\n # Check if it's an alias\n if model_string in cls.MODEL_ALIASES:\n model_string = cls.MODEL_ALIASES[model_string]\n\n # Parse provider/model format\n if \"/\" in model_string:\n provider, model_id = model_string.split(\"/\", 1)\n return provider, model_id\n\n # Default to anthropic if no provider specified\n return \"anthropic\", model_string\n\n @classmethod\n def get_provider(cls, model_string: str) -> Provider:\n \"\"\"Get appropriate provider instance for a model\"\"\"\n provider_name, model_id = cls.resolve_model(model_string)\n\n if provider_name not in cls.PROVIDERS:\n raise ValueError(\n f\"Unknown provider: {provider_name}. \"\n f\"Available: {', '.join(cls.PROVIDERS.keys())}\"\n )\n\n provider_class = cls.PROVIDERS[provider_name]\n return provider_class(model_id)\n"}, "fb55b5faa7b4a14f57591cda999ce0826f5dcd34": {"t": 1785764355.990852, "n": 3561, "h": "c354617fcaa1b2a8", "c": "\"\"\"Model routing and provider selection\"\"\"\n\nfrom typing import Dict, Type\nfrom .base import Provider\nfrom .anthropic import AnthropicProvider\nfrom .openai import OpenAIProvider\nfrom .openrouter import OpenRouterProvider\n\n\nclass ModelRouter:\n \"\"\"Routes model requests to appropriate providers\"\"\"\n\n # Map of provider names to provider classes\n PROVIDERS: Dict[str, Type[Provider]] = {\n \"anthropic\": AnthropicProvider,\n \"openai\": OpenAIProvider,\n \"openrouter\": OpenRouterProvider,\n }\n\n # Common model aliases - can use OpenRouter for multi-model access\n MODEL_ALIASES = {\n # Direct provider access\n \"claude\": \"anthropic/claude-sonnet-4-5-20250929\",\n \"claude-sonnet\": \"anthropic/claude-sonnet-4-5-20250929\",\n \"claude-opus\": \"anthropic/claude-opus-4-5-20251101\",\n \"gpt-4\": \"openai/gpt-4-turbo\",\n \"gpt-4-turbo\": \"openai/gpt-4-turbo\",\n \"gpt-4o\": \"openai/gpt-4o\",\n \n # OpenRouter aliases for multi-model orchestration\n \"or-claude-sonnet\": \"openrouter/anthropic/claude-sonnet-4\",\n \"or-claude-opus\": \"openrouter/anthropic/claude-opus-4\",\n \"or-claude-haiku\": \"openrouter/anthropic/claude-3.5-haiku\",\n \"or-gpt-4o\": \"openrouter/openai/gpt-4o\",\n \"or-gpt-4o-mini\": \"openrouter/openai/gpt-4o-mini\",\n \"or-o1\": \"openrouter/openai/o1\",\n \"or-o1-mini\": \"openrouter/openai/o1-mini\",\n \"or-gemini-flash\": \"openrouter/google/gemini-flash-1.5\",\n \"or-gemini-pro\": \"openrouter/google/gemini-pro-1.5\",\n \"or-deepseek\": \"openrouter/deepseek/deepseek-chat\",\n \"or-llama\": \"openrouter/meta-llama/llama-3.1-70b-instruct\",\n \n # Task-specific aliases (for subagent routing)\n \"smart\": \"openrouter/anthropic/claude-sonnet-4\",\n \"rush\": \"openrouter/anthropic/claude-3.5-haiku\",\n \"oracle\": \"openrouter/openai/o1-mini\",\n \"search\": \"openrouter/google/gemini-flash-1.5\",\n \"review\": \"openrouter/google/gemini-pro-1.5\",\n \n # Gemini 2.5 Flash for high-speed codebase retrieval\n \"gemini-3-flash\": \"openrouter/google/gemini-2.5-flash-preview\",\n \"finder\": \"openrouter/google/gemini-2.5-flash-preview\",\n \n # Handoff system - context analysis and task continuation\n \"handoff\": \"openrouter/google/gemini-2.5-flash-preview\",\n \n # Topics/Indexing - thread categorization (Flash-Lite for speed/cost)\n \"topics\": \"openrouter/google/gemini-2.0-flash-lite-001\",\n }\n\n @classmethod\n def resolve_model(cls, model_string: str) -> tuple[str, str]:\n \"\"\"Resolve model string to (provider, model_id)\"\"\"\n # Check if it's an alias\n if model_string in cls.MODEL_ALIASES:\n model_string = cls.MODEL_ALIASES[model_string]\n\n # Parse provider/model format\n if \"/\" in model_string:\n provider, model_id = model_string.split(\"/\", 1)\n return provider, model_id\n\n # Default to anthropic if no provider specified\n return \"anthropic\", model_string\n\n @classmethod\n def get_provider(cls, model_string: str) -> Provider:\n \"\"\"Get appropriate provider instance for a model\"\"\"\n provider_name, model_id = cls.resolve_model(model_string)\n\n if provider_name not in cls.PROVIDERS:\n raise ValueError(\n f\"Unknown provider: {provider_name}. \"\n f\"Available: {', '.join(cls.PROVIDERS.keys())}\"\n )\n\n provider_class = cls.PROVIDERS[provider_name]\n return provider_class(model_id)\n"}, "8fc18dbb4ffe7cb304f11e3e629ab147d2b8b6f4": {"t": 1785764358.3223562, "n": 3409, "h": "9328f892072173f5", "c": "\"\"\"Model routing and provider selection\"\"\"\n\nfrom typing import Dict, Type\nfrom .base import Provider\nfrom .anthropic import AnthropicProvider\nfrom .openai import OpenAIProvider\nfrom .openrouter import OpenRouterProvider\n\n\nclass ModelRouter:\n \"\"\"Routes model requests to appropriate providers\"\"\"\n\n # Map of provider names to provider classes\n PROVIDERS: Dict[str, Type[Provider]] = {\n \"anthropic\": AnthropicProvider,\n \"openai\": OpenAIProvider,\n \"openrouter\": OpenRouterProvider,\n }\n\n # Common model aliases - can use OpenRouter for multi-model access\n MODEL_ALIASES = {\n # Direct provider access\n \"claude\": \"anthropic/claude-sonnet-4-5-20250929\",\n \"claude-sonnet\": \"anthropic/claude-sonnet-4-5-20250929\",\n \"claude-opus\": \"anthropic/claude-opus-4-5-20251101\",\n \"gpt-4\": \"openai/gpt-4-turbo\",\n \"gpt-4-turbo\": \"openai/gpt-4-turbo\",\n \"gpt-4o\": \"openai/gpt-4o\",\n \n # OpenRouter aliases for multi-model orchestration\n \"or-claude-sonnet\": \"openrouter/anthropic/claude-sonnet-4\",\n \"or-claude-opus\": \"openrouter/anthropic/claude-opus-4\",\n \"or-claude-haiku\": \"openrouter/anthropic/claude-3.5-haiku\",\n \"or-gpt-4o\": \"openrouter/openai/gpt-4o\",\n \"or-gpt-4o-mini\": \"openrouter/openai/gpt-4o-mini\",\n \"or-o1\": \"openrouter/openai/o1\",\n \"or-o1-mini\": \"openrouter/openai/o1-mini\",\n \"or-gemini-flash\": \"openrouter/google/gemini-flash-1.5\",\n \"or-gemini-pro\": \"openrouter/google/gemini-pro-1.5\",\n \"or-deepseek\": \"openrouter/deepseek/deepseek-chat\",\n \"or-llama\": \"openrouter/meta-llama/llama-3.1-70b-instruct\",\n \n # Task-specific aliases (for subagent routing)\n \"smart\": \"openrouter/anthropic/claude-sonnet-4\",\n \"rush\": \"openrouter/anthropic/claude-3.5-haiku\",\n \"oracle\": \"openrouter/openai/o1-mini\",\n \"search\": \"openrouter/google/gemini-flash-1.5\",\n \"review\": \"openrouter/google/gemini-pro-1.5\",\n \n # Gemini 2.5 Flash for high-speed codebase retrieval\n \"gemini-3-flash\": \"openrouter/google/gemini-2.5-flash-preview\",\n \"finder\": \"openrouter/google/gemini-2.5-flash-preview\",\n \n # Handoff system - context analysis and task continuation\n \"handoff\": \"openrouter/google/gemini-2.5-flash-preview\",\n }\n\n @classmethod\n def resolve_model(cls, model_string: str) -> tuple[str, str]:\n \"\"\"Resolve model string to (provider, model_id)\"\"\"\n # Check if it's an alias\n if model_string in cls.MODEL_ALIASES:\n model_string = cls.MODEL_ALIASES[model_string]\n\n # Parse provider/model format\n if \"/\" in model_string:\n provider, model_id = model_string.split(\"/\", 1)\n return provider, model_id\n\n # Default to anthropic if no provider specified\n return \"anthropic\", model_string\n\n @classmethod\n def get_provider(cls, model_string: str) -> Provider:\n \"\"\"Get appropriate provider instance for a model\"\"\"\n provider_name, model_id = cls.resolve_model(model_string)\n\n if provider_name not in cls.PROVIDERS:\n raise ValueError(\n f\"Unknown provider: {provider_name}. \"\n f\"Available: {', '.join(cls.PROVIDERS.keys())}\"\n )\n\n provider_class = cls.PROVIDERS[provider_name]\n return provider_class(model_id)\n"}, "80c4dc32ea1ca7fabe2ac6362b2c8ec8320d6d7d": {"t": 1785764360.2215767, "n": 3267, "h": "47cbc3f7ff95a218", "c": "\"\"\"Model routing and provider selection\"\"\"\n\nfrom typing import Dict, Type\nfrom .base import Provider\nfrom .anthropic import AnthropicProvider\nfrom .openai import OpenAIProvider\nfrom .openrouter import OpenRouterProvider\n\n\nclass ModelRouter:\n \"\"\"Routes model requests to appropriate providers\"\"\"\n\n # Map of provider names to provider classes\n PROVIDERS: Dict[str, Type[Provider]] = {\n \"anthropic\": AnthropicProvider,\n \"openai\": OpenAIProvider,\n \"openrouter\": OpenRouterProvider,\n }\n\n # Common model aliases - can use OpenRouter for multi-model access\n MODEL_ALIASES = {\n # Direct provider access\n \"claude\": \"anthropic/claude-sonnet-4-5-20250929\",\n \"claude-sonnet\": \"anthropic/claude-sonnet-4-5-20250929\",\n \"claude-opus\": \"anthropic/claude-opus-4-5-20251101\",\n \"gpt-4\": \"openai/gpt-4-turbo\",\n \"gpt-4-turbo\": \"openai/gpt-4-turbo\",\n \"gpt-4o\": \"openai/gpt-4o\",\n \n # OpenRouter aliases for multi-model orchestration\n \"or-claude-sonnet\": \"openrouter/anthropic/claude-sonnet-4\",\n \"or-claude-opus\": \"openrouter/anthropic/claude-opus-4\",\n \"or-claude-haiku\": \"openrouter/anthropic/claude-3.5-haiku\",\n \"or-gpt-4o\": \"openrouter/openai/gpt-4o\",\n \"or-gpt-4o-mini\": \"openrouter/openai/gpt-4o-mini\",\n \"or-o1\": \"openrouter/openai/o1\",\n \"or-o1-mini\": \"openrouter/openai/o1-mini\",\n \"or-gemini-flash\": \"openrouter/google/gemini-flash-1.5\",\n \"or-gemini-pro\": \"openrouter/google/gemini-pro-1.5\",\n \"or-deepseek\": \"openrouter/deepseek/deepseek-chat\",\n \"or-llama\": \"openrouter/meta-llama/llama-3.1-70b-instruct\",\n \n # Task-specific aliases (for subagent routing)\n \"smart\": \"openrouter/anthropic/claude-sonnet-4\",\n \"rush\": \"openrouter/anthropic/claude-3.5-haiku\",\n \"oracle\": \"openrouter/openai/o1-mini\",\n \"search\": \"openrouter/google/gemini-flash-1.5\",\n \"review\": \"openrouter/google/gemini-pro-1.5\",\n \n # Gemini 3 Flash for high-speed codebase retrieval\n \"gemini-3-flash\": \"openrouter/google/gemini-2.5-flash-preview\",\n \"finder\": \"openrouter/google/gemini-2.5-flash-preview\",\n }\n\n @classmethod\n def resolve_model(cls, model_string: str) -> tuple[str, str]:\n \"\"\"Resolve model string to (provider, model_id)\"\"\"\n # Check if it's an alias\n if model_string in cls.MODEL_ALIASES:\n model_string = cls.MODEL_ALIASES[model_string]\n\n # Parse provider/model format\n if \"/\" in model_string:\n provider, model_id = model_string.split(\"/\", 1)\n return provider, model_id\n\n # Default to anthropic if no provider specified\n return \"anthropic\", model_string\n\n @classmethod\n def get_provider(cls, model_string: str) -> Provider:\n \"\"\"Get appropriate provider instance for a model\"\"\"\n provider_name, model_id = cls.resolve_model(model_string)\n\n if provider_name not in cls.PROVIDERS:\n raise ValueError(\n f\"Unknown provider: {provider_name}. \"\n f\"Available: {', '.join(cls.PROVIDERS.keys())}\"\n )\n\n provider_class = cls.PROVIDERS[provider_name]\n return provider_class(model_id)\n"}, "ca10653a60e6f4d852a88ee8dc751555bfb53aeb": {"t": 1785764361.6297324, "n": 3063, "h": "7038e92df587fc42", "c": "\"\"\"Model routing and provider selection\"\"\"\n\nfrom typing import Dict, Type\nfrom .base import Provider\nfrom .anthropic import AnthropicProvider\nfrom .openai import OpenAIProvider\nfrom .openrouter import OpenRouterProvider\n\n\nclass ModelRouter:\n \"\"\"Routes model requests to appropriate providers\"\"\"\n\n # Map of provider names to provider classes\n PROVIDERS: Dict[str, Type[Provider]] = {\n \"anthropic\": AnthropicProvider,\n \"openai\": OpenAIProvider,\n \"openrouter\": OpenRouterProvider,\n }\n\n # Common model aliases - can use OpenRouter for multi-model access\n MODEL_ALIASES = {\n # Direct provider access\n \"claude\": \"anthropic/claude-sonnet-4-5-20250929\",\n \"claude-sonnet\": \"anthropic/claude-sonnet-4-5-20250929\",\n \"claude-opus\": \"anthropic/claude-opus-4-5-20251101\",\n \"gpt-4\": \"openai/gpt-4-turbo\",\n \"gpt-4-turbo\": \"openai/gpt-4-turbo\",\n \"gpt-4o\": \"openai/gpt-4o\",\n \n # OpenRouter aliases for multi-model orchestration\n \"or-claude-sonnet\": \"openrouter/anthropic/claude-sonnet-4\",\n \"or-claude-opus\": \"openrouter/anthropic/claude-opus-4\",\n \"or-claude-haiku\": \"openrouter/anthropic/claude-3.5-haiku\",\n \"or-gpt-4o\": \"openrouter/openai/gpt-4o\",\n \"or-gpt-4o-mini\": \"openrouter/openai/gpt-4o-mini\",\n \"or-o1\": \"openrouter/openai/o1\",\n \"or-o1-mini\": \"openrouter/openai/o1-mini\",\n \"or-gemini-flash\": \"openrouter/google/gemini-flash-1.5\",\n \"or-gemini-pro\": \"openrouter/google/gemini-pro-1.5\",\n \"or-deepseek\": \"openrouter/deepseek/deepseek-chat\",\n \"or-llama\": \"openrouter/meta-llama/llama-3.1-70b-instruct\",\n \n # Task-specific aliases (for subagent routing)\n \"smart\": \"openrouter/anthropic/claude-sonnet-4\",\n \"rush\": \"openrouter/anthropic/claude-3.5-haiku\",\n \"oracle\": \"openrouter/openai/o1-mini\",\n \"search\": \"openrouter/google/gemini-flash-1.5\",\n \"review\": \"openrouter/google/gemini-pro-1.5\",\n }\n\n @classmethod\n def resolve_model(cls, model_string: str) -> tuple[str, str]:\n \"\"\"Resolve model string to (provider, model_id)\"\"\"\n # Check if it's an alias\n if model_string in cls.MODEL_ALIASES:\n model_string = cls.MODEL_ALIASES[model_string]\n\n # Parse provider/model format\n if \"/\" in model_string:\n provider, model_id = model_string.split(\"/\", 1)\n return provider, model_id\n\n # Default to anthropic if no provider specified\n return \"anthropic\", model_string\n\n @classmethod\n def get_provider(cls, model_string: str) -> Provider:\n \"\"\"Get appropriate provider instance for a model\"\"\"\n provider_name, model_id = cls.resolve_model(model_string)\n\n if provider_name not in cls.PROVIDERS:\n raise ValueError(\n f\"Unknown provider: {provider_name}. \"\n f\"Available: {', '.join(cls.PROVIDERS.keys())}\"\n )\n\n provider_class = cls.PROVIDERS[provider_name]\n return provider_class(model_id)\n"}, "a15b0988ba85f6db2cd59229ef7ae3fa9f7b54c0": {"t": 1785764362.9708838, "n": 1844, "h": "2064ac7bae80ba6b", "c": "\"\"\"Model routing and provider selection\"\"\"\n\nfrom typing import Dict, Type\nfrom .base import Provider\nfrom .anthropic import AnthropicProvider\nfrom .openai import OpenAIProvider\n\n\nclass ModelRouter:\n \"\"\"Routes model requests to appropriate providers\"\"\"\n\n # Map of provider names to provider classes\n PROVIDERS: Dict[str, Type[Provider]] = {\n \"anthropic\": AnthropicProvider,\n \"openai\": OpenAIProvider,\n }\n\n # Common model aliases\n MODEL_ALIASES = {\n \"claude\": \"anthropic/claude-sonnet-4-5-20250929\",\n \"claude-sonnet\": \"anthropic/claude-sonnet-4-5-20250929\",\n \"claude-opus\": \"anthropic/claude-opus-4-5-20251101\",\n \"gpt-4\": \"openai/gpt-4-turbo\",\n \"gpt-4-turbo\": \"openai/gpt-4-turbo\",\n \"gpt-4o\": \"openai/gpt-4o\",\n }\n\n @classmethod\n def resolve_model(cls, model_string: str) -> tuple[str, str]:\n \"\"\"Resolve model string to (provider, model_id)\"\"\"\n # Check if it's an alias\n if model_string in cls.MODEL_ALIASES:\n model_string = cls.MODEL_ALIASES[model_string]\n\n # Parse provider/model format\n if \"/\" in model_string:\n provider, model_id = model_string.split(\"/\", 1)\n return provider, model_id\n\n # Default to anthropic if no provider specified\n return \"anthropic\", model_string\n\n @classmethod\n def get_provider(cls, model_string: str) -> Provider:\n \"\"\"Get appropriate provider instance for a model\"\"\"\n provider_name, model_id = cls.resolve_model(model_string)\n\n if provider_name not in cls.PROVIDERS:\n raise ValueError(\n f\"Unknown provider: {provider_name}. \"\n f\"Available: {', '.join(cls.PROVIDERS.keys())}\"\n )\n\n provider_class = cls.PROVIDERS[provider_name]\n return provider_class(model_id)\n"}}}}