systemprompt_agent/
error.rs1use systemprompt_identifiers::TaskId;
2use thiserror::Error;
3
4#[derive(Debug, Error)]
5pub enum RowParseError {
6 #[error("Missing required field: {field}")]
7 MissingField { field: String },
8
9 #[error("Invalid datetime for field '{field}'")]
10 InvalidDatetime { field: String },
11
12 #[error("JSON parse error for field '{field}': {source}")]
13 JsonParse {
14 field: String,
15 #[source]
16 source: serde_json::Error,
17 },
18}
19
20#[derive(Debug, Error)]
21pub enum TaskError {
22 #[error("Task UUID missing from database row")]
23 MissingTaskUuid,
24
25 #[error("Agent name not found for task {task_id}")]
26 MissingAgentName { task_id: TaskId },
27
28 #[error("Context ID missing from database row")]
29 MissingContextId,
30
31 #[error("Invalid task state: {state}")]
32 InvalidTaskState { state: String },
33
34 #[error(transparent)]
35 RowParse(#[from] RowParseError),
36
37 #[error("Metadata parse error: {0}")]
38 InvalidMetadata(#[from] serde_json::Error),
39
40 #[error("Empty task ID provided")]
41 EmptyTaskId,
42
43 #[error("Invalid task ID format: {id}")]
44 InvalidTaskIdFormat { id: String },
45
46 #[error("Message ID missing from database row")]
47 MissingMessageId,
48
49 #[error("Tool name missing for tool execution")]
50 MissingToolName,
51
52 #[error("Tool call ID missing for tool execution")]
53 MissingCallId,
54
55 #[error("Created timestamp missing from database")]
56 MissingCreatedTimestamp,
57
58 #[error("Database error: {0}")]
59 Database(String),
60}
61
62#[derive(Debug, Error)]
63pub enum ContextError {
64 #[error("Context UUID missing from database row")]
65 MissingUuid,
66
67 #[error("Context name missing from database row")]
68 MissingName,
69
70 #[error("User ID missing from database row")]
71 MissingUserId,
72
73 #[error(transparent)]
74 RowParse(#[from] RowParseError),
75
76 #[error("Role serialization error: {0}")]
77 RoleSerialization(#[from] serde_json::Error),
78
79 #[error("Database error: {0}")]
80 Database(String),
81}
82
83#[derive(Debug, Error)]
84pub enum ArtifactError {
85 #[error("Artifact UUID missing from database row")]
86 MissingUuid,
87
88 #[error("Artifact type missing from database row")]
89 MissingType,
90
91 #[error("Context ID missing for artifact")]
92 MissingContextId,
93
94 #[error(transparent)]
95 RowParse(#[from] RowParseError),
96
97 #[error("Invalid tool response schema: expected {expected}, found keys: {actual_keys:?}")]
98 InvalidSchema {
99 expected: &'static str,
100 actual_keys: Vec<String>,
101 #[source]
102 source: serde_json::Error,
103 },
104
105 #[error("Metadata parse error: {0}")]
106 InvalidMetadata(#[from] serde_json::Error),
107
108 #[error("Database error: {0}")]
109 Database(String),
110
111 #[error("Transform error: {0}")]
112 Transform(String),
113
114 #[error("Metadata validation error: {0}")]
115 MetadataValidation(String),
116}
117
118#[derive(Debug, Error)]
119pub enum ProtocolError {
120 #[error("Tool name missing in tool call")]
121 MissingToolName,
122
123 #[error("Tool result error flag is required but was not provided")]
124 MissingErrorFlag,
125
126 #[error("Message ID missing")]
127 MissingMessageId,
128
129 #[error("Request ID missing")]
130 MissingRequestId,
131
132 #[error("Latency value missing or invalid")]
133 InvalidLatency,
134
135 #[error("Validation failed: {0}")]
136 ValidationFailed(String),
137
138 #[error("JSON parse error: {0}")]
139 JsonParse(#[from] serde_json::Error),
140
141 #[error("Database error: {0}")]
142 Database(String),
143}
144
145#[derive(Debug, Error)]
146pub enum AgentError {
147 #[error("Task error: {0}")]
148 Task(#[from] TaskError),
149
150 #[error("Context error: {0}")]
151 Context(#[from] ContextError),
152
153 #[error("Artifact error: {0}")]
154 Artifact(#[from] ArtifactError),
155
156 #[error("A2A protocol error: {0}")]
157 Protocol(#[from] ProtocolError),
158
159 #[error("Repository error: {0}")]
160 Repository(String),
161
162 #[error("Database error: {0}")]
163 Database(String),
164}