summaryrefslogtreecommitdiff
path: root/makima/src/server/handlers
diff options
context:
space:
mode:
Diffstat (limited to 'makima/src/server/handlers')
-rw-r--r--makima/src/server/handlers/mesh_supervisor.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/makima/src/server/handlers/mesh_supervisor.rs b/makima/src/server/handlers/mesh_supervisor.rs
index 8c7ecb5..a8af3fb 100644
--- a/makima/src/server/handlers/mesh_supervisor.rs
+++ b/makima/src/server/handlers/mesh_supervisor.rs
@@ -73,6 +73,9 @@ pub struct AskQuestionRequest {
/// When true, the request will block indefinitely until user responds (no timeout)
#[serde(default)]
pub phaseguard: bool,
+ /// When true, allow selecting multiple choices (response will be comma-separated)
+ #[serde(default)]
+ pub multi_select: bool,
}
fn default_question_timeout() -> i32 {
@@ -118,6 +121,9 @@ pub struct PendingQuestionSummary {
pub choices: Vec<String>,
pub context: Option<String>,
pub created_at: chrono::DateTime<chrono::Utc>,
+ /// Whether multiple choices can be selected
+ #[serde(default)]
+ pub multi_select: bool,
}
/// Request to create a checkpoint.
@@ -1521,6 +1527,7 @@ pub async fn ask_question(
request.question.clone(),
request.choices.clone(),
request.context.clone(),
+ request.multi_select,
);
// Broadcast question as task output entry for the task's chat
@@ -1528,6 +1535,7 @@ pub async fn ask_question(
"question_id": question_id.to_string(),
"choices": request.choices,
"context": request.context,
+ "multi_select": request.multi_select,
});
state.broadcast_task_output(TaskOutputNotification {
task_id: supervisor_id,
@@ -1631,6 +1639,7 @@ pub async fn list_pending_questions(
choices: q.choices,
context: q.context,
created_at: q.created_at,
+ multi_select: q.multi_select,
})
.collect();