Skip to main content

vtcode_core/tools/registry/
timeout_facade.rs

1//! Timeout configuration helpers for ToolRegistry.
2
3use crate::config::TimeoutsConfig;
4
5use super::{ToolRegistry, ToolTimeoutPolicy};
6
7impl ToolRegistry {
8    pub fn apply_timeout_policy(&self, timeouts: &TimeoutsConfig) {
9        let policy = ToolTimeoutPolicy::from_config(timeouts);
10
11        // Validate the policy before applying
12        match policy.validate() {
13            Ok(()) => {
14                *self.timeout_policy.write() = policy;
15            }
16            Err(e) => {
17                tracing::warn!(
18                    error = %e,
19                    "Invalid timeout configuration detected, using defaults"
20                );
21                *self.timeout_policy.write() = ToolTimeoutPolicy::default();
22            }
23        }
24
25        self.resiliency.lock().adaptive_tuning = super::config_helpers::load_adaptive_tuning_from_config(timeouts);
26    }
27
28    pub fn timeout_policy(&self) -> ToolTimeoutPolicy {
29        self.timeout_policy.read().clone()
30    }
31
32    pub fn rate_limit_per_minute(&self) -> Option<usize> {
33        self.execution_history.rate_limit_per_minute()
34    }
35}