systemprompt_models/events/payloads/
a2a.rs1use 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}