//! Per-node event ingress and dispatch.
//!
//! Owns the data-plane request path:
//!   inbound event → resolve script → call `ExecutorClient::execute`
//!
//! Does not import `executor-core` types in its public surface beyond the
//! transport DTOs (`ExecRequest`/`ExecResponse`). The `ExecutorClient`
//! trait is the seam that lets the orchestrator call executor logic
//! in-process (single-node) or over HTTP (cluster).

pub mod api;
pub mod client;
pub mod gate;
pub mod inbox;
pub mod realtime;
pub mod realtime_api;
pub mod resolver;
pub mod routing;

pub use api::{data_plane_router, user_routes_router, DataPlaneState};
pub use client::{ExecutorClient, LocalExecutorClient, RemoteExecutorClient, ScriptIdentity};
pub use gate::{AcquireError, ExecutionGate};
pub use inbox::InboxRegistry;
pub use realtime::{spawn_realtime_gc, InProcessBroadcaster, DEFAULT_BROADCAST_CAPACITY};
pub use realtime_api::{
    heartbeat_secs_from_env, realtime_router, RealtimeState, DEFAULT_HEARTBEAT_SECS,
};
pub use resolver::{ResolverError, ScriptResolver};
