Skip to main content

systemprompt_models/events/
context_event.rs

1use 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}