Skip to main content

ToolRegistry

Struct ToolRegistry 

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

Central registry that maps tool names to their specs and handlers.

Use register() to add tools, then dispatch() to invoke them. The registry owns a ToolCallRuntime that manages concurrent execution.

Implementations§

Source§

impl ToolRegistry

Source

pub fn register( &mut self, spec: ToolSpec, handler: Arc<dyn ToolHandler>, ) -> Result<()>

Register a tool with its specification and handler.

The tool’s name is taken from spec.name. Returns an error if registration fails (currently infallible, but the Result is reserved for future validation).

Source

pub fn list_specs(&self) -> Vec<ConfiguredToolSpec>

Return the configured specs for every registered tool.

Source

pub async fn dispatch( &self, call: ToolCall, allow_mutating: bool, ) -> Result<ToolOutput, FunctionCallError>

Validate and execute a tool call.

Looks up the tool by name, verifies the payload kind matches the handler, enforces the allow_mutating guard, acquires the appropriate execution lock, and forwards the call to the handler. Returns a FunctionCallError if any validation step fails or the handler returns an error.

Trait Implementations§

Source§

impl Default for ToolRegistry

Source§

fn default() -> ToolRegistry

Returns the “default value” for a type. Read more

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