Skip to main content

agent_sessions/
agent.rs

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/// The ledger to emit; selection is explicit to prevent double counting.
62#[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    /// Explicit legacy statistical normalization; adjustments remain observable.
84    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}