diff options
| author | soryu <soryu@soryu.co> | 2026-01-27 02:38:37 +0000 |
|---|---|---|
| committer | soryu <soryu@soryu.co> | 2026-01-27 02:38:37 +0000 |
| commit | f6d5692eb1e290689df516cec6fe77f07d419783 (patch) | |
| tree | 7679fd1a6c3dee19849c0b835fa9e661c36ef053 /makima/src/server/handlers/mesh_daemon.rs | |
| parent | f1129adb9799c9c9ca26189220bf9af5970f50fa (diff) | |
| download | soryu-f6d5692eb1e290689df516cec6fe77f07d419783.tar.gz soryu-f6d5692eb1e290689df516cec6fe77f07d419783.zip | |
Fix worktree info and patches endpoint
Diffstat (limited to 'makima/src/server/handlers/mesh_daemon.rs')
| -rw-r--r-- | makima/src/server/handlers/mesh_daemon.rs | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/makima/src/server/handlers/mesh_daemon.rs b/makima/src/server/handlers/mesh_daemon.rs index f7fe49f..433c787 100644 --- a/makima/src/server/handlers/mesh_daemon.rs +++ b/makima/src/server/handlers/mesh_daemon.rs @@ -493,6 +493,33 @@ pub enum DaemonMessage { #[serde(rename = "prNumber")] pr_number: Option<i32>, }, + /// Response to GetWorktreeInfo command + WorktreeInfoResult { + #[serde(rename = "taskId")] + task_id: Uuid, + success: bool, + /// Path to the worktree directory + #[serde(rename = "worktreePath")] + worktree_path: Option<String>, + /// Whether the worktree exists + exists: bool, + /// Number of files changed + #[serde(rename = "filesChanged")] + files_changed: i32, + /// Total lines inserted + insertions: i32, + /// Total lines deleted + deletions: i32, + /// Changed files list + files: Option<serde_json::Value>, + /// Current branch name + branch: Option<String>, + /// Current HEAD commit SHA + #[serde(rename = "headSha")] + head_sha: Option<String>, + /// Error message if failed + error: Option<String>, + }, } /// Validated daemon authentication result. @@ -1880,6 +1907,46 @@ async fn handle_daemon_connection(socket: WebSocket, state: SharedState, auth_re }); } } + Ok(DaemonMessage::WorktreeInfoResult { + task_id, + success, + worktree_path, + exists, + files_changed, + insertions, + deletions, + files, + branch, + head_sha, + error, + }) => { + tracing::debug!( + task_id = %task_id, + success = success, + exists = exists, + files_changed = files_changed, + "Worktree info result received" + ); + + // Fulfill pending worktree info request if any + if let Some((_, tx)) = state.pending_worktree_info.remove(&task_id) { + let response = crate::server::state::WorktreeInfoResponse { + task_id, + success, + worktree_path, + exists, + files_changed, + insertions, + deletions, + files, + branch, + head_sha, + error, + }; + // Ignore send error - receiver may have timed out + let _ = tx.send(response); + } + } Err(e) => { tracing::warn!("Failed to parse daemon message: {}", e); } |
