summaryrefslogtreecommitdiff
path: root/makima/src/server/handlers/mesh_chat.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_chat.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_chat.rs')
-rw-r--r--makima/src/server/handlers/mesh_chat.rs11
1 files changed, 6 insertions, 5 deletions
diff --git a/makima/src/server/handlers/mesh_chat.rs b/makima/src/server/handlers/mesh_chat.rs
index 623e66d..eee899f 100644
--- a/makima/src/server/handlers/mesh_chat.rs
+++ b/makima/src/server/handlers/mesh_chat.rs
@@ -1133,14 +1133,14 @@ async fn handle_mesh_request(
}
};
- // Get local_only from contract if task has one
- let local_only = if let Some(contract_id) = task.contract_id {
+ // Get local_only and auto_merge_local from contract if task has one
+ let (local_only, auto_merge_local) = if let Some(contract_id) = task.contract_id {
match repository::get_contract_for_owner(pool, contract_id, owner_id).await {
- Ok(Some(contract)) => contract.local_only,
- _ => false,
+ Ok(Some(contract)) => (contract.local_only, contract.auto_merge_local),
+ _ => (false, false),
}
} else {
- false
+ (false, false)
};
// Send SpawnTask command to daemon
@@ -1166,6 +1166,7 @@ async fn handle_mesh_request(
patch_data: None,
patch_base_sha: None,
local_only,
+ auto_merge_local,
supervisor_worktree_task_id: None, // Not spawned by supervisor
};