@yemi33/minions 0.1.251 → 0.1.252
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 +87 -0
- package/dashboard.js +9 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.1.
|
|
3
|
+
## 0.1.252 (2026-04-03)
|
|
4
4
|
|
|
5
5
|
### Features
|
|
6
|
+
- add 10 missing CC action types for full dashboard parity
|
|
6
7
|
- add 'pin' action to CC — pin critical context to all agents
|
|
7
8
|
- mandatory test validation before PR creation in implement and fix playbooks
|
|
8
9
|
|
|
@@ -483,6 +483,93 @@ async function ccExecuteAction(action) {
|
|
|
483
483
|
status.style.color = 'var(--green)';
|
|
484
484
|
break;
|
|
485
485
|
}
|
|
486
|
+
case 'unpin': {
|
|
487
|
+
await fetch('/api/pinned/remove', {
|
|
488
|
+
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
|
489
|
+
body: JSON.stringify({ title: action.title })
|
|
490
|
+
});
|
|
491
|
+
status.innerHTML = '✓ Unpinned: <strong>' + escHtml(action.title) + '</strong>';
|
|
492
|
+
status.style.color = 'var(--green)';
|
|
493
|
+
refresh();
|
|
494
|
+
break;
|
|
495
|
+
}
|
|
496
|
+
case 'archive-plan': {
|
|
497
|
+
await fetch('/api/plans/archive', {
|
|
498
|
+
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
|
499
|
+
body: JSON.stringify({ file: action.file })
|
|
500
|
+
});
|
|
501
|
+
status.innerHTML = '✓ Archived plan: <strong>' + escHtml(action.file) + '</strong>';
|
|
502
|
+
status.style.color = 'var(--green)';
|
|
503
|
+
refresh();
|
|
504
|
+
break;
|
|
505
|
+
}
|
|
506
|
+
case 'reject-plan': {
|
|
507
|
+
await fetch('/api/plans/reject', {
|
|
508
|
+
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
|
509
|
+
body: JSON.stringify({ file: action.file, reason: action.reason || '' })
|
|
510
|
+
});
|
|
511
|
+
status.innerHTML = '✓ Rejected plan: <strong>' + escHtml(action.file) + '</strong>';
|
|
512
|
+
status.style.color = 'var(--orange)';
|
|
513
|
+
break;
|
|
514
|
+
}
|
|
515
|
+
case 'steer-agent': {
|
|
516
|
+
await fetch('/api/agents/steer', {
|
|
517
|
+
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
|
518
|
+
body: JSON.stringify({ agent: action.agent, message: action.message || action.content })
|
|
519
|
+
});
|
|
520
|
+
status.innerHTML = '✓ Steering message sent to <strong>' + escHtml(action.agent) + '</strong>';
|
|
521
|
+
status.style.color = 'var(--green)';
|
|
522
|
+
break;
|
|
523
|
+
}
|
|
524
|
+
case 'add-meeting-note': {
|
|
525
|
+
await fetch('/api/meetings/note', {
|
|
526
|
+
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
|
527
|
+
body: JSON.stringify({ id: action.id, note: action.note || action.content })
|
|
528
|
+
});
|
|
529
|
+
status.innerHTML = '✓ Note added to meeting <strong>' + escHtml(action.id) + '</strong>';
|
|
530
|
+
status.style.color = 'var(--green)';
|
|
531
|
+
break;
|
|
532
|
+
}
|
|
533
|
+
case 'trigger-pipeline': {
|
|
534
|
+
var res = await fetch('/api/pipelines/trigger', {
|
|
535
|
+
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
|
536
|
+
body: JSON.stringify({ id: action.id })
|
|
537
|
+
});
|
|
538
|
+
if (!res.ok) { var d = await res.json().catch(function() { return {}; }); throw new Error(d.error || 'Pipeline trigger failed'); }
|
|
539
|
+
status.innerHTML = '✓ Pipeline triggered: <strong>' + escHtml(action.id) + '</strong>';
|
|
540
|
+
status.style.color = 'var(--green)';
|
|
541
|
+
wakeEngine();
|
|
542
|
+
break;
|
|
543
|
+
}
|
|
544
|
+
case 'link-pr': {
|
|
545
|
+
await fetch('/api/pull-requests/link', {
|
|
546
|
+
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
|
547
|
+
body: JSON.stringify({ url: action.url, title: action.title || '', project: action.project || '', autoObserve: action.autoObserve !== false })
|
|
548
|
+
});
|
|
549
|
+
status.innerHTML = '✓ PR linked: <strong>' + escHtml(action.url) + '</strong>';
|
|
550
|
+
status.style.color = 'var(--green)';
|
|
551
|
+
refresh();
|
|
552
|
+
break;
|
|
553
|
+
}
|
|
554
|
+
case 'archive-meeting': {
|
|
555
|
+
await fetch('/api/meetings/archive', {
|
|
556
|
+
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
|
557
|
+
body: JSON.stringify({ id: action.id })
|
|
558
|
+
});
|
|
559
|
+
status.innerHTML = '✓ Meeting archived: <strong>' + escHtml(action.id) + '</strong>';
|
|
560
|
+
status.style.color = 'var(--green)';
|
|
561
|
+
refresh();
|
|
562
|
+
break;
|
|
563
|
+
}
|
|
564
|
+
case 'update-routing': {
|
|
565
|
+
await fetch('/api/settings/routing', {
|
|
566
|
+
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
|
567
|
+
body: JSON.stringify({ content: action.content })
|
|
568
|
+
});
|
|
569
|
+
status.innerHTML = '✓ Routing updated';
|
|
570
|
+
status.style.color = 'var(--green)';
|
|
571
|
+
break;
|
|
572
|
+
}
|
|
486
573
|
default:
|
|
487
574
|
status.innerHTML = '? Unknown action: ' + escHtml(action.type);
|
|
488
575
|
status.style.color = 'var(--muted)';
|
package/dashboard.js
CHANGED
|
@@ -396,6 +396,15 @@ Available action types:
|
|
|
396
396
|
- **create-meeting**: Start a team meeting. Fields: title (short meeting name), agenda (detailed text — what agents should investigate/debate, numbered items work best), agents (array of agent IDs), rounds (optional, default 3), project (optional).
|
|
397
397
|
- **set-config**: Update engine settings. Fields: setting (setting name), value (new value). Valid settings: autoApprovePlans (bool), autoDecompose (bool), allowTempAgents (bool), maxConcurrent (number), maxTurns (number). Example: { "type": "set-config", "setting": "autoApprovePlans", "value": true }
|
|
398
398
|
- **edit-pipeline**: Update an existing pipeline. Fields: id (pipeline ID), title (optional), stages (optional, JSON array), trigger (optional, { cron: "minute hour dow" } or null for manual).
|
|
399
|
+
- **unpin**: Remove a pinned note. Fields: title (exact title of the pinned note to remove)
|
|
400
|
+
- **archive-plan**: Archive a completed/paused plan. Fields: file (PRD .json or plan .md filename)
|
|
401
|
+
- **reject-plan**: Reject a plan. Fields: file (PRD .json filename), reason (optional)
|
|
402
|
+
- **steer-agent**: Send a steering message to a running agent. Fields: agent (agent ID), message (text to inject)
|
|
403
|
+
- **add-meeting-note**: Add a human note to an active meeting. Fields: id (meeting ID like MTG-xxx), note (text)
|
|
404
|
+
- **trigger-pipeline**: Manually trigger a pipeline run. Fields: id (pipeline ID)
|
|
405
|
+
- **link-pr**: Link an external PR for tracking. Fields: url (PR URL), title (optional), project (optional), autoObserve (bool, default true)
|
|
406
|
+
- **archive-meeting**: Archive a completed meeting. Fields: id (meeting ID)
|
|
407
|
+
- **update-routing**: Update the routing table. Fields: content (full routing.md content)
|
|
399
408
|
|
|
400
409
|
## Rules
|
|
401
410
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.252",
|
|
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"
|