@yemi33/minions 0.1.425 → 0.1.427
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 +3 -1
- package/dashboard/js/live-stream.js +15 -6
- package/dashboard/js/refresh.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.1.
|
|
3
|
+
## 0.1.427 (2026-04-06)
|
|
4
4
|
|
|
5
5
|
### Features
|
|
6
6
|
- version check interval on settings page
|
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
- Convert remaining lifecycle.js safeWrite calls to mutateJsonFileLocked
|
|
12
12
|
|
|
13
13
|
### Fixes
|
|
14
|
+
- Notes & KB sidebar notifies on inbox changes and notes.md edits
|
|
15
|
+
- live output no longer clobbered by steering send
|
|
14
16
|
- plan-to-prd playbook — don't include verify item, engine adds it
|
|
15
17
|
- steering messages right-aligned with immediate feedback
|
|
16
18
|
- CC retry now drains queued messages after success
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
let livePollingInterval = null;
|
|
4
4
|
let liveEventSource = null;
|
|
5
|
+
let _steerInFlight = false;
|
|
5
6
|
|
|
6
7
|
function renderLiveChatMessage(raw) {
|
|
7
8
|
const el = document.getElementById('live-messages');
|
|
@@ -43,7 +44,8 @@ function renderLiveChatMessage(raw) {
|
|
|
43
44
|
// Human steering messages
|
|
44
45
|
if (trimmed.startsWith('[human-steering]')) {
|
|
45
46
|
const msg = trimmed.replace('[human-steering] ', '');
|
|
46
|
-
el.innerHTML += '<div style="align-self:flex-end;background:var(--blue);color:#fff;padding:6px 12px;border-radius:12px 12px 2px 12px;max-width:80%;margin:4px 0;font-size:12px">' + escHtml(msg) +
|
|
47
|
+
el.innerHTML += '<div style="align-self:flex-end;background:var(--blue);color:#fff;padding:6px 12px;border-radius:12px 12px 2px 12px;max-width:80%;margin:4px 0;font-size:12px">' + escHtml(msg) +
|
|
48
|
+
'<div style="font-size:9px;opacity:0.7;margin-top:2px">\u2713 Queued</div></div>';
|
|
47
49
|
continue;
|
|
48
50
|
}
|
|
49
51
|
|
|
@@ -111,6 +113,7 @@ function stopLivePolling() {
|
|
|
111
113
|
|
|
112
114
|
async function refreshLiveOutput() {
|
|
113
115
|
if (!currentAgentId || currentTab !== 'live') { stopLivePolling(); return; }
|
|
116
|
+
if (_steerInFlight) return; // Don't clobber immediate steering feedback
|
|
114
117
|
try {
|
|
115
118
|
const text = await fetch('/api/agent/' + currentAgentId + '/live?tail=16384').then(r => r.text());
|
|
116
119
|
const el = document.getElementById('live-messages');
|
|
@@ -129,11 +132,14 @@ async function sendSteering() {
|
|
|
129
132
|
const message = input.value.trim();
|
|
130
133
|
input.value = '';
|
|
131
134
|
|
|
135
|
+
// Pause polling so the immediate feedback isn't clobbered
|
|
136
|
+
_steerInFlight = true;
|
|
137
|
+
|
|
132
138
|
// Immediate feedback — show the message right away
|
|
133
139
|
const el = document.getElementById('live-messages');
|
|
134
140
|
if (el) {
|
|
135
|
-
el.innerHTML += '<div style="align-self:flex-end;background:var(--blue);color:#fff;padding:6px 12px;border-radius:12px 12px 2px 12px;max-width:80%;margin:4px 0;font-size:12px">' + escHtml(message) +
|
|
136
|
-
|
|
141
|
+
el.innerHTML += '<div style="align-self:flex-end;background:var(--blue);color:#fff;padding:6px 12px;border-radius:12px 12px 2px 12px;max-width:80%;margin:4px 0;font-size:12px">' + escHtml(message) +
|
|
142
|
+
'<div id="steer-pending" style="font-size:9px;opacity:0.7;margin-top:2px">Sending...</div></div>';
|
|
137
143
|
el.scrollTop = el.scrollHeight;
|
|
138
144
|
}
|
|
139
145
|
|
|
@@ -145,13 +151,16 @@ async function sendSteering() {
|
|
|
145
151
|
const pending = document.getElementById('steer-pending');
|
|
146
152
|
if (!res.ok) {
|
|
147
153
|
const d = await res.json().catch(() => ({}));
|
|
148
|
-
if (pending) { pending.textContent = '\u26A0 Failed: ' + (d.error || 'unknown'); pending.style.
|
|
154
|
+
if (pending) { pending.textContent = '\u26A0 Failed: ' + (d.error || 'unknown'); pending.style.opacity = '1'; }
|
|
149
155
|
} else {
|
|
150
|
-
if (pending)
|
|
156
|
+
if (pending) pending.textContent = '\u2713 Queued — agent will see this on next turn';
|
|
151
157
|
}
|
|
152
158
|
} catch (e) {
|
|
153
159
|
const pending = document.getElementById('steer-pending');
|
|
154
|
-
if (pending) { pending.textContent = '\u26A0 ' + e.message; pending.style.
|
|
160
|
+
if (pending) { pending.textContent = '\u26A0 ' + e.message; pending.style.opacity = '1'; }
|
|
161
|
+
} finally {
|
|
162
|
+
// Resume polling after a short delay so the log has the [human-steering] line
|
|
163
|
+
setTimeout(() => { _steerInFlight = false; refreshLiveOutput(); }, 500);
|
|
155
164
|
}
|
|
156
165
|
}
|
|
157
166
|
|
package/dashboard/js/refresh.js
CHANGED
|
@@ -7,7 +7,7 @@ const _pageCounters = {
|
|
|
7
7
|
work: function(d) { return (d.workItems || []).length + '|' + (d.workItems || []).filter(function(w) { return w.status === 'done' || w.status === 'failed'; }).length; },
|
|
8
8
|
plans: function(d) { return (d.prdProgress?.complete || 0) + '|' + (d.plans || []).length; },
|
|
9
9
|
prs: function(d) { return (d.pullRequests || []).filter(function(p) { return p.status === 'merged'; }).length; },
|
|
10
|
-
inbox: function(d) { return (d.inbox
|
|
10
|
+
inbox: function(d) { return (d.inbox || []).length + '|' + (d.notes?.content || '').length; },
|
|
11
11
|
meetings: function(d) { return (d.meetings || []).reduce(function(s, m) { return s + (m.round || 0); }, 0); },
|
|
12
12
|
pipelines: function(d) { return (d.pipelines || []).reduce(function(s, p) { return s + (p.runs || []).length; }, 0); },
|
|
13
13
|
schedule: function(d) { return (d.schedules || []).length; },
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.427",
|
|
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"
|