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,
) -> TurnContext
pub fn new( id: TurnId, cancel_token: CancellationToken, timeouts: TimeoutConfig, ) -> TurnContext
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 moreAuto Trait Implementations§
impl Freeze for TurnContext
impl RefUnwindSafe for TurnContext
impl Send for TurnContext
impl Sync for TurnContext
impl Unpin for TurnContext
impl UnsafeUnpin for TurnContext
impl UnwindSafe for TurnContext
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request