pub mod anthropic;
pub mod gemini;
pub mod ollama;
pub mod openai_compat;
pub(crate) mod stream_bridge;
use async_trait::async_trait;
use crate::domain::ChatRequest;
use crate::models::Result;
use super::capabilities::Capabilities;
use super::ctx::{FinalResponse, StreamContext};
#[async_trait]
pub trait ModelProvider: Send + Sync {
fn capabilities(&self) -> &Capabilities;
async fn chat(&self, request: ChatRequest, ctx: StreamContext) -> Result<FinalResponse>;
}
pub use anthropic::AnthropicProvider;
pub use gemini::GeminiProvider;
pub use ollama::OllamaProvider;
pub use openai_compat::OpenAICompatProvider;