@yemi33/minions 0.1.810 → 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.810 (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
@@ -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.810",
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
  }