@yemi33/minions 0.1.1784 → 0.1.1786
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
|
@@ -141,7 +141,7 @@ function _ccMergeStreamText(prev, incoming) {
|
|
|
141
141
|
return current + '\n\n' + next;
|
|
142
142
|
}
|
|
143
143
|
|
|
144
|
-
var CC_DISPATCH_ACTION_ALIASES = ['fix', '
|
|
144
|
+
var CC_DISPATCH_ACTION_ALIASES = ['fix', 'explore', 'review', 'test'];
|
|
145
145
|
function _ccNormalizeDispatchAction(action) {
|
|
146
146
|
if (!action || typeof action !== 'object' || typeof action.type !== 'string') return action;
|
|
147
147
|
var type = action.type.trim().toLowerCase();
|
|
@@ -1045,7 +1045,7 @@ async function ccExecuteAction(action, targetTabId) {
|
|
|
1045
1045
|
status.style.color = action._serverDuplicate ? 'var(--orange)' : 'var(--green)';
|
|
1046
1046
|
}
|
|
1047
1047
|
ccAddMessage('action', status.outerHTML, false, targetTabId);
|
|
1048
|
-
if (['dispatch','create-meeting'].includes(action.type)) wakeEngine();
|
|
1048
|
+
if (['dispatch','fix','explore','review','test','create-meeting'].includes(action.type)) wakeEngine();
|
|
1049
1049
|
refresh();
|
|
1050
1050
|
return;
|
|
1051
1051
|
}
|
|
@@ -1054,7 +1054,6 @@ async function ccExecuteAction(action, targetTabId) {
|
|
|
1054
1054
|
switch (action.type) {
|
|
1055
1055
|
case 'dispatch':
|
|
1056
1056
|
case 'fix':
|
|
1057
|
-
case 'implement':
|
|
1058
1057
|
case 'explore':
|
|
1059
1058
|
case 'review':
|
|
1060
1059
|
case 'test': {
|
|
@@ -81,6 +81,15 @@ function _getPipelineEmptyRunCopy(pipeline) {
|
|
|
81
81
|
return 'No runs yet. Use Run Now to start this pipeline.';
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
+
function _getPipelineDisplayTitle(pipeline) {
|
|
85
|
+
var title = pipeline && pipeline.title != null ? String(pipeline.title).trim() : '';
|
|
86
|
+
if (title && title.toLowerCase() !== 'undefined' && title.toLowerCase() !== 'null') return title;
|
|
87
|
+
var id = pipeline && pipeline.id != null ? String(pipeline.id).trim() : '';
|
|
88
|
+
var human = id.replace(/[_-]+/g, ' ').replace(/\s+/g, ' ').trim();
|
|
89
|
+
if (human) return human.charAt(0).toUpperCase() + human.slice(1);
|
|
90
|
+
return 'Untitled pipeline';
|
|
91
|
+
}
|
|
92
|
+
|
|
84
93
|
/**
|
|
85
94
|
* Render clickable artifact links for a pipeline stage.
|
|
86
95
|
* Each artifact type gets an icon and navigates to the relevant detail view.
|
|
@@ -301,6 +310,7 @@ function renderPipelines(pipelines) {
|
|
|
301
310
|
if ((p.stages || []).length > 0) {
|
|
302
311
|
progressHtml = _buildNodeChain(p.stages || [], displayRun, { compact: true, pipeline: p });
|
|
303
312
|
}
|
|
313
|
+
var displayTitle = _getPipelineDisplayTitle(p);
|
|
304
314
|
|
|
305
315
|
// Monitored resources (pipeline-level + stage-level, compact on card)
|
|
306
316
|
var allResources = _collectMonitoredResources(p);
|
|
@@ -309,7 +319,7 @@ function renderPipelines(pipelines) {
|
|
|
309
319
|
return '<div class="pipeline-card" onclick="if(shouldIgnoreSelectionClick(event))return;openPipelineDetail(\'' + escHtml(p.id) + '\')">' +
|
|
310
320
|
'<div class="pipeline-card-header">' +
|
|
311
321
|
'<div class="pipeline-card-main">' +
|
|
312
|
-
'<strong class="pipeline-card-title">' + escHtml(
|
|
322
|
+
'<strong class="pipeline-card-title">' + escHtml(displayTitle) + '</strong>' +
|
|
313
323
|
'<div class="pipeline-card-meta">' +
|
|
314
324
|
'<span>' + escHtml(p.id) + '</span>' +
|
|
315
325
|
'<span>' + escHtml(_getPipelineStageLabel(p)) + '</span>' +
|
|
@@ -332,6 +342,7 @@ function openPipelineDetail(id) {
|
|
|
332
342
|
_stopPipelinePoll();
|
|
333
343
|
var p = _pipelinesData.find(function(x) { return x.id === id; });
|
|
334
344
|
if (!p) { alert('Pipeline not found'); return; }
|
|
345
|
+
var displayTitle = _getPipelineDisplayTitle(p);
|
|
335
346
|
|
|
336
347
|
var html = '<div style="display:flex;flex-direction:column;gap:12px">';
|
|
337
348
|
|
|
@@ -426,7 +437,7 @@ function openPipelineDetail(id) {
|
|
|
426
437
|
|
|
427
438
|
html += '</div>';
|
|
428
439
|
|
|
429
|
-
document.getElementById('modal-title').textContent = 'Pipeline: ' +
|
|
440
|
+
document.getElementById('modal-title').textContent = 'Pipeline: ' + displayTitle;
|
|
430
441
|
document.getElementById('modal-body').innerHTML = html;
|
|
431
442
|
document.getElementById('modal').classList.add('open');
|
|
432
443
|
|
|
@@ -663,6 +674,7 @@ async function _submitCreatePipeline() {
|
|
|
663
674
|
function openEditPipelineModal(id) {
|
|
664
675
|
var p = _pipelinesData.find(function(x) { return x.id === id; });
|
|
665
676
|
if (!p) return;
|
|
677
|
+
var displayTitle = _getPipelineDisplayTitle(p);
|
|
666
678
|
var inputStyle = 'display:block;width:100%;margin-top:4px;padding:6px 8px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:var(--text-md);font-family:inherit';
|
|
667
679
|
var pillStyle = 'display:inline-block;padding:4px 10px;margin:2px;border:1px solid var(--border);border-radius:12px;cursor:pointer;font-size:11px;color:var(--text);background:var(--bg);user-select:none;transition:all 0.15s';
|
|
668
680
|
var linkStyle = 'font-size:10px;color:var(--blue);cursor:pointer;text-decoration:underline;margin-right:8px';
|
|
@@ -686,7 +698,7 @@ function openEditPipelineModal(id) {
|
|
|
686
698
|
|
|
687
699
|
window._editPipelineId = id;
|
|
688
700
|
|
|
689
|
-
document.getElementById('modal-title').textContent = 'Edit Pipeline: ' +
|
|
701
|
+
document.getElementById('modal-title').textContent = 'Edit Pipeline: ' + displayTitle;
|
|
690
702
|
document.getElementById('modal-body').innerHTML =
|
|
691
703
|
'<div style="display:flex;flex-direction:column;gap:10px">' +
|
|
692
704
|
'<div style="color:var(--muted);font-size:11px">ID: <strong style="color:var(--text)">' + escHtml(id) + '</strong></div>' +
|
package/dashboard.js
CHANGED
|
@@ -1799,7 +1799,7 @@ function _extractActionsJson(segment) {
|
|
|
1799
1799
|
return null;
|
|
1800
1800
|
}
|
|
1801
1801
|
|
|
1802
|
-
const CC_DISPATCH_ACTION_ALIASES = new Set(['fix', '
|
|
1802
|
+
const CC_DISPATCH_ACTION_ALIASES = new Set(['fix', 'explore', 'review', 'test']);
|
|
1803
1803
|
|
|
1804
1804
|
function normalizeCCAction(action) {
|
|
1805
1805
|
if (!action || typeof action !== 'object') return action;
|
|
@@ -2209,7 +2209,7 @@ function createPipelineFromAction(action) {
|
|
|
2209
2209
|
function _ccValidateAction(action) {
|
|
2210
2210
|
if (!action || typeof action !== 'object' || !action.type) return 'action is missing required field: type';
|
|
2211
2211
|
switch (action.type) {
|
|
2212
|
-
case 'dispatch': case 'fix': case '
|
|
2212
|
+
case 'dispatch': case 'fix': case 'explore': case 'review': case 'test':
|
|
2213
2213
|
if (!action.title || typeof action.title !== 'string' || !action.title.trim()) return `${action.type} action missing required field: title`;
|
|
2214
2214
|
return null;
|
|
2215
2215
|
case 'build-and-test':
|
|
@@ -2543,8 +2543,8 @@ async function executeCCActions(actions, { source = 'command-center', inferredPr
|
|
|
2543
2543
|
}
|
|
2544
2544
|
try {
|
|
2545
2545
|
switch (action.type) {
|
|
2546
|
-
case 'dispatch': case 'fix': case '
|
|
2547
|
-
const workType = routing.normalizeWorkType(action.workType || WORK_TYPE.IMPLEMENT, WORK_TYPE.IMPLEMENT);
|
|
2546
|
+
case 'dispatch': case 'fix': case 'explore': case 'review': case 'test': {
|
|
2547
|
+
const workType = routing.normalizeWorkType(action.workType || (action.type !== 'dispatch' ? action.type : WORK_TYPE.IMPLEMENT), WORK_TYPE.IMPLEMENT);
|
|
2548
2548
|
const id = 'W-' + shared.uid();
|
|
2549
2549
|
const project = action.project || '';
|
|
2550
2550
|
const prRef = getWorkItemPrRef(action);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1786",
|
|
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/prompts/cc-system.md
CHANGED
|
@@ -91,11 +91,11 @@ I'll dispatch dallas to fix that bug.
|
|
|
91
91
|
- `knowledge`: `title`, `content`, and `category` REQUIRED. Valid categories: architecture, conventions, project-notes, build-reports, reviews.
|
|
92
92
|
|
|
93
93
|
Core action types:
|
|
94
|
-
- **dispatch**: title (REQUIRED), workType, priority (low/medium/high), agents[] or agent (optional — both shapes accepted), project (REQUIRED when multi-project unless `pr` resolves to a tracked PR), description, pr (optional PR number/id/url for work that targets an existing PR), scope (`"fan-out"` only when the user explicitly asks to fan out to all agents). Do not emit `type:"fix"` or `type:"implement"`; emit `type:"dispatch"` with `workType:"fix"` or `workType:"implement"`.
|
|
94
|
+
- **dispatch**: title (REQUIRED), workType, priority (low/medium/high), agents[] or agent (optional — both shapes accepted), project (REQUIRED when multi-project unless `pr` resolves to a tracked PR), description, pr (optional PR number/id/url for work that targets an existing PR), scope (`"fan-out"` only when the user explicitly asks to fan out to all agents). Do not emit `type:"fix"` or `type:"implement"`; emit `type:"dispatch"` with `workType:"fix"` or emit `type:"dispatch"` with `workType:"implement"`.
|
|
95
95
|
workTypes: `explore` (research/report only, NO PR), `ask` (answer/report, NO PR), `implement` (new code, PR REQUIRED), `fix` (standalone bug fix creates a PR; include `pr` when fixing review comments/build failures on an existing PR), `review` (code review, NO PR), `test` (tests, PR if new), `verify` (merge/build/maintenance, NO PR)
|
|
96
96
|
If the user wants a design/architecture artifact committed through a PR, dispatch `implement` or `docs` rather than `explore`.
|
|
97
97
|
When the user names a specific agent ("assign this to lambert"), put exactly that one name in `agents` (e.g. `"agents": ["lambert"]`). A single-agent assignment is hard-pinned by the server — it will queue for that agent only and skip the routing table. If the user explicitly asks for fan-out/all agents, set `scope: "fan-out"`.
|
|
98
|
-
After emitting a dispatch
|
|
98
|
+
After emitting a dispatch-like action, return immediately; do not poll, monitor, watch, wait, or check until completion, and do not add follow-up status actions. Only create a watch, monitor, poll, or periodically check when the human explicitly asks for monitoring, watching, periodic checks, or notification on completion.
|
|
99
99
|
- **build-and-test**: pr, project (optional), agent (optional) — Run the build-and-test playbook against a PR. The agent will checkout the PR branch, run the project's build/test commands, and report results. Use when the user asks to "run tests on PR X" or "build PR X" or after a fix to verify nothing regressed.
|
|
100
100
|
Example: user says "run build and test on PR 1834" → `{"type":"build-and-test","pr":"1834"}`
|
|
101
101
|
- **note**: title, content — save to inbox
|