Skip to main content

IdentityRuntime

Struct IdentityRuntime 

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

The identity-first runtime tracks active identities and enforces delivery, ownership, and lifecycle invariants.

Implementations§

Source§

impl IdentityRuntime

Source

pub fn new(config: IdentityRuntimeConfig) -> Self

Create a new identity runtime with the given configuration.

Source

pub fn with_runtime_services( self, runtime_services: AgentRuntimeServices, ) -> Self

Source

pub fn has_session_bridge(&self) -> bool

Source

pub async fn reconcile_managed_peer_edges( &self, desired_edges: &[ManagedPeerEdge], ) -> Result<(), IdentityRuntimeError>

Apply identity-first managed topology to the concrete mob graph.

Topology providers return stable logical identities. The mob comms graph is keyed by active runtime member IDs, so this resolves each endpoint through continuity records before calling the same-mob bridge wire APIs.

Source

pub async fn register( &self, spec: DurableAgentSpec, state: IdentityLifecycleState, continuity: Option<ContinuityRecord>, lease: Option<LeaseGrant>, )

Register an identity entry in the runtime (called during restore flow).

Source

pub async fn subscribe( &self, identity: &AgentIdentity, ) -> Result<Receiver<IdentityEvent>, IdentityRuntimeError>

Subscribe to identity-scoped events.

Returns a broadcast receiver that yields IdentityEvent items for state changes, lease updates, lease loss, and checkpoint completions.

Source

pub async fn update_spec( &self, spec: DurableAgentSpec, ) -> Result<(), IdentityRuntimeError>

Update the spec for an existing identity (used during reconciliation).

Source

pub async fn update_lease( &self, identity: &AgentIdentity, grant: LeaseGrant, ) -> Result<(), IdentityRuntimeError>

Update the lease for an identity.

Source

pub async fn mark_lease_lost( &self, identity: &AgentIdentity, ) -> Result<(), IdentityRuntimeError>

Mark a lease as lost for an identity (INV-02).

Source

pub async fn set_state( &self, identity: &AgentIdentity, state: IdentityLifecycleState, ) -> Result<(), IdentityRuntimeError>

Set the lifecycle state for an identity.

Source

pub async fn send( &self, identity: &AgentIdentity, content: &ContentInput, ) -> Result<FencingToken, IdentityRuntimeError>

Send conversational content to an addressable identity.

Enforces:

  • Identity must be registered and active
  • Identity must be Addressable (REQ-03)
  • Lease must be held (INV-01)
  • Lease must not be lost (INV-02)

Returns the fencing token for the delivery (caller uses it for checkpoint).

Source

pub async fn dispatch( &self, identity: &AgentIdentity, input: &DispatchInput, ) -> Result<(FencingToken, bool), IdentityRuntimeError>

Dispatch internal content to any identity (Addressable or InternalOnly).

Enforces:

  • Identity must be registered and active
  • Lease must be held (INV-01)
  • Lease must not be lost (INV-02)

Returns (fencing_token, is_durable) where is_durable indicates whether the dispatch is backed by a runtime_store (REQ-04).

Source

pub async fn status( &self, identity: &AgentIdentity, ) -> Result<IdentityStatus, IdentityRuntimeError>

Return the full identity status for the given identity.

Source

pub async fn retire( &self, identity: &AgentIdentity, ) -> Result<FencingToken, IdentityRuntimeError>

Retire an identity. Validates lease ownership and retires the mob member.

Source

pub async fn respawn( &self, identity: &AgentIdentity, ) -> Result<ContinuityRecord, IdentityRuntimeError>

Respawn: non-destructive recovery.

  1. Fence the current owner
  2. Attempt final checkpoint
  3. Reactivate from authoritative continuity with same record + runtime ID
  4. ContinuityGeneration does NOT advance
Source

pub async fn reset( &self, identity: &AgentIdentity, ) -> Result<ContinuityRecord, IdentityRuntimeError>

Reset: destructive continuity reset.

  1. Fence old owner
  2. Advance ContinuityGeneration
  3. Create fresh continuity under the same AgentIdentity
  4. Old-owner late writes rejected by stale fencing token
Source

pub async fn delete_identity( &self, identity: &AgentIdentity, ) -> Result<(), IdentityRuntimeError>

Delete an identity: removes continuity record.

  1. Fence old owner
  2. Remove ContinuityRecord
  3. Future bootstrap treats identity as Uninitialized
Source

pub async fn checkpoint( &self, identity: &AgentIdentity, snapshot: &SessionSnapshot, ) -> Result<CheckpointVersion, IdentityRuntimeError>

Save a checkpoint snapshot. Enforces version ordering and fencing.

Source

pub async fn roster_inspect( &self, ) -> BTreeMap<AgentIdentity, (DurableAgentSpec, IdentityStatus)>

Return all active identities with their specs and status.

Source

pub fn validate_roster_uniqueness( specs: &[DurableAgentSpec], ) -> Result<(), IdentityRuntimeError>

Validate that a roster contains no duplicate identities.

Source

pub async fn contains(&self, identity: &AgentIdentity) -> bool

Check if an identity is registered.

Source

pub async fn is_active(&self, identity: &AgentIdentity) -> bool

Check if an identity is registered AND in Active state.

Source

pub fn continuity_store(&self) -> &Arc<dyn ContinuityStore>

Get the continuity store reference.

Source

pub fn lease_provider(&self) -> &Arc<dyn LeaseProvider>

Get the lease provider reference.

Source

pub fn runtime_instance_id(&self) -> &str

Get the runtime instance ID.

Source

pub fn durability_policy(&self) -> &DurabilityPolicy

Get the durability policy.

Source

pub fn has_runtime_store(&self) -> bool

Get whether a runtime store is configured.

Source

pub fn bridge(&self) -> Option<&Arc<dyn SessionBridge>>

Get the session bridge reference, if configured.

Source

pub async fn send_text( &self, identity: &AgentIdentity, text: impl Into<String>, ) -> Result<FencingToken, IdentityRuntimeError>

Send plain text to an addressable identity.

Source

pub async fn dispatch_text( &self, identity: &AgentIdentity, text: impl Into<String>, ) -> Result<(FencingToken, bool), IdentityRuntimeError>

Dispatch plain text with system origin.

Source

pub async fn restore_flow( &self, roster: &[DurableAgentSpec], topology_provider: Option<&dyn TopologyProvider>, customizer: Option<&dyn AgentCustomizer>, ) -> Result<RestoreFlowResult, IdentityRuntimeError>

Execute the restore flow for the given roster.

Source

pub async fn runtime_id_for( &self, identity: &AgentIdentity, ) -> Result<AgentRuntimeId, IdentityRuntimeError>

Resolve the AgentRuntimeId for a registered identity.

Source

pub async fn inspect( &self, identity: &AgentIdentity, ) -> Result<MemberInspection, IdentityRuntimeError>

Inspect the current execution state of an identity via the bridge.

Source

pub fn default_timeout(&self) -> Duration

The configured default timeout for wait operations.

Source

pub async fn wait_for_output( &self, identity: &AgentIdentity, timeout: Duration, ) -> Result<String, IdentityRuntimeError>

Poll until the identity produces an output_preview, or timeout.

Source

pub async fn wait_for_output_containing( &self, identity: &AgentIdentity, needle: &str, timeout: Duration, ) -> Result<String, IdentityRuntimeError>

Poll until output_preview contains the given substring, or timeout.

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

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,