SubagentExecutor

Struct SubagentExecutor 

Source
pub struct SubagentExecutor { /* private fields */ }
Expand description

Subagent executor for managing and executing subagents

§Example

use claude_agent_sdk::subagents::{SubagentExecutor, Subagent, DelegationStrategy};

#[tokio::main]
async fn example() -> Result<(), Box<dyn std::error::Error>> {
    let mut executor = SubagentExecutor::new(DelegationStrategy::Auto);

    // Register a subagent
    let subagent = Subagent {
        name: "code-reviewer".to_string(),
        description: "Expert code reviewer".to_string(),
        instructions: "Review code for bugs and best practices".to_string(),
        allowed_tools: vec!["Read".to_string(), "Grep".to_string()],
        max_turns: Some(5),
        model: Some("claude-sonnet-4".to_string()),
    };

    executor.register(subagent)?;

    // Execute the subagent
    let output = executor.execute("code-reviewer", "Review this file").await?;
    println!("Output: {:?}", output);

    Ok(())
}

Implementations§

Source§

impl SubagentExecutor

Source

pub fn new(strategy: DelegationStrategy) -> Self

Create a new subagent executor

§Arguments
  • strategy - The delegation strategy to use
§Example
let executor = SubagentExecutor::new(DelegationStrategy::Auto);
Source

pub fn register(&mut self, subagent: Subagent) -> Result<(), SubagentError>

Register a subagent

§Arguments
  • subagent - The subagent to register
§Errors

Returns an error if a subagent with the same name already exists

§Example
let subagent = Subagent {
    name: "my-agent".to_string(),
    description: "Description".to_string(),
    instructions: "Instructions".to_string(),
    allowed_tools: vec![],
    max_turns: Some(5),
    model: None,
};
executor.register(subagent)?;
Source

pub async fn execute( &self, name: &str, input: &str, ) -> Result<SubagentOutput, SubagentError>

Execute a subagent by name

§Arguments
  • name - The name of the subagent to execute
  • input - The input to provide to the subagent
§Errors

Returns an error if the subagent is not found or execution fails

§Example
let output = executor.execute("my-agent", "Hello").await?;
Source

pub fn list_subagents(&self) -> Vec<String>

Get all registered subagent names

§Returns

A vector of subagent names

§Example
let names = executor.list_subagents();
println!("Available subagents: {:?}", names);
Source

pub fn has_subagent(&self, name: &str) -> bool

Check if a subagent exists

§Arguments
  • name - The name of the subagent to check
§Returns

true if the subagent exists, false otherwise

§Example
if executor.has_subagent("my-agent") {
    println!("Agent exists");
}
Source

pub fn strategy(&self) -> &DelegationStrategy

Get the delegation strategy

§Returns

The current delegation strategy

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> 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