Skip to main content

AdaptiveRegistry

Struct AdaptiveRegistry 

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

A tool registry that automatically limits the number of visible tools based on the configured model tier.

Small models get fewer tools (to fit smaller context windows), while large models get access to all registered tools.

Tool priority is determined by insertion order — tools registered first are selected first when the limit is applied.

find_tool() searches all tools regardless of tier limit, ensuring tool execution always works even for tools beyond the active limit.

§Example

use traitclaw_core::registries::AdaptiveRegistry;
use traitclaw_core::traits::tool_registry::ToolRegistry;
use traitclaw_core::types::model_info::ModelTier;

let registry = AdaptiveRegistry::new(vec![], ModelTier::Medium);
assert!(registry.is_empty());

Implementations§

Source§

impl AdaptiveRegistry

Source

pub fn new(tools: Vec<Arc<dyn ErasedTool>>, tier: ModelTier) -> AdaptiveRegistry

Create an adaptive registry with default tier limits.

Default limits: Small=5, Medium=15, Large=unlimited.

Source

pub fn with_limits( self, small: usize, medium: usize, large: usize, ) -> AdaptiveRegistry

Override the default tier limits.

§Example
use traitclaw_core::registries::AdaptiveRegistry;
use traitclaw_core::types::model_info::ModelTier;

let registry = AdaptiveRegistry::new(vec![], ModelTier::Small)
    .with_limits(3, 10, 50);
Source

pub fn limits(&self) -> TierLimits

Get the current tier limits.

Source

pub fn tier(&self) -> ModelTier

Get the configured model tier.

Trait Implementations§

Source§

impl ToolRegistry for AdaptiveRegistry

Source§

fn get_tools(&self) -> Vec<Arc<dyn ErasedTool>>

Returns at most limit tools based on the configured ModelTier.

Tools are returned in insertion order (first registered = highest priority).

Source§

fn find_tool(&self, name: &str) -> Option<Arc<dyn ErasedTool>>

Searches all tools regardless of tier limit.

This ensures tool execution works even for tools beyond the active limit.

Source§

fn len(&self) -> usize

Returns the count of tools visible for the current tier.

Source§

fn is_empty(&self) -> bool

Check if the registry has no enabled tools.
Source§

fn register(&self, _tool: Arc<dyn ErasedTool>) -> bool

Register a new tool. Returns true if the tool was added. Read more
Source§

fn unregister(&self, _name: &str) -> bool

Unregister a tool by name. Returns true if the tool was removed. Read more
Source§

fn set_enabled(&self, _name: &str, _enabled: bool) -> bool

Enable or disable a tool by name. Returns true if the state changed. Read more
Source§

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

Check if a tool is currently enabled.

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