vtcode_config/
telemetry.rs1use 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 #[serde(default = "default_true")]
11 pub dashboards_enabled: bool,
12
13 #[serde(default = "default_interval")]
15 pub sample_interval_ms: u64,
16
17 #[serde(default = "default_retention_days")]
19 pub retention_days: u32,
20
21 #[serde(default)]
25 pub atif_enabled: bool,
26
27 #[serde(default)]
29 pub bottleneck_tracing: bool,
30
31 #[serde(default = "default_true")]
33 pub perf_events: bool,
34
35 #[serde(default = "default_trajectory_max_files")]
37 pub trajectory_max_files: usize,
38
39 #[serde(default = "default_trajectory_max_age_days")]
41 pub trajectory_max_age_days: u64,
42
43 #[serde(default = "default_trajectory_max_size_mb")]
45 pub trajectory_max_size_mb: u64,
46}
47
48impl Default for TelemetryConfig {
49 fn default() -> Self {
50 Self {
51 trajectory_enabled: true,
52 atif_enabled: false,
53 dashboards_enabled: true,
54 sample_interval_ms: default_interval(),
55 retention_days: default_retention_days(),
56 bottleneck_tracing: true,
57 perf_events: true,
58 trajectory_max_files: default_trajectory_max_files(),
59 trajectory_max_age_days: default_trajectory_max_age_days(),
60 trajectory_max_size_mb: default_trajectory_max_size_mb(),
61 }
62 }
63}
64
65fn default_true() -> bool {
66 true
67}
68
69fn default_interval() -> u64 {
70 1000
71}
72
73fn default_retention_days() -> u32 {
74 14
75}
76
77fn default_trajectory_max_files() -> usize {
78 crate::constants::defaults::DEFAULT_TRAJECTORY_MAX_FILES
79}
80
81fn default_trajectory_max_age_days() -> u64 {
82 crate::constants::defaults::DEFAULT_TRAJECTORY_MAX_AGE_DAYS
83}
84
85fn default_trajectory_max_size_mb() -> u64 {
86 crate::constants::defaults::DEFAULT_TRAJECTORY_MAX_SIZE_MB
87}