summaryrefslogtreecommitdiff
path: root/makima/src/server/handlers/mesh.rs
diff options
context:
space:
mode:
Diffstat (limited to 'makima/src/server/handlers/mesh.rs')
-rw-r--r--makima/src/server/handlers/mesh.rs10
1 files changed, 6 insertions, 4 deletions
diff --git a/makima/src/server/handlers/mesh.rs b/makima/src/server/handlers/mesh.rs
index eb87e17..c840676 100644
--- a/makima/src/server/handlers/mesh.rs
+++ b/makima/src/server/handlers/mesh.rs
@@ -1070,17 +1070,19 @@ pub async fn send_message(
}
};
- // Check if task is running (except for AUTH_CODE messages and supervisor tasks)
- // Supervisor tasks can receive messages even when not running - daemon will respawn Claude
+ // Check if task is in a state that can receive messages
+ // Allow "running" and "starting" (to handle race between status update and message send)
+ // Also allow AUTH_CODE messages and supervisor tasks regardless of status
let is_auth_code = req.message.starts_with("AUTH_CODE:");
let is_supervisor = task.is_supervisor;
- if task.status != "running" && !is_auth_code && !is_supervisor {
+ let can_receive_message = task.status == "running" || task.status == "starting";
+ if !can_receive_message && !is_auth_code && !is_supervisor {
return (
StatusCode::BAD_REQUEST,
Json(ApiError::new(
"INVALID_STATE",
format!(
- "Cannot send message to task in status: {}. Task must be running.",
+ "Cannot send message to task in status: {}. Task must be running or starting.",
task.status
),
)),