use std::path::PathBuf;

use clap::Parser;

use super::{Commands, post_action_wait::PostActionWaitArgs};
use crate::cli_args::interaction::InteractionArgs;

const BEFORE_HELP: &str = include_str!("help_before.txt");
const AFTER_HELP: &str = include_str!("help_after.txt");

#[derive(Parser, Debug)]
#[command(
    name = "agent-desktop",
    version,
    about = "Reliable computer use for AI agents — see and operate desktop apps",
    long_about = None,
    before_help = BEFORE_HELP,
    after_help = AFTER_HELP,
)]
pub(crate) struct Cli {
    #[command(flatten)]
    pub visual_debug: crate::visual_debug::options::DebugOptions,
    #[command(flatten)]
    pub identity: super::identity::IdentityArgs,
    #[arg(
        long,
        global = true,
        help = "Append reliability trace JSONL to this path"
    )]
    pub trace: Option<PathBuf>,
    #[arg(
        long,
        global = true,
        help = "Fail on trace setup/pre-action write errors"
    )]
    pub trace_strict: bool,
    #[command(flatten)]
    pub interaction: InteractionArgs,
    #[command(flatten)]
    pub post_action_wait: PostActionWaitArgs,
    #[command(subcommand)]
    pub command: Option<Commands>,
}