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        if let Err(e) = policy.validate() {
13            tracing::warn!(
14                error = %e,
15                "Invalid timeout configuration detected, using defaults"
16            );
17            if let Ok(mut guard) = self.timeout_policy.write() {
18                *guard = ToolTimeoutPolicy::default();
19            }
20        } else if let Ok(mut guard) = self.timeout_policy.write() {
21            *guard = policy;
22        }
23
24        self.resiliency.lock().adaptive_tuning =
25            super::config_helpers::load_adaptive_tuning_from_config(timeouts);
26    }
27
28    pub fn timeout_policy(&self) -> ToolTimeoutPolicy {
29        self.timeout_policy
30            .read()
31            .ok()
32            .map(|g| g.clone())
33            .unwrap_or_default()
34    }
35
36    pub fn rate_limit_per_minute(&self) -> Option<usize> {
37        self.execution_history.rate_limit_per_minute()
38    }
39}