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