@yemi33/minions 0.1.169 → 0.1.171

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,22 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.171 (2026-04-02)
4
+
5
+ ### Dashboard
6
+ - dashboard/js/utils.js
7
+ - dashboard/styles.css
8
+
9
+ ## 0.1.170 (2026-04-02)
10
+
11
+ ### Engine
12
+ - engine/pipeline.js
13
+
14
+ ### Dashboard
15
+ - dashboard/js/command-center.js
16
+ - dashboard/js/render-pipelines.js
17
+ - dashboard/layout.html
18
+ - dashboard/styles.css
19
+
3
20
  ## 0.1.169 (2026-04-02)
4
21
 
5
22
  ### 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 md-content' : '';
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 || lastRun;
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 || (p.runs || []).slice(-1)[0];
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;
@@ -134,7 +134,7 @@ function renderMd(s) {
134
134
  i++;
135
135
  }
136
136
  i--; // back up one since the for loop will increment
137
- var tableHtml = '<table class="pr-table" style="margin:4px 0;font-size:11px"><thead><tr>';
137
+ var tableHtml = '<div class="md-table-wrap"><table style="font-size:11px"><thead><tr>';
138
138
  if (tableRows.length > 0) {
139
139
  tableRows[0].forEach(function(c) { tableHtml += '<th>' + c + '</th>'; });
140
140
  tableHtml += '</tr></thead><tbody>';
@@ -143,7 +143,7 @@ function renderMd(s) {
143
143
  tableRows[ti].forEach(function(c) { tableHtml += '<td>' + c + '</td>'; });
144
144
  tableHtml += '</tr>';
145
145
  }
146
- tableHtml += '</tbody></table>';
146
+ tableHtml += '</tbody></table></div>';
147
147
  }
148
148
  out.push(tableHtml);
149
149
  continue;
@@ -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">
@@ -567,11 +567,13 @@
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; margin: 6px 0; width: max-content; min-width: 100%; }
574
+ .md-content .md-table-wrap { overflow-x: auto; margin: 6px 0; }
575
+ .md-content th, .md-content td { padding: 4px 8px; border: 1px solid var(--border); text-align: left; font-size: 11px; white-space: nowrap; }
576
+ .md-content td { white-space: normal; min-width: 60px; }
575
577
  .md-content th { background: var(--surface); font-weight: 600; }
576
578
  .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
579
 
@@ -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 && (wi.status === 'done' || wi.status === 'failed');
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 && wi.status === 'done';
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 && (wi.status === 'done' || wi.status === 'failed');
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.169",
3
+ "version": "0.1.171",
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"
@@ -1,19 +0,0 @@
1
- {
2
- "id": "daily-standup",
3
- "title": "Daily Squad Stand-up",
4
- "stages": [
5
- {
6
- "id": "standup",
7
- "type": "meeting",
8
- "title": "Daily Squad Stand-up � 2026-04-01",
9
- "agenda": "Daily weekday meeting for all agents to review squad setup improvements and discuss progress on agentic harness engineering.\n\n1. What shipped since yesterday's meeting (Track A/B/C progress)?\n2. Any blockers on current work items?\n3. Review recent agentic harness engineering best practices � are there new Anthropic articles or model improvements that change our assumptions?\n4. Propose 1 concrete improvement each agent wants to make to the squad harness this week.\n5. Agree on today's priorities and any re-sequencing needed.\n\nOutput: a bulleted list of decisions made, action items with owners, and any updated priorities.",
10
- "participants": [
11
- "all"
12
- ]
13
- }
14
- ],
15
- "trigger": {
16
- "cron": "0 9 1,2,3,4,5"
17
- },
18
- "enabled": true
19
- }