Skip to content

Commit 18e2dc0

Browse files
committed
Fix to have agent lambda return descriptive error when request is too long, and UI to display it appropriately so users know they need to shorten their queries
1 parent bd145aa commit 18e2dc0

File tree

3 files changed

+41
-14
lines changed

3 files changed

+41
-14
lines changed

src/lambda/agent_request_handler/index.py

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -76,26 +76,17 @@ def handler(event, context):
7676
if not query:
7777
error_msg = "Query parameter is required"
7878
logger.error(error_msg)
79-
return {
80-
"statusCode": 400,
81-
"body": error_msg
82-
}
79+
raise Exception(error_msg)
8380

8481
if len(query) > 5000:
8582
error_msg = "Query exceeds maximum length of 5000 characters"
8683
logger.error(f"{error_msg}. Query length: {len(query)}")
87-
return {
88-
"statusCode": 400,
89-
"body": error_msg
90-
}
84+
raise Exception(error_msg)
9185

9286
if not agent_ids:
9387
error_msg = "At least one agent ID is required"
9488
logger.error(error_msg)
95-
return {
96-
"statusCode": 400,
97-
"body": error_msg
98-
}
89+
raise Exception(error_msg)
9990

10091
# Extract and validate user ID from the identity context
10192
identity = event.get("identity", {})
@@ -161,7 +152,18 @@ def handler(event, context):
161152
"body": error_msg
162153
}
163154
except Exception as e:
164-
error_msg = f"Error processing request: {str(e)}"
155+
# Check if this is a validation error that should propagate as GraphQL error
156+
error_str = str(e)
157+
if any(msg in error_str for msg in [
158+
"Query parameter is required",
159+
"Query exceeds maximum length",
160+
"At least one agent ID is required"
161+
]):
162+
# Re-raise validation errors so they become GraphQL errors
163+
raise e
164+
165+
# Handle other unexpected errors
166+
error_msg = f"Error processing request: {error_str}"
165167
logger.error(error_msg)
166168
return {
167169
"statusCode": 500,

src/ui/src/components/document-agents-layout/AgentJobStatus.jsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,17 @@ const getStatusIndicator = (status) => {
2020
};
2121

2222
const AgentJobStatus = ({ jobId, status, error }) => {
23+
// Show error even if there's no jobId (for validation errors)
24+
if (error && !jobId) {
25+
return (
26+
<Box padding={{ vertical: 'xs' }}>
27+
<div>
28+
<strong>Error:</strong> {error}
29+
</div>
30+
</Box>
31+
);
32+
}
33+
2334
if (!jobId) {
2435
return null;
2536
}

src/ui/src/components/document-agents-layout/DocumentsAgentsLayout.jsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,21 @@ const DocumentsAgentsLayout = () => {
199199
}, 1000);
200200
} catch (err) {
201201
logger.error('Error submitting query:', err);
202-
const errorMessage = err.errors?.[0]?.message || err.message || 'Failed to submit query';
202+
logger.error('Error structure:', JSON.stringify(err, null, 2));
203+
204+
let errorMessage = 'Failed to submit query';
205+
206+
// Extract error message from GraphQL error structure
207+
if (err.errors && err.errors.length > 0 && err.errors[0].message) {
208+
errorMessage = err.errors[0].message;
209+
} else if (err.message) {
210+
errorMessage = err.message;
211+
} else if (err.data && err.data.errors && err.data.errors.length > 0 && err.data.errors[0].message) {
212+
errorMessage = err.data.errors[0].message;
213+
} else if (typeof err === 'string') {
214+
errorMessage = err;
215+
}
216+
203217
updateAnalyticsState({
204218
error: errorMessage,
205219
jobStatus: 'FAILED',

0 commit comments

Comments
 (0)