mod agent;
mod auth;
mod clip;
mod config;
mod create;
mod library;
mod media;
mod models;
mod persona;
mod playlist;
mod update;
mod wait;
pub use agent::{InstallSkillArgs, SkillTarget};
pub use auth::AuthArgs;
pub use clip::{ClipArgs, ClipCommand};
pub use config::{ConfigAction, ConfigArgs};
pub use create::{
ConcatArgs, CoverArgs, CreateArgs, DescribeArgs, ExtendArgs, GenerateArgs, LyricsArgs,
RemasterArgs, SpeedArgs, StemsArgs,
};
pub use library::{
DeleteArgs, InfoArgs, ListArgs, PublishArgs, ReactionArgs, RestoreArgs, SearchArgs, SetArgs,
StatusArgs,
};
pub use media::{DownloadArgs, TimedLyricsArgs, UploadArgs};
pub use models::{ModelVersion, RemasterModel, VocalGender};
pub use persona::{
PersonaArgs, PersonaClipsArgs, PersonaCommand, PersonaCreateArgs, PersonaDeleteArgs,
PersonaInfoArgs, PersonaListArgs, PersonaListKind, PersonaLoveArgs, PersonaProcessedClipArgs,
PersonaPublishArgs, PersonaRestoreArgs, PersonaSetArgs, PersonaToggleLoveArgs,
};
pub use playlist::{
AddArgs, PlaylistArgs, PlaylistCommand, PlaylistCreateArgs, PlaylistDeleteArgs,
PlaylistInfoArgs, PlaylistListArgs, PlaylistPublishArgs, PlaylistReactionArgs,
PlaylistReorderArgs, PlaylistRestoreArgs, PlaylistSaveArgs, PlaylistSetArgs,
PlaylistTracksArgs,
};
pub use update::UpdateArgs;
pub use wait::WaitArgs;
use clap::{Parser, Subcommand};
#[derive(Parser)]
#[command(
name = "sunox",
version,
about = "Suno AI music generation CLI — direct Suno web workflow"
)]
pub struct Cli {
pub prompt: Option<String>,
#[command(subcommand)]
pub command: Option<Commands>,
#[arg(short = 'c', long = "config", value_name = "key=value", global = true)]
pub config_overrides: Vec<String>,
#[arg(long, global = true)]
pub json: bool,
#[arg(long, global = true)]
pub quiet: bool,
#[arg(long, global = true)]
pub parallel: bool,
}
#[derive(Subcommand)]
pub enum Commands {
Create(CreateArgs),
Download(DownloadArgs),
Add(AddArgs),
Lyrics(LyricsArgs),
Clip(ClipArgs),
Persona(PersonaArgs),
Playlist(PlaylistArgs),
Credits,
Models,
Auth(AuthArgs),
Login,
Logout,
Config(ConfigArgs),
Doctor,
AgentInfo,
InstallSkill(InstallSkillArgs),
Update(UpdateArgs),
}