vtcode_core/tools/registry/
timeout_facade.rs1use 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 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}