@yemi33/minions 0.1.447 → 0.1.449

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,11 +1,13 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.447 (2026-04-06)
3
+ ## 0.1.449 (2026-04-06)
4
4
 
5
5
  ### Features
6
6
  - notification dot on Notes & KB sidebar when sweep completes/fails
7
7
 
8
8
  ### Fixes
9
+ - track ADO head commit for push detection — unblocks re-review cycle
10
+ - block all fix dispatches while awaiting re-review after a fix
9
11
  - prevent double-dispatch — dedup by work item ID and dispatchKey
10
12
  - pipeline agent is optional — set only when user explicitly requests
11
13
  - remove hardcoded agent assignments from all pipeline JSONs
package/engine/ado.js CHANGED
@@ -166,6 +166,16 @@ async function pollPrStatus(config) {
166
166
  }
167
167
  }
168
168
 
169
+ // Track head commit changes to detect new pushes (used for review re-dispatch gating)
170
+ const headCommit = prData.lastMergeSourceCommit?.commitId || prData.sourceRefName || '';
171
+ if (headCommit && pr._adoHeadCommit !== headCommit) {
172
+ if (pr._adoHeadCommit) { // skip first detection — only track changes
173
+ pr.lastPushedAt = new Date().toISOString();
174
+ }
175
+ pr._adoHeadCommit = headCommit;
176
+ updated = true;
177
+ }
178
+
169
179
  const reviewers = prData.reviewers || [];
170
180
  const votes = reviewers.map(r => r.vote).filter(v => v !== undefined);
171
181
  let newReviewStatus = pr.reviewStatus || 'pending';
package/engine.js CHANGED
@@ -1279,6 +1279,10 @@ function discoverFromPrs(config, project) {
1279
1279
  // minionsReview tracks metadata (reviewer, note) but not the authoritative status
1280
1280
  const reviewStatus = pr.reviewStatus || 'pending';
1281
1281
 
1282
+ // Skip fix dispatch if a fix was recently submitted and awaiting re-review.
1283
+ // The poller holds reviewStatus at 'waiting' until the reviewer acts on the new code.
1284
+ const awaitingReReview = reviewStatus === 'waiting' && !!pr.minionsReview?.fixedAt;
1285
+
1282
1286
  // PRs needing review: pending review status and not already reviewed without new commits
1283
1287
  const autoReview = config.engine?.autoReview !== false;
1284
1288
  // Skip re-dispatch if already reviewed and no new commits pushed since last review
@@ -1298,7 +1302,7 @@ function discoverFromPrs(config, project) {
1298
1302
  }
1299
1303
 
1300
1304
  // PRs with changes requested → route back to author for fix
1301
- if (reviewStatus === 'changes-requested') {
1305
+ if (reviewStatus === 'changes-requested' && !awaitingReReview) {
1302
1306
  const key = `fix-${project?.name || 'default'}-${pr.id}`;
1303
1307
  if (isAlreadyDispatched(key) || isOnCooldown(key, cooldownMs)) continue;
1304
1308
  const agentId = resolveAgent('fix', config, pr.agent);
@@ -1314,7 +1318,7 @@ function discoverFromPrs(config, project) {
1314
1318
  // PRs with pending human feedback (or coalesced comments from while agent was fixing)
1315
1319
  const humanFixKey = `human-fix-${project?.name || 'default'}-${pr.id}`;
1316
1320
  const hasCoalescedFeedback = (dispatchCooldowns.get(humanFixKey)?.pendingContexts || []).length > 0;
1317
- if (pr.humanFeedback?.pendingFix || hasCoalescedFeedback) {
1321
+ if ((pr.humanFeedback?.pendingFix || hasCoalescedFeedback) && !awaitingReReview) {
1318
1322
  const key = humanFixKey;
1319
1323
  if (isAlreadyDispatched(key) || isOnCooldown(key, cooldownMs)) {
1320
1324
  // Coalesce: save feedback for next dispatch
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.447",
3
+ "version": "0.1.449",
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"