use crate::types::ThinkingLevel;
use serde::{Deserialize, Serialize};
use std::path::PathBuf;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AgentProfile {
#[serde(default = "default_profile_id")]
pub profile_id: String,
#[serde(default)]
pub name: Option<String>,
#[serde(default)]
pub description: Option<String>,
#[serde(default)]
pub system_prompt: Option<String>,
#[serde(default)]
pub thinking_level: Option<ThinkingLevel>,
#[serde(default)]
pub temperature: Option<f32>,
#[serde(default)]
pub max_tokens: Option<u32>,
#[serde(default)]
pub config_id: Option<String>,
#[serde(default)]
pub skills: Vec<String>,
#[serde(default)]
pub workspace: Option<PathBuf>,
}
fn default_profile_id() -> String {
uuid::Uuid::new_v4().to_string()
}
impl Default for AgentProfile {
fn default() -> Self {
Self {
profile_id: default_profile_id(),
name: None,
description: None,
system_prompt: None,
thinking_level: None,
temperature: None,
max_tokens: None,
config_id: None,
skills: Vec::new(),
workspace: None,
}
}
}