pub struct PendingMcpDiscovery { /* private fields */ }Expand description
Discovery deferred by setup_cached_mcp: exactly the configured
servers (from the SAME config snapshot phase 1 used) that had no
fingerprint-matching cache entry, so none of them has registered tools.
Implementations§
Source§impl PendingMcpDiscovery
impl PendingMcpDiscovery
Sourcepub fn server_names(&self) -> Vec<String>
pub fn server_names(&self) -> Vec<String>
Names of the servers still to be discovered.
Sourcepub async fn run(self, registry: &Arc<RwLock<ToolRegistry>>) -> usize
pub async fn run(self, registry: &Arc<RwLock<ToolRegistry>>) -> usize
Discover the pending servers (parallel, bounded, negative-cached)
and register ONLY their dormant tools into the shared registry with
one atomic try_register_batch. Servers already registered at boot
are never in this set, so nothing is registered twice. A rejected
batch is logged and fails closed (none of the new tools appear);
everything registered before is untouched.
The registry is the host’s shared catalog, so this mutates it after sessions may exist — the same precedent as late extension registration. With progressive disclosure on the new tools are dormant (searchable/activatable). With it off they are core tools, so every live session sends them from its NEXT request: one prompt-cache rewrite per live session, once.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for PendingMcpDiscovery
impl RefUnwindSafe for PendingMcpDiscovery
impl Send for PendingMcpDiscovery
impl Sync for PendingMcpDiscovery
impl Unpin for PendingMcpDiscovery
impl UnsafeUnpin for PendingMcpDiscovery
impl UnwindSafe for PendingMcpDiscovery
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> 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>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<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>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> 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)
&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)
&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> DowncastSync for T
impl<T> DowncastSync 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> 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