@yemi33/minions 0.1.818 → 0.1.820
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 +3 -3
- package/dashboard/js/command-center.js +2 -6
- package/dashboard.js +3 -1
- package/engine/lifecycle.js +22 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.1.
|
|
3
|
+
## 0.1.820 (2026-04-11)
|
|
4
4
|
|
|
5
5
|
### Features
|
|
6
6
|
- verify workflow handles shared-branch plans and existing E2E PRs
|
|
@@ -17,6 +17,8 @@
|
|
|
17
17
|
- cap review→fix cycles at evalMaxIterations (default 3)
|
|
18
18
|
|
|
19
19
|
### Fixes
|
|
20
|
+
- prevent duplicate verify WIs per PRD, re-open on modified plan
|
|
21
|
+
- strip ===ACTIONS=== server-side in streaming chunks (not client)
|
|
20
22
|
- strip ===ACTIONS=== from CC streamed text during rendering
|
|
21
23
|
- ccExecuteAction routes action status to correct tab via targetTabId
|
|
22
24
|
- clear _completionNotified on plan resume for re-completion
|
|
@@ -35,8 +37,6 @@
|
|
|
35
37
|
- project-scoped skill work items instruct wrong file path format (closes #790) (#804)
|
|
36
38
|
- move ignoredAuthors construction outside inner comment loop (ADO)
|
|
37
39
|
- approved is permanent — no path can ever downgrade it
|
|
38
|
-
- allow fix dispatch on approved PRs (only guard is in updatePrAfterFix)
|
|
39
|
-
- bot comment on approved PR can no longer reset vote
|
|
40
40
|
|
|
41
41
|
### Other
|
|
42
42
|
- docs: diff-aware PRD update playbook + prioritize team memory in shared rules
|
|
@@ -149,10 +149,7 @@ function ccSwitchTab(id) {
|
|
|
149
149
|
html += '</div>';
|
|
150
150
|
}
|
|
151
151
|
var text = tab._streamedText || '';
|
|
152
|
-
if (text)
|
|
153
|
-
var displayRestore = text.indexOf('===ACTIONS===') >= 0 ? text.slice(0, text.indexOf('===ACTIONS===')).trim() : text;
|
|
154
|
-
html += renderMd(displayRestore);
|
|
155
|
-
}
|
|
152
|
+
if (text) html += renderMd(text);
|
|
156
153
|
var ms = Date.now() - restoreStart;
|
|
157
154
|
var label = 'Thinking...';
|
|
158
155
|
for (var pi = phases.length - 1; pi >= 0; pi--) { if (ms >= phases[pi][0]) { label = phases[pi][1]; break; } }
|
|
@@ -513,8 +510,7 @@ async function _ccDoSend(message, skipUserMsg) {
|
|
|
513
510
|
html += '</div>';
|
|
514
511
|
}
|
|
515
512
|
if (streamedText) {
|
|
516
|
-
|
|
517
|
-
html += renderMd(displayText);
|
|
513
|
+
html += renderMd(streamedText);
|
|
518
514
|
}
|
|
519
515
|
html += '<div style="margin-top:' + (streamedText ? '6px' : '0') + '">' + _getThinkingHtml() + '</div>';
|
|
520
516
|
streamDiv.innerHTML = html;
|
package/dashboard.js
CHANGED
|
@@ -3524,7 +3524,9 @@ What would you like to discuss or change? When you're happy, say "approve" and I
|
|
|
3524
3524
|
allowedTools: 'Bash,Read,Write,Edit,Glob,Grep,WebFetch,WebSearch',
|
|
3525
3525
|
sessionId, effort: streamEffort, direct: true,
|
|
3526
3526
|
onChunk: (text) => {
|
|
3527
|
-
|
|
3527
|
+
const actIdx = text.indexOf('===ACTIONS===');
|
|
3528
|
+
const display = actIdx >= 0 ? text.slice(0, actIdx).trim() : text;
|
|
3529
|
+
try { res.write('data: ' + JSON.stringify({ type: 'chunk', text: display }) + '\n\n'); } catch {}
|
|
3528
3530
|
},
|
|
3529
3531
|
onToolUse: (name, input) => {
|
|
3530
3532
|
try { res.write('data: ' + JSON.stringify({ type: 'tool', name, input: typeof input === 'string' ? input.slice(0, 200) : JSON.stringify(input).slice(0, 200) }) + '\n\n'); } catch {}
|
package/engine/lifecycle.js
CHANGED
|
@@ -185,8 +185,11 @@ function checkPlanCompletion(meta, config) {
|
|
|
185
185
|
}
|
|
186
186
|
|
|
187
187
|
// 4. Create verification work item (build, test, start webapp, write testing guide)
|
|
188
|
+
// Only one verify per PRD — skip if pending/dispatched, re-open if done/failed (PRD was modified)
|
|
188
189
|
const existingVerify = allWorkItems.find(w => w.sourcePlan === planFile && w.itemType === 'verify');
|
|
189
|
-
if (
|
|
190
|
+
if (existingVerify && (existingVerify.status === WI_STATUS.PENDING || existingVerify.status === WI_STATUS.DISPATCHED)) {
|
|
191
|
+
log('info', `Plan ${planFile}: verify WI ${existingVerify.id} already ${existingVerify.status} — skipping`);
|
|
192
|
+
} else if (doneItems.length > 0) {
|
|
190
193
|
const verifyId = 'PL-' + shared.uid();
|
|
191
194
|
const planSlug = planFile.replace('.json', '');
|
|
192
195
|
|
|
@@ -301,6 +304,24 @@ function checkPlanCompletion(meta, config) {
|
|
|
301
304
|
const teams = require('./teams');
|
|
302
305
|
teams.teamsNotifyPlanEvent({ name: plan.plan_summary || planFile, file: planFile }, 'verify-created').catch(() => {});
|
|
303
306
|
} catch {}
|
|
307
|
+
} else if (existingVerify && DONE_STATUSES.has(existingVerify.status) && doneItems.length > 0) {
|
|
308
|
+
// PRD was modified and re-completed — re-open the existing verify instead of creating a duplicate
|
|
309
|
+
const verifyProject = existingVerify.project || projectName;
|
|
310
|
+
const vWiPath = shared.projectWorkItemsPath(
|
|
311
|
+
projects.find(p => p.name?.toLowerCase() === verifyProject?.toLowerCase()) || primaryProject
|
|
312
|
+
);
|
|
313
|
+
mutateWorkItems(vWiPath, items => {
|
|
314
|
+
const v = items.find(w => w.id === existingVerify.id);
|
|
315
|
+
if (v && DONE_STATUSES.has(v.status)) {
|
|
316
|
+
v.status = WI_STATUS.PENDING;
|
|
317
|
+
v._reopened = true;
|
|
318
|
+
delete v.completedAt;
|
|
319
|
+
delete v.dispatched_to;
|
|
320
|
+
delete v.dispatched_at;
|
|
321
|
+
v._retryCount = 0;
|
|
322
|
+
}
|
|
323
|
+
});
|
|
324
|
+
log('info', `Re-opened verification work item ${existingVerify.id} for modified plan ${planFile}`);
|
|
304
325
|
}
|
|
305
326
|
|
|
306
327
|
// Archive deferred until verify completes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.820",
|
|
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"
|