Skip to main content

StreamingToolExecutor

Struct StreamingToolExecutor 

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

Executes tools as they stream in with concurrency control. Rust port of TypeScript’s StreamingToolExecutor class.

  • Concurrency-safe tools can execute in parallel
  • Non-concurrent tools must execute exclusively

Uses Arc<Mutex> for interior mutability so it can be shared via Arc and called from the SSE parsing loop, while spawned tasks can also access the state for marking completions.

Implementations§

Source§

impl StreamingToolExecutor

Source

pub fn new(parent_abort: Arc<AtomicBool>) -> Self

Source

pub fn discard(&self)

Discard all pending and in-progress tools. Called when streaming fallback occurs.

Source

pub fn add_tool(&self, tool_use_block: Value, is_concurrency_safe: bool)

Add a tool to the execution queue.

Source

pub fn has_unfinished_tools(&self) -> bool

Check if there are any unfinished tools

Source

pub fn get_completed_results(&self) -> Vec<(String, Value)>

Get completed results that haven’t been yielded. Stops on non-concurrency-safe executing tool (yielding order).

Source

pub fn mark_tool_errored(&self, tool_id: &str, _description: &str)

Mark a tool as having errored (cascading error for sibling tools).

Source

pub fn summary(&self) -> String

Get the current state summary for debugging

Source

pub async fn execute_all( &self, executor_fn: SharedExecutorFn, ) -> Vec<(String, Result<ToolResult, AgentError>)>

Execute queued tools with concurrency control. Spawns each tool as a task and waits for results respecting concurrency limits. Returns list of (tool_id, result) pairs in execution order.

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> 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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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