summaryrefslogtreecommitdiff
path: root/makima/src/orchestration/directive.rs
diff options
context:
space:
mode:
authorsoryu <soryu@soryu.co>2026-03-04 16:47:12 +0000
committerGitHub <noreply@github.com>2026-03-04 16:47:12 +0000
commitec9738a069e61529be040eff065318972b8a11e2 (patch)
treed1b15d3b22d4980acff4fba8a12b99920035025c /makima/src/orchestration/directive.rs
parent78cb861412850889424ae7d5ae5cd952a2b90295 (diff)
downloadsoryu-ec9738a069e61529be040eff065318972b8a11e2.tar.gz
soryu-ec9738a069e61529be040eff065318972b8a11e2.zip
feat: task slide-out panel, 3-way reconcile toggle, daemon reauth fix (#85)
* WIP: heartbeat checkpoint * WIP: heartbeat checkpoint * feat: soryu-co/soryu - makima: Fix daemon reauth flow for new claude setup-token output format * feat: soryu-co/soryu - makima: Update frontend reconcile toggle to three-way switch * feat: soryu-co/soryu - makima: Add task slide-out panel to directive page
Diffstat (limited to 'makima/src/orchestration/directive.rs')
-rw-r--r--makima/src/orchestration/directive.rs21
1 files changed, 16 insertions, 5 deletions
diff --git a/makima/src/orchestration/directive.rs b/makima/src/orchestration/directive.rs
index 155cfad..1e025c8 100644
--- a/makima/src/orchestration/directive.rs
+++ b/makima/src/orchestration/directive.rs
@@ -194,6 +194,14 @@ impl DirectiveOrchestrator {
String::new()
};
+ let manual_mode_appendix = if step.reconcile_mode == "manual" {
+ "\n\nIMPORTANT: This directive is in MANUAL reconcile mode. Before making assumptions or proceeding with implementation choices, you MUST ask clarification questions using:\n\
+ \x20 makima directive ask \"<question>\" --phaseguard\n\
+ Ask multiple targeted questions about requirements, edge cases, and design decisions. Wait for answers before writing code. Do not proceed until you have clear direction from the user."
+ } else {
+ ""
+ };
+
let plan = format!(
"You are executing a step in directive \"{directive_title}\".\n\n\
STEP: {step_name}\n\
@@ -203,12 +211,13 @@ impl DirectiveOrchestrator {
When done, the system will automatically mark this step as completed.\n\
If you cannot complete the task, report the failure clearly.\n\n\
If you need clarification or encounter a decision that requires user input, you can ask:\n\
- \x20 makima directive ask \"Your question\" --phaseguard",
+ \x20 makima directive ask \"Your question\" --phaseguard{manual_mode_appendix}",
directive_title = step.directive_title,
step_name = step.step_name,
description = step.step_description.as_deref().unwrap_or("(none)"),
merge_preamble = merge_preamble,
task_plan = task_plan,
+ manual_mode_appendix = manual_mode_appendix,
);
match self
@@ -1612,8 +1621,9 @@ If you need clarification from the user before finalizing the plan, you can ask
Use --phaseguard for questions that block progress (the question will wait indefinitely for a response).
The CLI automatically reconnects via polling every ~5 minutes to avoid HTTP timeout limits.
Without --phaseguard, questions timeout based on the directive's reconcile mode:
-- Reconcile ON: questions wait indefinitely (with automatic reconnecting polls every ~5 min)
-- Reconcile OFF: questions timeout after 30 seconds with no response
+- Auto: questions timeout after 30 seconds with no response
+- Semi-Auto: questions wait indefinitely (with automatic reconnecting polls every ~5 min)
+- Manual: questions wait indefinitely + tasks should ask multiple clarifying questions
When to ask:
- Requirements are ambiguous and multiple interpretations are valid
@@ -2206,8 +2216,9 @@ Options:
- `--phaseguard` - Block until response (recommended for important questions)
The question will appear in the directive UI. Behavior depends on reconcile mode:
-- Reconcile ON: blocks until user responds
-- Reconcile OFF: times out after 30s (use for non-critical questions)
+- Auto: times out after 30s (use for non-critical questions)
+- Semi-Auto: blocks until user responds
+- Manual: blocks until user responds (tasks are expected to ask many questions)
Use this when:
- The goal is ambiguous and could be interpreted multiple ways