use serde::{Deserialize, Serialize};
use super::mcp::RoleMcpConfig;
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct RoleConfig {
#[serde(skip_serializing_if = "Option::is_none")]
pub model: Option<String>,
pub system: String,
pub welcome: String,
pub temperature: f32,
pub top_p: f32,
pub top_k: u32,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct Role {
pub name: String,
#[serde(flatten)]
pub config: RoleConfig,
#[serde(default)]
pub mcp: RoleMcpConfig,
#[serde(skip_serializing_if = "Option::is_none")]
pub workflow: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pipeline: Option<String>,
}
impl RoleMcpConfig {
pub fn with_server_refs(server_refs: Vec<String>) -> Self {
Self {
server_refs,
allowed_tools: Vec::new(),
}
}
pub fn with_server_refs_and_tools(
server_refs: Vec<String>,
allowed_tools: Vec<String>,
) -> Self {
Self {
server_refs,
allowed_tools,
}
}
}