use crate::engine::streaming::ToolUseState;
use crate::error_taxonomy::ErrorCategory;
use crate::turn::TurnOutcomeStatus;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum TurnLoopControl {
Continue,
Break,
Return(TurnOutcomeStatus, Option<String>),
}
#[derive(Debug, Default)]
pub struct TurnLoopToolPhaseOutcome {
pub step_error_count: usize,
pub step_error_categories: Vec<ErrorCategory>,
pub break_outer_loop: bool,
pub loop_guard_halted: bool,
pub continue_outer_loop: bool,
}
#[derive(Debug, Default)]
pub struct TurnLoopStreamingPhaseOutcome {
pub tool_uses: Vec<ToolUseState>,
pub pending_steers: Vec<String>,
pub continue_outer_loop: bool,
pub break_outer_loop: bool,
pub return_early: Option<(TurnOutcomeStatus, Option<String>)>,
}