Skip to main content

RuntimeHandles

Struct RuntimeHandles 

Source
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§

Source§

impl RuntimeHandles

Source

pub fn empty() -> Self

Create an empty RuntimeHandles where every field is None.

Used by tests and by the degraded boot path if AppState construction failed before the MCP task spawned.

Trait Implementations§

Source§

impl Clone for RuntimeHandles

Source§

fn clone(&self) -> RuntimeHandles

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Default for RuntimeHandles

Source§

fn default() -> RuntimeHandles

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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>

Convert 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)

Convert &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)

Convert &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
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more