1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
|
//! 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>,
/// Repository URL (local path or remote URL). If not provided, will try to detect from current directory.
#[arg(long)]
pub repo: 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,
}
/// Arguments for ask command (ask user a question).
#[derive(Args, Debug)]
pub struct AskArgs {
#[command(flatten)]
pub common: SupervisorArgs,
/// The question to ask
pub question: String,
/// Optional choices (comma-separated)
#[arg(long)]
pub choices: Option<String>,
/// Context about what this relates to
#[arg(long)]
pub context: Option<String>,
/// Timeout in seconds (default: 3600 = 1 hour)
#[arg(long, default_value = "3600")]
pub timeout: i32,
}
|