@yemi33/minions 0.1.168 → 0.1.170
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,5 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.170 (2026-04-02)
|
|
4
|
+
|
|
5
|
+
### Engine
|
|
6
|
+
- engine/pipeline.js
|
|
7
|
+
|
|
8
|
+
### Dashboard
|
|
9
|
+
- dashboard/js/command-center.js
|
|
10
|
+
- dashboard/js/render-pipelines.js
|
|
11
|
+
- dashboard/layout.html
|
|
12
|
+
- dashboard/styles.css
|
|
13
|
+
|
|
14
|
+
## 0.1.169 (2026-04-02)
|
|
15
|
+
|
|
16
|
+
### Engine
|
|
17
|
+
- engine/lifecycle.js
|
|
18
|
+
|
|
3
19
|
## 0.1.168 (2026-04-02)
|
|
4
20
|
|
|
5
21
|
### Engine
|
|
@@ -16,11 +16,11 @@ function toggleCommandCenter() {
|
|
|
16
16
|
document.getElementById('cc-input').focus();
|
|
17
17
|
ccRestoreMessages();
|
|
18
18
|
} else if (_ccSending) {
|
|
19
|
-
// Closing drawer while CC is processing — show animated badge
|
|
20
19
|
showNotifBadge(document.getElementById('cc-toggle-btn'), 'processing');
|
|
21
20
|
}
|
|
22
21
|
}
|
|
23
22
|
|
|
23
|
+
|
|
24
24
|
function ccNewSession() {
|
|
25
25
|
fetch('/api/command-center/new-session', { method: 'POST' }).catch(() => {});
|
|
26
26
|
_ccSessionId = null;
|
|
@@ -88,7 +88,7 @@ function ccAddMessage(role, html, skipSave) {
|
|
|
88
88
|
const isUser = role === 'user';
|
|
89
89
|
const div = document.createElement('div');
|
|
90
90
|
const isAssistant = !isUser;
|
|
91
|
-
div.className = isAssistant ? 'cc-msg-assistant
|
|
91
|
+
div.className = isAssistant ? 'cc-msg-assistant' : '';
|
|
92
92
|
div.style.cssText = 'padding:8px 12px;border-radius:8px;font-size:12px;line-height:1.6;max-width:95%;' +
|
|
93
93
|
(isUser ? 'background:var(--blue);color:#fff;align-self:flex-end' : 'background:var(--surface2);color:var(--text);align-self:flex-start;border:1px solid var(--border);position:relative');
|
|
94
94
|
div.innerHTML = (isAssistant && !html.includes('color:var(--red)') && !html.includes('cc-queued-pill') ? llmCopyBtn() : '') + html;
|
|
@@ -93,7 +93,7 @@ function renderPipelines(pipelines) {
|
|
|
93
93
|
|
|
94
94
|
// Build step-progress indicator for pipelines with a run
|
|
95
95
|
var progressHtml = '';
|
|
96
|
-
var displayRun = activeRun
|
|
96
|
+
var displayRun = activeRun;
|
|
97
97
|
if (displayRun && (p.stages || []).length > 0) {
|
|
98
98
|
var totalStages = (p.stages || []).length;
|
|
99
99
|
var completedCount = 0;
|
|
@@ -164,7 +164,7 @@ function openPipelineDetail(id) {
|
|
|
164
164
|
'</div>';
|
|
165
165
|
|
|
166
166
|
// Stage detail with progress bar
|
|
167
|
-
var detailRun = activeRun
|
|
167
|
+
var detailRun = activeRun;
|
|
168
168
|
if (detailRun && (p.stages || []).length > 0) {
|
|
169
169
|
var dtotal = (p.stages || []).length;
|
|
170
170
|
var ddone = 0, drun = 0, dfail = 0;
|
package/dashboard/layout.html
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
<div class="engine-alert" id="engine-alert"></div>
|
|
22
22
|
|
|
23
23
|
<!-- Command Center Drawer -->
|
|
24
|
-
<div id="cc-drawer" style="display:none;position:fixed;top:0;right:0;bottom:0;width:420px;background:var(--surface);border-left:1px solid var(--border);z-index:300;flex-direction:column">
|
|
24
|
+
<div id="cc-drawer" style="display:none;position:fixed;top:0;right:0;bottom:0;width:420px;background:var(--surface);border-left:1px solid var(--border);z-index:300;flex-direction:column;overscroll-behavior:contain">
|
|
25
25
|
<div id="cc-resize-handle" class="cc-resize-handle"></div>
|
|
26
26
|
<div style="padding:12px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between">
|
|
27
27
|
<div style="display:flex;align-items:center;gap:8px">
|
package/dashboard/styles.css
CHANGED
|
@@ -567,11 +567,11 @@
|
|
|
567
567
|
.detail-content .section { margin-bottom: var(--space-7); padding: var(--space-6); background: var(--surface2); border: 1px solid var(--border); border-radius: var(--radius-md); }
|
|
568
568
|
|
|
569
569
|
/* Markdown content — consistent styling everywhere renderMd() is used */
|
|
570
|
-
.md-content { font-family: 'Segoe UI', system-ui, sans-serif; font-size: 12px; line-height: 1.6; white-space: normal; word-break: break-word; }
|
|
570
|
+
.md-content { font-family: 'Segoe UI', system-ui, sans-serif; font-size: 12px; line-height: 1.6; white-space: normal; word-break: break-word; overflow-x: auto; }
|
|
571
571
|
.md-content pre { font-family: Consolas, 'Courier New', monospace; white-space: pre-wrap; }
|
|
572
572
|
.md-content code { font-family: Consolas, 'Courier New', monospace; }
|
|
573
|
-
.md-content table { border-collapse: collapse; width: 100%; margin: 6px 0; }
|
|
574
|
-
.md-content th, .md-content td { padding: 4px 8px; border: 1px solid var(--border); text-align: left; font-size: 11px; }
|
|
573
|
+
.md-content table { border-collapse: collapse; width: 100%; margin: 6px 0; table-layout: fixed; }
|
|
574
|
+
.md-content th, .md-content td { padding: 4px 8px; border: 1px solid var(--border); text-align: left; font-size: 11px; word-wrap: break-word; overflow-wrap: break-word; }
|
|
575
575
|
.md-content th { background: var(--surface); font-weight: 600; }
|
|
576
576
|
.status-line { display: flex; align-items: center; gap: var(--space-5); padding: var(--space-5) var(--space-7); background: var(--bg); border-bottom: 1px solid var(--border); font-size: var(--text-md); }
|
|
577
577
|
|
package/engine/lifecycle.js
CHANGED
|
@@ -478,6 +478,7 @@ function updateWorkItemStatus(meta, status, reason) {
|
|
|
478
478
|
if (status === 'done') {
|
|
479
479
|
delete target.failReason;
|
|
480
480
|
delete target.failedAt;
|
|
481
|
+
delete target._retryCount;
|
|
481
482
|
target.completedAt = ts();
|
|
482
483
|
} else if (status === 'failed') {
|
|
483
484
|
if (reason) target.failReason = reason;
|
package/engine/pipeline.js
CHANGED
|
@@ -345,7 +345,7 @@ function isStageComplete(stage, stageState, run, config) {
|
|
|
345
345
|
if (ids.length === 0) return false;
|
|
346
346
|
return ids.every(id => {
|
|
347
347
|
const wi = workItems.find(w => w.id === id);
|
|
348
|
-
return wi
|
|
348
|
+
return !wi || wi.status === 'done' || wi.status === 'failed'; // missing = treat as done
|
|
349
349
|
});
|
|
350
350
|
}
|
|
351
351
|
case 'meeting': {
|
|
@@ -370,7 +370,7 @@ function isStageComplete(stage, stageState, run, config) {
|
|
|
370
370
|
const prdWiIds = artifacts.workItems || [];
|
|
371
371
|
const prdDone = prdWiIds.every(id => {
|
|
372
372
|
const wi = all.find(w => w.id === id);
|
|
373
|
-
return wi
|
|
373
|
+
return !wi || wi.status === 'done' || wi.status === 'failed'; // missing = treat as done
|
|
374
374
|
});
|
|
375
375
|
if (!prdDone) return false;
|
|
376
376
|
|
|
@@ -418,7 +418,7 @@ function isStageComplete(stage, stageState, run, config) {
|
|
|
418
418
|
if (implementIds.length === 0 && artifacts.prds?.length > 0) return false; // items not materialized yet
|
|
419
419
|
return implementIds.every(id => {
|
|
420
420
|
const wi = all.find(w => w.id === id);
|
|
421
|
-
return wi
|
|
421
|
+
return !wi || wi.status === 'done' || wi.status === 'failed'; // missing = treat as done
|
|
422
422
|
});
|
|
423
423
|
}
|
|
424
424
|
case 'merge-prs': {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.170",
|
|
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"
|