use rae::flow::completion_gate;
use rae::{
default_validation_profiles, AgentPhase, AgentTask, EditPlan, KanbanBoard, KanbanCard,
RunRecord, RunStatus, TaskStatus,
};
fn main() {
let task = AgentTask {
goal: "Grow rae's examples like KnottTUI".into(),
phase: AgentPhase::ValidateChanges,
decisions: vec![
"examples are renderer-neutral stdout snapshots".into(),
"each major module gets one demo".into(),
],
blockers: Vec::new(),
next_steps: vec![
"cargo test --examples".into(),
"publish next crate patch".into(),
],
};
let plan = EditPlan {
objective: task.goal.clone(),
steps: vec![
"inspect KnottTUI examples".into(),
"add rae examples".into(),
"update docs".into(),
"verify".into(),
],
touched_paths: vec![
"examples/*.rs".into(),
"README.md".into(),
"implementations.md".into(),
],
validation_commands: vec!["cargo test --examples".into(), "cargo test".into()],
};
let board = KanbanBoard {
cards: vec![
card(1, "inventory examples", TaskStatus::Done),
card(2, "write demos", TaskStatus::Doing),
card(3, "publish package", TaskStatus::Todo),
],
};
let latest = RunRecord {
profile: "examples".into(),
command: "cargo test --examples".into(),
status: RunStatus::Passed,
exit_code: Some(0),
output_preview: "all examples compiled".into(),
};
println!("agent task: {}", task.goal);
println!("phase: {}", task.phase.label());
println!("plan objective: {}", plan.objective);
println!("validation profiles:");
for profile in default_validation_profiles() {
println!(
" - {:<6} {:<46} destructive:{}",
profile.name, profile.command, profile.destructive
);
}
println!("kanban counts:");
for status in [
TaskStatus::Todo,
TaskStatus::Doing,
TaskStatus::Done,
TaskStatus::Blocked,
] {
println!(" {} -> {}", status.label(), board.count_for(status));
}
println!(
"completion gate after writes: {:?}",
completion_gate(true, Some(&latest))
);
}
fn card(id: u64, title: &str, status: TaskStatus) -> KanbanCard {
KanbanCard {
id,
title: title.into(),
status,
context_refs: vec!["../KnottTUI/examples".into()],
agent_notes: vec!["keep examples practical and evolving".into()],
}
}