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}