use serde::{Deserialize, Serialize};
use crate::execution::FinishReason;
use crate::session::SessionId;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum GuardDecision {
Continue { nudge: Option<String> },
Complete,
Fail { error: String },
DisableThinking { nudge: String },
RestoreThinking,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GuardCtx {
pub session_id: SessionId,
pub turn_count: u32,
pub user_input: String,
pub model_response: String,
pub finish_reason: FinishReason,
pub available_tools: Vec<String>,
pub reasoning_only_strikes: usize,
pub empty_response_strikes: usize,
pub run_has_tool_calls: bool,
pub all_user_inputs: Vec<String>,
pub is_reasoning_only: bool,
pub is_empty_response: bool,
pub is_text_only: bool,
pub thinking_disabled: bool,
pub original_thinking_enabled: bool,
pub remaining_turns: u32,
}