@yemi33/minions 0.1.2408 → 0.1.2410
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/dashboard/js/command-center.js +20 -1
- package/dashboard/js/render-other.js +39 -18
- package/dashboard/pages/engine.html +3 -2
- package/dashboard/shared/cc-suggestions.js +33 -0
- package/dashboard/slim/js/chat.js +5 -5
- package/dashboard/slim/styles.css +22 -0
- package/dashboard/styles.css +74 -0
- package/dashboard-build.js +1 -1
- package/dashboard.js +1 -1
- package/package.json +1 -1
|
@@ -626,6 +626,18 @@ function ccAbort() {
|
|
|
626
626
|
}
|
|
627
627
|
}
|
|
628
628
|
|
|
629
|
+
function _ccRenderSuggestedPrompts() {
|
|
630
|
+
var el = document.getElementById('cc-messages');
|
|
631
|
+
var tab = _ccActiveTab();
|
|
632
|
+
if (!el || !tab || tab.messages.length !== 0 || tab._sending || el.children.length !== 0) return;
|
|
633
|
+
renderCcSuggestedPrompts(el, function(prompt) {
|
|
634
|
+
var input = document.getElementById('cc-input');
|
|
635
|
+
if (!input) return;
|
|
636
|
+
input.value = prompt;
|
|
637
|
+
ccSend();
|
|
638
|
+
});
|
|
639
|
+
}
|
|
640
|
+
|
|
629
641
|
function toggleCommandCenter() {
|
|
630
642
|
_ccOpen = !_ccOpen;
|
|
631
643
|
// Opening CC means the operator found it — retire the first-use coachmark.
|
|
@@ -667,6 +679,7 @@ function ccNewTab(skipServerReset) {
|
|
|
667
679
|
_ccActiveTabId = tabId;
|
|
668
680
|
// New tab starts with null sessionId — server creates fresh session on first message
|
|
669
681
|
document.getElementById('cc-messages').innerHTML = '';
|
|
682
|
+
_ccRenderSuggestedPrompts();
|
|
670
683
|
ccRenderTabBar();
|
|
671
684
|
ccUpdateSessionIndicator();
|
|
672
685
|
ccSaveState();
|
|
@@ -696,6 +709,7 @@ function ccSwitchTab(id) {
|
|
|
696
709
|
for (var i = 0; i < tab.messages.length; i++) {
|
|
697
710
|
ccAddMessage(tab.messages[i].role, tab.messages[i].html, true, null, tab.messages[i]);
|
|
698
711
|
}
|
|
712
|
+
_ccRenderSuggestedPrompts();
|
|
699
713
|
// If this tab is still processing, restore the full streaming UX (tools, partial text, thinking)
|
|
700
714
|
if (tab._sending) {
|
|
701
715
|
var dotPulse = '<span style="display:inline-flex;gap:3px;margin-left:6px;vertical-align:middle"><span style="width:4px;height:4px;background:var(--blue);border-radius:50%;animation:dotPulse 1.2s infinite"></span><span style="width:4px;height:4px;background:var(--blue);border-radius:50%;animation:dotPulse 1.2s infinite;animation-delay:0.2s"></span><span style="width:4px;height:4px;background:var(--blue);border-radius:50%;animation:dotPulse 1.2s infinite;animation-delay:0.4s"></span></span>';
|
|
@@ -887,7 +901,11 @@ function ccRestoreMessages() {
|
|
|
887
901
|
var el = document.getElementById('cc-messages');
|
|
888
902
|
var tab = _ccActiveTab();
|
|
889
903
|
if (!tab) return;
|
|
890
|
-
if (el.children.length > 0
|
|
904
|
+
if (el.children.length > 0) return;
|
|
905
|
+
if (tab.messages.length === 0) {
|
|
906
|
+
_ccRenderSuggestedPrompts();
|
|
907
|
+
return;
|
|
908
|
+
}
|
|
891
909
|
for (var i = 0; i < tab.messages.length; i++) {
|
|
892
910
|
ccAddMessage(tab.messages[i].role, tab.messages[i].html, true, null, tab.messages[i]);
|
|
893
911
|
}
|
|
@@ -982,6 +1000,7 @@ function ccAddMessage(role, html, skipSave, targetTabId, meta) {
|
|
|
982
1000
|
var isVisible = !targetTabId || targetTabId === _ccActiveTabId;
|
|
983
1001
|
if (isVisible) {
|
|
984
1002
|
var el = document.getElementById('cc-messages');
|
|
1003
|
+
clearCcSuggestedPrompts(el);
|
|
985
1004
|
var div = document.createElement('div');
|
|
986
1005
|
div.className = isAssistant ? 'cc-msg-assistant' : isAction ? 'cc-msg-action' : '';
|
|
987
1006
|
if (messageId) {
|
|
@@ -1251,6 +1251,43 @@ async function killKeepPid(agentId, pid) {
|
|
|
1251
1251
|
|
|
1252
1252
|
window.MinionsKeepProcesses = { renderKeepProcesses, killKeepPid, mountKeepProcessesPanel, unmountKeepProcessesPanel };
|
|
1253
1253
|
|
|
1254
|
+
function _renderWorktreeQuarantineRefsContent(items) {
|
|
1255
|
+
if (!items.length) {
|
|
1256
|
+
return '<p class="empty quarantine-ref-empty">No local backup refs are currently preserved.</p>';
|
|
1257
|
+
}
|
|
1258
|
+
return '<div class="pr-table-wrap quarantine-ref-table-wrap">' +
|
|
1259
|
+
'<table class="pr-table quarantine-ref-table" aria-label="Quarantined work backup refs">' +
|
|
1260
|
+
'<colgroup><col><col><col><col></colgroup><thead><tr>' +
|
|
1261
|
+
'<th>Project</th><th>Backup ref</th><th>SHA</th><th>Created</th>' +
|
|
1262
|
+
'</tr></thead><tbody>' +
|
|
1263
|
+
items.map(function (item) {
|
|
1264
|
+
const project = escHtml(item.project || '');
|
|
1265
|
+
if (item.error) {
|
|
1266
|
+
return '<tr class="quarantine-ref-row quarantine-ref-row-error">' +
|
|
1267
|
+
'<td class="quarantine-ref-project" data-label="Project">' + project + '</td>' +
|
|
1268
|
+
'<td class="quarantine-ref-error" data-label="Status" colspan="3">' + escHtml(item.error) + '</td>' +
|
|
1269
|
+
'</tr>';
|
|
1270
|
+
}
|
|
1271
|
+
const ref = String(item.ref || '');
|
|
1272
|
+
const sha = String(item.sha || '');
|
|
1273
|
+
const createdAt = String(item.createdAt || '');
|
|
1274
|
+
const kind = item.kind === 'wip' ? 'WIP snapshot' : 'Commit backup';
|
|
1275
|
+
const kindClass = item.kind === 'wip' ? 'quarantine-ref-kind-wip' : 'quarantine-ref-kind-commits';
|
|
1276
|
+
return '<tr class="quarantine-ref-row">' +
|
|
1277
|
+
'<td class="quarantine-ref-project" data-label="Project">' + project + '</td>' +
|
|
1278
|
+
'<td data-label="Backup ref">' +
|
|
1279
|
+
'<span class="quarantine-ref-kind ' + kindClass + '">' + kind + '</span>' +
|
|
1280
|
+
'<code class="quarantine-ref-value">' + escHtml(ref) + '</code>' +
|
|
1281
|
+
'</td>' +
|
|
1282
|
+
'<td data-label="SHA"><code class="quarantine-ref-sha" title="' + escHtml(sha) + '">' + escHtml(sha.slice(0, 12)) + '</code></td>' +
|
|
1283
|
+
'<td data-label="Created"><time class="quarantine-ref-created" datetime="' + escHtml(createdAt) + '" title="' + escHtml(createdAt) + '">' +
|
|
1284
|
+
escHtml(formatLocalDateTime(createdAt)) +
|
|
1285
|
+
'</time></td>' +
|
|
1286
|
+
'</tr>';
|
|
1287
|
+
}).join('') +
|
|
1288
|
+
'</tbody></table></div>';
|
|
1289
|
+
}
|
|
1290
|
+
|
|
1254
1291
|
async function renderWorktreeQuarantineRefs() {
|
|
1255
1292
|
const root = document.getElementById('worktree-quarantine-refs-content');
|
|
1256
1293
|
const count = document.getElementById('worktree-quarantine-refs-count');
|
|
@@ -1262,26 +1299,10 @@ async function renderWorktreeQuarantineRefs() {
|
|
|
1262
1299
|
if (!res.ok) throw new Error(data.error || String(res.status));
|
|
1263
1300
|
const items = Array.isArray(data.items) ? data.items : [];
|
|
1264
1301
|
if (count) count.textContent = String(items.length);
|
|
1265
|
-
|
|
1266
|
-
html = '<p class="empty">No quarantined work refs found.</p>';
|
|
1267
|
-
} else {
|
|
1268
|
-
html = '<table style="width:100%;border-collapse:collapse"><thead><tr>' +
|
|
1269
|
-
'<th style="text-align:left">Project</th><th style="text-align:left">Backup ref</th>' +
|
|
1270
|
-
'<th style="text-align:left">SHA</th><th style="text-align:left">Created</th></tr></thead><tbody>' +
|
|
1271
|
-
items.map(function (item) {
|
|
1272
|
-
if (item.error) {
|
|
1273
|
-
return '<tr><td>' + escHtml(item.project || '') + '</td><td colspan="3" style="color:var(--red)">' + escHtml(item.error) + '</td></tr>';
|
|
1274
|
-
}
|
|
1275
|
-
return '<tr><td>' + escHtml(item.project || '') + '</td>' +
|
|
1276
|
-
'<td><code>' + escHtml(item.ref || '') + '</code></td>' +
|
|
1277
|
-
'<td><code>' + escHtml(String(item.sha || '').slice(0, 12)) + '</code></td>' +
|
|
1278
|
-
'<td>' + escHtml(item.createdAt || '') + '</td></tr>';
|
|
1279
|
-
}).join('') +
|
|
1280
|
-
'</tbody></table>';
|
|
1281
|
-
}
|
|
1302
|
+
html = _renderWorktreeQuarantineRefsContent(items);
|
|
1282
1303
|
} catch (e) {
|
|
1283
1304
|
if (count) count.textContent = '?';
|
|
1284
|
-
html = '<
|
|
1305
|
+
html = '<p class="quarantine-ref-error" role="alert">Failed to load: ' + escHtml(e.message) + '</p>';
|
|
1285
1306
|
}
|
|
1286
1307
|
// eslint-disable-next-line no-unsanitized/method -- structural HTML only; API fields are escaped above
|
|
1287
1308
|
root.replaceChildren(document.createRange().createContextualFragment(html));
|
|
@@ -28,9 +28,10 @@
|
|
|
28
28
|
</section>
|
|
29
29
|
<section id="worktree-quarantine-refs-section">
|
|
30
30
|
<h2>Quarantined Work <span class="count" id="worktree-quarantine-refs-count">0</span>
|
|
31
|
-
<span class="qa-section-subtitle">local
|
|
31
|
+
<span class="qa-section-subtitle">local Git recovery backups</span>
|
|
32
32
|
</h2>
|
|
33
|
-
<
|
|
33
|
+
<p class="quarantine-ref-intro">These local backup Git refs are preserved when Minions quarantines dirty or stuck worktrees. They are for manual recovery only and are not active or queued work.</p>
|
|
34
|
+
<div id="worktree-quarantine-refs-content"><p class="empty quarantine-ref-empty">No local backup refs are currently preserved.</p></div>
|
|
34
35
|
</section>
|
|
35
36
|
<section id="managed-processes-section">
|
|
36
37
|
<h2>Managed Processes <span class="count" id="managed-processes-count">0</span>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// Shared suggested-prompt definition and DOM renderer for classic and Slim CC.
|
|
2
|
+
// Add future prompts to this list; both surfaces pick them up automatically.
|
|
3
|
+
var CC_SUGGESTED_PROMPTS = [
|
|
4
|
+
'Update me on status of Minions',
|
|
5
|
+
];
|
|
6
|
+
|
|
7
|
+
function clearCcSuggestedPrompts(container) {
|
|
8
|
+
if (!container) return;
|
|
9
|
+
var current = container.querySelector('.cc-suggestions');
|
|
10
|
+
if (current) current.remove();
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function renderCcSuggestedPrompts(container, onSelect) {
|
|
14
|
+
if (!container || typeof onSelect !== 'function') return null;
|
|
15
|
+
clearCcSuggestedPrompts(container);
|
|
16
|
+
|
|
17
|
+
var group = document.createElement('div');
|
|
18
|
+
group.className = 'cc-suggestions';
|
|
19
|
+
group.setAttribute('role', 'group');
|
|
20
|
+
group.setAttribute('aria-label', 'Suggested prompts');
|
|
21
|
+
|
|
22
|
+
CC_SUGGESTED_PROMPTS.forEach(function(prompt) {
|
|
23
|
+
var button = document.createElement('button');
|
|
24
|
+
button.type = 'button';
|
|
25
|
+
button.className = 'cc-suggestion';
|
|
26
|
+
button.textContent = prompt;
|
|
27
|
+
button.addEventListener('click', function() { onSelect(prompt); });
|
|
28
|
+
group.appendChild(button);
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
container.appendChild(group);
|
|
32
|
+
return group;
|
|
33
|
+
}
|
|
@@ -307,6 +307,7 @@
|
|
|
307
307
|
}
|
|
308
308
|
|
|
309
309
|
function clearEmpty() {
|
|
310
|
+
clearCcSuggestedPrompts(msgsEl);
|
|
310
311
|
var empty = msgsEl.querySelector('.chat-empty');
|
|
311
312
|
if (empty) empty.remove();
|
|
312
313
|
}
|
|
@@ -627,10 +628,10 @@
|
|
|
627
628
|
msgsEl.innerHTML = '';
|
|
628
629
|
queueEl = null; // detached by the innerHTML reset; renderQueue rebuilds it
|
|
629
630
|
if (!messages.length) {
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
631
|
+
renderCcSuggestedPrompts(msgsEl, function(prompt) {
|
|
632
|
+
inputEl.value = prompt;
|
|
633
|
+
sendMessage();
|
|
634
|
+
});
|
|
634
635
|
} else {
|
|
635
636
|
for (var i = 0; i < messages.length; i++) {
|
|
636
637
|
var m = messages[i];
|
|
@@ -752,4 +753,3 @@
|
|
|
752
753
|
loadState();
|
|
753
754
|
rerenderHistory();
|
|
754
755
|
renderTabBar();
|
|
755
|
-
|
|
@@ -368,6 +368,28 @@
|
|
|
368
368
|
text-align: center;
|
|
369
369
|
margin-top: 24px;
|
|
370
370
|
}
|
|
371
|
+
.cc-suggestions {
|
|
372
|
+
display: flex;
|
|
373
|
+
justify-content: center;
|
|
374
|
+
width: 100%;
|
|
375
|
+
margin: var(--space-8) auto;
|
|
376
|
+
}
|
|
377
|
+
.cc-suggestion {
|
|
378
|
+
appearance: none;
|
|
379
|
+
max-width: 100%;
|
|
380
|
+
padding: var(--space-4) var(--space-6);
|
|
381
|
+
border: 1px solid var(--border);
|
|
382
|
+
border-radius: 999px;
|
|
383
|
+
background: var(--surface2);
|
|
384
|
+
color: var(--text);
|
|
385
|
+
font: inherit;
|
|
386
|
+
font-size: var(--text-lg);
|
|
387
|
+
line-height: 1.4;
|
|
388
|
+
cursor: pointer;
|
|
389
|
+
transition: border-color 0.15s, color 0.15s, background 0.15s;
|
|
390
|
+
}
|
|
391
|
+
.cc-suggestion:hover { border-color: var(--blue); color: var(--blue); background: var(--surface); }
|
|
392
|
+
.cc-suggestion:focus-visible { outline: 2px solid var(--blue); outline-offset: 2px; }
|
|
371
393
|
.chat-msg {
|
|
372
394
|
max-width: 90%;
|
|
373
395
|
/* Uniform bubble padding across variants (#2); 20px horizontal gives
|
package/dashboard/styles.css
CHANGED
|
@@ -382,6 +382,41 @@
|
|
|
382
382
|
.pr-table td { padding: var(--space-5); border-bottom: 1px solid var(--border); vertical-align: middle; white-space: nowrap; }
|
|
383
383
|
.pr-table tr:last-child td { border-bottom: none; }
|
|
384
384
|
.pr-table tr:hover { background: var(--surface2); }
|
|
385
|
+
.quarantine-ref-intro {
|
|
386
|
+
max-width: 920px; margin: calc(-1 * var(--space-3)) 0 var(--space-6);
|
|
387
|
+
color: var(--muted); font-size: var(--text-meta); line-height: 1.5;
|
|
388
|
+
}
|
|
389
|
+
.quarantine-ref-table-wrap {
|
|
390
|
+
max-height: min(420px, 55vh); overflow: auto;
|
|
391
|
+
border: 1px solid var(--border); border-radius: var(--radius-md);
|
|
392
|
+
background: var(--surface);
|
|
393
|
+
}
|
|
394
|
+
.quarantine-ref-table { table-layout: fixed; font-size: var(--text-caption); }
|
|
395
|
+
.quarantine-ref-table col:nth-child(1) { width: 15%; }
|
|
396
|
+
.quarantine-ref-table col:nth-child(2) { width: 51%; }
|
|
397
|
+
.quarantine-ref-table col:nth-child(3) { width: 14%; }
|
|
398
|
+
.quarantine-ref-table col:nth-child(4) { width: 20%; }
|
|
399
|
+
.quarantine-ref-table thead th { position: sticky; top: 0; z-index: 1; background: var(--surface); }
|
|
400
|
+
.quarantine-ref-table th:last-child, .quarantine-ref-table td:last-child {
|
|
401
|
+
width: auto; min-width: 0; text-align: left;
|
|
402
|
+
}
|
|
403
|
+
.quarantine-ref-table td { white-space: normal; vertical-align: top; line-height: 1.4; }
|
|
404
|
+
.quarantine-ref-project { font-weight: 600; overflow-wrap: anywhere; }
|
|
405
|
+
.quarantine-ref-kind {
|
|
406
|
+
display: inline-block; margin-bottom: var(--space-2);
|
|
407
|
+
padding: var(--space-1) var(--space-3); border: 1px solid var(--border);
|
|
408
|
+
border-radius: var(--radius-xl); font-size: var(--text-micro);
|
|
409
|
+
font-weight: 600; text-transform: uppercase; letter-spacing: 0.4px;
|
|
410
|
+
}
|
|
411
|
+
.quarantine-ref-kind-wip { color: var(--yellow); background: rgba(210,153,34,0.1); }
|
|
412
|
+
.quarantine-ref-kind-commits { color: var(--blue); background: rgba(88,166,255,0.1); }
|
|
413
|
+
.quarantine-ref-value {
|
|
414
|
+
display: block; color: var(--text); overflow-wrap: anywhere; word-break: break-word;
|
|
415
|
+
}
|
|
416
|
+
.quarantine-ref-sha { color: var(--muted); overflow-wrap: anywhere; }
|
|
417
|
+
.quarantine-ref-created { color: var(--muted); font-size: var(--text-caption); }
|
|
418
|
+
.quarantine-ref-error { color: var(--red); overflow-wrap: anywhere; }
|
|
419
|
+
.quarantine-ref-empty { padding: var(--space-2) 0; font-size: var(--text-caption); }
|
|
385
420
|
.pr-title { color: var(--blue); text-decoration: none; font-weight: 500; }
|
|
386
421
|
.pr-title:hover { text-decoration: underline; }
|
|
387
422
|
.pr-desc { color: var(--muted); font-size: var(--text-sm); font-weight: 400; margin-top: 2px; line-height: 1.4; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 400px; }
|
|
@@ -1171,6 +1206,20 @@
|
|
|
1171
1206
|
normal spacing relative to non-action neighbors (parent flex gap:10px). */
|
|
1172
1207
|
#cc-messages > .cc-msg-action + .cc-msg-action { margin-top: -8px; }
|
|
1173
1208
|
|
|
1209
|
+
.cc-suggestions {
|
|
1210
|
+
display: flex; flex-direction: column; align-items: stretch; gap: var(--space-3);
|
|
1211
|
+
width: 100%; margin: var(--space-7) auto 0;
|
|
1212
|
+
}
|
|
1213
|
+
.cc-suggestion {
|
|
1214
|
+
appearance: none; width: 100%; padding: var(--space-4) var(--space-5);
|
|
1215
|
+
border: 1px solid var(--border); border-radius: var(--radius-md);
|
|
1216
|
+
background: var(--surface2); color: var(--text); font: inherit;
|
|
1217
|
+
font-size: var(--text-md); line-height: 1.4; text-align: left; cursor: pointer;
|
|
1218
|
+
transition: border-color var(--transition-base), color var(--transition-base);
|
|
1219
|
+
}
|
|
1220
|
+
.cc-suggestion:hover { border-color: var(--blue); color: var(--blue); }
|
|
1221
|
+
.cc-suggestion:focus-visible { outline: 2px solid var(--blue); outline-offset: 2px; }
|
|
1222
|
+
|
|
1174
1223
|
/* Command Center tab bar */
|
|
1175
1224
|
.cc-tab-scroll { display: flex; gap: 4px; align-items: center; overflow-x: auto; overflow-y: hidden; flex: 1 1 auto; min-width: 0; scrollbar-width: thin; }
|
|
1176
1225
|
.cc-tab { padding: 4px 10px; font-size: var(--text-sm); border: 1px solid var(--border); border-bottom: none; border-radius: 6px 6px 0 0; background: var(--surface2); color: var(--muted); cursor: pointer; white-space: nowrap; max-width: 140px; display: inline-flex; align-items: center; gap: 2px; flex-shrink: 0; margin-bottom: -1px; position: relative; }
|
|
@@ -1278,6 +1327,31 @@
|
|
|
1278
1327
|
.pr-table { font-size: var(--text-base); }
|
|
1279
1328
|
.pr-table td { padding: 8px 6px; }
|
|
1280
1329
|
.pr-table th { padding: 6px; font-size: var(--text-sm); }
|
|
1330
|
+
.quarantine-ref-table-wrap { border: none; background: transparent; }
|
|
1331
|
+
.quarantine-ref-table,
|
|
1332
|
+
.quarantine-ref-table tbody,
|
|
1333
|
+
.quarantine-ref-table tr,
|
|
1334
|
+
.quarantine-ref-table td { display: block; width: 100%; }
|
|
1335
|
+
.quarantine-ref-table colgroup, .quarantine-ref-table thead { display: none; }
|
|
1336
|
+
.quarantine-ref-table tr {
|
|
1337
|
+
margin-bottom: var(--space-4); overflow: hidden;
|
|
1338
|
+
border: 1px solid var(--border); border-radius: var(--radius-md);
|
|
1339
|
+
background: var(--surface);
|
|
1340
|
+
}
|
|
1341
|
+
.quarantine-ref-table tr:last-child { margin-bottom: 0; }
|
|
1342
|
+
.quarantine-ref-table td, .quarantine-ref-table td:last-child {
|
|
1343
|
+
display: grid; grid-template-columns: minmax(76px, 26%) minmax(0, 1fr);
|
|
1344
|
+
gap: var(--space-4); width: 100%; min-width: 0;
|
|
1345
|
+
padding: var(--space-3) var(--space-4); text-align: left;
|
|
1346
|
+
}
|
|
1347
|
+
.quarantine-ref-table tr td:not(:last-child) { border-bottom: 1px solid var(--border); }
|
|
1348
|
+
.quarantine-ref-table td::before {
|
|
1349
|
+
content: attr(data-label); grid-column: 1; color: var(--muted);
|
|
1350
|
+
font-size: var(--text-micro); font-weight: 600;
|
|
1351
|
+
text-transform: uppercase; letter-spacing: 0.4px;
|
|
1352
|
+
}
|
|
1353
|
+
.quarantine-ref-table td > * { grid-column: 2; min-width: 0; }
|
|
1354
|
+
.quarantine-ref-table .quarantine-ref-kind { justify-self: start; }
|
|
1281
1355
|
.cmd-input-wrap { flex-direction: column; }
|
|
1282
1356
|
.cmd-send-btn { width: 100%; }
|
|
1283
1357
|
.cmd-hints { gap: 8px; }
|
package/dashboard-build.js
CHANGED
|
@@ -8,7 +8,7 @@ const shared = require('./engine/shared');
|
|
|
8
8
|
const { safeRead } = shared;
|
|
9
9
|
|
|
10
10
|
const MINIONS_DIR = __dirname;
|
|
11
|
-
const DASHBOARD_SHARED_JS = ['pr-merge-state', 'pr-filters'];
|
|
11
|
+
const DASHBOARD_SHARED_JS = ['pr-merge-state', 'pr-filters', 'cc-suggestions'];
|
|
12
12
|
|
|
13
13
|
function buildDashboardHtml() {
|
|
14
14
|
const dashDir = path.join(MINIONS_DIR, 'dashboard');
|
package/dashboard.js
CHANGED
|
@@ -1840,7 +1840,7 @@ function buildDashboardHtml() {
|
|
|
1840
1840
|
'confirm-dialog', 'modal', 'modal-qa', 'settings', 'qa', 'fre', 'refresh'
|
|
1841
1841
|
];
|
|
1842
1842
|
let jsHtml = '';
|
|
1843
|
-
for (const f of ['pr-merge-state', 'pr-filters']) {
|
|
1843
|
+
for (const f of ['pr-merge-state', 'pr-filters', 'cc-suggestions']) {
|
|
1844
1844
|
const content = safeRead(path.join(dashDir, 'shared', f + '.js'));
|
|
1845
1845
|
jsHtml += `\n// ─── shared/${f}.js ────────────────────────────────────────\n${content}\n`;
|
|
1846
1846
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2410",
|
|
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"
|