Skip to main content

rlmesh_runtime/hooks/
events.rs

1use prost_types::Struct;
2use rlmesh_proto::common::v1::MessageBytes;
3use rlmesh_proto::spaces::v1::SpaceSpec;
4
5#[derive(Debug, Clone, Default, PartialEq, Eq)]
6pub struct RuntimeRouteContext {
7    pub route_id: String,
8    pub env_component_id: String,
9    pub model_component_id: String,
10}
11
12#[derive(Debug, Clone, PartialEq, Eq)]
13pub struct EnvConnectedEvent {
14    pub session_id: String,
15    pub route: RuntimeRouteContext,
16    pub env_id: String,
17}
18
19#[derive(Debug, Clone, PartialEq, Eq)]
20pub struct ModelConnectedEvent {
21    pub session_id: String,
22    pub route: RuntimeRouteContext,
23}
24
25#[derive(Debug, Clone, PartialEq, Eq)]
26pub struct SessionStartedEvent {
27    pub session_id: String,
28    pub route: RuntimeRouteContext,
29    pub env_id: String,
30}
31
32#[derive(Debug, Clone, PartialEq, Eq)]
33pub struct SessionEndedEvent {
34    pub session_id: String,
35    pub route: RuntimeRouteContext,
36    pub reason: String,
37    pub total_steps: i64,
38    pub total_episodes: i64,
39}
40
41#[derive(Debug, Clone, PartialEq, Eq)]
42pub struct SessionFailedEvent {
43    pub session_id: String,
44    pub route: RuntimeRouteContext,
45    pub reason: String,
46}
47
48#[derive(Debug, Clone, PartialEq, Eq)]
49pub struct LogEvent {
50    pub session_id: String,
51    pub route: RuntimeRouteContext,
52    pub level: LogLevel,
53    pub message: String,
54    pub source: Option<String>,
55}
56
57#[derive(Debug, Clone, Copy, PartialEq, Eq)]
58pub enum LogLevel {
59    Debug,
60    Info,
61    Warn,
62    Error,
63}
64
65impl LogLevel {
66    pub fn as_str(&self) -> &'static str {
67        match self {
68            LogLevel::Debug => "debug",
69            LogLevel::Info => "info",
70            LogLevel::Warn => "warn",
71            LogLevel::Error => "error",
72        }
73    }
74}
75
76#[derive(Debug, Clone, PartialEq, Eq)]
77pub struct EpisodeStartedEvent {
78    pub session_id: String,
79    pub route: RuntimeRouteContext,
80    pub episode_id: String,
81    pub episode_record_id: String,
82    pub episode_index: i64,
83    pub env_index: i32,
84    pub started_from_auto_reset: bool,
85}
86
87#[derive(Debug, Clone, PartialEq)]
88pub struct EpisodeCompletedEvent {
89    pub session_id: String,
90    pub route: RuntimeRouteContext,
91    pub episode_id: String,
92    pub episode_record_id: String,
93    pub episode_index: i64,
94    pub env_index: i32,
95    pub step_count: i64,
96    pub cumulative_reward: f64,
97    pub terminated: bool,
98    pub truncated: bool,
99    pub duration_ms: i64,
100    pub final_info: Option<Struct>,
101}
102
103#[derive(Debug, Clone, PartialEq)]
104pub struct ActionReceivedEvent {
105    pub session_id: String,
106    pub route: RuntimeRouteContext,
107    pub episode_id: String,
108    pub episode_record_id: String,
109    pub episode_ids: Vec<String>,
110    pub episode_record_ids: Vec<String>,
111    pub step: i64,
112    pub env_index: i32,
113    pub action_space: SpaceSpec,
114    pub action: Option<MessageBytes>,
115}
116
117#[derive(Debug, Clone, PartialEq)]
118pub struct StepCompletedEvent {
119    pub session_id: String,
120    pub route: RuntimeRouteContext,
121    pub episode_id: String,
122    pub episode_record_id: String,
123    pub step: i64,
124    pub env_index: i32,
125    pub rewards: Vec<f64>,
126}
127
128#[derive(Debug, Clone, PartialEq)]
129pub struct ObservationEmittedEvent {
130    pub session_id: String,
131    pub route: RuntimeRouteContext,
132    pub episode_id: String,
133    pub episode_record_id: String,
134    pub episode_ids: Vec<String>,
135    pub episode_record_ids: Vec<String>,
136    pub step: i64,
137    pub env_index: i32,
138    pub is_reset: bool,
139    pub num_envs: u32,
140    pub observation_space: SpaceSpec,
141    pub observation: Option<MessageBytes>,
142}
143
144#[derive(Debug, Clone, PartialEq)]
145pub struct TimingSummary {
146    pub operation: String,
147    pub component_id: String,
148    pub name: String,
149    pub sample_count: u64,
150    pub avg_ms: Option<f64>,
151    pub p50_ms: Option<f64>,
152    pub p95_ms: Option<f64>,
153    pub p99_ms: Option<f64>,
154}
155
156#[derive(Debug, Clone, PartialEq)]
157pub struct TelemetryWindowEvent {
158    pub session_id: String,
159    pub route: RuntimeRouteContext,
160    pub window_seconds: u32,
161    pub sample_count: u64,
162    pub steps_per_second: Option<f64>,
163    pub request_bytes_per_second: Option<f64>,
164    pub response_bytes_per_second: Option<f64>,
165    pub timings: Vec<TimingSummary>,
166    pub env_latency_ms_avg: Option<f64>,
167    pub env_latency_ms_p50: Option<f64>,
168    pub env_latency_ms_p95: Option<f64>,
169    pub env_latency_ms_p99: Option<f64>,
170    pub model_latency_ms_avg: Option<f64>,
171    pub model_latency_ms_p50: Option<f64>,
172    pub model_latency_ms_p95: Option<f64>,
173    pub model_latency_ms_p99: Option<f64>,
174    pub round_trip_ms_avg: Option<f64>,
175    pub round_trip_ms_p50: Option<f64>,
176    pub round_trip_ms_p95: Option<f64>,
177    pub round_trip_ms_p99: Option<f64>,
178    pub reconnects: u64,
179    pub drops: u64,
180}
181
182#[derive(Debug, Clone, PartialEq)]
183pub struct TelemetrySummaryEvent {
184    pub session_id: String,
185    pub route: RuntimeRouteContext,
186    pub total_seconds: u32,
187    pub sample_count: u64,
188    pub steps_per_second: Option<f64>,
189    pub request_bytes_per_second: Option<f64>,
190    pub response_bytes_per_second: Option<f64>,
191    pub timings: Vec<TimingSummary>,
192    pub env_latency_ms_avg: Option<f64>,
193    pub env_latency_ms_p50: Option<f64>,
194    pub env_latency_ms_p95: Option<f64>,
195    pub env_latency_ms_p99: Option<f64>,
196    pub model_latency_ms_avg: Option<f64>,
197    pub model_latency_ms_p50: Option<f64>,
198    pub model_latency_ms_p95: Option<f64>,
199    pub model_latency_ms_p99: Option<f64>,
200    pub round_trip_ms_avg: Option<f64>,
201    pub round_trip_ms_p50: Option<f64>,
202    pub round_trip_ms_p95: Option<f64>,
203    pub round_trip_ms_p99: Option<f64>,
204    pub reconnects: u64,
205    pub drops: u64,
206}