Skip to main content

ToolRouter

Struct ToolRouter 

Source
#[non_exhaustive]
pub struct ToolRouter<S> { pub map: HashMap<Cow<'static, str>, ToolRoute<S>>, pub transparent_when_not_found: bool, /* private fields */ }
Available on crate feature server only.

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§map: HashMap<Cow<'static, str>, ToolRoute<S>>§transparent_when_not_found: bool

Implementations§

Source§

impl<S> ToolRouter<S>
where S: MaybeSend + 'static,

Source

pub fn new() -> Self

Source

pub fn with_route<R, A>(self, route: R) -> Self
where R: IntoToolRoute<S, A>,

Source

pub fn with_sync_tool<T>(self) -> Self
where T: SyncTool<S> + 'static,

Add a tool that implements SyncTool

Source

pub fn with_async_tool<T>(self) -> Self
where T: AsyncTool<S> + 'static,

Add a tool that implements AsyncTool

Source

pub fn add_route(&mut self, item: ToolRoute<S>)

Source

pub fn merge(&mut self, other: ToolRouter<S>)

Source

pub fn remove_route(&mut self, name: &str)

Remove a tool route from the router.

The disabled state is preserved: if the name was in the disabled set, it stays there so that a future add_route or merge with the same name will inherit the disabled state. To also clear the disabled marker, call enable_route afterwards.

Source

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

Returns true if the tool is registered and not currently disabled.

Source

pub fn disable_route(&mut self, name: impl Into<Cow<'static, str>>) -> bool

Disable a tool by name. Hidden from list_all, get, rejected by call. Re-enable with enable_route.

Returns true if the name was newly added to the disabled set. The name is recorded even if no matching route exists yet, so routes added later will inherit the disabled state.

Source

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

Re-enable a previously disabled tool. Returns true if the name was in the disabled set.

Source

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

Returns true if the tool exists in the router and is currently disabled. Returns false if the tool does not exist or if the name was pre-disabled without a matching route.

Source

pub fn with_disabled(self, name: impl Into<Cow<'static, str>>) -> Self

Builder-style variant of disable_route.

The name is recorded even if no matching route has been added yet, so it can be called before with_route in a builder chain.

Source

pub fn set_notifier(&mut self, f: impl Fn() + Send + Sync + 'static)

Install a callback invoked when the visible tool list changes.

Source

pub fn clear_notifier(&mut self)

Source

pub fn bind_peer_notifier(&mut self, peer: &Peer<RoleServer>)

Install a notifier that sends notifications/tools/list_changed via the given peer.

Source

pub async fn call( &self, context: ToolCallContext<'_, S>, ) -> Result<CallToolResponse, ErrorData>

Source

pub fn list_all(&self) -> Vec<Tool>

Source

pub fn get(&self, name: &str) -> Option<&Tool>

Get a tool definition by name.

Returns the tool if found and enabled, or None if the tool does not exist or is disabled.

Trait Implementations§

Source§

impl<S> Add for ToolRouter<S>
where S: MaybeSend + 'static,

Source§

type Output = ToolRouter<S>

The resulting type after applying the + operator.
Source§

fn add(self, other: ToolRouter<S>) -> Self::Output

Performs the + operation. Read more
Source§

impl<S> AddAssign for ToolRouter<S>
where S: MaybeSend + 'static,

Source§

fn add_assign(&mut self, other: ToolRouter<S>)

Performs the += operation. Read more
Source§

impl<S> Clone for ToolRouter<S>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<S> Debug for ToolRouter<S>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<S> Default for ToolRouter<S>

Source§

fn default() -> Self

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

impl<S> IntoIterator for ToolRouter<S>

Source§

type Item = ToolRoute<S>

The type of the elements being iterated over.
Source§

type IntoIter = IntoValues<Cow<'static, str>, ToolRoute<S>>

Which kind of iterator are we turning this into?
Source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more

Auto Trait Implementations§

§

impl<S> !RefUnwindSafe for ToolRouter<S>

§

impl<S> !UnwindSafe for ToolRouter<S>

§

impl<S> Freeze for ToolRouter<S>

§

impl<S> Send for ToolRouter<S>

§

impl<S> Sync for ToolRouter<S>

§

impl<S> Unpin for ToolRouter<S>

§

impl<S> UnsafeUnpin for ToolRouter<S>

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> 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> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

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

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
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