systemprompt_models/events/
context_event.rs1use chrono::{DateTime, Utc};
8use serde::{Deserialize, Serialize};
9
10use super::{A2AEvent, AgUiEvent, SystemEvent};
11
12#[derive(Debug, Clone, Serialize, Deserialize)]
13#[serde(tag = "protocol", content = "event")]
14pub enum ContextEvent {
15 #[serde(rename = "agui")]
16 AgUi(AgUiEvent),
17 #[serde(rename = "a2a")]
18 A2A(Box<A2AEvent>),
19 #[serde(rename = "system")]
20 System(SystemEvent),
21}
22
23impl ContextEvent {
24 pub fn timestamp(&self) -> DateTime<Utc> {
25 match self {
26 Self::AgUi(e) => e.timestamp(),
27 Self::A2A(e) => e.as_ref().timestamp(),
28 Self::System(e) => e.timestamp(),
29 }
30 }
31}
32
33impl From<AgUiEvent> for ContextEvent {
34 fn from(event: AgUiEvent) -> Self {
35 Self::AgUi(event)
36 }
37}
38
39impl From<A2AEvent> for ContextEvent {
40 fn from(event: A2AEvent) -> Self {
41 Self::A2A(Box::new(event))
42 }
43}
44
45impl From<SystemEvent> for ContextEvent {
46 fn from(event: SystemEvent) -> Self {
47 Self::System(event)
48 }
49}