rlmesh-runtime 0.1.0-beta.1

Runtime driver for RLMesh model-environment evaluation sessions
Documentation
use prost_types::Struct;
use rlmesh_proto::common::v1::MessageBytes;
use rlmesh_proto::spaces::v1::SpaceSpec;

#[derive(Debug, Clone, Default, PartialEq, Eq)]
pub struct RuntimeRouteContext {
    pub route_id: String,
    pub env_component_id: String,
    pub model_component_id: String,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct EnvConnectedEvent {
    pub session_id: String,
    pub route: RuntimeRouteContext,
    pub env_id: String,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct ModelConnectedEvent {
    pub session_id: String,
    pub route: RuntimeRouteContext,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct SessionStartedEvent {
    pub session_id: String,
    pub route: RuntimeRouteContext,
    pub env_id: String,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct SessionEndedEvent {
    pub session_id: String,
    pub route: RuntimeRouteContext,
    pub reason: String,
    pub total_steps: i64,
    pub total_episodes: i64,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct SessionFailedEvent {
    pub session_id: String,
    pub route: RuntimeRouteContext,
    pub reason: String,
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct LogEvent {
    pub session_id: String,
    pub route: RuntimeRouteContext,
    pub level: LogLevel,
    pub message: String,
    pub source: Option<String>,
}

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum LogLevel {
    Debug,
    Info,
    Warn,
    Error,
}

impl LogLevel {
    pub fn as_str(&self) -> &'static str {
        match self {
            LogLevel::Debug => "debug",
            LogLevel::Info => "info",
            LogLevel::Warn => "warn",
            LogLevel::Error => "error",
        }
    }
}

#[derive(Debug, Clone, PartialEq, Eq)]
pub struct EpisodeStartedEvent {
    pub session_id: String,
    pub route: RuntimeRouteContext,
    pub episode_id: String,
    pub episode_record_id: String,
    pub episode_index: i64,
    pub env_index: i32,
    pub started_from_auto_reset: bool,
}

#[derive(Debug, Clone, PartialEq)]
pub struct EpisodeCompletedEvent {
    pub session_id: String,
    pub route: RuntimeRouteContext,
    pub episode_id: String,
    pub episode_record_id: String,
    pub episode_index: i64,
    pub env_index: i32,
    pub step_count: i64,
    pub cumulative_reward: f64,
    pub terminated: bool,
    pub truncated: bool,
    pub duration_ms: i64,
    pub final_info: Option<Struct>,
}

#[derive(Debug, Clone, PartialEq)]
pub struct ActionReceivedEvent {
    pub session_id: String,
    pub route: RuntimeRouteContext,
    pub episode_id: String,
    pub episode_record_id: String,
    pub episode_ids: Vec<String>,
    pub episode_record_ids: Vec<String>,
    pub step: i64,
    pub env_index: i32,
    pub action_space: SpaceSpec,
    pub action: Option<MessageBytes>,
}

#[derive(Debug, Clone, PartialEq)]
pub struct StepCompletedEvent {
    pub session_id: String,
    pub route: RuntimeRouteContext,
    pub episode_id: String,
    pub episode_record_id: String,
    pub step: i64,
    pub env_index: i32,
    pub rewards: Vec<f64>,
}

#[derive(Debug, Clone, PartialEq)]
pub struct ObservationEmittedEvent {
    pub session_id: String,
    pub route: RuntimeRouteContext,
    pub episode_id: String,
    pub episode_record_id: String,
    pub episode_ids: Vec<String>,
    pub episode_record_ids: Vec<String>,
    pub step: i64,
    pub env_index: i32,
    pub is_reset: bool,
    pub num_envs: u32,
    pub observation_space: SpaceSpec,
    pub observation: Option<MessageBytes>,
}

#[derive(Debug, Clone, PartialEq)]
pub struct TimingSummary {
    pub operation: String,
    pub component_id: String,
    pub name: String,
    pub sample_count: u64,
    pub avg_ms: Option<f64>,
    pub p50_ms: Option<f64>,
    pub p95_ms: Option<f64>,
    pub p99_ms: Option<f64>,
}

#[derive(Debug, Clone, PartialEq)]
pub struct TelemetryWindowEvent {
    pub session_id: String,
    pub route: RuntimeRouteContext,
    pub window_seconds: u32,
    pub sample_count: u64,
    pub steps_per_second: Option<f64>,
    pub request_bytes_per_second: Option<f64>,
    pub response_bytes_per_second: Option<f64>,
    pub timings: Vec<TimingSummary>,
    pub env_latency_ms_avg: Option<f64>,
    pub env_latency_ms_p50: Option<f64>,
    pub env_latency_ms_p95: Option<f64>,
    pub env_latency_ms_p99: Option<f64>,
    pub model_latency_ms_avg: Option<f64>,
    pub model_latency_ms_p50: Option<f64>,
    pub model_latency_ms_p95: Option<f64>,
    pub model_latency_ms_p99: Option<f64>,
    pub round_trip_ms_avg: Option<f64>,
    pub round_trip_ms_p50: Option<f64>,
    pub round_trip_ms_p95: Option<f64>,
    pub round_trip_ms_p99: Option<f64>,
    pub reconnects: u64,
    pub drops: u64,
}

#[derive(Debug, Clone, PartialEq)]
pub struct TelemetrySummaryEvent {
    pub session_id: String,
    pub route: RuntimeRouteContext,
    pub total_seconds: u32,
    pub sample_count: u64,
    pub steps_per_second: Option<f64>,
    pub request_bytes_per_second: Option<f64>,
    pub response_bytes_per_second: Option<f64>,
    pub timings: Vec<TimingSummary>,
    pub env_latency_ms_avg: Option<f64>,
    pub env_latency_ms_p50: Option<f64>,
    pub env_latency_ms_p95: Option<f64>,
    pub env_latency_ms_p99: Option<f64>,
    pub model_latency_ms_avg: Option<f64>,
    pub model_latency_ms_p50: Option<f64>,
    pub model_latency_ms_p95: Option<f64>,
    pub model_latency_ms_p99: Option<f64>,
    pub round_trip_ms_avg: Option<f64>,
    pub round_trip_ms_p50: Option<f64>,
    pub round_trip_ms_p95: Option<f64>,
    pub round_trip_ms_p99: Option<f64>,
    pub reconnects: u64,
    pub drops: u64,
}