rlmesh_runtime/hooks/
traits.rs1use async_trait::async_trait;
4use prost::bytes::Bytes;
5
6use super::{
7 ActionReceivedEvent, EnvConnectedEvent, EpisodeCompletedEvent, EpisodeStartedEvent, LogEvent,
8 ModelConnectedEvent, ObservationEmittedEvent, SessionEndedEvent, SessionFailedEvent,
9 SessionStartedEvent, StepCompletedEvent, TelemetrySnapshotEvent,
10};
11
12#[derive(Debug, thiserror::Error)]
14#[non_exhaustive]
15pub enum HookError {
16 #[error("{0}")]
17 Message(String),
18}
19
20#[derive(Debug, Default)]
23pub struct NoopRuntimeHooks;
24
25#[async_trait]
26impl RuntimeHooks for NoopRuntimeHooks {}
27
28#[async_trait]
37pub trait RuntimeHooks: Send + Sync {
38 async fn env_connected(&self, _event: EnvConnectedEvent) -> Result<(), HookError> {
39 Ok(())
40 }
41
42 async fn model_connected(&self, _event: ModelConnectedEvent) -> Result<(), HookError> {
43 Ok(())
44 }
45
46 async fn session_started(&self, _event: SessionStartedEvent) -> Result<(), HookError> {
47 Ok(())
48 }
49
50 async fn episode_started(&self, _event: EpisodeStartedEvent) -> Result<(), HookError> {
51 Ok(())
52 }
53
54 async fn episode_completed(&self, _event: EpisodeCompletedEvent) -> Result<(), HookError> {
55 Ok(())
56 }
57
58 async fn action_received(&self, _event: ActionReceivedEvent) -> Result<(), HookError> {
59 Ok(())
60 }
61
62 async fn transform_action(
65 &self,
66 event: ActionReceivedEvent,
67 ) -> Result<Option<Vec<Bytes>>, HookError> {
68 Ok(event.action)
69 }
70
71 async fn step_completed(&self, _event: StepCompletedEvent) -> Result<(), HookError> {
72 Ok(())
73 }
74
75 async fn observation_emitted(&self, _event: ObservationEmittedEvent) -> Result<(), HookError> {
76 Ok(())
77 }
78
79 async fn transform_observation(
81 &self,
82 event: ObservationEmittedEvent,
83 ) -> Result<Option<Vec<Bytes>>, HookError> {
84 Ok(event.observation)
85 }
86
87 async fn session_ended(&self, _event: SessionEndedEvent) -> Result<(), HookError> {
88 Ok(())
89 }
90
91 async fn on_telemetry(&self, _event: TelemetrySnapshotEvent) -> Result<(), HookError> {
99 Ok(())
100 }
101
102 async fn session_failed(&self, _event: SessionFailedEvent) -> Result<(), HookError> {
103 Ok(())
104 }
105
106 async fn log(&self, _event: LogEvent) -> Result<(), HookError> {
107 Ok(())
108 }
109}