codetether_agent/session/tasks/
event.rs1use chrono::{DateTime, Utc};
4use serde::{Deserialize, Serialize};
5
6#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
8#[serde(rename_all = "snake_case")]
9pub enum TaskStatus {
10 Pending,
11 InProgress,
12 Done,
13 Blocked,
14 Cancelled,
15}
16
17#[derive(Clone, Debug, Serialize, Deserialize)]
22#[serde(tag = "kind", rename_all = "snake_case")]
23pub enum TaskEvent {
24 GoalSet {
26 at: DateTime<Utc>,
27 objective: String,
28 #[serde(default)]
29 success_criteria: Vec<String>,
30 #[serde(default)]
31 forbidden: Vec<String>,
32 },
33 GoalReaffirmed {
35 at: DateTime<Utc>,
36 progress_note: String,
37 },
38 GoalCleared { at: DateTime<Utc>, reason: String },
40 TaskAdded {
42 at: DateTime<Utc>,
43 id: String,
44 content: String,
45 #[serde(default)]
46 parent_id: Option<String>,
47 },
48 TaskStatus {
50 at: DateTime<Utc>,
51 id: String,
52 status: TaskStatus,
53 #[serde(default)]
54 note: Option<String>,
55 },
56 DriftDetected {
58 at: DateTime<Utc>,
59 tool_calls_since_reaffirm: u32,
60 errors_since_reaffirm: u32,
61 },
62}