vtcode_config/
telemetry.rs1use crate::env_helpers::default_true;
2use serde::{Deserialize, Serialize};
3
4#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
5#[derive(Debug, Clone, Deserialize, Serialize)]
6pub struct TelemetryConfig {
7 #[serde(default = "default_true")]
8 pub trajectory_enabled: bool,
9
10 #[serde(default = "default_true")]
12 pub dashboards_enabled: bool,
13
14 #[serde(default = "default_interval")]
16 pub sample_interval_ms: u64,
17
18 #[serde(default = "default_retention_days")]
20 pub retention_days: u32,
21
22 #[serde(default)]
26 pub atif_enabled: bool,
27
28 #[serde(default)]
30 pub bottleneck_tracing: bool,
31
32 #[serde(default = "default_true")]
34 pub perf_events: bool,
35
36 #[serde(default = "default_trajectory_max_files")]
38 pub trajectory_max_files: usize,
39
40 #[serde(default = "default_trajectory_max_age_days")]
42 pub trajectory_max_age_days: u64,
43
44 #[serde(default = "default_trajectory_max_size_mb")]
46 pub trajectory_max_size_mb: u64,
47}
48
49impl Default for TelemetryConfig {
50 fn default() -> Self {
51 Self {
52 trajectory_enabled: true,
53 atif_enabled: false,
54 dashboards_enabled: true,
55 sample_interval_ms: default_interval(),
56 retention_days: default_retention_days(),
57 bottleneck_tracing: true,
58 perf_events: true,
59 trajectory_max_files: default_trajectory_max_files(),
60 trajectory_max_age_days: default_trajectory_max_age_days(),
61 trajectory_max_size_mb: default_trajectory_max_size_mb(),
62 }
63 }
64}
65
66fn default_interval() -> u64 {
67 1000
68}
69
70fn default_retention_days() -> u32 {
71 14
72}
73
74fn default_trajectory_max_files() -> usize {
75 crate::constants::defaults::DEFAULT_TRAJECTORY_MAX_FILES
76}
77
78fn default_trajectory_max_age_days() -> u64 {
79 crate::constants::defaults::DEFAULT_TRAJECTORY_MAX_AGE_DAYS
80}
81
82fn default_trajectory_max_size_mb() -> u64 {
83 crate::constants::defaults::DEFAULT_TRAJECTORY_MAX_SIZE_MB
84}