brainwires_a2a/
streaming.rs1use serde::{Deserialize, Serialize};
4use std::collections::HashMap;
5
6use crate::task::{Task, TaskStatus};
7use crate::types::{Artifact, Message};
8
9#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
11pub struct TaskStatusUpdateEvent {
12 #[serde(rename = "taskId")]
14 pub task_id: String,
15 #[serde(rename = "contextId")]
17 pub context_id: String,
18 pub status: TaskStatus,
20 #[serde(skip_serializing_if = "Option::is_none")]
22 pub metadata: Option<HashMap<String, serde_json::Value>>,
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
27pub struct TaskArtifactUpdateEvent {
28 #[serde(rename = "taskId")]
30 pub task_id: String,
31 #[serde(rename = "contextId")]
33 pub context_id: String,
34 pub artifact: Artifact,
36 #[serde(skip_serializing_if = "Option::is_none")]
38 pub index: Option<u32>,
39 #[serde(skip_serializing_if = "Option::is_none")]
41 pub append: Option<bool>,
42 #[serde(rename = "lastChunk", skip_serializing_if = "Option::is_none")]
44 pub last_chunk: Option<bool>,
45 #[serde(skip_serializing_if = "Option::is_none")]
47 pub metadata: Option<HashMap<String, serde_json::Value>>,
48}
49
50#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
52pub struct StreamResponse {
53 #[serde(skip_serializing_if = "Option::is_none")]
55 pub task: Option<Task>,
56 #[serde(skip_serializing_if = "Option::is_none")]
58 pub message: Option<Message>,
59 #[serde(skip_serializing_if = "Option::is_none", rename = "statusUpdate")]
61 pub status_update: Option<TaskStatusUpdateEvent>,
62 #[serde(skip_serializing_if = "Option::is_none", rename = "artifactUpdate")]
64 pub artifact_update: Option<TaskArtifactUpdateEvent>,
65}
66
67#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
69pub struct SendMessageResponse {
70 #[serde(skip_serializing_if = "Option::is_none")]
72 pub task: Option<Task>,
73 #[serde(skip_serializing_if = "Option::is_none")]
75 pub message: Option<Message>,
76}