Skip to main content

vv_agent/types/
status.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
4#[serde(rename_all = "snake_case")]
5pub enum AgentStatus {
6    Pending,
7    Running,
8    WaitUser,
9    Completed,
10    Failed,
11    MaxCycles,
12    ReconciliationRequired,
13}
14
15#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
16#[serde(rename_all = "snake_case")]
17#[non_exhaustive]
18pub enum CompletionReason {
19    ToolFinish,
20    NoToolFinish,
21    StopOnFirstTool,
22    StopAtToolName,
23    WaitUser,
24    MaxCycles,
25    Cancelled,
26    Failed,
27    BudgetExhausted,
28}
29
30impl CompletionReason {
31    pub fn as_str(self) -> &'static str {
32        match self {
33            Self::ToolFinish => "tool_finish",
34            Self::NoToolFinish => "no_tool_finish",
35            Self::StopOnFirstTool => "stop_on_first_tool",
36            Self::StopAtToolName => "stop_at_tool_name",
37            Self::WaitUser => "wait_user",
38            Self::MaxCycles => "max_cycles",
39            Self::Cancelled => "cancelled",
40            Self::Failed => "failed",
41            Self::BudgetExhausted => "budget_exhausted",
42        }
43    }
44
45    pub fn parse(value: &str) -> Option<Self> {
46        match value {
47            "tool_finish" => Some(Self::ToolFinish),
48            "no_tool_finish" => Some(Self::NoToolFinish),
49            "stop_on_first_tool" => Some(Self::StopOnFirstTool),
50            "stop_at_tool_name" => Some(Self::StopAtToolName),
51            "wait_user" => Some(Self::WaitUser),
52            "max_cycles" => Some(Self::MaxCycles),
53            "cancelled" => Some(Self::Cancelled),
54            "failed" => Some(Self::Failed),
55            "budget_exhausted" => Some(Self::BudgetExhausted),
56            _ => None,
57        }
58    }
59}
60
61#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
62#[serde(rename_all = "snake_case")]
63pub enum ToolDirective {
64    Continue,
65    WaitUser,
66    Finish,
67}
68
69#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
70#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
71pub enum ToolResultStatus {
72    Success,
73    Error,
74    WaitResponse,
75    Running,
76    PendingCompress,
77}
78
79#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
80#[serde(rename_all = "snake_case")]
81pub enum CycleStatus {
82    Pending,
83    Processing,
84    Completed,
85    WaitResponse,
86    Failed,
87}
88
89#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
90#[serde(rename_all = "snake_case")]
91pub enum NoToolPolicy {
92    #[default]
93    Continue,
94    WaitUser,
95    Finish,
96}