diff options
| author | soryu <soryu@soryu.co> | 2026-01-30 03:28:40 +0000 |
|---|---|---|
| committer | soryu <soryu@soryu.co> | 2026-01-30 03:28:40 +0000 |
| commit | 4c09aa13a50064a4145ef53021490d303e46bc5e (patch) | |
| tree | d1fa901d97e54a7840e5ac153270bdab66bb8c99 /makima/src/server/handlers/mesh_supervisor.rs | |
| parent | dac1adb138f532245a36fa16524f1e4fb9990173 (diff) | |
| download | soryu-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.rs | 4 |
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, }; |
