Skip to main content

vtcode_config/
telemetry.rs

1use serde::{Deserialize, Serialize};
2
3#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
4#[derive(Debug, Clone, Deserialize, Serialize)]
5pub struct TelemetryConfig {
6    #[serde(default = "default_true")]
7    pub trajectory_enabled: bool,
8
9    /// Enable real-time dashboards
10    #[serde(default = "default_true")]
11    pub dashboards_enabled: bool,
12
13    /// KPI sampling interval in milliseconds
14    #[serde(default = "default_interval")]
15    pub sample_interval_ms: u64,
16
17    /// Retention window for historical benchmarking (days)
18    #[serde(default = "default_retention_days")]
19    pub retention_days: u32,
20
21    /// Emit bottleneck traces for slow paths
22    #[serde(default)]
23    pub bottleneck_tracing: bool,
24
25    /// Emit performance events for file I/O, spawns, and UI latency
26    #[serde(default = "default_true")]
27    pub perf_events: bool,
28}
29
30impl Default for TelemetryConfig {
31    fn default() -> Self {
32        Self {
33            trajectory_enabled: true,
34            dashboards_enabled: true,
35            sample_interval_ms: default_interval(),
36            retention_days: default_retention_days(),
37            bottleneck_tracing: true,
38            perf_events: true,
39        }
40    }
41}
42
43fn default_true() -> bool {
44    true
45}
46
47fn default_interval() -> u64 {
48    1000
49}
50
51fn default_retention_days() -> u32 {
52    14
53}