use std::fmt::Debug;
#[derive(Clone, Debug)]
pub enum Role {
Planner,
Coder,
Reviewer,
SecAuditor,
}
#[derive(Clone, Debug)]
pub struct TaskSpec {
pub title: String,
pub constraints: Vec<String>,
pub content: String,
}
#[derive(Clone, Debug)]
pub struct Patch {
pub path: String,
pub diff: String,
}
pub trait Agent: Debug {
fn role(&self) -> Role;
fn step(&self, task: &TaskSpec, state: &TeamState) -> TeamEvent;
}
#[derive(Clone, Debug, Default)]
pub struct TeamState {
pub plan: Vec<String>,
pub patches: Vec<Patch>,
pub notes: Vec<String>,
}
#[derive(Clone, Debug)]
pub enum TeamEvent {
Planned(Vec<String>),
ProposedPatch(Patch),
ReviewNotes(Vec<String>),
SecNotes(Vec<String>),
Idle,
}