Skip to main content

HostComposition

Struct HostComposition 

Source
pub struct HostComposition { /* private fields */ }
Expand description

The execution surface a deployment runs with.

HostComposition lets an embedder decide which capabilities, LLM drivers and host services exist at runtime. Server and worker code compose the same shape so the control plane and execution plane stay aligned.

§Example

use everruns_provider::driver_registry::DriverRegistry;
use everruns_host::HostComposition;

let mut drivers = DriverRegistry::new();
everruns_openai::register_driver(&mut drivers);

let composition = HostComposition::builder()
    .driver_registry(drivers)
    .capability(everruns_builtins::HumanIntentCapability)
    .build();

Implementations§

Source§

impl HostComposition

Source

pub fn new( capability_registry: CapabilityRegistry, driver_registry: DriverRegistry, ) -> Self

Create a composition from explicit registries.

Source

pub fn builder() -> HostCompositionBuilder

Create a builder for fluent composition.

Source

pub fn capability_registry(&self) -> Arc<CapabilityRegistry>

A consistent snapshot of the capability registry.

The snapshot is cheap to hold and never changes underneath its holder, so a turn assembled from one either sees a dynamically registered capability or does not — never a partially built registry.

Source

pub fn register_capability( &self, capability: Arc<dyn Capability>, ) -> Result<(), CapabilityError>

Register a capability on a live composition (EVE-917).

Callable through a shared handle, so a host holding Arc<InProcessRuntime> can make a capability discovered mid-session known to the runtime. Registration is not activation: the id becomes resolvable, and activate_capability still decides per-session enablement.

Duplicate canonical ids and alias collisions are rejected and leave the existing registry untouched.

Source

pub fn register_capability_overriding(&self, capability: Arc<dyn Capability>)

Register a capability with composition-time replace semantics.

Re-registering a canonical id overrides the previous implementation, matching CapabilityRegistry::register_arc. Use HostComposition::register_capability for anything registered after the deployment is assembled, where a silent override would hide a bug.

Source

pub fn is_capability_registered(&self, id: &str) -> bool

Whether a canonical id or alias already resolves in this composition.

Lets a host skip registration for a capability that is already present without matching on error strings.

Source

pub fn driver_registry(&self) -> &DriverRegistry

Immutable access to the driver registry.

Source

pub fn driver_registry_mut(&mut self) -> &mut DriverRegistry

Mutable access to the driver registry.

Source

pub fn egress_service(&self) -> Arc<dyn EgressService>

System-wide outbound network boundary.

Source

pub fn utility_llm_service(&self) -> Arc<dyn UtilityLlmService>

System-wide utility LLM service for capability internals.

Source

pub fn session_file_system_factory(&self) -> Arc<dyn SessionFileSystemFactory>

Factory for the composition-selected session filesystem implementation.

Source

pub fn extension<T: Any + Send + Sync>(&self) -> Option<Arc<T>>

Resolve a type-keyed service supplied by a crate layered above core.

Trait Implementations§

Source§

impl Clone for HostComposition

Clones are independent compositions.

They start from the same registry snapshot — cheap, since the snapshot is shared until one side writes — but a capability registered on a clone is not visible to the original. That keeps the pre-EVE-917 behaviour of #[derive(Clone)], where each clone owned its own registry.

Source§

fn clone(&self) -> Self

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 Debug for HostComposition

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for HostComposition

Source§

fn default() -> Self

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

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

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

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

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

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 = !

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

fn try_from(value: U) -> Result<T, !>

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