systemprompt_models/events/payloads/
a2a.rs

1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3use systemprompt_identifiers::{ArtifactId, ContextId, MessageId, TaskId};
4
5use crate::a2a::{Artifact, TaskState};
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
8#[serde(rename_all = "camelCase")]
9pub struct TaskSubmittedPayload {
10    pub task_id: TaskId,
11    pub context_id: ContextId,
12    pub agent_name: String,
13    #[serde(skip_serializing_if = "Option::is_none")]
14    pub input: Option<Value>,
15}
16
17#[derive(Debug, Clone, Serialize, Deserialize)]
18#[serde(rename_all = "camelCase")]
19pub struct TaskStatusUpdatePayload {
20    pub task_id: TaskId,
21    pub context_id: ContextId,
22    pub state: TaskState,
23    #[serde(skip_serializing_if = "Option::is_none")]
24    pub message: Option<String>,
25}
26
27#[derive(Debug, Clone, Serialize, Deserialize)]
28#[serde(rename_all = "camelCase")]
29pub struct ArtifactCreatedPayload {
30    pub task_id: TaskId,
31    pub context_id: ContextId,
32    pub artifact: Artifact,
33}
34
35#[derive(Debug, Clone, Serialize, Deserialize)]
36#[serde(rename_all = "camelCase")]
37pub struct ArtifactUpdatedPayload {
38    pub task_id: TaskId,
39    pub context_id: ContextId,
40    pub artifact_id: ArtifactId,
41    pub append: bool,
42    pub last_chunk: bool,
43    #[serde(skip_serializing_if = "Option::is_none")]
44    pub content: Option<Value>,
45}
46
47#[derive(Debug, Clone, Serialize, Deserialize)]
48#[serde(rename_all = "camelCase")]
49pub struct AgentMessagePayload {
50    pub task_id: TaskId,
51    pub context_id: ContextId,
52    pub message_id: MessageId,
53    pub content: String,
54}
55
56#[derive(Debug, Clone, Serialize, Deserialize)]
57#[serde(rename_all = "camelCase")]
58pub struct InputRequiredPayload {
59    pub task_id: TaskId,
60    pub context_id: ContextId,
61    pub prompt: String,
62}
63
64#[derive(Debug, Clone, Serialize, Deserialize)]
65#[serde(rename_all = "camelCase")]
66pub struct AuthRequiredPayload {
67    pub task_id: TaskId,
68    pub context_id: ContextId,
69    pub auth_url: String,
70}
71
72#[derive(Debug, Clone, Serialize, Deserialize)]
73#[serde(rename_all = "camelCase")]
74pub struct JsonRpcResponsePayload {
75    pub id: Value,
76    pub result: Value,
77}
78
79#[derive(Debug, Clone, Serialize, Deserialize)]
80#[serde(rename_all = "camelCase")]
81pub struct JsonRpcErrorPayload {
82    pub id: Value,
83    pub code: i32,
84    pub message: String,
85    #[serde(skip_serializing_if = "Option::is_none")]
86    pub data: Option<Value>,
87}