#[derive(Debug, Clone, PartialEq, Eq)]
pub enum TeamStrategy {
ManagerWorker,
Pipeline(Vec<String>),
Debate {
judge: String,
debaters: Vec<String>,
},
Swarm {
batch_size: usize,
reducer: String,
},
}
impl Default for TeamStrategy {
fn default() -> Self {
Self::ManagerWorker
}
}
impl TeamStrategy {
pub fn name(&self) -> &str {
match self {
Self::ManagerWorker => "manager-worker",
Self::Pipeline(_) => "pipeline",
Self::Debate { .. } => "debate",
Self::Swarm { .. } => "swarm",
}
}
pub fn description(&self) -> &str {
match self {
Self::ManagerWorker => {
"Manager decomposes task → workers execute sub-tasks → manager synthesizes result"
}
Self::Pipeline(_) => {
"Agents run in sequence: each output becomes the next agent's input"
}
Self::Debate { .. } => "Multiple agents propose solutions, judge selects the best one",
Self::Swarm { .. } => "Work is split across agents, reducer merges findings",
}
}
}