pub struct RequestContext {
pub auth: AuthContext,
pub request: RequestMetadata,
pub execution: ExecutionContext,
pub settings: ExecutionSettings,
pub user: Option<AuthenticatedUser>,
pub start_time: Instant,
}Fields§
§auth: AuthContext§request: RequestMetadata§execution: ExecutionContext§settings: ExecutionSettings§user: Option<AuthenticatedUser>§start_time: InstantImplementations§
Source§impl RequestContext
impl RequestContext
Sourcepub fn new(
session_id: SessionId,
trace_id: TraceId,
context_id: ContextId,
agent_name: AgentName,
) -> Self
pub fn new( session_id: SessionId, trace_id: TraceId, context_id: ContextId, agent_name: AgentName, ) -> Self
Creates a new RequestContext - the ONLY way to construct a context.
This is the single constructor for RequestContext. All contexts must
be created through this method, ensuring consistent initialization.
§Required Fields
session_id: Identifies the user sessiontrace_id: For distributed tracingcontext_id: Conversation/execution context (empty string for user-level contexts)agent_name: The agent handling this request (useAgentName::system()for system operations)
§Optional Fields
Use builder methods to set optional fields:
.with_user_id()- Set the authenticated user.with_auth_token()- Set the JWT token.with_user_type()- Set user type (Admin, Standard, Anon).with_task_id()- Set task ID for AI operations.with_client_id()- Set client ID.with_call_source()- Set call source (Agentic, Direct, Ephemeral)
§Example
let ctx = RequestContext::new(
SessionId::new("sess_123".to_string()),
TraceId::new("trace_456".to_string()),
ContextId::new("ctx_789".to_string()),
AgentName::new("my-agent".to_string()),
)
.with_user_id(UserId::new("user_123".to_string()))
.with_auth_token("jwt_token_here")
.with_user_type(UserType::User);pub fn with_user(self, user: AuthenticatedUser) -> Self
pub fn with_user_id(self, user_id: UserId) -> Self
pub fn with_agent_name(self, agent_name: AgentName) -> Self
pub fn with_context_id(self, context_id: ContextId) -> Self
pub fn with_task_id(self, task_id: TaskId) -> Self
pub fn with_task(self, task_id: TaskId, call_source: CallSource) -> Self
pub fn with_ai_tool_call_id(self, ai_tool_call_id: AiToolCallId) -> Self
pub fn with_mcp_execution_id(self, mcp_execution_id: McpExecutionId) -> Self
pub fn with_client_id(self, client_id: ClientId) -> Self
pub const fn with_user_type(self, user_type: UserType) -> Self
pub fn with_auth_token(self, token: impl Into<String>) -> Self
pub const fn with_call_source(self, call_source: CallSource) -> Self
pub const fn with_budget(self, cents: i32) -> Self
pub const fn with_interaction_mode(self, mode: UserInteractionMode) -> Self
pub const fn with_tracked(self, is_tracked: bool) -> Self
pub fn with_tool_model_config(self, config: ToolModelConfig) -> Self
pub const fn tool_model_config(&self) -> Option<&ToolModelConfig>
pub const fn session_id(&self) -> &SessionId
pub const fn user_id(&self) -> &UserId
pub const fn trace_id(&self) -> &TraceId
pub const fn context_id(&self) -> &ContextId
pub const fn agent_name(&self) -> &AgentName
pub const fn auth_token(&self) -> &JwtToken
pub const fn user_type(&self) -> UserType
pub const fn rate_limit_tier(&self) -> RateLimitTier
pub const fn task_id(&self) -> Option<&TaskId>
pub const fn client_id(&self) -> Option<&ClientId>
pub const fn ai_tool_call_id(&self) -> Option<&AiToolCallId>
pub const fn mcp_execution_id(&self) -> Option<&McpExecutionId>
pub const fn call_source(&self) -> Option<CallSource>
pub const fn is_authenticated(&self) -> bool
pub fn is_system(&self) -> bool
pub fn elapsed(&self) -> Duration
pub fn validate_task_execution(&self) -> Result<(), String>
pub fn validate_authenticated(&self) -> Result<(), String>
Trait Implementations§
Source§impl Clone for RequestContext
impl Clone for RequestContext
Source§fn clone(&self) -> RequestContext
fn clone(&self) -> RequestContext
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl ContextPropagation for RequestContext
impl ContextPropagation for RequestContext
fn from_headers(hdrs: &HeaderMap) -> Result<Self>
fn to_headers(&self) -> HeaderMap
Source§impl Debug for RequestContext
impl Debug for RequestContext
Source§impl<'de> Deserialize<'de> for RequestContext
impl<'de> Deserialize<'de> for RequestContext
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl From<Arc<Mutex<RequestContext>>> for RequestContext
impl From<Arc<Mutex<RequestContext>>> for RequestContext
Source§impl From<RequestContext> for SharedRequestContext
impl From<RequestContext> for SharedRequestContext
Source§fn from(context: RequestContext) -> Self
fn from(context: RequestContext) -> Self
Converts to this type from the input type.
Source§impl InjectContextHeaders for RequestContext
impl InjectContextHeaders for RequestContext
fn inject_headers(&self, hdrs: &mut HeaderMap)
Auto Trait Implementations§
impl Freeze for RequestContext
impl RefUnwindSafe for RequestContext
impl Send for RequestContext
impl Sync for RequestContext
impl Unpin for RequestContext
impl UnwindSafe for RequestContext
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more