use crate::agent::BrowsrClientConfig;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(default, deny_unknown_fields)]
pub struct BrowsrConfiguration {
pub name: String,
pub version: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub browser: Option<BrowsrClientConfig>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub structured_model_settings: Option<serde_json::Value>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub default_model_settings: Option<serde_json::Value>,
}
impl Default for BrowsrConfiguration {
fn default() -> Self {
Self {
name: "browsr".to_string(),
version: "0.1.0".to_string(),
browser: None,
structured_model_settings: None,
default_model_settings: None,
}
}
}
impl BrowsrConfiguration {
pub async fn load_from_path<P: AsRef<std::path::Path>>(path: P) -> anyhow::Result<Self> {
let content = tokio::fs::read_to_string(path).await?;
let config: BrowsrConfiguration = toml::from_str(&content)?;
Ok(config)
}
}