//! Contract subcommand - task-contract interaction commands. use clap::Args; use uuid::Uuid; /// Common arguments for contract commands. #[derive(Args, Debug, Clone)] pub struct ContractArgs { /// API URL #[arg(long, env = "MAKIMA_API_URL", default_value = "https://api.makima.jp", global = true)] pub api_url: String, /// API key for authentication #[arg(long, env = "MAKIMA_API_KEY", global = true)] pub api_key: String, /// Current task ID (optional) #[arg(long, env = "MAKIMA_TASK_ID", global = true)] pub task_id: Option, /// Contract ID #[arg(long, env = "MAKIMA_CONTRACT_ID", global = true)] pub contract_id: Uuid, } /// Arguments for file command (get specific file). #[derive(Args, Debug)] pub struct FileArgs { #[command(flatten)] pub common: ContractArgs, /// File ID to retrieve pub file_id: Uuid, } /// Arguments for report command. #[derive(Args, Debug)] pub struct ReportArgs { #[command(flatten)] pub common: ContractArgs, /// Progress message pub message: String, } /// Arguments for completion-action command. #[derive(Args, Debug)] pub struct CompletionActionArgs { #[command(flatten)] pub common: ContractArgs, /// Comma-separated list of modified files #[arg(long)] pub files: Option, /// Number of lines added #[arg(long, default_value = "0")] pub lines_added: i32, /// Number of lines removed #[arg(long, default_value = "0")] pub lines_removed: i32, /// Whether there are code changes #[arg(long)] pub code: bool, } /// Arguments for update-file command. #[derive(Args, Debug)] pub struct UpdateFileArgs { #[command(flatten)] pub common: ContractArgs, /// File ID to update pub file_id: Uuid, } /// Arguments for create-file command. #[derive(Args, Debug)] pub struct CreateFileArgs { #[command(flatten)] pub common: ContractArgs, /// Name of the new file pub name: String, }