pub struct RuntimeHandles {
pub workspace_manager: Option<Arc<RwLock<WorkspaceManager>>>,
pub channel_map: Option<ChannelMapHandle>,
pub reaction_channels: Option<ChannelMapHandle>,
pub ask_user_channels: Option<ChannelMapHandle>,
pub escalate_channels: Option<ChannelMapHandle>,
pub discord_memory: Option<Arc<dyn Memory>>,
pub session_store: Option<Arc<dyn SessionBackend>>,
pub agent_config: Option<Arc<HashMap<String, DelegateAgentConfig>>>,
pub provider_runtime_options: Option<Arc<ProviderRuntimeOptions>>,
pub fallback_api_key: Option<Arc<str>>,
pub pre_built_tools: Option<Vec<Arc<dyn Tool>>>,
}Expand description
Aggregates Arc-clones of everything the previously-skipped MCP tools need.
The gateway builds this after its AppState is fully constructed, then
hands it to build_tools_with_runtime.
All fields are optional; the registry gracefully skips a tool whenever its
required handle is None.
Fields§
§workspace_manager: Option<Arc<RwLock<WorkspaceManager>>>Workspace manager for the workspace tool.
channel_map: Option<ChannelMapHandle>Shared channel map (platform name → Arc<dyn Channel>) used by the
poll, reaction, ask_user, and escalate tools.
The same Arc<RwLock<_>> is threaded into every tool that needs it;
when the channel supervisor populates it, all tools see the update.
reaction_channels: Option<ChannelMapHandle>Dedicated channel map handle for the reaction tool (it keeps its own
handle so the gateway-facing tool and the MCP-facing tool share it).
ask_user_channels: Option<ChannelMapHandle>Dedicated channel map handle for the ask_user tool.
escalate_channels: Option<ChannelMapHandle>Dedicated channel map handle for the escalate tool.
discord_memory: Option<Arc<dyn Memory>>Memory backend for discord_search (historically a separate
SQLite store; currently unwired — pending a Kumiho-backed
reimplementation).
session_store: Option<Arc<dyn SessionBackend>>Session backend used by the sessions_list, sessions_history, and
sessions_send tools.
agent_config: Option<Arc<HashMap<String, DelegateAgentConfig>>>Agent configurations for delegate and swarm. Cloned out of
Config.agents.
provider_runtime_options: Option<Arc<ProviderRuntimeOptions>>Provider runtime options — supplies the credentials/url/reasoning preferences delegate sub-agents need when invoking LLMs.
fallback_api_key: Option<Arc<str>>Fallback API key for delegate sub-agents when the per-agent config
doesn’t supply one (same value passed to all_tools_with_runtime).
pre_built_tools: Option<Vec<Arc<dyn Tool>>>Escape hatch: pre-built tools constructed by the caller (e.g. the
gateway’s all_tools_with_runtime list) that the MCP registry should
merge in wholesale.
When present, each entry is folded in after the baseline — if a name collides, the pre-built tool wins. This lets the gateway forward its full live tool registry to MCP clients without the registry having to re-invoke every tool’s constructor.
Implementations§
Trait Implementations§
Source§impl Clone for RuntimeHandles
impl Clone for RuntimeHandles
Source§fn clone(&self) -> RuntimeHandles
fn clone(&self) -> RuntimeHandles
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Default for RuntimeHandles
impl Default for RuntimeHandles
Source§fn default() -> RuntimeHandles
fn default() -> RuntimeHandles
Auto Trait Implementations§
impl Freeze for RuntimeHandles
impl !RefUnwindSafe for RuntimeHandles
impl Send for RuntimeHandles
impl Sync for RuntimeHandles
impl Unpin for RuntimeHandles
impl UnsafeUnpin for RuntimeHandles
impl !UnwindSafe for RuntimeHandles
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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