Skip to main content

claude_rust_coordinator/domain/
agent.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
4pub struct AgentId(pub String);
5
6impl AgentId {
7    pub fn new(id: impl Into<String>) -> Self {
8        Self(id.into())
9    }
10}
11
12impl std::fmt::Display for AgentId {
13    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
14        write!(f, "{}", self.0)
15    }
16}
17
18#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
19pub enum AgentStatus {
20    Idle,
21    Running,
22    Completed,
23    Failed,
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize)]
27pub struct AgentDefinition {
28    pub id: AgentId,
29    pub name: String,
30    pub description: String,
31    pub model: Option<String>,
32    pub system_prompt: Option<String>,
33}
34
35#[derive(Debug, Clone, Serialize, Deserialize)]
36pub struct AgentState {
37    pub definition: AgentDefinition,
38    pub status: AgentStatus,
39    pub created_at: u64,
40}