summaryrefslogtreecommitdiff
path: root/makima/src/daemon/cli/supervisor.rs
diff options
context:
space:
mode:
Diffstat (limited to 'makima/src/daemon/cli/supervisor.rs')
-rw-r--r--makima/src/daemon/cli/supervisor.rs146
1 files changed, 146 insertions, 0 deletions
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<Uuid>,
+
+ /// 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<Uuid>,
+
+ /// Checkpoint SHA to start from
+ #[arg(long)]
+ pub checkpoint: Option<String>,
+}
+
+/// 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<String>,
+}
+
+/// 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<String>,
+
+ /// 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<String>,
+
+ /// 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,
+}