ralph_workflow/agents/providers/
metadata.rs1use super::types::OpenCodeProviderType;
6
7impl OpenCodeProviderType {
8 pub const fn name(self) -> &'static str {
10 match self {
11 Self::OpenCodeZen => "OpenCode Zen",
12 Self::ZaiDirect => "Z.AI Direct",
13 Self::ZaiCodingPlan => "Z.AI Coding Plan",
14 Self::Moonshot => "Moonshot AI",
15 Self::MiniMax => "MiniMax",
16 Self::Anthropic => "Anthropic",
17 Self::OpenAI => "OpenAI",
18 Self::Google => "Google AI",
19 Self::GoogleVertex => "Google Vertex AI",
20 Self::AmazonBedrock => "Amazon Bedrock",
21 Self::AzureOpenAI => "Azure OpenAI",
22 Self::GithubCopilot => "GitHub Copilot",
23 Self::Groq => "Groq",
24 Self::Together => "Together AI",
25 Self::Fireworks => "Fireworks AI",
26 Self::Cerebras => "Cerebras",
27 Self::SambaNova => "SambaNova",
28 Self::DeepInfra => "DeepInfra",
29 Self::OpenRouter => "OpenRouter",
30 Self::Cloudflare => "Cloudflare Workers AI",
31 Self::Vercel => "Vercel AI Gateway",
32 Self::Helicone => "Helicone",
33 Self::ZenMux => "ZenMux",
34 Self::DeepSeek => "DeepSeek",
35 Self::Xai => "xAI",
36 Self::Mistral => "Mistral AI",
37 Self::Cohere => "Cohere",
38 Self::Perplexity => "Perplexity",
39 Self::AI21 => "AI21 Labs",
40 Self::VeniceAI => "Venice AI",
41 Self::HuggingFace => "HuggingFace",
42 Self::Replicate => "Replicate",
43 Self::Baseten => "Baseten",
44 Self::Cortecs => "Cortecs",
45 Self::Scaleway => "Scaleway",
46 Self::OVHcloud => "OVHcloud",
47 Self::IONet => "IO.NET",
48 Self::Nebius => "Nebius",
49 Self::SapAICore => "SAP AI Core",
50 Self::AzureCognitiveServices => "Azure Cognitive Services",
51 Self::Ollama => "Ollama",
52 Self::LMStudio => "LM Studio",
53 Self::OllamaCloud => "Ollama Cloud",
54 Self::LlamaCpp => "llama.cpp",
55 Self::Custom => "Custom",
56 }
57 }
58
59 pub const fn auth_command(self) -> &'static str {
61 match self {
62 Self::OpenCodeZen => "Run: opencode auth login -> select 'OpenCode Zen'",
63 Self::ZaiDirect => "Run: opencode auth login -> select 'Z.AI' or 'Z.AI Coding Plan'",
64 Self::ZaiCodingPlan => "Run: opencode auth login -> select 'Z.AI Coding Plan'",
65 Self::Moonshot => {
66 "Set MOONSHOT_API_KEY or run: opencode auth login -> select 'Moonshot'"
67 }
68 Self::MiniMax => "Set MINIMAX_API_KEY or run: opencode auth login -> select 'MiniMax'",
69 Self::Anthropic => "Set ANTHROPIC_API_KEY environment variable",
70 Self::OpenAI => "Set OPENAI_API_KEY environment variable",
71 Self::Google => "Set GOOGLE_AI_API_KEY environment variable",
72 Self::GoogleVertex => {
73 "Configure GCP credentials: gcloud auth application-default login"
74 }
75 Self::AmazonBedrock => {
76 "Configure AWS credentials: aws configure or set AWS_ACCESS_KEY_ID"
77 }
78 Self::AzureOpenAI => "Set AZURE_OPENAI_API_KEY and AZURE_OPENAI_ENDPOINT",
79 Self::GithubCopilot => "Run: gh auth login (requires GitHub Copilot subscription)",
80 Self::Groq => "Set GROQ_API_KEY environment variable",
81 Self::Together => "Set TOGETHER_API_KEY environment variable",
82 Self::Fireworks => "Set FIREWORKS_API_KEY environment variable",
83 Self::Cerebras => "Set CEREBRAS_API_KEY environment variable",
84 Self::SambaNova => "Set SAMBANOVA_API_KEY environment variable",
85 Self::DeepInfra => "Set DEEPINFRA_API_KEY environment variable",
86 Self::OpenRouter => "Set OPENROUTER_API_KEY environment variable",
87 Self::Cloudflare => "Set CLOUDFLARE_ACCOUNT_ID and CLOUDFLARE_API_TOKEN",
88 Self::Vercel => "Set VERCEL_API_KEY environment variable",
89 Self::Helicone => "Set HELICONE_API_KEY environment variable",
90 Self::ZenMux => "Set ZENMUX_API_KEY environment variable",
91 Self::DeepSeek => "Set DEEPSEEK_API_KEY environment variable",
92 Self::Xai => "Set XAI_API_KEY environment variable",
93 Self::Mistral => "Set MISTRAL_API_KEY environment variable",
94 Self::Cohere => "Set COHERE_API_KEY environment variable",
95 Self::Perplexity => "Set PERPLEXITY_API_KEY environment variable",
96 Self::AI21 => "Set AI21_API_KEY environment variable",
97 Self::VeniceAI => "Set VENICE_API_KEY environment variable",
98 Self::HuggingFace => "Set HUGGINGFACE_API_KEY environment variable",
99 Self::Replicate => "Set REPLICATE_API_TOKEN environment variable",
100 Self::Baseten => "Set BASETEN_API_KEY environment variable",
101 Self::Cortecs => "Set CORTECS_API_KEY environment variable",
102 Self::Scaleway => "Set SCALEWAY_API_KEY environment variable",
103 Self::OVHcloud => "Set OVHCLOUD_API_KEY environment variable",
104 Self::IONet => "Set IONET_API_KEY environment variable",
105 Self::Nebius => "Set NEBIUS_API_KEY environment variable",
106 Self::SapAICore => {
107 "Set AICORE_CLIENT_ID, AICORE_CLIENT_SECRET, AICORE_AUTH_URL, and AICORE_API_BASE"
108 }
109 Self::AzureCognitiveServices => {
110 "Set AZURE_COGNITIVE_SERVICES_KEY and AZURE_COGNITIVE_SERVICES_ENDPOINT"
111 }
112 Self::Ollama => "Ollama runs locally - no API key needed",
113 Self::LMStudio => "LM Studio runs locally - no API key needed",
114 Self::OllamaCloud => "Set OLLAMA_CLOUD_API_KEY environment variable",
115 Self::LlamaCpp => "llama.cpp runs locally - no API key needed",
116 Self::Custom => "Check provider documentation or run: opencode /connect",
117 }
118 }
119
120 pub const fn prefix(self) -> &'static str {
122 match self {
123 Self::OpenCodeZen => "opencode/",
124 Self::ZaiDirect => "zai/",
125 Self::ZaiCodingPlan => "zai-coding/",
126 Self::Moonshot => "moonshot/",
127 Self::MiniMax => "minimax/",
128 Self::Anthropic => "anthropic/",
129 Self::OpenAI => "openai/",
130 Self::Google => "google/",
131 Self::GoogleVertex => "google-vertex/",
132 Self::AmazonBedrock => "amazon-bedrock/",
133 Self::AzureOpenAI => "azure-openai/",
134 Self::GithubCopilot => "copilot/",
135 Self::Groq => "groq/",
136 Self::Together => "together/",
137 Self::Fireworks => "fireworks/",
138 Self::Cerebras => "cerebras/",
139 Self::SambaNova => "sambanova/",
140 Self::DeepInfra => "deep-infra/",
141 Self::OpenRouter => "openrouter/",
142 Self::Cloudflare => "cloudflare/",
143 Self::Vercel => "vercel/",
144 Self::Helicone => "helicone/",
145 Self::ZenMux => "zenmux/",
146 Self::DeepSeek => "deepseek/",
147 Self::Xai => "xai/",
148 Self::Mistral => "mistral/",
149 Self::Cohere => "cohere/",
150 Self::Perplexity => "perplexity/",
151 Self::AI21 => "ai21/",
152 Self::VeniceAI => "venice-ai/",
153 Self::HuggingFace => "huggingface/",
154 Self::Replicate => "replicate/",
155 Self::Baseten => "baseten/",
156 Self::Cortecs => "cortecs/",
157 Self::Scaleway => "scaleway/",
158 Self::OVHcloud => "ovhcloud/",
159 Self::IONet => "io-net/",
160 Self::Nebius => "nebius/",
161 Self::SapAICore => "sap-ai-core/",
162 Self::AzureCognitiveServices => "azure-cognitive-services/",
163 Self::Ollama => "ollama/",
164 Self::LMStudio => "lmstudio/",
165 Self::OllamaCloud => "ollama-cloud/",
166 Self::LlamaCpp => "llama.cpp/",
167 Self::Custom => "any other provider/*",
168 }
169 }
170
171 pub const fn requires_cloud_config(self) -> bool {
173 matches!(
174 self,
175 Self::GoogleVertex
176 | Self::AmazonBedrock
177 | Self::AzureOpenAI
178 | Self::SapAICore
179 | Self::AzureCognitiveServices
180 )
181 }
182
183 pub const fn is_local(self) -> bool {
185 matches!(self, Self::Ollama | Self::LMStudio | Self::LlamaCpp)
186 }
187}