@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 +2 -1
- package/dashboard/js/command-center.js +7 -4
- package/engine/lifecycle.js +11 -3
- package/package.json +1 -1
- package/playbooks/decompose.md +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.1.
|
|
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
|
-
//
|
|
382
|
-
|
|
383
|
-
|
|
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(
|
|
388
|
+
wasAborted = await _ccDoSend(next);
|
|
386
389
|
}
|
|
387
390
|
}
|
|
388
391
|
|
package/engine/lifecycle.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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.
|
|
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"
|
package/playbooks/decompose.md
CHANGED
|
@@ -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
|
|
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": ["
|
|
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
|
}
|