code_mesh_core/agent/
mod.rs

1//! Agent orchestration for Code Mesh
2
3use async_trait::async_trait;
4use serde::{Deserialize, Serialize};
5
6/// Agent trait for AI agents
7#[async_trait]
8pub trait Agent: Send + Sync {
9    /// Get agent ID
10    fn id(&self) -> &str;
11    
12    /// Get agent name
13    fn name(&self) -> &str;
14    
15    /// Get agent capabilities
16    fn capabilities(&self) -> &[String];
17    
18    /// Execute a task
19    async fn execute(&self, task: Task) -> crate::Result<TaskResult>;
20}
21
22/// Task for an agent to execute
23#[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/// Result of task execution
32#[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}