use crate::agent::classifier::TaskCategory;
use crate::agent::custom::CustomAgentConfig;
use crate::config::team::TeamConfig;
pub(super) fn custom_category_score(config: &CustomAgentConfig, category: TaskCategory) -> i32 {
let caps = &config.capabilities;
match category {
TaskCategory::Research => caps.research,
TaskCategory::SimpleEdit => caps.simple_edit,
TaskCategory::ComplexImpl => caps.complex_impl,
TaskCategory::Frontend => caps.frontend,
TaskCategory::Debugging => caps.debugging,
TaskCategory::Testing => caps.testing,
TaskCategory::Refactoring => caps.refactoring,
TaskCategory::Documentation => caps.documentation,
}
}
pub(super) fn custom_strength_bonus(config: &CustomAgentConfig, category: TaskCategory) -> i32 {
let key = match category {
TaskCategory::Research => "research",
TaskCategory::SimpleEdit => "simple_edit",
TaskCategory::ComplexImpl => "complex_impl",
TaskCategory::Frontend => "frontend",
TaskCategory::Debugging => "debugging",
TaskCategory::Testing => "testing",
TaskCategory::Refactoring => "refactoring",
TaskCategory::Documentation => "documentation",
};
if config.strengths.iter().any(|item| item.eq_ignore_ascii_case(key)) { 5 } else { 0 }
}
pub(super) fn custom_command_installed(command: &str) -> bool {
crate::agent::custom_route_blocker(command).is_none()
}
pub(super) fn team_override_score(
team: &TeamConfig,
agent_name: &str,
category: TaskCategory,
) -> Option<i32> {
let overrides = team.overrides.get(agent_name)?;
match category {
TaskCategory::Research => overrides.research,
TaskCategory::SimpleEdit => overrides.simple_edit,
TaskCategory::ComplexImpl => overrides.complex_impl,
TaskCategory::Frontend => overrides.frontend,
TaskCategory::Debugging => overrides.debugging,
TaskCategory::Testing => overrides.testing,
TaskCategory::Refactoring => overrides.refactoring,
TaskCategory::Documentation => overrides.documentation,
}
}