//! ops-core — shared infrastructure for operator tools (Sando, Bento). //! //! These are the genuinely domain-agnostic primitives that both the //! tier-promotion deployer (Sando) and the app-release orchestrator (Bento) //! need. Each tool keeps its own domain types (tiers/gates vs targets/steps), //! recipes, and route handlers; only the transport-and-plumbing layer lives //! here so there is exactly one copy. //! //! - [`remote`] — re-exported from the `ops-exec` crate: the streaming SSH (or //! local) command primitive ([`remote::RemoteHost`]) and the //! [`remote::LogSink`] sink trait. The capability-gated `Executor` trait and //! its transports live in `ops-exec` proper (re-exported here as [`ops_exec`]). //! - [`eventbus`] — a generic `EventEnvelope` broadcast bus with flat-`kind` //! serialization (each tool supplies its own concrete `Event` enum as `E`). //! - [`live_log`] — a disk-append + callback live-log sink that implements //! `LogSink`; parameterized over a chunk callback so it is not tied to any //! tool's `Event` enum. //! - [`sqlite`] — connection helper (each tool runs its own `sqlx::migrate!`). pub mod eventbus; pub mod live_log; pub mod sqlite; /// The trusted executor crate, re-exported so consumers can depend on /// `ops-core` alone and get the `Executor` trait + transports transitively. pub use ops_exec; /// The low-level streaming primitive + `LogSink`, kept at the historical /// `ops_core::remote` path so existing consumers compile unchanged. pub use ops_exec::remote;