Skip to main content

ToolRegistry

Struct ToolRegistry 

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

A name-keyed collection of Tool implementations.

The registry owns Arc-wrapped tools and is passed to a BasicToolExecutor (or consumed by ToolCapabilityProvider) so the agent loop can look up tools by name at execution time.

§Example

use agentkit_tools_core::ToolRegistry;

let registry = ToolRegistry::new()
    .with(NoopTool(ToolSpec::new(
        ToolName::new("noop"),
        "Does nothing",
        json!({"type": "object"}),
    )));

assert!(registry.get(&ToolName::new("noop")).is_some());
assert_eq!(registry.specs().len(), 1);

Implementations§

Source§

impl ToolRegistry

Source

pub fn new() -> Self

Creates an empty registry.

Source

pub fn register<T>(&mut self, tool: T) -> &mut Self
where T: Tool + 'static,

Registers a tool by value and returns &mut self for imperative chaining.

Source

pub fn with<T>(self, tool: T) -> Self
where T: Tool + 'static,

Registers a tool by value and returns self for builder-style chaining.

Source

pub fn register_arc(&mut self, tool: Arc<dyn Tool>) -> &mut Self

Registers a pre-wrapped Arc<dyn Tool>.

Source

pub fn get(&self, name: &ToolName) -> Option<Arc<dyn Tool>>

Looks up a tool by name, returning None if not registered.

Source

pub fn tools(&self) -> Vec<Arc<dyn Tool>>

Returns all registered tools as a Vec.

Source

pub fn merge(self, other: Self) -> Self

Merges all tools from another registry into this one, consuming it.

Supports builder-style chaining:

let registry = agentkit_tool_fs::registry()
    .merge(agentkit_tool_shell::registry());
Source

pub fn specs(&self) -> Vec<ToolSpec>

Returns the ToolSpec for every registered tool.

Trait Implementations§

Source§

impl Clone for ToolRegistry

Source§

fn clone(&self) -> ToolRegistry

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Default for ToolRegistry

Source§

fn default() -> ToolRegistry

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

impl ToolSource for ToolRegistry

Source§

fn specs(&self) -> Vec<ToolSpec>

Returns the current spec for every tool in this source.
Source§

fn get(&self, name: &ToolName) -> Option<Arc<dyn Tool>>

Looks up a tool by name, returning None if not present.
Source§

fn drain_catalog_events(&self) -> Vec<ToolCatalogEvent>

Drains pending catalog change events. Static sources return an empty list; dynamic sources surface added/removed/changed batches that the loop forwards to the model on the next turn.
Source§

fn prefixed(self, prefix: impl Into<String>) -> Prefixed<Self>
where Self: Sized,

Wraps this source so every advertised tool name is prefixed with <prefix>_. Useful for mounting the same source under multiple namespaces, or for avoiding collisions between MCP catalogs. Read more
Source§

fn filtered<F>(self, predicate: F) -> Filtered<Self, F>
where Self: Sized, F: Fn(&ToolName) -> bool + Send + Sync + 'static,

Wraps this source so only tools whose name passes predicate are advertised and resolvable. Tools rejected by the predicate are invisible to the model and return None on lookup. Read more
Source§

fn renamed<I>(self, mapping: I) -> Renamed<Self>
where Self: Sized, I: IntoIterator<Item = (ToolName, ToolName)>,

Wraps this source with a name remapping. Each (original, new) pair in mapping causes the tool to be advertised as new and resolved from new back to original on lookup. Tools not in the mapping pass through unchanged. 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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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.