diff options
Diffstat (limited to 'makima/src/daemon/task/manager.rs')
| -rw-r--r-- | makima/src/daemon/task/manager.rs | 40 |
1 files changed, 16 insertions, 24 deletions
diff --git a/makima/src/daemon/task/manager.rs b/makima/src/daemon/task/manager.rs index f0da860..8c5f8d7 100644 --- a/makima/src/daemon/task/manager.rs +++ b/makima/src/daemon/task/manager.rs @@ -669,7 +669,7 @@ makima supervisor wait "$TASK_ID" makima supervisor merge "$TASK_ID" --to "makima/user-authentication" # Step 3: All tasks complete - create PR from makima branch -makima supervisor pr "makima/user-authentication" --title "Add user authentication" --base main +makima supervisor pr "makima/user-authentication" --title "Add user authentication" ``` ## Available Tools (via makima supervisor) @@ -701,7 +701,7 @@ makima supervisor branch <branch_name> [--from <task_id|sha>] makima supervisor merge <task_id> [--to <branch>] [--squash] # Create a pull request -makima supervisor pr <task_id> --title "Title" [--body "Body"] [--base main] +makima supervisor pr <branch> --title "Title" [--body "Body"] # View a task's diff makima supervisor diff <task_id> @@ -838,7 +838,7 @@ Common deliverable IDs by phase: 3. **wait blocks until complete** - you MUST call this to know when a task finishes 4. **Never fire-and-forget** - always wait for each task before moving on 5. **Merge to your makima branch** - use `merge <task_id> --to "makima/{name}"` to collect completed work -6. **Create PR when done** - use `pr "makima/{name}" --title "..." --base main` +6. **Create PR when done** - use `pr "makima/{name}" --title "..."` 7. **Ask when unsure** - use `ask` to get user feedback on decisions ## Standard Workflow @@ -849,7 +849,7 @@ Common deliverable IDs by phase: - `wait` - Block until complete - `merge --to "makima/{name}"` - Merge to branch 3. `ask "Ready to create PR?"` - Get user approval -4. `pr "makima/{name}" --title "..." --base main` - Create PR +4. `pr "makima/{name}" --title "..."` - Create PR ## Important Reminders @@ -875,7 +875,7 @@ When you receive an `[ACTION REQUIRED]` message from the system: After all tasks are "done" and merged, you MUST take the following actions: **If in execute phase:** -1. Create PR immediately: `makima supervisor pr "makima/{name}" --title "..." --base main` +1. Create PR immediately: `makima supervisor pr "makima/{name}" --title "..."` 2. After PR created: - Simple contract: Mark complete with `makima supervisor complete` - Specification contract: Advance to review with `makima supervisor advance-phase review` @@ -2016,14 +2016,16 @@ impl TaskManager { title, body, base_branch, + branch, } => { tracing::info!( task_id = %task_id, title = %title, base_branch = %base_branch, + branch = %branch, "Creating pull request" ); - self.handle_create_pr(task_id, title, body, base_branch).await?; + self.handle_create_pr(task_id, title, body, base_branch, branch).await?; } DaemonCommand::GetTaskDiff { task_id, @@ -3135,6 +3137,7 @@ impl TaskManager { title: String, body: Option<String>, base_branch: String, + branch: String, ) -> Result<(), DaemonError> { // Get worktree path - this works even for completed tasks by scanning worktrees directory let worktree_path = match self.get_task_worktree_path(task_id).await { @@ -3153,30 +3156,19 @@ impl TaskManager { } }; - // Get base_branch from in-memory tasks if available (for fallback) - let task_base_branch = { - let tasks = self.tasks.read().await; - tasks.get(&task_id).and_then(|t| t.base_branch.clone()) - }; - - // Use task's base_branch if the provided one is the default "main" and task has a detected one - let effective_base_branch = if base_branch == "main" { - task_base_branch.unwrap_or(base_branch) - } else { - base_branch - }; - tracing::info!( task_id = %task_id, - effective_base_branch = %effective_base_branch, + base_branch = %base_branch, + branch = %branch, worktree_path = %worktree_path.display(), - "Creating PR with effective base branch" + "Creating PR" ); - // Push the current branch first + // Push the branch to origin + let push_refspec = format!("HEAD:refs/heads/{}", branch); let push_result = tokio::process::Command::new("git") .current_dir(&worktree_path) - .args(["push", "-u", "origin", "HEAD"]) + .args(["push", "-u", "origin", &push_refspec]) .output() .await; @@ -3195,7 +3187,7 @@ impl TaskManager { // Create PR using gh CLI let mut pr_cmd = tokio::process::Command::new("gh"); pr_cmd.current_dir(&worktree_path); - pr_cmd.args(["pr", "create", "--title", &title, "--base", &effective_base_branch]); + pr_cmd.args(["pr", "create", "--title", &title, "--base", &base_branch, "--head", &branch]); if let Some(ref body_text) = body { pr_cmd.args(["--body", body_text]); |
