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)]
23 pub bottleneck_tracing: bool,
24
25 #[serde(default = "default_true")]
27 pub perf_events: bool,
28
29 #[serde(default = "default_trajectory_max_files")]
31 pub trajectory_max_files: usize,
32
33 #[serde(default = "default_trajectory_max_age_days")]
35 pub trajectory_max_age_days: u64,
36
37 #[serde(default = "default_trajectory_max_size_mb")]
39 pub trajectory_max_size_mb: u64,
40}
41
42impl Default for TelemetryConfig {
43 fn default() -> Self {
44 Self {
45 trajectory_enabled: true,
46 dashboards_enabled: true,
47 sample_interval_ms: default_interval(),
48 retention_days: default_retention_days(),
49 bottleneck_tracing: true,
50 perf_events: true,
51 trajectory_max_files: default_trajectory_max_files(),
52 trajectory_max_age_days: default_trajectory_max_age_days(),
53 trajectory_max_size_mb: default_trajectory_max_size_mb(),
54 }
55 }
56}
57
58fn default_true() -> bool {
59 true
60}
61
62fn default_interval() -> u64 {
63 1000
64}
65
66fn default_retention_days() -> u32 {
67 14
68}
69
70fn default_trajectory_max_files() -> usize {
71 crate::constants::defaults::DEFAULT_TRAJECTORY_MAX_FILES
72}
73
74fn default_trajectory_max_age_days() -> u64 {
75 crate::constants::defaults::DEFAULT_TRAJECTORY_MAX_AGE_DAYS
76}
77
78fn default_trajectory_max_size_mb() -> u64 {
79 crate::constants::defaults::DEFAULT_TRAJECTORY_MAX_SIZE_MB
80}