pub struct BasicToolService { /* private fields */ }Expand description
The default tool service for embedded worlds. See the module docs for what it does and does not provide.
Implementations§
Source§impl BasicToolService
impl BasicToolService
Sourcepub fn new(hub: InteractionHub) -> Self
pub fn new(hub: InteractionHub) -> Self
A service whose interaction tools ask through hub.
Sourcepub fn tool_defs(workdir: &Path) -> Vec<Tool>
pub fn tool_defs(workdir: &Path) -> Vec<Tool>
The tool definitions this service can execute for an agent working in
workdir - the set stage resolution filters available_tools against.
Sourcepub fn register(&self, entity: Entity, agent_id: &str, workdir: PathBuf)
pub fn register(&self, entity: Entity, agent_id: &str, workdir: PathBuf)
Register entity’s tool state: built-ins confined to workdir, and
interactions attributed to agent_id. The embed spawner calls this for
every agent it creates; a host spawning agents directly on the world
does the same.
Sourcepub fn unregister(&self, entity: Entity)
pub fn unregister(&self, entity: Entity)
Drop entity’s tool state. Called by the reaper when a terminal agent
is unloaded, so the map stays bounded by the set of live agents.
Trait Implementations§
Source§impl ToolService for BasicToolService
impl ToolService for BasicToolService
Source§fn exec_for(
&self,
entity: Entity,
calls: Vec<ToolCall>,
progress: ToolProgress,
) -> BoxedToolExec
fn exec_for( &self, entity: Entity, calls: Vec<ToolCall>, progress: ToolProgress, ) -> BoxedToolExec
Build the closure that runs
calls for entity, resolving (id, result)
pairs. The executor calls progress with each call’s result as it
resolves (per-call, not at batch end).Source§fn sync_stage(&self, entity: Entity, _stage_index: usize, stage_name: &str)
fn sync_stage(&self, entity: Entity, _stage_index: usize, stage_name: &str)
Notify the service that
entity entered the stage at stage_index named
stage_name, so it can re-sync that agent’s per-stage tool permissions.
Default no-op for services without per-stage policy.Source§fn refresh_tools(
&self,
_entity: Entity,
_stage_index: usize,
) -> Option<Vec<Tool>>
fn refresh_tools( &self, _entity: Entity, _stage_index: usize, ) -> Option<Vec<Tool>>
Re-resolve
entity’s advertised tool defs for the stage at stage_index -
e.g. after new tools were discovered on disk. None means “no change”
(the default, for services without dynamic tools); Some(tools) replaces
the stage’s advertised set.Source§fn wants_refresh(&self, _entity: Entity) -> bool
fn wants_refresh(&self, _entity: Entity) -> bool
Whether
entity (a dynamic_tools agent) has pending tool changes that
warrant a re-scan + re-advertise. Polled by poll_dynamic_tool_refresh;
implementors return (and clear) a per-agent dirty flag. Default false.Auto Trait Implementations§
impl !Freeze for BasicToolService
impl RefUnwindSafe for BasicToolService
impl Send for BasicToolService
impl Sync for BasicToolService
impl Unpin for BasicToolService
impl UnsafeUnpin for BasicToolService
impl UnwindSafe for BasicToolService
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
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<T> ConditionalSend for Twhere
T: Send,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
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>
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)
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)
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
impl<T> DowncastSend for 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> IntoResult<T> for T
impl<T> IntoResult<T> for T
Source§fn into_result(self) -> Result<T, RunSystemError>
fn into_result(self) -> Result<T, RunSystemError>
Converts this type into the system output type.