codetether_agent/swarm/validation/
validator.rs1use super::{IssueSeverity, ValidationReport};
2use crate::swarm::{SubTask, SwarmConfig};
3use anyhow::Result;
4
5pub struct SwarmValidator {
7 pub(super) config: SwarmConfig,
8 pub(super) provider: String,
9 pub(super) model: String,
10}
11
12impl SwarmValidator {
13 pub fn new(config: SwarmConfig, provider: String, model: String) -> Self {
15 Self {
16 config,
17 provider,
18 model,
19 }
20 }
21
22 pub async fn validate(&self, subtasks: &[SubTask]) -> Result<ValidationReport> {
24 let mut issues = Vec::new();
25 let provider_status = self.validate_provider(&mut issues).await?;
26 let workspace_status = self.validate_workspace(&mut issues)?;
27 self.validate_configuration(&mut issues);
28 self.validate_dependencies(subtasks, &mut issues);
29 let estimated_tokens = self.estimate_token_usage(subtasks, &provider_status, &mut issues);
30 let is_valid = !issues.iter().any(|i| i.severity == IssueSeverity::Error);
31 Ok(ValidationReport {
32 is_valid,
33 issues,
34 estimated_tokens,
35 provider_status,
36 workspace_status,
37 })
38 }
39}