use std::path::PathBuf;
use clap::{Parser, ValueEnum};
#[derive(Parser, Debug)]
#[command(name = "locode-exec", version, about)]
pub struct Cli {
pub prompt: Option<String>,
#[arg(long)]
pub cwd: Option<PathBuf>,
#[arg(long, value_enum, default_value_t = Harness::Grok)]
pub harness: Harness,
#[arg(long, env = "LOCODE_API_SCHEMA", default_value = "anthropic")]
pub api_schema: String,
#[arg(long)]
pub max_turns: Option<u32>,
#[arg(long, value_enum, default_value_t = OutputFormat::Json)]
pub output_format: OutputFormat,
#[arg(long, visible_alias = "yolo")]
pub dangerously_skip_permissions: bool,
#[arg(long)]
pub strip_identity: bool,
}
#[derive(Copy, Clone, Debug, PartialEq, Eq, ValueEnum)]
#[value(rename_all = "kebab-case")]
pub enum Harness {
Grok,
}
impl Harness {
#[must_use]
pub fn as_str(self) -> &'static str {
match self {
Harness::Grok => "grok",
}
}
}
#[derive(Copy, Clone, Debug, PartialEq, Eq, ValueEnum)]
#[value(rename_all = "kebab-case")]
pub enum OutputFormat {
Json,
Text,
StreamJson,
}