diff options
| author | soryu <soryu@soryu.co> | 2026-03-09 17:20:52 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-09 17:20:52 +0000 |
| commit | f49aaa39a32661b54c109ba002d24cbdf73f4ea3 (patch) | |
| tree | 457f763ebf0eb5f8d0c66b147f8de5acf8e378fe /makima/src/server/handlers/mesh_daemon.rs | |
| parent | afaae8aba719bf74404a64b57426ecc6a7e70775 (diff) | |
| download | soryu-f49aaa39a32661b54c109ba002d24cbdf73f4ea3.tar.gz soryu-f49aaa39a32661b54c109ba002d24cbdf73f4ea3.zip | |
feat: worktree diff/commit endpoints and frontend diff viewing (#88)
* feat: soryu-co/soryu - makima: Fix worktree info failing when origin ref is missing
* WIP: heartbeat checkpoint
* WIP: heartbeat checkpoint
* WIP: heartbeat checkpoint
* feat: soryu-co/soryu - makima: Add worktree commit endpoint and diff endpoint for regular users
* feat: soryu-co/soryu - makima: Add frontend diff viewing with clickable worktree files
Diffstat (limited to 'makima/src/server/handlers/mesh_daemon.rs')
| -rw-r--r-- | makima/src/server/handlers/mesh_daemon.rs | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/makima/src/server/handlers/mesh_daemon.rs b/makima/src/server/handlers/mesh_daemon.rs index d5ef1f9..139db70 100644 --- a/makima/src/server/handlers/mesh_daemon.rs +++ b/makima/src/server/handlers/mesh_daemon.rs @@ -530,6 +530,14 @@ pub enum DaemonMessage { #[serde(rename = "prNumber")] pr_number: Option<i32>, }, + /// Response to GetWorktreeDiff command + WorktreeDiffResult { + #[serde(rename = "taskId")] + task_id: Uuid, + success: bool, + diff: Option<String>, + error: Option<String>, + }, /// Response to GetWorktreeInfo command WorktreeInfoResult { #[serde(rename = "taskId")] @@ -557,6 +565,23 @@ pub enum DaemonMessage { /// Error message if failed error: Option<String>, }, + /// Response to GetTaskDiff command + TaskDiff { + #[serde(rename = "taskId")] + task_id: Uuid, + success: bool, + diff: Option<String>, + error: Option<String>, + }, + /// Response to CommitWorktree command + WorktreeCommitResult { + #[serde(rename = "taskId")] + task_id: Uuid, + success: bool, + #[serde(rename = "commitSha")] + commit_sha: Option<String>, + error: Option<String>, + }, /// Request to merge a task's patch to supervisor's worktree (cross-daemon case). /// Sent when a task completes on a different daemon than its supervisor. MergePatchToSupervisor { @@ -2358,6 +2383,41 @@ async fn handle_daemon_connection(socket: WebSocket, state: SharedState, auth_re let _ = tx.send(response); } } + Ok(DaemonMessage::TaskDiff { task_id, success, diff, error }) => { + tracing::debug!( + task_id = %task_id, + success = success, + "Task diff result received" + ); + + // Fulfill pending task diff request if any + if let Some((_, tx)) = state.pending_task_diff.remove(&task_id) { + let _ = tx.send(crate::server::state::TaskDiffResult { + task_id, + success, + diff, + error, + }); + } + } + Ok(DaemonMessage::WorktreeCommitResult { task_id, success, commit_sha, error }) => { + tracing::debug!( + task_id = %task_id, + success = success, + commit_sha = ?commit_sha, + "Worktree commit result received" + ); + + // Fulfill pending worktree commit request if any + if let Some((_, tx)) = state.pending_worktree_commit.remove(&task_id) { + let _ = tx.send(crate::server::state::WorktreeCommitResponse { + task_id, + success, + commit_sha, + error, + }); + } + } Ok(DaemonMessage::MergePatchToSupervisor { task_id, supervisor_task_id, |
