use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; use serde_json::Value; use sqlx::FromRow; use uuid::Uuid; #[derive(Debug, Clone, PartialEq, Serialize, Deserialize, FromRow)] pub struct AgentTraceModel { pub id: Uuid, pub invocation: Uuid, pub conversation: Uuid, pub sequence: i32, pub phase: String, pub content: Option, pub tool_calls: Option, pub tool_results: Option, pub input_tokens: Option, pub output_tokens: Option, pub metadata: Option, pub created_at: DateTime, } impl AgentTraceModel { pub fn phase_label(&self) -> &str { match self.phase.as_str() { "think" => "Thinking", "answer" => "Answering", "act" => "Acting", "summarize" => "Summarizing", _ => &self.phase, } } }