Skip to main content

TurnContext

Struct TurnContext 

Source
pub struct TurnContext {
    pub messages: Vec<Message>,
    pub step_events_tx: Option<UnboundedSender<AgentEvent>>,
    pub plan_confirmed: bool,
    pub plan_buffer: Option<Vec<ToolCall>>,
    pub tool_specs: Vec<ToolSpec>,
    pub streaming: bool,
    pub permission_hook: Option<Arc<dyn PermissionHook>>,
    pub planning_mode: PlanningMode,
    pub exploring_plan_mode: Arc<AtomicBool>,
    pub permission_mode: PermissionMode,
    pub mailbox: Option<WorkerMailbox>,
}
Expand description

Everything the Kernel needs to execute one turn.

Prepared by the Wrapper (AgentRuntime). The Kernel does not know where these messages came from — could be fresh, compacted, or resumed.

Fields§

§messages: Vec<Message>

The full message list to send to the LLM (system + history + new user msg).

§step_events_tx: Option<UnboundedSender<AgentEvent>>

Channel to send agent events to the caller (runtime or test harness).

The kernel passes this channel directly to RunCore (Goal 219 Commit 1), so callers receive the same AgentEvent stream the kernel sees — no internal conversion.

§plan_confirmed: bool

Whether the user confirmed a pending plan.

§plan_buffer: Option<Vec<ToolCall>>

Buffered tool calls from a proposed plan (when user confirms).

§tool_specs: Vec<ToolSpec>

Tool specifications to advertise to the LLM.

§streaming: bool

Whether to stream LLM responses token-by-token.

§permission_hook: Option<Arc<dyn PermissionHook>>

Optional permission hook for gating tool calls.

§planning_mode: PlanningMode

Planning mode (execute immediately vs buffer for confirmation).

§exploring_plan_mode: Arc<AtomicBool>

Goal-165: shared flag that enables agent-driven read-only plan mode. When true, write tools are blocked until exit_plan_mode is called.

§permission_mode: PermissionMode

Goal-190: default permission mode for tools not covered by explicit config lists. Mirrors PermissionsConfig.mode for quick access.

§mailbox: Option<WorkerMailbox>

Optional mailbox for mid-run message injection from a coordinator.

When set, the kernel drains this mailbox at the start of every step and appends any pending messages as user turns. This powers the send_message tool’s bidirectional coordinator ↔ worker flow.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more