use crate::types::TaskId;
#[derive(Debug, Clone)]
pub enum SwarmEvent {
TickStart { tick: u64 },
TickComplete {
tick: u64,
duration_ns: u64,
metrics: TickMetrics,
},
ManagerStateChange {
manager_id: usize,
new_state: ManagerState,
},
WorkerAction {
worker_id: usize,
action: String,
success: bool,
},
AsyncTaskComplete { task_id: TaskId, duration_ms: u64 },
SystemStart { worker_count: usize },
SystemStop {
total_ticks: u64,
total_duration_ms: u64,
},
}
#[derive(Debug, Clone, Default)]
pub struct TickMetrics {
pub total_actions: u64,
pub successful_actions: u64,
pub failed_actions: u64,
pub active_workers: usize,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum ManagerState {
#[default]
Idle,
Processing,
Delegated,
Escalated,
Error,
}