use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AgentMessage {
pub role: String,
pub content: AgentContent,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum AgentContent {
Text(String),
Json(serde_json::Value),
}
impl From<String> for AgentContent {
fn from(s: String) -> Self {
AgentContent::Text(s)
}
}
impl From<&str> for AgentContent {
fn from(s: &str) -> Self {
AgentContent::Text(s.to_string())
}
}
impl From<serde_json::Value> for AgentContent {
fn from(v: serde_json::Value) -> Self {
AgentContent::Json(v)
}
}