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, RelayAdvisoryEvent, SessionEndedEvent,
9 SessionFailedEvent, 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> {
58 Ok(())
59 }
60
61 async fn action_received(&self, _event: ActionReceivedEvent) -> Result<(), HookError> {
62 Ok(())
63 }
64
65 async fn transform_action(
68 &self,
69 event: ActionReceivedEvent,
70 ) -> Result<Option<Vec<Bytes>>, HookError> {
71 Ok(event.action)
72 }
73
74 async fn step_completed(&self, _event: StepCompletedEvent) -> Result<(), HookError> {
75 Ok(())
76 }
77
78 async fn observation_emitted(&self, _event: ObservationEmittedEvent) -> Result<(), HookError> {
79 Ok(())
80 }
81
82 async fn transform_observation(
84 &self,
85 event: ObservationEmittedEvent,
86 ) -> Result<Option<Vec<Bytes>>, HookError> {
87 Ok(event.observation)
88 }
89
90 async fn session_ended(&self, _event: SessionEndedEvent) -> Result<(), HookError> {
91 Ok(())
92 }
93
94 async fn on_telemetry(&self, _event: TelemetrySnapshotEvent) -> Result<(), HookError> {
102 Ok(())
103 }
104
105 async fn session_failed(&self, _event: SessionFailedEvent) -> Result<(), HookError> {
106 Ok(())
107 }
108
109 async fn log(&self, _event: LogEvent) -> Result<(), HookError> {
110 Ok(())
111 }
112
113 async fn relay_advisory(&self, _event: RelayAdvisoryEvent) -> Result<(), HookError> {
115 Ok(())
116 }
117}