vtcode_config/core/agent/
circuit_breaker.rs1use serde::{Deserialize, Serialize};
4
5#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
6#[derive(Debug, Clone, Deserialize, Serialize)]
7pub struct CircuitBreakerConfig {
8 #[serde(default = "default_circuit_breaker_enabled")]
10 pub enabled: bool,
11
12 #[serde(default = "default_failure_threshold")]
14 pub failure_threshold: u32,
15
16 #[serde(default = "default_pause_on_open")]
18 pause_on_open: bool,
19
20 #[serde(default = "default_max_open_circuits")]
22 max_open_circuits: usize,
23
24 #[serde(default = "default_recovery_cooldown")]
26 pub recovery_cooldown: u64,
27}
28
29impl Default for CircuitBreakerConfig {
30 fn default() -> Self {
31 Self {
32 enabled: default_circuit_breaker_enabled(),
33 failure_threshold: default_failure_threshold(),
34 pause_on_open: default_pause_on_open(),
35 max_open_circuits: default_max_open_circuits(),
36 recovery_cooldown: default_recovery_cooldown(),
37 }
38 }
39}
40#[inline]
41const fn default_circuit_breaker_enabled() -> bool {
42 true }
44
45#[inline]
46const fn default_failure_threshold() -> u32 {
47 7 }
49
50#[inline]
51const fn default_pause_on_open() -> bool {
52 true }
54
55#[inline]
56const fn default_max_open_circuits() -> usize {
57 3 }
59
60#[inline]
61const fn default_recovery_cooldown() -> u64 {
62 60 }