ai_agent/types/
task_types.rs1use serde::{Deserialize, Serialize};
4
5#[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#[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}