agtrace_types/
lib.rs

1pub mod models;
2mod util;
3
4use serde::{Deserialize, Serialize};
5
6pub use models::*;
7pub use util::*;
8
9/// Git repository context
10#[derive(Debug, Clone, Serialize, Deserialize, Default)]
11pub struct GitContext {
12    #[serde(skip_serializing_if = "Option::is_none")]
13    pub branch: Option<String>,
14    #[serde(skip_serializing_if = "Option::is_none")]
15    pub commit: Option<String>,
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub is_dirty: Option<bool>,
18}
19
20/// Execution environment context
21#[derive(Debug, Clone, Serialize, Deserialize, Default)]
22pub struct RunContext {
23    #[serde(skip_serializing_if = "Option::is_none")]
24    pub cwd: Option<String>,
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub git: Option<GitContext>,
27    #[serde(skip_serializing_if = "Option::is_none")]
28    pub runtime: Option<String>,
29}
30
31/// Agent control policy and constraints
32#[derive(Debug, Clone, Serialize, Deserialize, Default)]
33pub struct AgentPolicy {
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub sandbox_mode: Option<String>,
36    #[serde(skip_serializing_if = "Option::is_none")]
37    pub network_access: Option<String>,
38    #[serde(skip_serializing_if = "Option::is_none")]
39    pub approval_policy: Option<String>,
40}
41
42/// Source of the agent log (provider-agnostic identifier)
43#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
44#[serde(transparent)]
45pub struct Source(String);
46
47impl Source {
48    pub fn new(name: impl Into<String>) -> Self {
49        Self(name.into())
50    }
51}
52
53/// Tool execution status (used in Span API)
54#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
55#[serde(rename_all = "snake_case")]
56pub enum ToolStatus {
57    Success,
58    Error,
59    InProgress,
60    Unknown,
61}
62
63/// Session summary for listing
64#[derive(Debug, Clone, Serialize, Deserialize)]
65pub struct SessionSummary {
66    pub session_id: String,
67    pub source: Source,
68    pub project_hash: String,
69    pub start_ts: String,
70    pub end_ts: String,
71    pub event_count: usize,
72    pub user_message_count: usize,
73    pub tokens_input_total: u64,
74    pub tokens_output_total: u64,
75}