starweaver_core/
events.rs1use serde::{Deserialize, Serialize};
4use serde_json::Value;
5
6use crate::Metadata;
7
8#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
10pub struct AgentEvent {
11 pub kind: String,
13 #[serde(default)]
15 pub payload: Value,
16 #[serde(default, skip_serializing_if = "Metadata::is_empty")]
18 pub metadata: Metadata,
19}
20
21impl AgentEvent {
22 #[must_use]
24 pub fn new(kind: impl Into<String>, payload: Value) -> Self {
25 Self {
26 kind: kind.into(),
27 payload,
28 metadata: Metadata::default(),
29 }
30 }
31
32 #[must_use]
34 pub fn with_metadata(mut self, metadata: Metadata) -> Self {
35 self.metadata = metadata;
36 self
37 }
38}
39
40pub const DEFERRED_TOOL_REQUESTED_EVENT_KIND: &str = "deferred_requested";
42
43pub const TASK_SNAPSHOT_EVENT_KIND: &str = "task_snapshot";