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::checkpoint::TraceId;
10use crate::ids::SpanId;
11
12// ─── RuntimeEvent ─────────────────────────────────────────────
13
14/// 控制面事件 — 低频、生命周期事件。
15#[derive(Debug, Clone)]
16pub enum RuntimeEvent {
17    /// 执行开始
18    ExecutionStarted {
19        trace_id: TraceId,
20        graph_name: String,
21    },
22    /// 节点开始执行
23    NodeStarted {
24        node_name: String,
25        trace_id: TraceId,
26        span_id: SpanId,
27        step: usize,
28    },
29    /// 节点执行完成
30    NodeCompleted {
31        node_name: String,
32        trace_id: TraceId,
33        span_id: SpanId,
34        duration: Duration,
35    },
36    /// 节点执行失败
37    NodeFailed {
38        node_name: String,
39        trace_id: TraceId,
40        span_id: SpanId,
41        error: String,
42    },
43    /// 分支开始执行(并行节点)
44    BranchStarted {
45        node_name: String,
46        branch_name: String,
47        span_id: SpanId,
48    },
49    /// 分支执行完成(并行节点)
50    BranchCompleted {
51        node_name: String,
52        branch_name: String,
53        span_id: SpanId,
54        success: bool,
55        duration: Duration,
56    },
57    /// Barrier 等待外部决策
58    BarrierWaiting {
59        barrier_id: crate::event::BarrierId,
60        node_name: String,
61        span_id: SpanId,
62    },
63    /// Barrier 决策已应用
64    BarrierResolved { barrier_id: crate::event::BarrierId },
65    /// Checkpoint 已保存
66    CheckpointCreated {
67        checkpoint_id: CheckpointId,
68        node_name: String,
69        step: usize,
70    },
71    /// 执行完成
72    ExecutionCompleted {
73        trace_id: TraceId,
74        duration: Duration,
75    },
76}