Skip to main content

ToolParkingLot

Struct ToolParkingLot 

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

A parking lot for custom tool calls awaiting client-delivered results.

The session loop calls park when agent.custom_tool_use is emitted, blocking until either:

  1. The client sends user.custom_tool_result and the runtime calls deliver
  2. The configured timeout elapses, returning RuntimeError::ToolTimeout

Thread-safe: the internal map is protected by a Mutex.

Implementations§

Source§

impl ToolParkingLot

Source

pub fn new(timeout: Duration) -> Self

Create a new parking lot with the specified timeout.

§Arguments
Source

pub fn with_default_timeout() -> Self

Create a new parking lot with the default timeout (5 minutes).

Source

pub async fn park( &self, tool_use_id: &str, ) -> Result<Vec<ContentBlock>, RuntimeError>

Park the session loop, waiting for a custom tool result.

Creates a oneshot channel, stores the sender under tool_use_id, and awaits the receiver. Returns the content blocks when delivered, or RuntimeError::ToolTimeout if the timeout elapses.

§Errors
Source

pub async fn deliver( &self, tool_use_id: &str, content: Vec<ContentBlock>, ) -> Result<(), RuntimeError>

Deliver a result to a parked tool call.

Looks up the sender by tool_use_id and sends the content. Returns an error if no pending call with this ID exists (e.g., it already timed out or was never parked).

§Errors

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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