use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use std::path::PathBuf;
#[path = "checkpoint_assemble.rs"]
mod checkpoint_assemble;
#[path = "checkpoint_assistant.rs"]
mod checkpoint_assistant;
#[path = "checkpoint_build.rs"]
mod checkpoint_build;
#[path = "checkpoint_defaults.rs"]
mod checkpoint_defaults;
#[path = "checkpoint_state.rs"]
mod checkpoint_state;
#[path = "checkpoint_text.rs"]
mod checkpoint_text;
#[path = "checkpoint_tool.rs"]
mod checkpoint_tool;
#[path = "checkpoint_update.rs"]
mod checkpoint_update;
#[path = "checkpoint_walk.rs"]
mod checkpoint_walk;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct RunCheckpoint {
pub reason: CheckpointReason,
pub original_objective: String,
pub max_step_budget: usize,
pub session_id: String,
pub workspace: Option<PathBuf>,
pub message_count: usize,
pub current_browser_url: Option<String>,
pub completed_actions: Vec<String>,
pub blockers: Vec<String>,
pub next_intended_action: String,
pub created_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum CheckpointReason {
MaxStepsExhausted,
}