code_mesh_core/agent/
mod.rs1use async_trait::async_trait;
4use serde::{Deserialize, Serialize};
5
6#[async_trait]
8pub trait Agent: Send + Sync {
9 fn id(&self) -> &str;
11
12 fn name(&self) -> &str;
14
15 fn capabilities(&self) -> &[String];
17
18 async fn execute(&self, task: Task) -> crate::Result<TaskResult>;
20}
21
22#[derive(Debug, Clone, Serialize, Deserialize)]
24pub struct Task {
25 pub id: String,
26 pub description: String,
27 pub context: serde_json::Value,
28 pub dependencies: Vec<String>,
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize)]
33pub struct TaskResult {
34 pub task_id: String,
35 pub status: TaskStatus,
36 pub output: serde_json::Value,
37 pub error: Option<String>,
38}
39
40#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
41#[serde(rename_all = "lowercase")]
42pub enum TaskStatus {
43 Pending,
44 Running,
45 Completed,
46 Failed,
47}