Skip to main content

lellm_graph/
runtime_event.rs

1//! RuntimeEvent — Control Plane 控制面事件。
2//!
3//! 低频、生命周期事件、拓扑事件、状态变化事件。
4//! 与 StreamChunk(Data Plane)分离,避免高频数据事件撑爆控制事件通道。
5
6use std::time::Duration;
7
8use crate::checkpoint::CheckpointId;
9use crate::ids::{SpanId, TraceId};
10
11// ─── RuntimeEvent ─────────────────────────────────────────────
12
13/// 控制面事件 — 低频、生命周期事件。
14#[derive(Debug, Clone)]
15pub enum RuntimeEvent {
16    /// 执行开始
17    ExecutionStarted {
18        trace_id: TraceId,
19        graph_name: String,
20    },
21    /// 节点开始执行
22    NodeStarted {
23        node_name: String,
24        trace_id: TraceId,
25        span_id: SpanId,
26        step: usize,
27    },
28    /// 节点执行完成
29    NodeCompleted {
30        node_name: String,
31        trace_id: TraceId,
32        span_id: SpanId,
33        duration: Duration,
34    },
35    /// 节点执行失败
36    NodeFailed {
37        node_name: String,
38        trace_id: TraceId,
39        span_id: SpanId,
40        error: String,
41    },
42    /// 分支开始执行(并行节点)
43    BranchStarted {
44        node_name: String,
45        branch_name: String,
46        span_id: SpanId,
47    },
48    /// 分支执行完成(并行节点)
49    BranchCompleted {
50        node_name: String,
51        branch_name: String,
52        span_id: SpanId,
53        success: bool,
54        duration: Duration,
55    },
56    /// Barrier 等待外部决策
57    BarrierWaiting {
58        barrier_id: crate::event::BarrierId,
59        node_name: String,
60        span_id: SpanId,
61    },
62    /// Barrier 决策已应用
63    BarrierResolved { barrier_id: crate::event::BarrierId },
64    /// Checkpoint 已保存
65    CheckpointCreated {
66        checkpoint_id: CheckpointId,
67        node_name: String,
68        step: usize,
69    },
70    /// 执行完成
71    ExecutionCompleted {
72        trace_id: TraceId,
73        duration: Duration,
74    },
75}