use clap::{Parser, Subcommand};
pub mod acp;
pub mod agent_turn;
pub mod agents;
pub mod anycli;
pub mod browser;
pub mod approvals;
pub mod channels;
pub mod completion;
pub mod config;
pub mod cron;
pub mod daemon;
pub mod devices;
pub mod directory;
pub mod dns;
pub mod doctor;
pub mod gateway;
pub mod hooks;
pub mod memory;
pub mod message;
pub mod migrate;
pub mod models;
pub mod ops;
pub mod plugins;
pub mod qr;
pub mod sandbox;
pub mod secrets;
pub mod security;
pub mod sessions;
pub mod setup;
pub mod skills;
pub mod system;
pub mod tools;
pub mod webhooks;
pub use acp::AcpCommand;
pub use agent_turn::AgentTurnArgs;
pub use agents::{AgentsCommand, BindArgs};
pub use anycli::AnycliCommand;
pub use browser::BrowserCommand;
pub use approvals::ApprovalsCommand;
pub use channels::ChannelsCommand;
pub use completion::CompletionArgs;
pub use config::ConfigCommand;
pub use cron::{CronAddArgs, CronCommand};
pub use daemon::DaemonCommand;
pub use devices::DevicesCommand;
pub use directory::DirectoryCommand;
pub use dns::DnsCommand;
pub use doctor::DoctorArgs;
pub use gateway::{GatewayCommand, GatewayRunArgs};
pub use hooks::HooksCommand;
pub use memory::{MemoryCommand, MemoryIndexArgs, MemorySearchArgs, MemoryStatusArgs};
pub use message::MessageCommand;
pub use migrate::MigrateArgs;
pub use models::{
AliasesCommand, AuthOrderCommand, FallbacksCommand, ImageFallbacksCommand, ModelsAuthCommand,
ModelsCommand,
};
pub use ops::{
BackupCommand, BackupCreateArgs, HealthArgs, LogsArgs, ResetArgs, StatusArgs, TuiArgs,
UpdateArgs, UpdateCommand,
};
pub use plugins::PluginsCommand;
pub use qr::QrArgs;
pub use sandbox::SandboxCommand;
pub use secrets::{SecretsApplyArgs, SecretsCommand};
pub use security::{SecurityAuditArgs, SecurityCommand};
pub use sessions::{CleanupArgs, SessionsCommand, SessionsListArgs};
pub use setup::{ConfigureArgs, OnboardArgs, SetupArgs};
pub use skills::SkillsCommand;
pub use system::{HeartbeatCommand, SystemCommand};
pub use tools::ToolsCommand;
pub use webhooks::WebhooksCommand;
#[derive(Parser, Debug)]
#[command(
name = "rsclaw",
version = option_env!("RSCLAW_BUILD_VERSION").unwrap_or("dev"),
about = "AI Agent Engine Compatible with OpenClaw",
long_about = None,
)]
pub struct Cli {
#[arg(long, global = true)]
pub dev: bool,
#[arg(long, global = true, value_name = "NAME")]
pub profile: Option<String>,
#[arg(long, global = true, value_name = "PATH")]
pub base_dir: Option<String>,
#[arg(long, global = true, value_name = "PATH")]
pub config_path: Option<String>,
#[arg(long, global = true)]
pub no_color: bool,
#[arg(long, global = true)]
pub json: bool,
#[arg(long, global = true, value_name = "NAME")]
pub container: Option<String>,
#[arg(long, global = true, value_name = "LEVEL")]
pub log_level: Option<String>,
#[command(subcommand)]
pub command: Command,
}
#[derive(Subcommand, Debug)]
pub enum Command {
Setup(SetupArgs),
Onboard(OnboardArgs),
Configure(ConfigureArgs),
#[command(subcommand)]
Config(ConfigCommand),
Doctor(DoctorArgs),
#[command(subcommand)]
Gateway(GatewayCommand),
#[command(hide = true)]
Start,
#[command(hide = true)]
Stop,
#[command(hide = true)]
Restart,
#[command(subcommand)]
Channels(ChannelsCommand),
#[command(subcommand)]
Agents(AgentsCommand),
#[command(subcommand)]
Models(ModelsCommand),
#[command(subcommand)]
Skills(SkillsCommand),
#[command(subcommand)]
Plugins(PluginsCommand),
#[command(subcommand)]
Memory(MemoryCommand),
#[command(subcommand)]
Sessions(SessionsCommand),
#[command(subcommand)]
Cron(CronCommand),
#[command(subcommand)]
Hooks(HooksCommand),
#[command(subcommand)]
System(SystemCommand),
#[command(subcommand)]
Tools(ToolsCommand),
#[command(subcommand)]
Secrets(SecretsCommand),
#[command(subcommand)]
Security(SecurityCommand),
#[command(subcommand)]
Sandbox(SandboxCommand),
Logs(LogsArgs),
Status(StatusArgs),
Health(HealthArgs),
#[command(subcommand)]
Message(MessageCommand),
Tui(TuiArgs),
Tray,
#[command(subcommand)]
Backup(BackupCommand),
Reset(ResetArgs),
#[command(subcommand)]
Update(UpdateCommand),
#[command(subcommand)]
Upgrade(UpdateCommand),
#[command(subcommand)]
Pairing(PairingCommand),
#[command(subcommand)]
Acp(AcpCommand),
#[command(subcommand)]
Approvals(ApprovalsCommand),
#[command(subcommand)]
Devices(DevicesCommand),
#[command(subcommand)]
Directory(DirectoryCommand),
#[command(subcommand)]
Anycli(AnycliCommand),
#[command(subcommand)]
Browser(BrowserCommand),
#[command(subcommand)]
Dns(DnsCommand),
#[command(name = "agent-turn")]
AgentTurn(AgentTurnArgs),
Completion(CompletionArgs),
Dashboard {
#[arg(long)]
no_open: bool,
},
#[command(subcommand)]
Daemon(DaemonCommand),
Docs {
query: Vec<String>,
},
Qr(QrArgs),
Migrate(MigrateArgs),
Uninstall(UninstallArgs),
#[command(subcommand)]
Webhooks(WebhooksCommand),
}
#[derive(clap::Args, Debug)]
pub struct UninstallArgs {
#[arg(long)]
pub service: bool,
#[arg(long)]
pub state: bool,
#[arg(long)]
pub workspace: bool,
#[arg(long)]
pub app: bool,
#[arg(long)]
pub all: bool,
#[arg(long)]
pub dry_run: bool,
#[arg(long)]
pub yes: bool,
#[arg(long)]
pub non_interactive: bool,
}
#[derive(Subcommand, Debug)]
pub enum PairingCommand {
Approve {
code: String,
},
Revoke {
#[arg(long)]
channel: String,
#[arg(long)]
peer: String,
},
List,
}