use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AgentExecution {
pub success: bool,
pub final_result: String,
pub steps_executed: usize,
pub duration_ms: u64,
pub data: Option<serde_json::Value>,
pub metadata: Option<HashMap<String, serde_json::Value>>,
}
impl AgentExecution {
pub fn success(final_result: String, steps_executed: usize, duration_ms: u64) -> Self {
Self {
success: true,
final_result,
steps_executed,
duration_ms,
data: None,
metadata: None,
}
}
pub fn failure(error: String, steps_executed: usize, duration_ms: u64) -> Self {
Self {
success: false,
final_result: format!("Execution failed: {}", error),
steps_executed,
duration_ms,
data: None,
metadata: None,
}
}
pub fn with_data(mut self, data: serde_json::Value) -> Self {
self.data = Some(data);
self
}
pub fn with_metadata(mut self, metadata: HashMap<String, serde_json::Value>) -> Self {
self.metadata = Some(metadata);
self
}
}