diff options
| author | soryu <soryu@soryu.co> | 2026-01-29 02:23:56 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-01-29 02:23:56 +0000 |
| commit | c3fc0fb4b7a91308f62bd23d6a71d4a5fccfd32e (patch) | |
| tree | 274faa2561f99bda2fd8137e2d3f4ac9ae980a7f /makima/src/daemon | |
| parent | 7fa15385e4d47d4b304d55a1e31e13ede121d0d6 (diff) | |
| parent | 45a433c0eb63cae1322203ee14292f1c427a09c9 (diff) | |
| download | soryu-c3fc0fb4b7a91308f62bd23d6a71d4a5fccfd32e.tar.gz soryu-c3fc0fb4b7a91308f62bd23d6a71d4a5fccfd32e.zip | |
Merge branch 'master' into makima/fix-hf-cli-commandmakima/fix-hf-cli-command
Diffstat (limited to 'makima/src/daemon')
| -rw-r--r-- | makima/src/daemon/api/supervisor.rs | 9 | ||||
| -rw-r--r-- | makima/src/daemon/cli/supervisor.rs | 8 | ||||
| -rw-r--r-- | makima/src/daemon/task/manager.rs | 40 | ||||
| -rw-r--r-- | makima/src/daemon/ws/protocol.rs | 4 |
4 files changed, 24 insertions, 37 deletions
diff --git a/makima/src/daemon/api/supervisor.rs b/makima/src/daemon/api/supervisor.rs index 6b99de0..c841b21 100644 --- a/makima/src/daemon/api/supervisor.rs +++ b/makima/src/daemon/api/supervisor.rs @@ -54,10 +54,9 @@ pub struct MergeRequest { #[derive(Serialize)] #[serde(rename_all = "camelCase")] pub struct CreatePrRequest { - pub task_id: Uuid, + pub branch: String, pub title: String, pub body: String, - pub base_branch: String, } #[derive(Serialize)] @@ -165,16 +164,14 @@ impl ApiClient { /// Create a pull request. pub async fn supervisor_pr( &self, - task_id: Uuid, + branch: &str, title: &str, body: &str, - base_branch: &str, ) -> Result<JsonValue, ApiError> { let req = CreatePrRequest { - task_id, + branch: branch.to_string(), title: title.to_string(), body: body.to_string(), - base_branch: base_branch.to_string(), }; self.post("/api/v1/mesh/supervisor/pr", &req).await } diff --git a/makima/src/daemon/cli/supervisor.rs b/makima/src/daemon/cli/supervisor.rs index 09f61db..9ad7aef 100644 --- a/makima/src/daemon/cli/supervisor.rs +++ b/makima/src/daemon/cli/supervisor.rs @@ -128,9 +128,9 @@ pub struct PrArgs { #[command(flatten)] pub common: SupervisorArgs, - /// Task ID to create PR for + /// Branch name to create PR from (e.g., "makima/feature-name") #[arg(index = 1)] - pub task_id: Uuid, + pub branch: String, /// PR title #[arg(long)] @@ -139,10 +139,6 @@ pub struct PrArgs { /// PR body/description #[arg(long)] pub body: Option<String>, - - /// Base branch (default: main) - #[arg(long, default_value = "main")] - pub base: String, } /// Arguments for diff command. 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]); diff --git a/makima/src/daemon/ws/protocol.rs b/makima/src/daemon/ws/protocol.rs index bd13975..e971798 100644 --- a/makima/src/daemon/ws/protocol.rs +++ b/makima/src/daemon/ws/protocol.rs @@ -693,9 +693,11 @@ pub enum DaemonCommand { task_id: Uuid, title: String, body: Option<String>, - /// Base branch for the PR (default: main). + /// Base branch for the PR. #[serde(rename = "baseBranch")] base_branch: String, + /// Source branch name to push and create PR from. + branch: String, }, /// Get the diff for a task's changes. |
