codetether-agent 4.7.0-a-002.4

A2A-native AI coding agent for the CodeTether ecosystem
Documentation
use super::{IssueCategory, IssueSeverity, SwarmValidator, ValidationIssue};
use crate::provider::ProviderRegistry;

impl SwarmValidator {
    pub(super) async fn context_window(&self, registry: &ProviderRegistry) -> usize {
        let Some(provider) = registry.get(&self.provider) else {
            return 128_000;
        };
        provider
            .list_models()
            .await
            .ok()
            .and_then(|models| model_context_window(&models, &self.model))
            .unwrap_or(128_000)
    }

    pub(super) fn unavailable_provider_issue(&self, available: &[&str]) -> ValidationIssue {
        ValidationIssue {
            severity: IssueSeverity::Error,
            category: IssueCategory::Provider,
            message: format!(
                "Provider '{}' is not available. Available providers: {}",
                self.provider,
                available.join(", ")
            ),
            suggestion: Some(format!(
                "Set credentials in Vault at secret/codetether/providers/{}",
                self.provider
            )),
        }
    }
}

fn model_context_window(models: &[crate::provider::ModelInfo], model_id: &str) -> Option<usize> {
    models
        .iter()
        .find(|model| model.id == model_id)
        .map(|model| model.context_window)
}