@yemi33/minions 0.1.809 → 0.1.811

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,9 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.809 (2026-04-10)
3
+ ## 0.1.811 (2026-04-10)
4
4
 
5
5
  ### Features
6
+ - Restructure decompose.md sub-task output format (#655)
6
7
  - CC race condition fixes, doc-chat expand, settings save fix, metric rate
7
8
  - configurable ignored comment authors — auto-filtered, never trigger fixes
8
9
  - add open-source community sources to agentic research pipeline
@@ -10,6 +11,7 @@
10
11
  - cap review→fix cycles at evalMaxIterations (default 3)
11
12
 
12
13
  ### Fixes
14
+ - allow agents to explain rationale instead of blindly fixing review feedback
13
15
  - don't URL-encode ADO branchName filter (refs/heads/ format expected raw)
14
16
  - ADO build query filters by source branch (not all org builds)
15
17
  - adoFetch supports method/body for PATCH requests (auto-complete)
@@ -29,7 +31,6 @@
29
31
  - flush queued CC messages as single combined request
30
32
  - human feedback fixes are never capped (only minion review→fix loop is)
31
33
  - 5 bugs from comprehensive audit
32
- - stale ADO build detection + merge conflict auto-fix for both platforms
33
34
 
34
35
  ## 0.1.782 (2026-04-10)
35
36
 
@@ -378,11 +378,14 @@ async function ccSend() {
378
378
  }
379
379
  var wasAborted = await _ccDoSend(message);
380
380
 
381
- // Flush queued messages combine into single request
382
- if (tab._queue && tab._queue.length > 0) {
383
- var combined = tab._queue.splice(0).join('\n\n');
381
+ // Drain queued messages one at a time with abort delay
382
+ while (tab._queue && tab._queue.length > 0) {
383
+ if (wasAborted) {
384
+ await new Promise(function(r) { setTimeout(r, 600); });
385
+ }
386
+ var next = tab._queue.shift();
384
387
  _renderQueueIndicator();
385
- await _ccDoSend(combined);
388
+ wasAborted = await _ccDoSend(next);
386
389
  }
387
390
  }
388
391
 
@@ -186,7 +186,7 @@ function checkPlanCompletion(meta, config) {
186
186
 
187
187
  // 4. Create verification work item (build, test, start webapp, write testing guide)
188
188
  const existingVerify = allWorkItems.find(w => w.sourcePlan === planFile && w.itemType === 'verify');
189
- if (!existingVerify && doneItems.length > 0 && failedItems.length === 0) {
189
+ if (!existingVerify && doneItems.length > 0) {
190
190
  const verifyId = 'PL-' + shared.uid();
191
191
  const planSlug = planFile.replace('.json', '');
192
192
 
@@ -1352,7 +1352,7 @@ function handleDecompositionResult(stdout, meta, config) {
1352
1352
  // Create child work items
1353
1353
  for (const sub of subItems) {
1354
1354
  if (data.some(i => i.id === sub.id)) continue; // dedupe
1355
- data.push({
1355
+ const childItem = {
1356
1356
  id: sub.id,
1357
1357
  title: sub.name || sub.title || `Sub-task of ${parentId}`,
1358
1358
  type: (sub.estimated_complexity === 'large') ? 'implement:large' : 'implement',
@@ -1367,7 +1367,15 @@ function handleDecompositionResult(stdout, meta, config) {
1367
1367
  featureBranch: p.featureBranch,
1368
1368
  created: ts(),
1369
1369
  createdBy: 'decomposition',
1370
- });
1370
+ };
1371
+ // Persist structured fields from decompose output (additive — safe if absent)
1372
+ if (Array.isArray(sub.acceptance_criteria) && sub.acceptance_criteria.length > 0) {
1373
+ childItem.acceptance_criteria = sub.acceptance_criteria;
1374
+ }
1375
+ if (Array.isArray(sub.scope_boundaries) && sub.scope_boundaries.length > 0) {
1376
+ childItem.scope_boundaries = sub.scope_boundaries;
1377
+ }
1378
+ data.push(childItem);
1371
1379
  }
1372
1380
  return data;
1373
1381
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.809",
3
+ "version": "0.1.811",
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"
@@ -48,13 +48,13 @@ Write the decomposition result as a JSON code block in your response:
48
48
  {
49
49
  "id": "{{item_id}}-a",
50
50
  "name": "Short descriptive name",
51
- "objective": "One-sentence goal: what this sub-task achieves.",
51
+ "objective": "One-sentence goal what this sub-task achieves in the overall plan.",
52
52
  "description": "What to build, where, and how. Be specific enough that an engineer can implement without further exploration.",
53
+ "expected_output": "What 'done' looks like — artifact produced, PR shape, file format, or observable behavior.",
54
+ "scope_boundaries": ["What is explicitly OUT of scope for this sub-task", "Another exclusion"],
53
55
  "estimated_complexity": "small|medium",
54
56
  "depends_on": [],
55
- "acceptance_criteria": ["Criterion 1", "Criterion 2"],
56
- "expected_output": "What done looks like — the artifact produced (e.g., a PR adding X, a new file at Y, a config change).",
57
- "scope_boundaries": ["Out-of-scope item 1", "Out-of-scope item 2"]
57
+ "acceptance_criteria": ["Verifiable criterion 1", "Verifiable criterion 2"]
58
58
  }
59
59
  ]
60
60
  }
package/playbooks/fix.md CHANGED
@@ -29,7 +29,9 @@ Use subagents only for genuinely parallel, independent tasks. For sequential wor
29
29
 
30
30
  1. You are already in the correct worktree on branch `{{pr_branch}}`. Do NOT create additional worktrees.
31
31
 
32
- 2. Fix each issue listed above
32
+ 2. For each issue listed above, use your judgment:
33
+ - **Fix it** if the feedback is valid and improves the code
34
+ - **Explain your rationale** if you believe the current approach is correct — reply on the review thread explaining why, with specific reasoning (e.g., performance, consistency with codebase patterns, intentional design choice). Do NOT silently ignore feedback — always respond.
33
35
 
34
36
  3. Handle merge conflicts if any:
35
37
  - If `git pull` or the PR shows conflicts, resolve them in the worktree
@@ -64,11 +66,11 @@ Do NOT remove the worktree — the engine handles cleanup automatically.
64
66
 
65
67
  ## Resolve Review Comments
66
68
 
67
- After pushing, resolve each review comment/thread that you've addressed:
68
- - **GitHub**: Reply to each review comment confirming the fix, then resolve the conversation if possible
69
- - **ADO**: Reply to each thread with what was fixed, then set the thread status to `fixed` or `closed`
70
-
71
- Do NOT leave review threads open if you've addressed the finding unresolved threads block auto-merge on some repos and create noise for human reviewers.
69
+ After pushing, respond to each review comment/thread:
70
+ - **If you fixed it**: Reply confirming the fix, then resolve the thread
71
+ - **If you chose not to fix it**: Reply with your rationale explaining why the current approach is preferred — leave the thread open for the reviewer to decide
72
+ - **GitHub**: Reply to each review comment, resolve conversations you've fixed
73
+ - **ADO**: Reply to each thread, set status to `fixed` or `closed` for fixes; leave `active` for rationale replies
72
74
 
73
75
  ## When to Stop
74
76