pub struct SubAgent { /* private fields */ }Expand description
The sub-agent tool.
Constructed with:
workspace: path for sandboxed toolsprovider: the LLM provider (shared Arc from parent)all_tools: the full tool registry from which the sub-agent can drawmax_depth: absolute depth limit (env-configured)current_depth: how deep we already are (passed from parent)permission_hook: optional permission hook inherited from the parent agent
Implementations§
Source§impl SubAgent
impl SubAgent
pub fn new( workspace: impl Into<PathBuf>, provider: Arc<dyn LlmProvider>, all_tools: ToolRegistry, max_depth: usize, current_depth: usize, permission_hook: Option<Arc<dyn PermissionHook>>, ) -> Self
Trait Implementations§
Source§impl Tool for SubAgent
impl Tool for SubAgent
Source§fn is_readonly_for_args(&self, arguments: &Value) -> bool
fn is_readonly_for_args(&self, arguments: &Value) -> bool
Returns true when subagent_type is "explore", making the dispatch
layer treat this call as read-only and eligible for parallel execution.
fn spec(&self) -> ToolSpec
fn execute<'life0, 'async_trait>(
&'life0 self,
arguments: Value,
) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn side_effect_class(&self) -> ToolSideEffect
fn side_effect_class(&self) -> ToolSideEffect
Classify this tool’s observable side-effects. Default is the most
conservative value (
External) so any unannotated tool is treated
as risky on resume. Override to ReadOnly or Mutating for
built-in tools; MCP tools derive this from their annotations.Source§fn is_readonly(&self) -> bool
fn is_readonly(&self) -> bool
Convenience: a tool is read-only iff it classifies as
ReadOnly.
Used by the parallel-dispatch path in agent.rs. Override only if
you have an unusual reason (you almost never should — override
side_effect_class instead and let this default through).Auto Trait Implementations§
impl !RefUnwindSafe for SubAgent
impl !UnwindSafe for SubAgent
impl Freeze for SubAgent
impl Send for SubAgent
impl Sync for SubAgent
impl Unpin for SubAgent
impl UnsafeUnpin for SubAgent
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
Mutably borrows from an owned value. Read more
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
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>
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 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>
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