#[derive(Debug)]
pub enum StoreEvent {
Request(RequestEvent),
Session(SessionEvent),
SessionClosed {
session_id: String,
ended_at: i64,
},
SchemaVersion(SchemaVersionEvent),
}
#[derive(Debug)]
pub struct RequestEvent {
pub request_id: String,
pub ts: i64,
pub proxy: String,
pub session_id: Option<String>,
pub method: String,
pub tool: Option<String>,
pub resource_uri: Option<String>,
pub prompt_name: Option<String>,
pub latency_us: i64,
pub status: RequestStatus,
pub error_code: Option<String>,
pub error_msg: Option<String>,
pub bytes_in: Option<i64>,
pub bytes_out: Option<i64>,
}
#[derive(Debug)]
pub struct SessionEvent {
pub session_id: String,
pub proxy: String,
pub started_at: i64,
pub client_name: Option<String>,
pub client_version: Option<String>,
pub client_platform: Option<String>,
}
#[derive(Debug)]
pub struct SchemaVersionEvent {
pub ts: i64,
pub proxy: String,
pub upstream_url: String,
pub method: String,
pub payload: String,
pub content_hash: String,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum RequestStatus {
Ok,
Error,
Timeout,
}
impl RequestStatus {
pub fn as_str(&self) -> &'static str {
match self {
RequestStatus::Ok => "ok",
RequestStatus::Error => "error",
RequestStatus::Timeout => "timeout",
}
}
}