Skip to main content

swarm_engine_core/telemetry/
event.rs

1//! SwarmEvent - Swarm Engine からの観測イベント
2//!
3//! UI や TUI、Metrics Exporter などの Consumer が受信するイベント定義。
4
5use crate::types::TaskId;
6
7/// Swarm Engine から発行されるイベント
8#[derive(Debug, Clone)]
9pub enum SwarmEvent {
10    /// Tick 開始
11    TickStart { tick: u64 },
12
13    /// Tick 完了
14    TickComplete {
15        tick: u64,
16        duration_ns: u64,
17        metrics: TickMetrics,
18    },
19
20    /// Manager 状態変化
21    ManagerStateChange {
22        manager_id: usize,
23        new_state: ManagerState,
24    },
25
26    /// Worker アクション
27    WorkerAction {
28        worker_id: usize,
29        action: String,
30        success: bool,
31    },
32
33    /// 非同期タスク完了
34    AsyncTaskComplete { task_id: TaskId, duration_ms: u64 },
35
36    /// システム開始
37    SystemStart { worker_count: usize },
38
39    /// システム停止
40    SystemStop {
41        total_ticks: u64,
42        total_duration_ms: u64,
43    },
44}
45
46/// Tick ごとのメトリクス
47#[derive(Debug, Clone, Default)]
48pub struct TickMetrics {
49    pub total_actions: u64,
50    pub successful_actions: u64,
51    pub failed_actions: u64,
52    pub active_workers: usize,
53}
54
55/// Manager の状態
56#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
57pub enum ManagerState {
58    #[default]
59    Idle,
60    Processing,
61    Delegated,
62    Escalated,
63    Error,
64}