summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsoryu <soryu@soryu.co>2026-01-22 01:12:09 +0000
committersoryu <soryu@soryu.co>2026-01-22 03:08:48 +0000
commit20ad48f4e058e2f6c68a0d7881aedf00a6b74da1 (patch)
tree6f9548437b9d4d03ff41956dcb7c4b2a71309be3
parent11876f12dc668ea1dc9a4f5455c2e2a47580c356 (diff)
downloadsoryu-20ad48f4e058e2f6c68a0d7881aedf00a6b74da1.tar.gz
soryu-20ad48f4e058e2f6c68a0d7881aedf00a6b74da1.zip
Fix daemon disconnects not being continuable
-rw-r--r--makima/src/server/handlers/mesh_supervisor.rs26
1 files changed, 20 insertions, 6 deletions
diff --git a/makima/src/server/handlers/mesh_supervisor.rs b/makima/src/server/handlers/mesh_supervisor.rs
index 0bb58ed..57f3f2f 100644
--- a/makima/src/server/handlers/mesh_supervisor.rs
+++ b/makima/src/server/handlers/mesh_supervisor.rs
@@ -1925,13 +1925,27 @@ pub async fn resume_supervisor(
}
};
- // Check if already running
+ // Check if already running - but only if daemon is actually connected
+ // (daemon disconnect handler may not have updated status yet)
if supervisor_task.status == "running" {
- return (
- StatusCode::CONFLICT,
- Json(ApiError::new("ALREADY_RUNNING", "Supervisor is already running")),
- )
- .into_response();
+ let daemon_connected = supervisor_task
+ .daemon_id
+ .map(|d| state.is_daemon_connected(d))
+ .unwrap_or(false);
+
+ if daemon_connected {
+ return (
+ StatusCode::CONFLICT,
+ Json(ApiError::new("ALREADY_RUNNING", "Supervisor is already running")),
+ )
+ .into_response();
+ }
+ // Daemon not connected - allow resume (treat as interrupted)
+ tracing::info!(
+ supervisor_task_id = %supervisor_task.id,
+ daemon_id = ?supervisor_task.daemon_id,
+ "Supervisor status is 'running' but daemon is not connected, allowing resume"
+ );
}
// Calculate message count from conversation history