Skip to main content

AgentContext

Struct AgentContext 

Source
#[non_exhaustive]
pub struct AgentContext { pub working_directory: String, pub tool_executor: Arc<dyn ToolExecutor>, pub communication_hub: Arc<CommunicationHub>, pub file_lock_manager: Arc<FileLockManager>, pub working_set: Arc<RwLock<WorkingSet>>, pub metadata: HashMap<String, String>, pub pre_execute_hook: Option<Arc<dyn ToolPreHook>>, pub lifecycle_hooks: Option<Arc<dyn AgentLifecycleHooks>>, }
Expand description

Environment context for a task agent.

Pass this to TaskAgent::new at construction time. All fields are cheaply cloneable via Arc.

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§working_directory: String

Working directory used for resolving relative file paths.

§tool_executor: Arc<dyn ToolExecutor>

Executes tools on behalf of the agent.

§communication_hub: Arc<CommunicationHub>

Inter-agent message bus.

§file_lock_manager: Arc<FileLockManager>

Coordinates exclusive/shared file access across concurrent agents.

§working_set: Arc<RwLock<WorkingSet>>

Tracks files currently loaded into the agent’s context window.

§metadata: HashMap<String, String>

Application-specific metadata passed through to tools.

§pre_execute_hook: Option<Arc<dyn ToolPreHook>>

Optional pre-execution hook for semantic tool validation.

When set, the hook is called before every tool execution. Returning PreHookDecision::Reject causes the tool call to be skipped and the rejection message injected as a ToolResult::error.

§lifecycle_hooks: Option<Arc<dyn AgentLifecycleHooks>>

Optional lifecycle hooks for granular loop control.

When set, the agent loop calls these hooks at every phase: iteration boundaries, provider calls, tool execution, completion, and context management. All hook methods have default no-op implementations.

See AgentLifecycleHooks for the full hook surface.

Implementations§

Source§

impl AgentContext

Source

pub fn new( working_directory: impl Into<String>, tool_executor: Arc<dyn ToolExecutor>, communication_hub: Arc<CommunicationHub>, file_lock_manager: Arc<FileLockManager>, ) -> Self

Create a new agent context with the given environment.

A fresh, empty WorkingSet is created automatically. Use AgentContext::with_working_set to supply a pre-populated one.

Source

pub fn with_working_set( working_directory: impl Into<String>, tool_executor: Arc<dyn ToolExecutor>, communication_hub: Arc<CommunicationHub>, file_lock_manager: Arc<FileLockManager>, working_set: Arc<RwLock<WorkingSet>>, ) -> Self

Create a context that shares an existing WorkingSet.

Source

pub fn with_metadata( self, key: impl Into<String>, value: impl Into<String>, ) -> Self

Add application-specific metadata.

Source

pub fn with_pre_execute_hook(self, hook: Arc<dyn ToolPreHook>) -> Self

Set a pre-execution hook for semantic tool validation.

Source

pub fn with_lifecycle_hooks(self, hooks: Arc<dyn AgentLifecycleHooks>) -> Self

Set lifecycle hooks for granular loop control.

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<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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. 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> Same for T

Source§

type Output = T

Should always be Self
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
Source§

impl<T> ErasedDestructor for T
where T: 'static,