use monoloop_connector::ConnectorBuildError;
use monoloop_contracts::ChannelCapabilityError;
use thiserror::Error;
#[derive(Clone, Debug, Error, PartialEq, Eq)]
pub enum StartupError {
#[error("invalid runtime configuration: {0}")]
InvalidConfig(&'static str),
#[error("channel registry invalid: {0}")]
ChannelRegistry(&'static str),
#[error("channel capability invalid: {0}")]
ChannelCapability(#[from] ChannelCapabilityError),
#[error("host tool registry invalid: {0}")]
ToolRegistry(&'static str),
#[error("connector build failed: {0}")]
ConnectorBuild(#[from] ConnectorBuildError),
#[error("connector session adapter mismatch: {0}")]
SessionAdapterMismatch(&'static str),
#[error("MCP listener bind failed")]
McpBindFailed,
#[error("executor unavailable")]
ExecutorUnavailable,
#[error("startup invariant failed: {0}")]
InvariantFailed(&'static str),
}