autoagents_core/
protocol.rs1use autoagents_llm::chat::ChatMessage;
2use serde::{Deserialize, Serialize};
3use std::collections::HashMap;
4use uuid::Uuid;
5
6pub type SubmissionId = Uuid;
8
9pub type AgentID = Uuid;
11
12pub type SessionId = Uuid;
14
15pub type EventId = Uuid;
17
18#[derive(Debug, Clone, Serialize, Deserialize)]
20pub enum Event {
21 NewTask {
23 sub_id: SubmissionId,
24 agent_id: Option<AgentID>,
25 prompt: String,
26 },
27
28 TaskComplete {
30 sub_id: SubmissionId,
31 result: TaskResult,
32 },
33
34 AgentMessage {
36 sub_id: SubmissionId,
37 message: AgentMessage,
38 },
39
40 ToolRequest {
42 sub_id: SubmissionId,
43 event_id: EventId,
44 request: ToolRequest,
45 },
46
47 ToolResponse {
49 sub_id: SubmissionId,
50 event_id: EventId,
51 response: ToolResponse,
52 },
53
54 InputRequest {
56 sub_id: SubmissionId,
57 event_id: EventId,
58 prompt: String,
59 },
60
61 InputResponse {
63 sub_id: SubmissionId,
64 event_id: EventId,
65 input: String,
66 },
67
68 Error { sub_id: SubmissionId, error: String },
70}
71
72#[derive(Debug, Clone, Serialize, Deserialize)]
74pub enum TaskResult {
75 Success(String),
77
78 Value(serde_json::Value),
80
81 Failure(String),
83
84 Aborted,
86}
87
88#[derive(Debug, Clone, Serialize, Deserialize)]
90pub struct AgentMessage {
91 pub content: String,
93
94 pub chat_messages: Option<Vec<ChatMessage>>,
96}
97
98#[derive(Debug, Clone, Serialize, Deserialize)]
100pub struct ToolRequest {
101 pub tool_name: String,
103
104 pub arguments: serde_json::Value,
106
107 pub needs_approval: bool,
109}
110
111#[derive(Debug, Clone, Serialize, Deserialize)]
113pub enum ToolResponse {
114 Success(serde_json::Value),
116
117 Denied,
119
120 Failure(String),
122}
123
124#[derive(Debug, Clone, Serialize, Deserialize)]
126pub enum Command {
127 Submit {
129 agent_id: Uuid,
130 prompt: String,
131 context: Option<HashMap<String, String>>,
132 },
133
134 SubmitWithId {
136 sub_id: SubmissionId,
137 agent_id: Uuid,
138 prompt: String,
139 context: Option<HashMap<String, String>>,
140 },
141
142 ApproveTool {
144 sub_id: SubmissionId,
145 event_id: EventId,
146 },
147
148 DenyTool {
150 sub_id: SubmissionId,
151 event_id: EventId,
152 },
153
154 ProvideInput {
156 sub_id: SubmissionId,
157 event_id: EventId,
158 input: String,
159 },
160
161 Abort { sub_id: SubmissionId },
163}