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, value_enum, env = "LOCODE_API_SCHEMA", default_value_t = ApiSchema::Anthropic)]
pub api_schema: ApiSchema,
#[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 {
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 ApiSchema {
Anthropic,
#[value(name = "openai-responses")]
OpenAiResponses,
Mock,
}
#[derive(Copy, Clone, Debug, PartialEq, Eq, ValueEnum)]
#[value(rename_all = "kebab-case")]
pub enum OutputFormat {
Json,
Text,
StreamJson,
}