swarm-engine-core 0.1.6

Core types and orchestration for SwarmEngine
Documentation
//! SwarmEvent - Swarm Engine からの観測イベント
//!
//! UI や TUI、Metrics Exporter などの Consumer が受信するイベント定義。

use crate::types::TaskId;

/// Swarm Engine から発行されるイベント
#[derive(Debug, Clone)]
pub enum SwarmEvent {
    /// Tick 開始
    TickStart { tick: u64 },

    /// Tick 完了
    TickComplete {
        tick: u64,
        duration_ns: u64,
        metrics: TickMetrics,
    },

    /// Manager 状態変化
    ManagerStateChange {
        manager_id: usize,
        new_state: ManagerState,
    },

    /// Worker アクション
    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,
    },
}

/// Tick ごとのメトリクス
#[derive(Debug, Clone, Default)]
pub struct TickMetrics {
    pub total_actions: u64,
    pub successful_actions: u64,
    pub failed_actions: u64,
    pub active_workers: usize,
}

/// Manager の状態
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum ManagerState {
    #[default]
    Idle,
    Processing,
    Delegated,
    Escalated,
    Error,
}