feat(sandokan-daemon): B1.3 — DaemonEngine + protocolo wire
1//! Errores del orquestador.
2
3use serde::{Deserialize, Serialize};
4use ulid::Ulid;
5
6/// Falla de una operación del `Engine`. Las impls concretas mapean sus
7/// errores internos (encarnación, IPC, SSH) a estas variantes.
8///
9/// Es `Serialize`/`Deserialize` porque viaja por el wire del
10/// `DaemonEngine` (postcard sobre Unix socket).
11#[derive(Debug, Clone, thiserror::Error, Serialize, Deserialize)]
12pub enum EngineError {
13 /// No existe ninguna entidad activa con ese `card_id`.
14 #[error("card `{0}` no encontrada")]
15 NotFound(Ulid),
16
17 /// La encarnación falló (clone/namespaces/exec).
18 #[error("encarnación falló: {0}")]
19 Incarnate(String),
20
21 /// Falla de transporte (Unix socket del daemon, túnel SSH).
22 #[error("transporte: {0}")]
23 Transport(String),
24
25 /// La intención es inconsistente (Card inválida, contexto imposible).
26 #[error("intención inválida: {0}")]
27 InvalidIntent(String),
28
29 /// La operación excedió su deadline.
30 #[error("timeout")]
31 Timeout,
32}