@yemi33/minions 0.1.802 → 0.1.803

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.802 (2026-04-10)
3
+ ## 0.1.803 (2026-04-10)
4
4
 
5
5
  ### Features
6
6
  - configurable ignored comment authors — auto-filtered, never trigger fixes
@@ -9,6 +9,7 @@
9
9
  - cap review→fix cycles at evalMaxIterations (default 3)
10
10
 
11
11
  ### Fixes
12
+ - handle force-pushed dep branches on retry (closes #738) (#806)
12
13
  - project-scoped skill work items instruct wrong file path format (closes #790) (#804)
13
14
  - move ignoredAuthors construction outside inner comment loop (ADO)
14
15
  - approved is permanent — no path can ever downgrade it
package/engine.js CHANGED
@@ -493,8 +493,25 @@ async function spawnAgent(dispatchItem, config) {
493
493
  await execAsync(`git merge "origin/${depBranch}" --no-edit`, { ..._gitOpts, cwd: worktreePath });
494
494
  log('info', `Merged dependency branch ${depBranch} (${prId}) into worktree ${branchName}`);
495
495
  } catch (mergeErr) {
496
- log('warn', `Failed to merge dependency ${depBranch} into ${branchName}: ${mergeErr.message}`);
497
- depMergeFailed = true;
496
+ // Merge failed — possibly due to diverged history from a force-pushed (rebased) dep branch.
497
+ // Abort partial merge, reset worktree to clean main base, and re-merge all deps from scratch.
498
+ log('warn', `Merge of ${depBranch} into ${branchName} failed: ${mergeErr.message} — attempting reset and re-merge of all deps`);
499
+ try { await execAsync(`git merge --abort`, { ..._gitOpts, cwd: worktreePath }); } catch (_) { /* no merge in progress */ }
500
+ const mainRef = sanitizeBranch(shared.resolveMainBranch(rootDir, project.mainBranch));
501
+ try {
502
+ await execAsync(`git reset --hard "origin/${mainRef}"`, { ..._gitOpts, cwd: worktreePath });
503
+ log('info', `Reset worktree ${branchName} to origin/${mainRef} for clean dep re-merge`);
504
+ // Re-merge ALL fetched dep branches from scratch on clean base
505
+ for (const { branch: reBranch, prId: rePrId } of fetched) {
506
+ await execAsync(`git merge "origin/${reBranch}" --no-edit`, { ..._gitOpts, cwd: worktreePath });
507
+ log('info', `Re-merged dependency branch ${reBranch} (${rePrId}) into worktree ${branchName}`);
508
+ }
509
+ log('info', `Successfully re-merged all ${fetched.length} dep branches after reset for ${branchName}`);
510
+ } catch (resetErr) {
511
+ log('warn', `Failed to reset and re-merge deps for ${branchName}: ${resetErr.message}`);
512
+ try { await execAsync(`git merge --abort`, { ..._gitOpts, cwd: worktreePath }); } catch (_) { /* no merge in progress */ }
513
+ depMergeFailed = true;
514
+ }
498
515
  break;
499
516
  }
500
517
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.802",
3
+ "version": "0.1.803",
4
4
  "description": "Multi-agent AI dev team that runs from ~/.minions/ — five autonomous agents share a single engine, dashboard, and knowledge base",
5
5
  "bin": {
6
6
  "minions": "bin/minions.js"