Skip to main content

systemprompt_models/execution/context/
context_error.rs

1//! Request-context construction error types.
2//!
3//! Copyright (c) systemprompt.io — Business Source License 1.1.
4//! See <https://systemprompt.io> for licensing details.
5
6use systemprompt_identifiers::TaskId;
7use thiserror::Error;
8
9#[derive(Debug, Clone)]
10pub enum ContextIdSource {
11    Direct(String),
12    FromTask { task_id: TaskId },
13}
14
15#[derive(Debug, Error)]
16pub enum ContextExtractionError {
17    #[error("Missing required header: {0}")]
18    MissingHeader(String),
19
20    #[error("Missing Authorization header")]
21    MissingAuthHeader,
22
23    #[error("Invalid JWT token: {0}")]
24    InvalidToken(String),
25
26    #[error("Token revoked")]
27    Revoked,
28
29    #[error("JWT missing required 'session_id' claim")]
30    MissingSessionId,
31
32    #[error("JWT missing required 'sub' (user_id) claim")]
33    MissingUserId,
34
35    #[error(
36        "Missing required 'x-context-id' header (for MCP routes) or contextId in body (for A2A \
37         routes)"
38    )]
39    MissingContextId,
40
41    #[error("Invalid header value: {header}, reason: {reason}")]
42    InvalidHeaderValue { header: String, reason: String },
43
44    #[error("Invalid user_id: {0}")]
45    InvalidUserId(String),
46
47    #[error("Database error: {message}")]
48    DatabaseError { message: String },
49
50    #[error("User not found: {0}")]
51    UserNotFound(String),
52
53    #[error("Forbidden header '{header}': {reason}")]
54    ForbiddenHeader { header: String, reason: String },
55}