use serde::Serialize;
#[allow(dead_code)]
#[derive(Debug, Clone, Serialize)]
#[serde(tag = "type", rename_all = "SCREAMING_SNAKE_CASE")]
pub(crate) enum AgUiEvent {
RunStarted {
#[serde(rename = "threadId")]
thread_id: String,
#[serde(rename = "runId")]
run_id: String,
},
RunFinished {
#[serde(rename = "threadId")]
thread_id: String,
#[serde(rename = "runId")]
run_id: String,
#[serde(
rename = "tiktokenPromptTokens",
skip_serializing_if = "Option::is_none"
)]
tiktoken_prompt_tokens: Option<crate::cm_types::TiktokenPromptTokensSnapshot>,
},
RunError {
#[serde(rename = "threadId")]
thread_id: String,
#[serde(rename = "runId")]
run_id: String,
error: AgUiErrorBody,
},
TextMessageStart {
#[serde(rename = "messageId")]
message_id: String,
role: String,
#[serde(skip_serializing_if = "Option::is_none")]
metadata: Option<serde_json::Value>,
},
TextMessageContent {
#[serde(rename = "messageId")]
message_id: String,
delta: String,
},
TextMessageEnd {
#[serde(rename = "messageId")]
message_id: String,
},
ToolCallStart {
#[serde(rename = "toolCallId")]
tool_call_id: String,
name: String,
#[serde(rename = "parentMessageId")]
parent_message_id: String,
},
ToolCallArgs {
#[serde(rename = "toolCallId")]
tool_call_id: String,
args: String,
},
ToolCallEnd {
#[serde(rename = "toolCallId")]
tool_call_id: String,
},
ToolCallResult {
#[serde(rename = "toolCallId")]
tool_call_id: String,
content: String,
#[serde(skip_serializing_if = "Option::is_none")]
metadata: Option<serde_json::Value>,
},
ReasoningMessageStart {
#[serde(rename = "messageId")]
message_id: String,
},
ReasoningMessageContent {
#[serde(rename = "messageId")]
message_id: String,
delta: String,
},
ReasoningMessageEnd {
#[serde(rename = "messageId")]
message_id: String,
},
StateSnapshot {
state: serde_json::Value,
},
StateDelta {
state: serde_json::Value,
},
Custom {
#[serde(rename = "customType")]
custom_type: String,
data: serde_json::Value,
},
}
#[derive(Debug, Clone, Serialize)]
pub(crate) struct AgUiErrorBody {
pub message: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub code: Option<String>,
#[serde(rename = "requestId", skip_serializing_if = "Option::is_none")]
pub request_id: Option<String>,
}