simple_agents_workflow/
trace.rs1use serde::{Deserialize, Serialize};
2
3pub type TraceSequence = u64;
5
6#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
8pub struct WorkflowTrace {
9 pub metadata: WorkflowTraceMetadata,
11 pub events: Vec<TraceEvent>,
13}
14
15#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
17pub struct WorkflowTraceMetadata {
18 pub trace_id: String,
20 pub workflow_name: String,
22 pub workflow_version: String,
24 pub started_at_unix_ms: u64,
26 pub finished_at_unix_ms: Option<u64>,
28}
29
30#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
32pub struct TraceEvent {
33 pub seq: TraceSequence,
35 pub timestamp_unix_ms: u64,
37 #[serde(flatten)]
39 pub kind: TraceEventKind,
40}
41
42#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
44#[serde(tag = "event", rename_all = "snake_case")]
45pub enum TraceEventKind {
46 NodeEnter { node_id: String },
48 NodeExit { node_id: String },
50 NodeError { node_id: String, message: String },
52 Terminal { status: TraceTerminalStatus },
54}
55
56#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
58#[serde(rename_all = "snake_case")]
59pub enum TraceTerminalStatus {
60 Completed,
61 Failed,
62}