@yemi33/minions 0.1.775 → 0.1.777

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,12 +1,18 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.775 (2026-04-10)
3
+ ## 0.1.777 (2026-04-10)
4
+
5
+ ### Fixes
6
+ - pass reviewer's actual output to fix agent, not just task label
7
+
8
+ ## 0.1.776 (2026-04-10)
4
9
 
5
10
  ### Features
6
11
  - auto-rebase dependent PRs after dependency merge
7
12
  - show PR merged/active status on PRD item links
8
13
 
9
14
  ### Fixes
15
+ - better agent comment filtering — detect by patterns, not just signature
10
16
  - filter CI bot noise from PR human comment detection
11
17
 
12
18
  ### Other
package/engine/ado.js CHANGED
@@ -458,12 +458,18 @@ async function pollPrHumanComments(config) {
458
458
  for (const thread of threads) {
459
459
  for (const comment of (thread.comments || [])) {
460
460
  if (!comment.content || comment.commentType === 'system') continue;
461
- if (/\bMinions\s*\(/i.test(comment.content)) continue; // skip minions's own comments
461
+ const content = comment.content;
462
+ // Minions agent signatures
463
+ if (/\bMinions\s*\(/i.test(content)) continue;
464
+ if (/\b(Review|Fixed|Explored|Verified|Tested)\s+by\s+Minions\b/i.test(content)) continue;
465
+ if (/\[minions\]/i.test(content)) continue;
462
466
  // Skip bot/service account comments
463
467
  const authorName = (comment.author?.displayName || '').toLowerCase();
464
468
  if (/\b(bot|service|build|pipeline|codecov|sonar)\b/i.test(authorName)) continue;
465
- // Skip automated status comments (coverage, build reports)
466
- if (/^#{1,3}\s*(Coverage|Build|Test|Deploy|Pipeline)\s*(Report|Status|Result|Summary)/i.test(comment.content)) continue;
469
+ // Short comments from same author that look agent-generated
470
+ if (content.length < 500 && /\b(fixed|addressed|resolved|pushed|updated|rebased)\b/i.test(content) && /\b(review|feedback|comment|finding)\b/i.test(content)) continue;
471
+ // Automated status comments (coverage, build reports)
472
+ if (/^#{1,3}\s*(Coverage|Build|Test|Deploy|Pipeline)\s*(Report|Status|Result|Summary)/i.test(content)) continue;
467
473
 
468
474
  const entry = {
469
475
  threadId: thread.id,
package/engine/github.js CHANGED
@@ -441,17 +441,25 @@ async function pollPrHumanComments(config) {
441
441
  ...(Array.isArray(reviewComments) ? reviewComments : []).map(c => ({ ...c, _type: 'review' }))
442
442
  ];
443
443
 
444
- // Filter out bot comments, minions's own comments, and CI noise
444
+ // Filter out bot comments, minions agent comments, and CI noise
445
+ // Agents post as the PAT owner — detect by signature patterns, not account type
446
+ const prAuthorLogin = (prData?.user?.login || '').toLowerCase();
445
447
  const humanComments = allComments.filter(c => {
446
448
  if (c.user?.type === 'Bot') return false;
447
- if (/\bMinions\s*\(/i.test(c.body || '')) return false;
448
- // Common CI bot usernames
449
+ const body = c.body || '';
450
+ // Minions agent signatures (review, fix, explore, etc.)
451
+ if (/\bMinions\s*\(/i.test(body)) return false;
452
+ if (/\b(Review|Fixed|Explored|Verified|Tested)\s+by\s+Minions\b/i.test(body)) return false;
453
+ if (/\[minions\]/i.test(body)) return false;
454
+ // Comments from the PR author account are likely agent-generated (agents use same PAT)
455
+ // Only skip if the comment looks automated (short, or has agent patterns)
449
456
  const login = (c.user?.login || '').toLowerCase();
457
+ if (login === prAuthorLogin && body.length < 500 && /\b(fixed|addressed|resolved|pushed|updated|rebased)\b/i.test(body)) return false;
458
+ // Common CI bot usernames
450
459
  if (/\b(bot|codecov|sonar|dependabot|renovate|github-actions|azure-pipelines)\b/i.test(login)) return false;
451
460
  // Automated status comments (coverage reports, build badges, etc.)
452
- const body = c.body || '';
453
461
  if (/^#{1,3}\s*(Coverage|Build|Test|Deploy|Pipeline)\s*(Report|Status|Result|Summary)/i.test(body)) return false;
454
- if (/!\[.*\]\(https?:\/\/.*badge/i.test(body)) return false; // badge images
462
+ if (/!\[.*\]\(https?:\/\/.*badge/i.test(body)) return false;
455
463
  return true;
456
464
  });
457
465
 
@@ -720,7 +720,7 @@ function syncPrsFromOutput(output, agentId, meta, config) {
720
720
 
721
721
  // ─── Post-Completion Hooks ──────────────────────────────────────────────────
722
722
 
723
- async function updatePrAfterReview(agentId, pr, project, config) {
723
+ async function updatePrAfterReview(agentId, pr, project, config, resultSummary) {
724
724
 
725
725
  if (!pr?.id) return;
726
726
 
@@ -755,7 +755,7 @@ async function updatePrAfterReview(agentId, pr, project, config) {
755
755
  target.minionsReview = {
756
756
  reviewer: reviewerName,
757
757
  reviewedAt: ts(),
758
- note: completedEntry?.task || ''
758
+ note: resultSummary || completedEntry?.task || ''
759
759
  };
760
760
  updatedTarget = { ...pr, ...target };
761
761
  return prs;
@@ -1592,7 +1592,7 @@ async function runPostCompletionHooks(dispatchItem, agentId, code, stdout, confi
1592
1592
  }
1593
1593
  }
1594
1594
 
1595
- if (type === WORK_TYPE.REVIEW) await updatePrAfterReview(agentId, meta?.pr, meta?.project, config);
1595
+ if (type === WORK_TYPE.REVIEW) await updatePrAfterReview(agentId, meta?.pr, meta?.project, config, resultSummary);
1596
1596
  if (type === WORK_TYPE.FIX) updatePrAfterFix(meta?.pr, meta?.project, meta?.source);
1597
1597
  checkForLearnings(agentId, config.agents[agentId], dispatchItem.task);
1598
1598
  if (effectiveSuccess) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.775",
3
+ "version": "0.1.777",
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"