mod agent;
mod bash_mode;
mod checkpoints;
mod cli;
mod commands;
mod compaction;
pub mod config;
pub mod context;
mod hash;
mod herdr;
mod hex;
mod hooks;
mod http_body;
mod instructions;
mod login;
mod lsp;
mod mcp;
mod model_catalog;
mod output;
mod persistence;
mod primary_agents;
mod prompt_file;
mod providers;
mod rendering;
pub mod sessions;
mod shell;
mod skills;
mod subagents;
#[cfg(test)]
mod test_support;
mod thinking;
mod tool_display;
mod tools;
mod tui;
mod tui2;
pub use providers::{ChatMessage, MessageRole, Usage};
pub use thinking::ThinkingLevel;
use anyhow::Result;
use clap::Parser;
pub fn run_from_env() -> Result<()> {
run_from_env_inner().map_err(crate::cli::AppError::into_error)
}
pub fn run_from_env_with_exit_code() -> std::process::ExitCode {
match run_from_env_inner() {
Ok(()) => std::process::ExitCode::SUCCESS,
Err(error) => {
eprintln!("Error: {:?}", error.as_error());
error.exit_code()
}
}
}
fn run_from_env_inner() -> crate::cli::AppResult<()> {
let args = cli::CliArgs::parse();
cli::run(args)
}