summaryrefslogtreecommitdiff
path: root/makima/src/daemon/cli/directive.rs
diff options
context:
space:
mode:
authorsoryu <soryu@soryu.co>2026-02-21 19:33:44 +0000
committerGitHub <noreply@github.com>2026-02-21 19:33:44 +0000
commitd670dcb72984cfa483063d161bb468704038895c (patch)
tree885ea969d2c5ea5c026d1caf25cd0a15f6753ca1 /makima/src/daemon/cli/directive.rs
parent61442ea1cb92ce8c28fe0622aa19d4e2947a8fd0 (diff)
downloadsoryu-d670dcb72984cfa483063d161bb468704038895c.tar.gz
soryu-d670dcb72984cfa483063d161bb468704038895c.zip
feat: add directive ask command, log backfill & specialized DAG steps (#75)
* feat: soryu-co/soryu - makima: Add makima directive ask CLI command * feat: soryu-co/soryu - makima: Update directive skill docs and planning prompt to support asking questions * feat: soryu-co/soryu - makima: Add log stream backfill for directive tasks * feat: soryu-co/soryu - makima: Update planning prompts to inform tasks they can ask questions * WIP: heartbeat checkpoint * feat: soryu-co/soryu - makima: Add ask command to directive SKILL.md documentation * feat: soryu-co/soryu - makima: Add log stream backfill for directive task output history * feat: soryu-co/soryu - makima: Update planning prompt to tell planning tasks they can ask questions * WIP: heartbeat checkpoint * feat: soryu-co/soryu - makima: Show Planning, PR, and Cleanup tasks as specialized steps in DAG
Diffstat (limited to 'makima/src/daemon/cli/directive.rs')
-rw-r--r--makima/src/daemon/cli/directive.rs39
1 files changed, 39 insertions, 0 deletions
diff --git a/makima/src/daemon/cli/directive.rs b/makima/src/daemon/cli/directive.rs
index 8a6a9f2..7c8451f 100644
--- a/makima/src/daemon/cli/directive.rs
+++ b/makima/src/daemon/cli/directive.rs
@@ -111,6 +111,45 @@ pub struct BatchAddStepsArgs {
pub json: String,
}
+/// Arguments for ask command (ask user a question from directive context).
+#[derive(Args, Debug)]
+pub struct AskArgs {
+ #[command(flatten)]
+ pub common: DirectiveArgs,
+
+ /// The question to ask
+ #[arg(index = 1)]
+ 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,
+
+ /// Block indefinitely until user responds (no timeout)
+ #[arg(long, default_value = "false")]
+ pub phaseguard: bool,
+
+ /// Allow selecting multiple choices (response will be comma-separated)
+ #[arg(long, default_value = "false")]
+ pub multi_select: bool,
+
+ /// Non-blocking mode - returns immediately without waiting for response
+ #[arg(long, default_value = "false")]
+ pub non_blocking: bool,
+
+ /// Question type (general, phase_confirmation, contract_complete)
+ #[arg(long, default_value = "general")]
+ pub question_type: String,
+}
+
/// Arguments for update command.
#[derive(Args, Debug)]
pub struct UpdateArgs {