@yemi33/minions 0.1.380 → 0.1.382

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,8 +1,14 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.380 (2026-04-06)
3
+ ## 0.1.382 (2026-04-06)
4
4
 
5
5
  ### Fixes
6
+ - branch regex missed W- and PL- work item IDs — wrong PR agent attribution
7
+
8
+ ## 0.1.381 (2026-04-06)
9
+
10
+ ### Fixes
11
+ - clear failReason on all retry-to-pending paths
6
12
  - clear failReason and noPr on no-PR retry reset
7
13
  - PR duplicate race condition — convert safeWrite to mutateJsonFileLocked (#240)
8
14
 
package/engine/ado.js CHANGED
@@ -379,8 +379,8 @@ async function reconcilePrs(config) {
379
379
  const branch = (adoPr.sourceRefName || '').replace('refs/heads/', '');
380
380
  const title = adoPr.title || '';
381
381
  // Extract item ID from branch name or PR title (e.g., feat(P-2cafdc2a): ...)
382
- const branchMatch = branch.match(/(P-[a-z0-9]{6,})/i) || branch.match(/(PL-W\d+)/i);
383
- const titleMatch = title.match(/\((P-[a-z0-9]{6,})\)/) || title.match(/\((PL-W\d+)\)/);
382
+ const branchMatch = branch.match(/(P-[a-z0-9]{6,})/i) || branch.match(/(W-[a-z0-9]{6,})/i) || branch.match(/(PL-[a-z0-9]{6,})/i);
383
+ const titleMatch = title.match(/\((P-[a-z0-9]{6,})\)/) || title.match(/\((W-[a-z0-9]{6,})\)/) || title.match(/\((W-[a-z0-9]{6,})\)/) || title.match(/\((PL-[a-z0-9]{6,})\)/);
384
384
  const linkedItemId = branchMatch?.[1] || titleMatch?.[1] || null;
385
385
  const linkedItem = linkedItemId ? allItems.find(i => i.id === linkedItemId) : null;
386
386
  const confirmedItemId = linkedItem ? linkedItemId : null;
package/engine/github.js CHANGED
@@ -379,7 +379,7 @@ async function reconcilePrs(config) {
379
379
  for (const ghPr of ghPrs) {
380
380
  const prId = `PR-${ghPr.number}`;
381
381
  const branch = ghPr.head?.ref || '';
382
- const wiMatch = branch.match(/(P-[a-z0-9]{6,})/i) || branch.match(/(PL-W\d+)/i);
382
+ const wiMatch = branch.match(/(P-[a-z0-9]{6,})/i) || branch.match(/(W-[a-z0-9]{6,})/i) || branch.match(/(PL-[a-z0-9]{6,})/i);
383
383
  const linkedItemId = wiMatch ? wiMatch[1] : null;
384
384
  const linkedItem = linkedItemId ? allItems.find(i => i.id === linkedItemId) : null;
385
385
  const confirmedItemId = linkedItem ? linkedItemId : null;
@@ -805,7 +805,7 @@ async function handlePostMerge(pr, project, config, newStatus) {
805
805
  // Resolve linked work item from pr-links or PR branch name
806
806
  let mergedItemId = getPrLinks()[pr.id];
807
807
  if (!mergedItemId && pr.branch) {
808
- const branchMatch = pr.branch.match(/(P-[a-z0-9]{6,})/i) || pr.branch.match(/(W-[a-z0-9]+)/i);
808
+ const branchMatch = pr.branch.match(/(P-[a-z0-9]{6,})/i) || pr.branch.match(/(W-[a-z0-9]{6,})/i) || pr.branch.match(/(PL-[a-z0-9]{6,})/i);
809
809
  if (branchMatch) mergedItemId = branchMatch[1];
810
810
  }
811
811
 
@@ -1193,7 +1193,7 @@ function runPostCompletionHooks(dispatchItem, agentId, code, stdout, config) {
1193
1193
  if (wi.status === WI_STATUS.DONE || wi.completedAt) {
1194
1194
  log('info', `Skip retry for ${meta.item.id} — already completed`);
1195
1195
  } else {
1196
- wi._retryCount = retries + 1; wi.status = WI_STATUS.PENDING; delete wi.dispatched_at; delete wi.dispatched_to;
1196
+ wi._retryCount = retries + 1; wi.status = WI_STATUS.PENDING; delete wi.dispatched_at; delete wi.dispatched_to; delete wi.failReason;
1197
1197
  if (type === WORK_TYPE.DECOMPOSE) delete wi._decomposing;
1198
1198
  shared.safeWrite(wiPath, items);
1199
1199
  }
package/engine/timeout.js CHANGED
@@ -254,6 +254,7 @@ function checkTimeouts(config) {
254
254
  delete item.dispatched_at;
255
255
  delete item.dispatched_to;
256
256
  delete item._pendingReason;
257
+ delete item.failReason;
257
258
  } else {
258
259
  log('warn', `Reconcile: work item ${item.id} failed after ${retries} retries — marking as failed`);
259
260
  item.status = WI_STATUS.FAILED;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.380",
3
+ "version": "0.1.382",
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"