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