summaryrefslogtreecommitdiff
path: root/makima/src/daemon/api
diff options
context:
space:
mode:
authorsoryu <soryu@soryu.co>2026-01-18 17:19:10 +0000
committersoryu <soryu@soryu.co>2026-01-18 17:19:10 +0000
commitea71a1d55a0036b0452e8b2b4f95022b19274343 (patch)
tree38088d2dc905ff789099888d091aa3c48ee2f4af /makima/src/daemon/api
parentf84a7f2d820f6f432be2b1d78d6bf833b5b19380 (diff)
downloadsoryu-ea71a1d55a0036b0452e8b2b4f95022b19274343.tar.gz
soryu-ea71a1d55a0036b0452e8b2b4f95022b19274343.zip
Add phaseguard flag to supervisor ask command
When phaseguard is enabled (--phaseguard flag), the supervisor's ask command will block indefinitely waiting for user response instead of timing out after the default 1 hour. This ensures that phase transitions requiring user confirmation cannot proceed without explicit approval. Changes: - Add phaseguard field to AskQuestionRequest in server handler - Add phaseguard field to AskQuestionRequest in API client - Add --phaseguard CLI flag to AskArgs - Update supervisor_ask() to accept phaseguard parameter - Modify ask_question handler to skip timeout check when phaseguard=true Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Diffstat (limited to 'makima/src/daemon/api')
-rw-r--r--makima/src/daemon/api/supervisor.rs4
1 files changed, 4 insertions, 0 deletions
diff --git a/makima/src/daemon/api/supervisor.rs b/makima/src/daemon/api/supervisor.rs
index 8b3d480..adeda22 100644
--- a/makima/src/daemon/api/supervisor.rs
+++ b/makima/src/daemon/api/supervisor.rs
@@ -71,6 +71,8 @@ pub struct AskQuestionRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub context: Option<String>,
pub timeout_seconds: i32,
+ /// When true, the request will block indefinitely until user responds (no timeout)
+ pub phaseguard: bool,
}
// Generic response type for JSON output
@@ -202,12 +204,14 @@ impl ApiClient {
choices: Vec<String>,
context: Option<String>,
timeout_seconds: i32,
+ phaseguard: bool,
) -> Result<JsonValue, ApiError> {
let req = AskQuestionRequest {
question: question.to_string(),
choices,
context,
timeout_seconds,
+ phaseguard,
};
self.post("/api/v1/mesh/supervisor/questions", &req).await
}