use async_trait::async_trait;
use serde_json::Value;
use crate::Result;
#[derive(Debug, Clone)]
pub struct ClientConfig {
pub name: String,
pub version: String,
pub roots: Vec<String>,
}
#[async_trait]
pub trait Client: Send + Sync {
fn config(&self) -> &ClientConfig;
async fn handle_sampling(&self, prompt: Value) -> Result<Value>;
async fn get_root_context(&self, path: &str) -> Result<Value>;
}
pub mod roots;
pub mod sampling;