stynx-code 3.7.0

stynx-code — interactive AI coding assistant
use clap::Parser;

#[derive(Parser, Debug)]
#[command(
    name = "stynx",
    about = "stynx-code — interactive AI coding assistant",
    version,
    after_help = "EXAMPLES:\n  \
        stynx                          Interactive TUI\n  \
        stynx -p 'explain this'        One-shot query\n  \
        cat file.rs | stynx            Pipe mode\n  \
        stynx --json -p 'list files'   JSON output mode"
)]
pub struct Cli {
    #[arg(short, long, help = "One-shot prompt to send")]
    pub prompt: Option<String>,

    #[arg(short, long, help = "Override model name")]
    pub model: Option<String>,

    #[arg(long, help = "Output JSON instead of plain text")]
    pub json: bool,

    #[arg(long, help = "Maximum agentic turns")]
    pub max_turns: Option<usize>,

    #[arg(long, help = "System prompt override")]
    pub system: Option<String>,

    #[arg(long, help = "Enable verbose logging")]
    pub verbose: bool,

    #[arg(long, help = "Thinking budget tokens (also sets max_tokens, thinking uses max_tokens - 16384)")]
    pub thinking_budget: Option<u32>,

    #[arg(long, help = "Effort level: max, high, medium, low (enables thinking + effort)")]
    pub effort: Option<String>,
}

impl Cli {
    pub fn is_piped() -> bool {
        !std::io::IsTerminal::is_terminal(&std::io::stdin())
    }
}