Skip to main content

envoy/http/
types.rs

1use serde::{Deserialize, Serialize};
2
3use crate::message::MessageEnvelope;
4use crate::message::MessageType;
5use crate::message::Part;
6
7#[derive(Debug, Deserialize)]
8pub struct RegisterRequest {
9    pub name: String,
10    #[serde(default)]
11    pub parent_id: Option<String>,
12    pub kind: String,
13}
14
15#[derive(Debug, Deserialize, Serialize)]
16pub struct SendMessageRequest {
17    #[serde(rename = "type")]
18    pub msg_type: MessageType,
19    pub from: String,
20    pub to: String,
21    #[serde(default)]
22    pub task_id: Option<String>,
23    #[serde(default)]
24    pub context_id: Option<String>,
25    pub parts: Vec<Part>,
26}
27
28#[derive(Debug, Deserialize)]
29pub struct PollQuery {
30    pub to: String,
31    #[serde(default)]
32    pub since: Option<i64>,
33    #[serde(default = "default_limit")]
34    pub limit: i64,
35    #[serde(default)]
36    pub include: Option<String>,
37}
38
39fn default_limit() -> i64 {
40    50
41}
42
43#[derive(Debug, Serialize)]
44pub struct PollResponse {
45    pub messages: Vec<MessageEnvelope>,
46    pub latest_sequence: i64,
47}
48
49#[derive(Debug, Serialize)]
50pub struct HealthResponse {
51    pub status: &'static str,
52    pub uptime_seconds: i64,
53    pub agents_online: usize,
54}
55
56#[derive(Debug, Serialize)]
57pub struct StatsResponse {
58    pub messages_total: i64,
59    pub agents_registered: usize,
60}
61
62#[derive(Debug, Deserialize)]
63pub struct CreateDependencyRequest {
64    pub dependent_agent: String,
65    pub blocker_agent: String,
66    pub reason: String,
67}