Skip to main content

SkillManager

Struct SkillManager 

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

Shared skill catalog and optional delegated workers. All published views share one registry generation; a retained metadata snapshot never authorizes a later read.

Implementations§

Source§

impl SkillManager

Source

pub const NAME: &'static str = "skills_manager"

Existing compatibility tool name.

Source

pub fn new(skills_dir: PathBuf) -> Self

Create an empty manager with one trusted discovery root.

Source

pub fn new_with_dirs( default_skills_dir: PathBuf, additional_skills_dirs: Vec<PathBuf>, ) -> Self

Configure roots in priority order. The default root is also the suggested creation root. Relative roots are anchored to the process working directory at construction time.

Source

pub fn default_skills_dir(&self) -> &Path

Directory suggested to skill creation workflows.

Source

pub fn skills_dirs(&self) -> &[PathBuf]

Configured roots in priority order.

Source

pub fn with_description(self, description: String) -> Self

Override the tool’s introductory description; the bounded catalog is still appended.

Source

pub fn with_default_skill_tools(self, tools: Vec<String>) -> Self

Default tools for delegated skills that omit allowed-tools. An explicitly empty list grants none. Granting tools_select also permits subsequent discovery under runner rules.

Source

pub fn with_limits(self, limits: SkillLimits) -> Self

Configure resource limits. Hard ceilings are depth 32, 20,000 directories, 100,000 entries, 4,096 skills, 128 MiB combined content, 64 KiB catalog and 512 KiB responses. Counts and total content have a minimum of one; catalog/response minima are 128/1,024 bytes.

Source

pub fn tools(self: &Arc<Self>) -> Result<ToolSet<BaseCtx>, BoxError>

Register all three static local tools over this manager’s shared state.

Source

pub fn invalidate(&self)

Invalidate membership after a filesystem or host configuration change. No I/O is done here.

Source

pub fn set_skill_filter(&self, filter: Option<SkillFilter>)

Replace the host admission policy and immediately remove rejected identities. Newly admitted files are discovered on the next async access or explicit reload.

Source

pub fn catalog(&self) -> Arc<SkillCatalogSnapshot> ⓘ

Last published immutable metadata and diagnostics, without filesystem I/O.

Source

pub async fn load(&self) -> Result<(), BoxError>

Compatibility reload API. Inspect Self::catalog for per-file failures and truncation.

Source

pub async fn reload(&self) -> Result<SkillLoadReport, BoxError>

Rescan and publish all roots atomically. Missing roots become empty; invalid or unreadable files are omitted with diagnostics. No stale entries survive a successful publication.

Source

pub fn get_skill(&self, lowercase_name: &str) -> Option<Skill>

Retrieve the winning skill by its normalized callable name, without I/O.

Source

pub fn subagents(&self) -> Vec<SubAgent>

All unambiguous delegated workers, including explicit-only skills, for host inspection.

Source

pub fn list(&self) -> BTreeMap<String, Skill>

Compatibility view of unambiguous winning skills, keyed by normalized callable name.

Trait Implementations§

Source§

impl SubAgentSet for SkillManager

Source§

fn into_any(self: Arc<Self>) -> Arc<dyn Any + Send + Sync> ⓘ

Converts the registry into Any for downcasting.
Source§

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

Checks if a subagent with the given lowercase name exists.
Source§

fn get_lowercase(&self, name: &str) -> Option<SubAgent>

Retrieves a subagent by lowercase name.
Source§

fn definitions(&self, names: Option<&[String]>) -> Vec<FunctionDefinition>

Returns definitions for all or specified agents. Read more
Source§

fn select_resources( &self, name: &str, resources: &mut Vec<Resource>, ) -> Vec<Resource>

Selects and returns resources relevant to the specified subagent name from the provided list.
Source§

impl Tool<BaseCtx> for SkillManager

Source§

type Args = SkillArgs

The arguments type of the tool.
Source§

type Output = SkillContentOutput

The output type of the tool.
Source§

fn name(&self) -> String

Returns the unique tool name. Read more
Source§

fn description(&self) -> String

Returns a concise description of the tool’s capability.
Source§

fn definition(&self) -> FunctionDefinition

Returns the function definition, including the JSON parameter schema. Read more
Source§

fn group(&self) -> Option<ToolGroupInfo>

Returns the capability group this tool belongs to, if any. Read more
Source§

async fn call( &self, ctx: BaseCtx, args: Self::Args, _resources: Vec<Resource>, ) -> Result<ToolOutput<Self::Output>, BoxError>

Executes the tool with typed arguments and selected resources. Read more
Source§

fn supported_resource_tags(&self) -> Vec<String>

Returns resource tags this tool can consume. Read more
Source§

fn select_resources(&self, resources: &mut Vec<Resource>) -> Vec<Resource>

Removes and returns resources matching this tool’s supported tags.
Source§

fn init( &self, _ctx: C, ) -> impl Future<Output = Result<(), Box<dyn Error + Send + Sync>>> + Send

Initializes the tool with the given context. Read more
Source§

fn call_raw( &self, ctx: C, args: Value, resources: Vec<Resource>, ) -> impl Future<Output = Result<ToolOutput<Value>, Box<dyn Error + Send + Sync>>> + Send

Executes the tool from raw JSON arguments and returns JSON output.

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> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Converts Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Converts &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Converts &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSend for T
where T: Any + Send,

Source§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_sync(self: Box<T>) -> Box<dyn Any + Send + Sync>

Converts Box<Trait> (where Trait: DowncastSync) to Box<dyn Any + Send + Sync>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync> ⓘ

Converts Arc<Trait> (where Trait: DowncastSync) to Arc<Any>, which can then be downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Fruit for T
where T: Send + Downcast,

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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