agtrace_types/event/
payload.rs1use serde::{Deserialize, Serialize};
2use uuid::Uuid;
3
4use crate::tool::ToolCallPayload;
5
6#[derive(Debug, Clone, Serialize, Deserialize)]
8#[serde(tag = "type", content = "content")]
9#[serde(rename_all = "snake_case")]
10pub enum EventPayload {
11 User(UserPayload),
13
14 Reasoning(ReasoningPayload),
16
17 ToolCall(ToolCallPayload),
21
22 ToolResult(ToolResultPayload),
24
25 Message(MessagePayload),
29
30 TokenUsage(TokenUsagePayload),
34
35 Notification(NotificationPayload),
37}
38
39#[derive(Debug, Clone, Serialize, Deserialize)]
40pub struct UserPayload {
41 pub text: String,
43}
44
45#[derive(Debug, Clone, Serialize, Deserialize)]
46pub struct ReasoningPayload {
47 pub text: String,
49}
50
51#[derive(Debug, Clone, Serialize, Deserialize)]
52pub struct ToolResultPayload {
53 pub output: String,
55
56 pub tool_call_id: Uuid,
59
60 #[serde(default)]
62 pub is_error: bool,
63}
64
65#[derive(Debug, Clone, Serialize, Deserialize)]
66pub struct MessagePayload {
67 pub text: String,
69}
70
71#[derive(Debug, Clone, Serialize, Deserialize)]
72pub struct TokenUsagePayload {
73 pub input_tokens: i32,
75 pub output_tokens: i32,
77 pub total_tokens: i32,
79
80 #[serde(default, skip_serializing_if = "Option::is_none")]
82 pub details: Option<TokenUsageDetails>,
83}
84
85#[derive(Debug, Clone, Serialize, Deserialize)]
86pub struct TokenUsageDetails {
87 pub cache_creation_input_tokens: Option<i32>,
89 pub cache_read_input_tokens: Option<i32>,
91 pub reasoning_output_tokens: Option<i32>,
93}
94
95#[derive(Debug, Clone, Serialize, Deserialize)]
96pub struct NotificationPayload {
97 pub text: String,
99 #[serde(default, skip_serializing_if = "Option::is_none")]
101 pub level: Option<String>,
102}