pub struct TurnContext {
pub id: TurnId,
pub cancel_token: CancellationToken,
pub timeouts: TimeoutConfig,
pub tool_allowlist: Option<Vec<String>>,
}Expand description
Per-turn execution context shared across phases (loop, compose, persist).
TurnContext is Send + 'static and cheaply cloneable so it can be passed by value
into subsystems that may outlive a &mut Turn borrow (background tasks, sub-services
extracted to other crates in Phase 2 of the agent decomposition).
It carries only data that is (a) immutable for the duration of the turn or (b)
intrinsically Send + Clone (the cancellation token).
§Examples
use zeph_context::turn_context::{TurnContext, TurnId};
use zeph_config::security::TimeoutConfig;
use tokio_util::sync::CancellationToken;
let ctx = TurnContext::new(TurnId(0), CancellationToken::new(), TimeoutConfig::default());
assert_eq!(ctx.id, TurnId(0));Fields§
§id: TurnIdMonotonically increasing identifier for this turn within the conversation.
cancel_token: CancellationTokenPer-turn cancellation token. A fresh token is created in Agent::begin_turn.
Cancelled when the user aborts the turn or the agent shuts down.
timeouts: TimeoutConfigEffective timeout configuration snapshotted at the start of the turn.
Snapshotting (rather than reading from a shared config) ensures the turn’s timeout policy is stable even if the live config is reloaded mid-turn.
tool_allowlist: Option<Vec<String>>Optional channel-scoped tool allowlist for this turn.
None means no channel-level restriction applies (other layers may still gate tool
access). Always None until Phase 2 wires channel config into the agent runtime.
TODO(#3498): populate from active channel config during Phase 2 crate extraction.
Implementations§
Source§impl TurnContext
impl TurnContext
Sourcepub fn new(
id: TurnId,
cancel_token: CancellationToken,
timeouts: TimeoutConfig,
) -> Self
pub fn new( id: TurnId, cancel_token: CancellationToken, timeouts: TimeoutConfig, ) -> Self
Create a new TurnContext.
§Examples
use zeph_context::turn_context::{TurnContext, TurnId};
use zeph_config::security::TimeoutConfig;
use tokio_util::sync::CancellationToken;
let ctx = TurnContext::new(TurnId(1), CancellationToken::new(), TimeoutConfig::default());
assert_eq!(ctx.id, TurnId(1));Trait Implementations§
Source§impl Clone for TurnContext
impl Clone for TurnContext
Source§fn clone(&self) -> TurnContext
fn clone(&self) -> TurnContext
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more