MCPcopy Create free account
hub / github.com/ChrisFeldmeier/OpenCodeRust / list_providers

Function list_providers

crates/opencode-server/src/routes.rs:2272–2308  ·  view source on GitHub ↗
(State(state): State<Arc<ServerState>>)

Source from the content-addressed store, hash-verified

2270}
2271
2272async fn list_providers(State(state): State<Arc<ServerState>>) -> Json<ProviderListResponse> {
2273 let variant_lookup = get_model_variant_lookup().await;
2274 let models = state.providers.list_models();
2275 let mut provider_map: HashMap<String, Vec<ModelInfo>> = HashMap::new();
2276 for m in models {
2277 let provider_id = m.provider.clone();
2278 let model_id = m.id.clone();
2279 let variants = variants_for_model(variant_lookup, &provider_id, &model_id);
2280 provider_map
2281 .entry(provider_id.clone())
2282 .or_default()
2283 .push(ModelInfo {
2284 id: model_id,
2285 name: m.name,
2286 provider: provider_id,
2287 variants,
2288 });
2289 }
2290 let all: Vec<ProviderInfo> = provider_map
2291 .into_iter()
2292 .map(|(id, models)| ProviderInfo {
2293 id: id.clone(),
2294 name: id,
2295 models,
2296 })
2297 .collect();
2298 let connected: Vec<String> = all.iter().map(|p| p.id.clone()).collect();
2299 let default_model: HashMap<String, String> = all
2300 .iter()
2301 .filter_map(|p| p.models.first().map(|m| (p.id.clone(), m.id.clone())))
2302 .collect();
2303 Json(ProviderListResponse {
2304 all,
2305 default_model,
2306 connected,
2307 })
2308}
2309
2310#[derive(Debug, Serialize)]
2311pub struct AuthMethodInfo {

Callers

nothing calls this directly

Calls 5

get_model_variant_lookupFunction · 0.85
newFunction · 0.85
variants_for_modelFunction · 0.85
list_modelsMethod · 0.80
cloneMethod · 0.45

Tested by

no test coverage detected