Skip to main content

ScopedAssembly

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: AllToolsResult

Eager 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: bool

Documented 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: bool

Documented 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: bool

Documented 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> 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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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
§

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

§

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
§

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, 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.
§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,