Skip to main content

meerkat_runtime/
lib.rs

1//! meerkat-runtime — v9 runtime control-plane for Meerkat agent lifecycle.
2//!
3//! This crate implements the runtime/control-plane layer of the v9 Canonical
4//! Lifecycle specification. It sits between surfaces (CLI, RPC, REST, MCP)
5//! and core (`meerkat-core`), managing:
6//!
7//! - Input acceptance, validation, and queueing
8//! - InputState lifecycle tracking
9//! - Policy resolution (what to do with each input)
10//! - Runtime state machine (Idle ↔ Attached ↔ Running ↔ Recovering → Stopped/Destroyed)
11//! - Retire/recycle/reset lifecycle operations
12//! - RuntimeEvent observability
13//!
14//! Core-facing types (RunPrimitive, RunEvent, CoreExecutor, etc.) live in
15//! `meerkat-core::lifecycle`. This crate contains everything else.
16
17#[cfg(target_arch = "wasm32")]
18pub mod tokio {
19    pub use tokio_with_wasm::alias::*;
20}
21
22#[cfg(not(target_arch = "wasm32"))]
23pub use ::tokio;
24
25pub mod accept;
26pub mod coalescing;
27pub mod comms_bridge;
28pub mod comms_drain;
29pub mod completion;
30pub(crate) mod control_plane;
31pub mod driver;
32pub mod durability;
33pub mod identifiers;
34pub mod input;
35pub mod input_ledger;
36pub mod input_lifecycle_authority;
37pub mod input_scope;
38pub mod input_state;
39pub mod lifecycle_ops;
40pub mod mob_adapter;
41pub mod ops_lifecycle;
42pub(crate) mod ops_lifecycle_authority;
43pub mod policy;
44pub mod policy_table;
45pub mod queue;
46pub mod runtime_control_authority;
47pub mod runtime_event;
48pub mod runtime_ingress_authority;
49pub(crate) mod runtime_loop;
50pub mod runtime_state;
51pub mod service_ext;
52pub mod session_adapter;
53pub mod silent_intent;
54pub mod store;
55pub mod traits;
56
57// Re-exports for convenience
58pub use accept::AcceptOutcome;
59pub use coalescing::{
60    AggregateDescriptor, CoalescingResult, SupersessionScope, apply_coalescing, apply_supersession,
61    check_supersession, create_aggregate_input, is_coalescing_eligible,
62};
63pub use completion::{CompletionHandle, CompletionOutcome};
64pub use driver::{EphemeralRuntimeDriver, PersistentRuntimeDriver};
65pub use durability::{DurabilityError, validate_durability};
66pub use identifiers::{
67    CausationId, ConversationId, CorrelationId, EventCodeId, IdempotencyKey, KindId,
68    LogicalRuntimeId, PolicyVersion, ProjectionRuleId, RuntimeEventId, SchemaId, SupersessionKey,
69};
70pub use input::{
71    ContinuationInput, ExternalEventInput, FlowStepInput, Input, InputDurability, InputHeader,
72    InputOrigin, InputVisibility, OperationInput, PeerConvention, PeerInput, PromptInput,
73    ResponseProgressPhase, ResponseTerminalStatus,
74};
75pub use input_ledger::InputLedger;
76pub use input_lifecycle_authority::{
77    InputLifecycleAuthority, InputLifecycleEffect, InputLifecycleError, InputLifecycleInput,
78    InputLifecycleMutator, InputLifecycleTransition,
79};
80pub use input_scope::InputScope;
81pub use input_state::{
82    InputAbandonReason, InputLifecycleState, InputState, InputStateEvent, InputStateHistoryEntry,
83    InputTerminalOutcome, PolicySnapshot, ReconstructionSource,
84};
85pub use lifecycle_ops::{abandon_non_terminal, would_abandon};
86pub use ops_lifecycle::{OpsLifecycleConfig, RuntimeOpsLifecycleRegistry};
87pub use policy::{
88    ApplyMode, ConsumePoint, DrainPolicy, InterruptPolicy, PolicyDecision, QueueMode,
89    RoutingDisposition, WakeMode,
90};
91pub use policy_table::{DEFAULT_POLICY_VERSION, DefaultPolicyTable};
92pub use queue::InputQueue;
93pub use runtime_control_authority::{
94    HandlingMode, RuntimeControlAuthority, RuntimeControlEffect, RuntimeControlInput,
95    RuntimeControlMutator, RuntimeControlTransition,
96};
97pub use runtime_event::{
98    InputLifecycleEvent, RunLifecycleEvent, RuntimeEvent, RuntimeEventEnvelope,
99    RuntimeProjectionEvent, RuntimeStateChangeEvent, RuntimeTopologyEvent,
100};
101pub use runtime_ingress_authority::{
102    ContentShape, IngressPhase, RequestId, ReservationKey, RuntimeIngressAuthority,
103    RuntimeIngressEffect, RuntimeIngressError, RuntimeIngressInput, RuntimeIngressMutator,
104    RuntimeIngressTransition,
105};
106pub use runtime_state::{RuntimeState, RuntimeStateTransitionError};
107pub use service_ext::{RuntimeMode, SessionServiceRuntimeExt};
108pub use session_adapter::RuntimeSessionAdapter;
109pub use store::{InMemoryRuntimeStore, RuntimeStore, RuntimeStoreError, SessionDelta};
110pub use traits::{
111    DestroyReport, RecoveryReport, RecycleReport, ResetReport, RetireReport, RuntimeControlCommand,
112    RuntimeControlPlane, RuntimeControlPlaneError, RuntimeDriver, RuntimeDriverError,
113};