use anyhow::Result;
#[derive(Debug, Clone)]
pub struct SubProblem {
pub category: SubProblemCategory,
pub description: String,
pub status: SubProblemStatus,
pub result: Option<String>,
}
#[derive(Debug, Clone, PartialEq)]
pub enum SubProblemCategory {
MainSkill,
SupportGems,
PassiveTree,
Gear,
Defenses,
ResourceSustain,
}
#[derive(Debug, Clone, PartialEq)]
pub enum SubProblemStatus {
Pending,
InProgress,
NeedsValidation,
Validated,
Conflict,
}
#[derive(Debug)]
pub struct BuildState {
pub sub_problems: Vec<SubProblem>,
pub pob_code: Option<String>,
pub conflicts: Vec<String>,
pub iteration: u32,
}
impl BuildState {
pub fn new() -> Self {
Self {
sub_problems: Vec::new(),
pob_code: None,
conflicts: Vec::new(),
iteration: 0,
}
}
pub fn is_complete(&self) -> bool {
self.sub_problems
.iter()
.all(|sp| sp.status == SubProblemStatus::Validated)
&& self.conflicts.is_empty()
}
}
pub async fn generate_build(_prompt: &str, _step_through: bool) -> Result<BuildState> {
Ok(BuildState::new())
}