Struct ScopedAssembly
pub struct ScopedAssembly<'a> {Show 13 fields
pub config: &'a Config,
pub agent_alias: &'a str,
pub security: &'a Arc<SecurityPolicy>,
pub built: AllToolsResult,
pub skills: &'a [Skill],
pub runtime: Arc<dyn RuntimeAdapter>,
pub caller_allowed: Option<&'a [String]>,
pub connect_mcp: bool,
pub connect_peripherals: bool,
pub exclude_memory: bool,
pub list_deferred_mcp_specs: bool,
pub emit_assembly_logs: bool,
pub mcp_registry: Option<Arc<McpRegistry>>,
}Expand description
Inputs to ScopedToolRegistry::assemble. The eager built-ins arrive already
built (built); assemble does the policy-bearing steps the sites used to repeat.
Fields§
§config: &'a Config§agent_alias: &'a str§security: &'a Arc<SecurityPolicy>§built: AllToolsResultEager built-in tools + the channel/delegate handle bundle, consumed here.
skills: &'a [Skill]Skills loaded by the caller’s (single) loader; registered under the same gate.
runtime: Arc<dyn RuntimeAdapter>§caller_allowed: Option<&'a [String]>Documented divergence: a per-run caller allowlist. It only NARROWS, and is
threaded into BOTH the built-in filter and the MCP tool-access policy. None
on every path except run.
connect_mcp: boolDocumented divergence: ACP session/new must return promptly, so it does not
connect MCP servers - they are neither resolved nor connected; nothing is
granted.
connect_peripherals: boolDocumented divergence: loading peripherals physically connects hardware (the
daemon’s loader opens serial ports, exclusively for real devices). Listing-only
surfaces (the gateway’s /api/tools registries) MUST pass false so they never
hold devices the live turn paths need; execution surfaces pass true.
exclude_memory: boolDocumented divergence: ACP excludes persistent memory tools.
list_deferred_mcp_specs: bool§emit_assembly_logs: bool§mcp_registry: Option<Arc<McpRegistry>>Pre-built MCP registry supplied by the caller. The daemon heartbeat
worker constructs this once at worker start and shares it across
every tick so that stdio MCP children live for the daemon’s
lifetime rather than being orphaned and re-spawned per
agent::run call. When Some, assemble MUST use this
Arc<McpRegistry> and MUST NOT call McpRegistry::connect_all
itself. None preserves the legacy per-call connect path
(CLI / one-shot / process_message), which is correct for
callers that have no cross-turn reuse contract.
Auto Trait Implementations§
impl<'a> Freeze for ScopedAssembly<'a>
impl<'a> !RefUnwindSafe for ScopedAssembly<'a>
impl<'a> Send for ScopedAssembly<'a>
impl<'a> Sync for ScopedAssembly<'a>
impl<'a> Unpin for ScopedAssembly<'a>
impl<'a> UnsafeUnpin for ScopedAssembly<'a>
impl<'a> !UnwindSafe for ScopedAssembly<'a>
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
§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