summaryrefslogtreecommitdiff
path: root/makima/src/server/handlers/mesh_daemon.rs
diff options
context:
space:
mode:
Diffstat (limited to 'makima/src/server/handlers/mesh_daemon.rs')
-rw-r--r--makima/src/server/handlers/mesh_daemon.rs67
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);
}