pub struct RuntimeAssemblyDeps {Show 14 fields
pub tools: Arc<ToolRegistry>,
pub memory: Option<Arc<LongTermMemory>>,
pub peers: Arc<PeerDirectory>,
pub redactor: Arc<Redactor>,
pub transcripts_index: Option<Arc<TranscriptsIndex>>,
pub credentials: Option<Arc<AgentCredentialResolver>>,
pub breakers: Option<Arc<BreakerRegistry>>,
pub link_extractor: Arc<LinkExtractor>,
pub pairing_gate: Arc<PairingGate>,
pub pairing_adapters: PairingAdapterRegistry,
pub plan_approval_registry: Arc<PlanApprovalRegistry>,
pub dispatch_ctx: Option<Arc<DispatchToolContext>>,
pub processing_store: Arc<dyn ProcessingControlStore>,
pub event_emitter: Option<Arc<dyn AgentEventEmitter>>,
}Expand description
Phase 81.32 c4 — per-agent runtime deps consumed by
assemble_agent_runtime.
Every field maps 1:1 to an AgentRuntime::with_X setter. The
struct exists so the boot path’s .with_X(...) chain (15 calls
in src/main.rs:6276) and the hot-spawn path call the same
helper without duplicating the conditional if Some { ... }
boilerplate.
Pre-built deps (vs constructed inside the helper) because:
- Plugin-side adapter types (
WhatsappPairingAdapter,TelegramPairingAdapter) live incrates/plugins/*which depend onnexo-core— building them here would create a circular dep. Caller builds thePairingAdapterRegistryonce at boot and clones it per spawn (registry is small; adapters areArc<dyn ...>internally). event_emittercomes from the admin bootstrap which is wired only when the admin plugin is enabled;Option<>keeps minimal-boot daemons (no admin) working.
Fields§
§tools: Arc<ToolRegistry>Per-agent base tool registry. Sessions clone per-binding
filtered views from this via ToolRegistryCache.
memory: Option<Arc<LongTermMemory>>Long-term memory backend, when the daemon was built with
--features memory.
peers: Arc<PeerDirectory>Peer directory (list_peers tool reads from this).
redactor: Arc<Redactor>Transcript redactor. Every AgentContext clones this for
log-redaction at write time.
transcripts_index: Option<Arc<TranscriptsIndex>>Optional transcripts index (full-text search across past sessions). Built only when the index sidecar is enabled.
credentials: Option<Arc<AgentCredentialResolver>>Resolved per-agent credentials (LLM keys, plugin tokens).
Empty when secrets/ is not wired.
breakers: Option<Arc<BreakerRegistry>>Circuit-breaker registry shared with credentials. Co-arrives
with credentials; both None or both Some.
link_extractor: Arc<LinkExtractor>Link extractor used by llm_behavior to build the
# LINK CONTEXT block from inbound URLs.
pairing_gate: Arc<PairingGate>Process-shared pairing gate. Required so unknown senders never reach agent behavior.
pairing_adapters: PairingAdapterRegistryPre-registered pairing adapters keyed by source_plugin.
Caller (boot path / coordinator) constructs once via the
plugin-side adapter crates (nexo-plugin-whatsapp,
nexo-plugin-telegram, …) and passes here.
plan_approval_registry: Arc<PlanApprovalRegistry>Plan-mode approval registry shared with the admin RPC
dispatcher so /plan-mode chat messages resolve pending
approvals.
dispatch_ctx: Option<Arc<DispatchToolContext>>Dispatch tool context (dispatch.notify / dispatch
catalog). Optional — minimal daemons skip dispatch.
processing_store: Arc<dyn ProcessingControlStore>Processing-control store backing processing/pause /
processing/resume admin RPCs.
event_emitter: Option<Arc<dyn AgentEventEmitter>>Optional event emitter wired by the admin bootstrap so per-scope eviction events reach the firehose.
Auto Trait Implementations§
impl !RefUnwindSafe for RuntimeAssemblyDeps
impl !UnwindSafe for RuntimeAssemblyDeps
impl Freeze for RuntimeAssemblyDeps
impl Send for RuntimeAssemblyDeps
impl Sync for RuntimeAssemblyDeps
impl Unpin for RuntimeAssemblyDeps
impl UnsafeUnpin for RuntimeAssemblyDeps
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> 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