From 87044a747b47bd83249d61a45842c7f7b2eae56d Mon Sep 17 00:00:00 2001 From: soryu Date: Sun, 11 Jan 2026 05:52:14 +0000 Subject: Contract system --- makima/src/daemon/cli/supervisor.rs | 146 ++++++++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 makima/src/daemon/cli/supervisor.rs (limited to 'makima/src/daemon/cli/supervisor.rs') diff --git a/makima/src/daemon/cli/supervisor.rs b/makima/src/daemon/cli/supervisor.rs new file mode 100644 index 0000000..00c7ff4 --- /dev/null +++ b/makima/src/daemon/cli/supervisor.rs @@ -0,0 +1,146 @@ +//! Supervisor subcommand - contract orchestration commands. + +use clap::Args; +use uuid::Uuid; + +/// Common arguments for supervisor commands. +#[derive(Args, Debug, Clone)] +pub struct SupervisorArgs { + /// API URL + #[arg(long, env = "MAKIMA_API_URL", default_value = "http://localhost:8080", 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 spawn command. +#[derive(Args, Debug)] +pub struct SpawnArgs { + #[command(flatten)] + pub common: SupervisorArgs, + + /// Name of the task + pub name: String, + + /// Plan/description for the task + pub plan: String, + + /// Parent task ID to branch from + #[arg(long)] + pub parent: Option, + + /// Checkpoint SHA to start from + #[arg(long)] + pub checkpoint: Option, +} + +/// Arguments for wait command. +#[derive(Args, Debug)] +pub struct WaitArgs { + #[command(flatten)] + pub common: SupervisorArgs, + + /// Task ID to wait for + pub task_id: Uuid, + + /// Timeout in seconds + #[arg(default_value = "300")] + pub timeout: i32, +} + +/// Arguments for read-file command. +#[derive(Args, Debug)] +pub struct ReadFileArgs { + #[command(flatten)] + pub common: SupervisorArgs, + + /// Task ID to read from + pub task_id: Uuid, + + /// File path to read + pub file_path: String, +} + +/// Arguments for branch command. +#[derive(Args, Debug)] +pub struct BranchArgs { + #[command(flatten)] + pub common: SupervisorArgs, + + /// Branch name to create + pub name: String, + + /// Reference (task ID or SHA) to branch from + #[arg(long)] + pub from: Option, +} + +/// Arguments for merge command. +#[derive(Args, Debug)] +pub struct MergeArgs { + #[command(flatten)] + pub common: SupervisorArgs, + + /// Task ID to merge + pub task_id: Uuid, + + /// Target branch to merge into + #[arg(long)] + pub to: Option, + + /// Squash commits on merge + #[arg(long)] + pub squash: bool, +} + +/// Arguments for pr command. +#[derive(Args, Debug)] +pub struct PrArgs { + #[command(flatten)] + pub common: SupervisorArgs, + + /// Task ID to create PR for + pub task_id: Uuid, + + /// PR title + #[arg(long)] + pub title: String, + + /// PR body/description + #[arg(long)] + pub body: Option, + + /// Base branch (default: main) + #[arg(long, default_value = "main")] + pub base: String, +} + +/// Arguments for diff command. +#[derive(Args, Debug)] +pub struct DiffArgs { + #[command(flatten)] + pub common: SupervisorArgs, + + /// Task ID to get diff for + pub task_id: Uuid, +} + +/// Arguments for checkpoint command. +#[derive(Args, Debug)] +pub struct CheckpointArgs { + #[command(flatten)] + pub common: SupervisorArgs, + + /// Checkpoint message + pub message: String, +} -- cgit v1.2.3