Skip to main content

ai_agent/types/
task_types.rs

1// Task types module
2
3use serde::{Deserialize, Serialize};
4
5/// Task status enum.
6#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
7#[serde(rename_all = "lowercase")]
8pub enum TaskStatus {
9    Pending,
10    Running,
11    Completed,
12    Failed,
13    Cancelled,
14}
15
16/// Task context with lifecycle tracking.
17#[derive(Debug, Clone, Serialize, Deserialize)]
18pub struct TaskContext {
19    pub id: String,
20    pub status: TaskStatus,
21    #[serde(rename = "createdAt")]
22    pub created_at: u64,
23    #[serde(rename = "updatedAt")]
24    pub updated_at: u64,
25}
26
27impl TaskContext {
28    pub fn new(id: &str) -> Self {
29        let now = std::time::SystemTime::now()
30            .duration_since(std::time::UNIX_EPOCH)
31            .unwrap()
32            .as_millis() as u64;
33
34        Self {
35            id: id.to_string(),
36            status: TaskStatus::Pending,
37            created_at: now,
38            updated_at: now,
39        }
40    }
41
42    pub fn is_running(&self) -> bool {
43        self.status == TaskStatus::Running
44    }
45
46    pub fn is_completed(&self) -> bool {
47        self.status == TaskStatus::Completed
48    }
49}