meerkat-core 0.5.0

Core agent logic for Meerkat (no I/O deps)
Documentation
// @generated — terminal surface mapping for `TurnExecutionMachine`
// Generated by `xtask protocol-codegen`
// Exhaustive match — adding a new TurnTerminalOutcome variant forces a compile-time update.

use crate::turn_execution_authority::TurnTerminalOutcome;

/// Surface result classification for turn execution terminal outcomes.
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum SurfaceResultClass {
    Success,
    HardFailure,
    Cancelled,
}

/// Exhaustive terminal outcome classification for `TurnExecutionMachine`.
/// No default arm — adding a new `TurnTerminalOutcome` variant forces a compile-time update.
/// Returns `None` when no terminal outcome has been recorded yet.
pub fn classify_terminal(outcome: &TurnTerminalOutcome) -> Option<SurfaceResultClass> {
    match outcome {
        TurnTerminalOutcome::None => None,
        TurnTerminalOutcome::Completed => Some(SurfaceResultClass::Success),
        TurnTerminalOutcome::Failed => Some(SurfaceResultClass::HardFailure),
        TurnTerminalOutcome::Cancelled => Some(SurfaceResultClass::Cancelled),
        TurnTerminalOutcome::BudgetExhausted => Some(SurfaceResultClass::Success),
        TurnTerminalOutcome::TimeBudgetExceeded => Some(SurfaceResultClass::HardFailure),
        TurnTerminalOutcome::StructuredOutputValidationFailed => {
            Some(SurfaceResultClass::HardFailure)
        }
    }
}