added opencode zen as provider

This commit is contained in:
2025-12-22 23:13:29 +01:00
parent 7afc7c1cc9
commit c71a535f16
14 changed files with 956 additions and 13 deletions

View File

@@ -400,11 +400,13 @@ def configure_providers():
from providers.openrouter import OpenRouterProvider
from providers.shared import ProviderType
from providers.xai import XAIModelProvider
from providers.zen import ZenProvider
from utils.model_restrictions import get_restriction_service
valid_providers = []
has_native_apis = False
has_openrouter = False
has_zen = False
has_custom = False
# Check for Gemini API key
@@ -475,6 +477,19 @@ def configure_providers():
else:
logger.debug("OpenRouter API key is placeholder value")
# Check for OpenCode Zen API key
zen_key = get_env("ZEN_API_KEY")
logger.debug(f"OpenCode Zen key check: key={'[PRESENT]' if zen_key else '[MISSING]'}")
if zen_key and zen_key != "your_zen_api_key_here":
valid_providers.append("OpenCode Zen")
has_zen = True
logger.info("OpenCode Zen API key found - Curated models available via Zen")
else:
if not zen_key:
logger.debug("OpenCode Zen API key not found in environment")
else:
logger.debug("OpenCode Zen API key is placeholder value")
# Check for custom API endpoint (Ollama, vLLM, etc.)
custom_url = get_env("CUSTOM_API_URL")
if custom_url:
@@ -530,7 +545,13 @@ def configure_providers():
registered_providers.append(ProviderType.CUSTOM.value)
logger.debug(f"Registered provider: {ProviderType.CUSTOM.value}")
# 3. OpenRouter last (catch-all for everything else)
# 3. OpenCode Zen
if has_zen:
ModelProviderRegistry.register_provider(ProviderType.ZEN, ZenProvider)
registered_providers.append(ProviderType.ZEN.value)
logger.debug(f"Registered provider: {ProviderType.ZEN.value}")
# 4. OpenRouter last (catch-all for everything else)
if has_openrouter:
ModelProviderRegistry.register_provider(ProviderType.OPENROUTER, OpenRouterProvider)
registered_providers.append(ProviderType.OPENROUTER.value)
@@ -548,6 +569,7 @@ def configure_providers():
"- OPENAI_API_KEY for OpenAI models\n"
"- XAI_API_KEY for X.AI GROK models\n"
"- DIAL_API_KEY for DIAL models\n"
"- ZEN_API_KEY for OpenCode Zen (curated models)\n"
"- OPENROUTER_API_KEY for OpenRouter (multiple models)\n"
"- CUSTOM_API_URL for local models (Ollama, vLLM, etc.)"
)
@@ -558,6 +580,8 @@ def configure_providers():
priority_info = []
if has_native_apis:
priority_info.append("Native APIs (Gemini, OpenAI)")
if has_zen:
priority_info.append("OpenCode Zen")
if has_custom:
priority_info.append("Custom endpoints")
if has_openrouter: