Skip to main content

opencode_provider_manager/discovery/
mod.rs

1//! discovery: Model discovery from models.dev API and provider APIs.
2//!
3//! Supports two channels for discovering available models:
4//! 1. models.dev API - fetch the full provider/model catalog
5//! 2. Provider APIs - direct queries to OpenAI, Ollama, LM Studio, etc.
6
7pub mod cache;
8pub mod error;
9pub mod models_dev;
10pub mod provider_api;
11
12pub use error::{DiscoveryError, Result};
13
14/// A discovered model with metadata.
15#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
16pub struct DiscoveredModel {
17    /// Model ID (e.g., "gpt-4o").
18    pub id: String,
19    /// Display name.
20    pub name: String,
21    /// Provider ID (e.g., "openai").
22    pub provider_id: String,
23    /// Context window size.
24    pub context_length: Option<u64>,
25    /// Maximum output tokens.
26    pub max_output_tokens: Option<u64>,
27    /// Input cost per million tokens (USD).
28    pub input_cost_per_million: Option<f64>,
29    /// Output cost per million tokens (USD).
30    pub output_cost_per_million: Option<f64>,
31}
32
33/// A discovered provider with its available models.
34#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
35pub struct DiscoveredProvider {
36    /// Provider ID (e.g., "anthropic").
37    pub id: String,
38    /// Display name.
39    pub name: String,
40    /// Available models.
41    pub models: Vec<DiscoveredModel>,
42}