Struct AllToolsResult
pub struct AllToolsResult {
pub tools: Vec<Box<dyn Tool>>,
pub delegate_handle: Option<Arc<RwLock<RawRwLock, Vec<Arc<dyn Tool>>>>>,
pub ask_user_handle: Option<Arc<RwLock<RawRwLock, HashMap<String, Arc<dyn Channel>>>>>,
pub channel_room_handle: Option<Arc<RwLock<RawRwLock, HashMap<String, Arc<dyn Channel>>>>>,
pub reaction_handle: Arc<RwLock<RawRwLock, HashMap<String, Arc<dyn Channel>>>>,
pub poll_handle: Option<Arc<RwLock<RawRwLock, HashMap<String, Arc<dyn Channel>>>>>,
pub escalate_handle: Option<Arc<RwLock<RawRwLock, HashMap<String, Arc<dyn Channel>>>>>,
pub unfiltered_tool_arcs: Vec<Arc<dyn Tool>>,
}Expand description
Bundled return values from tool registry construction. Named struct to avoid an ever-growing positional tuple that’s painful to destructure across many callers.
Fields§
§tools: Vec<Box<dyn Tool>>The eager registry retained by this factory, before the per-agent
allowed_tools/excluded_tools filter.
This is the raw material the gated seam consumes, not an
already-filtered view: ScopedToolRegistry::assemble applies the
allowed_tools/excluded_tools policy filter (and MCP scoping) when it
mints the per-agent tool set. Every production caller routes this field
straight into assemble, so an unfiltered value here is correct and is
not a policy bypass. Documented explicitly because the neighbouring
unfiltered_tool_arcs name implies by contrast that this field is the
filtered one, which has already misled readers into believing built-ins
escaped allowed_tools.
delegate_handle: Option<Arc<RwLock<RawRwLock, Vec<Arc<dyn Tool>>>>>§ask_user_handle: Option<Arc<RwLock<RawRwLock, HashMap<String, Arc<dyn Channel>>>>>§channel_room_handle: Option<Arc<RwLock<RawRwLock, HashMap<String, Arc<dyn Channel>>>>>§reaction_handle: Arc<RwLock<RawRwLock, HashMap<String, Arc<dyn Channel>>>>§poll_handle: Option<Arc<RwLock<RawRwLock, HashMap<String, Arc<dyn Channel>>>>>§escalate_handle: Option<Arc<RwLock<RawRwLock, HashMap<String, Arc<dyn Channel>>>>>§unfiltered_tool_arcs: Vec<Arc<dyn Tool>>Pre-boxed Arcs of every tool (before policy filter). Used by skill-scoped builtin elevation to resolve targets at registration.
Implementations§
Source§impl AllToolsResult
impl AllToolsResult
Sourcepub fn from_prebuilt_tools(tools: Vec<Box<dyn Tool>>) -> AllToolsResult
pub fn from_prebuilt_tools(tools: Vec<Box<dyn Tool>>) -> AllToolsResult
Wrap an already-built tool vector as assemble INPUT, with every
side-channel handle empty. This mints an AllToolsResult (the input to
crate::tools::scoped::ScopedToolRegistry::assemble), NOT a
ScopedToolRegistry - it does not touch the seal. (AllToolsResult’s
fields are all pub, so a caller could already hand-roll this literal;
the helper just centralizes the “all handles empty” shape.) Used by the
paths that already own a fixed / pre-filtered tool set (the skill-review
harness, bounded delegation, and the zeroclaw-eval replay harness) and
route it through assemble only to seal it: they pass skills: &[],
connect_mcp: false, connect_peripherals: false, so the empty handles
here are never read by the assembly. pub (not pub(crate)) so the
out-of-crate zeroclaw-eval harness can reach it.
Auto Trait Implementations§
impl !RefUnwindSafe for AllToolsResult
impl !UnwindSafe for AllToolsResult
impl Freeze for AllToolsResult
impl Send for AllToolsResult
impl Sync for AllToolsResult
impl Unpin for AllToolsResult
impl UnsafeUnpin for AllToolsResult
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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