summaryrefslogtreecommitdiff
path: root/makima/src/server/handlers/mesh_supervisor.rs
diff options
context:
space:
mode:
authorsoryu <soryu@soryu.co>2026-01-30 03:28:40 +0000
committersoryu <soryu@soryu.co>2026-01-30 03:28:40 +0000
commit4c09aa13a50064a4145ef53021490d303e46bc5e (patch)
treed1fa901d97e54a7840e5ac153270bdab66bb8c99 /makima/src/server/handlers/mesh_supervisor.rs
parentdac1adb138f532245a36fa16524f1e4fb9990173 (diff)
downloadsoryu-makima/auto-merge-local.tar.gz
soryu-makima/auto-merge-local.zip
Add auto_merge_local option for local-only contractsmakima/auto-merge-local
When local_only=true on a contract, all completion actions are skipped. This adds a new option auto_merge_local that, when enabled along with local_only, will automatically merge completed task changes to the master/main branch locally (without pushing or creating PRs). Changes: - Add auto_merge_local column to contracts table (migration) - Add auto_merge_local field to Contract model and summary - Update CreateContractRequest and UpdateContractRequest structs - Update contract repository create/update functions - Add auto_merge_local to WebSocket protocol StartTask command - Pass auto_merge_local through spawn_task and run_task functions - Modify task manager completion logic: if local_only=true AND auto_merge_local=true, execute 'merge' completion action locally - Update all server handlers to retrieve and pass auto_merge_local - Add TypeScript types to frontend components Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Diffstat (limited to 'makima/src/server/handlers/mesh_supervisor.rs')
-rw-r--r--makima/src/server/handlers/mesh_supervisor.rs4
1 files changed, 4 insertions, 0 deletions
diff --git a/makima/src/server/handlers/mesh_supervisor.rs b/makima/src/server/handlers/mesh_supervisor.rs
index 5e74251..3411ec0 100644
--- a/makima/src/server/handlers/mesh_supervisor.rs
+++ b/makima/src/server/handlers/mesh_supervisor.rs
@@ -410,6 +410,7 @@ pub async fn try_start_pending_task(
patch_data,
patch_base_sha,
local_only: contract.local_only,
+ auto_merge_local: contract.auto_merge_local,
// For retried tasks, use their own worktree (they already have state from previous attempt)
supervisor_worktree_task_id: None,
};
@@ -730,6 +731,7 @@ pub async fn spawn_task(
patch_data: None,
patch_base_sha: None,
local_only: contract.local_only,
+ auto_merge_local: contract.auto_merge_local,
// Share supervisor's worktree by default; separate worktree only when explicitly requested
supervisor_worktree_task_id: if request.use_own_worktree { None } else { Some(supervisor_id) },
};
@@ -2257,6 +2259,7 @@ pub async fn resume_supervisor(
patch_data,
patch_base_sha,
local_only: contract.local_only,
+ auto_merge_local: contract.auto_merge_local,
supervisor_worktree_task_id: None, // Supervisor uses its own worktree
};
@@ -2703,6 +2706,7 @@ pub async fn spawn_red_team_task(
patch_data: None,
patch_base_sha: None,
local_only: true, // Red team is always local-only
+ auto_merge_local: false, // Red team doesn't auto-merge
supervisor_worktree_task_id: None,
};