pub struct ExtensionRegistry<'a> {
pub enable_memory: bool,
pub enable_memory_vector: bool,
pub skills: &'a [LoadedSkill],
/* private fields */
}Expand description
Unified registry for agent tool extensions.
Tool sources are registered at construction. Pattern:
let registry = ExtensionRegistry::builder(enable_memory, enable_memory_vector, skills)
.register(builtin::get_builtin_tools())
.register_memory_if(enable_memory)
.build();Adding a new tool module = add to builtin, or .register(new_tools()).
Fields§
§enable_memory: boolWhether memory tools are enabled.
enable_memory_vector: boolWhether memory vector search is enabled.
skills: &'a [LoadedSkill]Loaded skills (for execution dispatch).
Implementations§
Source§impl<'a> ExtensionRegistry<'a>
impl<'a> ExtensionRegistry<'a>
Sourcepub fn new(
enable_memory: bool,
enable_memory_vector: bool,
skills: &'a [LoadedSkill],
) -> Self
pub fn new( enable_memory: bool, enable_memory_vector: bool, skills: &'a [LoadedSkill], ) -> Self
Create a registry with default tool registration (builtin + memory + skills).
Sourcepub fn with_task_planning(
enable_memory: bool,
enable_memory_vector: bool,
enable_task_planning: bool,
skills: &'a [LoadedSkill],
) -> Self
pub fn with_task_planning( enable_memory: bool, enable_memory_vector: bool, enable_task_planning: bool, skills: &'a [LoadedSkill], ) -> Self
Create a registry with explicit task-planning mode.
When enable_task_planning is false, PlanningOnly tools (complete_task, update_task_plan) are excluded.
Sourcepub fn read_only(
enable_memory: bool,
enable_memory_vector: bool,
skills: &'a [LoadedSkill],
) -> Self
pub fn read_only( enable_memory: bool, enable_memory_vector: bool, skills: &'a [LoadedSkill], ) -> Self
Create a registry restricted to read-only tools.
Sourcepub fn read_only_with_task_planning(
enable_memory: bool,
enable_memory_vector: bool,
enable_task_planning: bool,
skills: &'a [LoadedSkill],
) -> Self
pub fn read_only_with_task_planning( enable_memory: bool, enable_memory_vector: bool, enable_task_planning: bool, skills: &'a [LoadedSkill], ) -> Self
Create a read-only registry with explicit task-planning mode.
Sourcepub fn builder(
enable_memory: bool,
enable_memory_vector: bool,
skills: &'a [LoadedSkill],
) -> ExtensionRegistryBuilder<'a>
pub fn builder( enable_memory: bool, enable_memory_vector: bool, skills: &'a [LoadedSkill], ) -> ExtensionRegistryBuilder<'a>
Start building a registry with explicit registration.
Sourcepub fn all_tool_definitions(&self) -> Vec<ToolDefinition>
pub fn all_tool_definitions(&self) -> Vec<ToolDefinition>
Collect all tool definitions (from registered extensions + skills).
Sourcepub fn availability(&self) -> &ToolAvailabilityView
pub fn availability(&self) -> &ToolAvailabilityView
Final tool / skill availability after policy filtering.
Sourcepub async fn execute(
&self,
tool_name: &str,
arguments: &str,
workspace: &Path,
event_sink: &mut dyn EventSink,
embed_ctx: Option<&MemoryVectorContext<'_>>,
planning_ctx: Option<&mut dyn PlanningControlExecutor>,
) -> ToolResult
pub async fn execute( &self, tool_name: &str, arguments: &str, workspace: &Path, event_sink: &mut dyn EventSink, embed_ctx: Option<&MemoryVectorContext<'_>>, planning_ctx: Option<&mut dyn PlanningControlExecutor>, ) -> ToolResult
Execute a tool by name. Dispatches to the appropriate extension.
embed_ctx is required for memory vector search when enable_memory_vector is true.
planning_ctx is required for PlanningControl tools (complete_task, update_task_plan).
Trait Implementations§
Auto Trait Implementations§
impl<'a> Freeze for ExtensionRegistry<'a>
impl<'a> RefUnwindSafe for ExtensionRegistry<'a>
impl<'a> Send for ExtensionRegistry<'a>
impl<'a> Sync for ExtensionRegistry<'a>
impl<'a> Unpin for ExtensionRegistry<'a>
impl<'a> UnsafeUnpin for ExtensionRegistry<'a>
impl<'a> UnwindSafe for ExtensionRegistry<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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