From 3ea2c72e2c50c0d73614d9ac82f41508b6ab1ce4 Mon Sep 17 00:00:00 2001 From: soryu Date: Sat, 31 Jan 2026 22:17:09 +0000 Subject: Add auto_merge_local option for local-only contracts (#50) 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 --- makima/src/server/handlers/contracts.rs | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'makima/src/server/handlers/contracts.rs') diff --git a/makima/src/server/handlers/contracts.rs b/makima/src/server/handlers/contracts.rs index 9979c1f..6c237dc 100644 --- a/makima/src/server/handlers/contracts.rs +++ b/makima/src/server/handlers/contracts.rs @@ -369,6 +369,7 @@ pub async fn create_contract( status: contract.status, supervisor_task_id: contract.supervisor_task_id, local_only: contract.local_only, + auto_merge_local: contract.auto_merge_local, red_team_enabled: contract.red_team_enabled, file_count: 0, task_count: 0, @@ -392,6 +393,7 @@ pub async fn create_contract( status: contract.status, supervisor_task_id: contract.supervisor_task_id, local_only: contract.local_only, + auto_merge_local: contract.auto_merge_local, red_team_enabled: contract.red_team_enabled, file_count: 0, task_count: 0, @@ -522,6 +524,7 @@ pub async fn update_contract( status: contract.status, supervisor_task_id: contract.supervisor_task_id, local_only: contract.local_only, + auto_merge_local: contract.auto_merge_local, red_team_enabled: contract.red_team_enabled, file_count: 0, task_count: 0, @@ -1408,6 +1411,7 @@ pub async fn change_phase( status: updated_contract.status, supervisor_task_id: updated_contract.supervisor_task_id, local_only: updated_contract.local_only, + auto_merge_local: updated_contract.auto_merge_local, red_team_enabled: updated_contract.red_team_enabled, file_count: 0, task_count: 0, -- cgit v1.2.3