enact_core/context/mod.rs
1//! Context module - Execution context types
2//!
3//! This module provides the context types passed through all execution:
4//!
5//! - **TenantContext**: Multi-tenant isolation boundary (REQUIRED)
6//! - **RuntimeContext**: The execution spine
7//! - **TraceContext**: W3C distributed tracing
8//! - **InvocationContext**: Agent/tool invocation context
9//!
10//! ## Key Invariant: TenantContext is Required
11//!
12//! Every execution MUST have a TenantContext. This ensures:
13//! - Multi-tenant isolation
14//! - Resource limit enforcement
15//! - Audit compliance
16//! - Billing attribution
17//!
18//! ## Usage
19//! ```ignore
20//! use enact_core::context::{TenantContext, RuntimeContext};
21//! use enact_core::kernel::{ExecutionId, ParentLink, TenantId, UserId};
22//!
23//! // Create tenant context (REQUIRED)
24//! let tenant = TenantContext::new(TenantId::from("tenant_acme"))
25//! .with_user(UserId::from("usr_alice"));
26//!
27//! // Create runtime context with tenant
28//! let ctx = RuntimeContext::new(
29//! ExecutionId::new(),
30//! ParentLink::from_user_message("msg_123"),
31//! tenant,
32//! );
33//! ```
34
35mod execution_context;
36mod invocation;
37mod tenant;
38mod trace;
39
40// Tenant context (REQUIRED for every execution)
41pub use tenant::{ResourceLimits, TenantContext};
42
43// Runtime context (the spine)
44pub use execution_context::{RuntimeContext, RuntimeContextBuilder, SessionContext};
45
46// Trace context (OpenTelemetry)
47pub use trace::TraceContext;
48
49// Invocation context
50pub use invocation::{InvocationContext, InvocationServices};