1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
4#[non_exhaustive]
5pub enum Agent {
6 ClaudeCode,
7 Codex,
8}
9
10#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
11#[non_exhaustive]
12pub enum FileKind {
13 Main,
14 Subagent,
15}
16
17#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize)]
18#[non_exhaustive]
19pub enum Origin {
20 #[default]
21 Unknown,
22 Interactive,
23 Ide,
24 Exec,
25 Subagent,
26}
27
28impl Origin {
29 pub(crate) fn priority(self) -> u8 {
30 match self {
31 Self::Unknown => 0,
32 Self::Interactive => 1,
33 Self::Ide => 2,
34 Self::Exec => 3,
35 Self::Subagent => 4,
36 }
37 }
38}
39
40#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
41#[non_exhaustive]
42pub enum Role {
43 User,
44 Assistant,
45 System,
46 Developer,
47}
48
49impl Role {
50 pub(crate) fn parse(value: &str) -> Option<Self> {
51 match value {
52 "user" => Some(Self::User),
53 "assistant" => Some(Self::Assistant),
54 "system" => Some(Self::System),
55 "developer" => Some(Self::Developer),
56 _ => None,
57 }
58 }
59}
60
61#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
63#[non_exhaustive]
64pub enum CodexUsageMode {
65 #[default]
66 TokenCount,
67 Response,
68}
69
70#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize)]
71#[non_exhaustive]
72pub enum Endpoint {
73 Native,
74 Proxy,
75 #[default]
76 Unknown,
77}
78
79#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
80pub enum AccountingPolicy {
81 #[default]
82 Strict,
83 UsageStatistics,
85}
86
87#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
88#[non_exhaustive]
89pub enum ToolCallKind {
90 Function,
91 Custom,
92 Server,
93}