@yemi33/minions 0.1.382 → 0.1.384
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 +7 -1
- package/dashboard/js/refresh.js +1 -0
- package/dashboard/js/render-dispatch.js +22 -1
- package/dashboard/layout.html +1 -0
- package/dashboard.js +15 -0
- package/engine/cli.js +6 -1
- package/engine.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.1.
|
|
3
|
+
## 0.1.384 (2026-04-06)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
- show engine version and stale-code warning in dashboard
|
|
7
|
+
|
|
8
|
+
## 0.1.383 (2026-04-06)
|
|
4
9
|
|
|
5
10
|
### Fixes
|
|
11
|
+
- SyntaxError — await in non-async discoverWork function
|
|
6
12
|
- branch regex missed W- and PL- work item IDs — wrong PR agent attribution
|
|
7
13
|
|
|
8
14
|
## 0.1.381 (2026-04-06)
|
package/dashboard/js/refresh.js
CHANGED
|
@@ -57,6 +57,7 @@ function _processStatusUpdate(data) {
|
|
|
57
57
|
renderPrs(data.pullRequests || []);
|
|
58
58
|
renderArchiveButtons(data.archivedPrds || []);
|
|
59
59
|
renderEngineStatus(data.engine);
|
|
60
|
+
renderVersionBanner(data.version);
|
|
60
61
|
renderDispatch(data.dispatch);
|
|
61
62
|
window._lastDispatch = data.dispatch;
|
|
62
63
|
window._lastWorkItems = data.workItems || [];
|
|
@@ -210,4 +210,25 @@ async function showErrorDetails(agentId, reason, task) {
|
|
|
210
210
|
}
|
|
211
211
|
}
|
|
212
212
|
|
|
213
|
-
|
|
213
|
+
function renderVersionBanner(version) {
|
|
214
|
+
const el = document.getElementById('version-banner');
|
|
215
|
+
if (!el) return;
|
|
216
|
+
if (!version) { el.style.display = 'none'; return; }
|
|
217
|
+
|
|
218
|
+
// Show version in footer area
|
|
219
|
+
const label = version.running ? 'v' + version.running : '';
|
|
220
|
+
const commitLabel = version.runningCommit ? ' (' + version.runningCommit + ')' : '';
|
|
221
|
+
el.textContent = label + commitLabel;
|
|
222
|
+
el.title = 'Engine: v' + (version.running || '?') + ' ' + (version.runningCommit || '') +
|
|
223
|
+
'\nDisk: v' + (version.disk || '?') + ' ' + (version.diskCommit || '');
|
|
224
|
+
|
|
225
|
+
if (version.stale) {
|
|
226
|
+
el.style.cssText = 'font-size:9px;padding:2px 8px;background:rgba(210,153,34,0.15);border:1px solid rgba(210,153,34,0.3);border-radius:4px;color:var(--yellow);cursor:help';
|
|
227
|
+
el.textContent = '\u26A0 Engine running v' + (version.running || '?') + ' (' + (version.runningCommit || '?') + ') — disk has v' + (version.disk || '?') + ' (' + (version.diskCommit || '?') + '). Restart to apply.';
|
|
228
|
+
el.title = 'The engine process is running older code than what is on disk. Run: minions restart';
|
|
229
|
+
} else {
|
|
230
|
+
el.style.cssText = 'font-size:9px;color:var(--muted)';
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
window.MinionsDispatch = { renderEngineStatus, renderEngineAlert, renderVersionBanner, renderDispatch, renderEngineLog, shortTime, showErrorDetails };
|
package/dashboard/layout.html
CHANGED
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
</div>
|
|
20
20
|
</header>
|
|
21
21
|
<div class="engine-alert" id="engine-alert"></div>
|
|
22
|
+
<div id="version-banner" style="font-size:9px;color:var(--muted);padding:0 16px"></div>
|
|
22
23
|
|
|
23
24
|
<!-- Command Center Drawer -->
|
|
24
25
|
<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:350;flex-direction:column;overscroll-behavior:contain">
|
package/dashboard.js
CHANGED
|
@@ -248,6 +248,21 @@ function getStatus() {
|
|
|
248
248
|
},
|
|
249
249
|
initialized: !!(CONFIG.agents && Object.keys(CONFIG.agents).length > 0),
|
|
250
250
|
installId: safeRead(path.join(MINIONS_DIR, '.install-id')).trim() || null,
|
|
251
|
+
version: (() => {
|
|
252
|
+
const engine = getEngineState();
|
|
253
|
+
let diskVersion = null;
|
|
254
|
+
try { diskVersion = require('./package.json').version; } catch {}
|
|
255
|
+
let diskCommit = null;
|
|
256
|
+
try { diskCommit = require('child_process').execSync('git rev-parse --short HEAD', { cwd: MINIONS_DIR, encoding: 'utf8', timeout: 5000, windowsHide: true }).trim(); } catch {}
|
|
257
|
+
return {
|
|
258
|
+
running: engine.codeVersion || null,
|
|
259
|
+
runningCommit: engine.codeCommit || null,
|
|
260
|
+
disk: diskVersion,
|
|
261
|
+
diskCommit,
|
|
262
|
+
stale: !!(engine.codeVersion && diskVersion && engine.codeVersion !== diskVersion) ||
|
|
263
|
+
!!(engine.codeCommit && diskCommit && engine.codeCommit !== diskCommit),
|
|
264
|
+
};
|
|
265
|
+
})(),
|
|
251
266
|
timestamp: new Date().toISOString(),
|
|
252
267
|
};
|
|
253
268
|
_statusCacheTs = now;
|
package/engine/cli.js
CHANGED
|
@@ -84,7 +84,12 @@ const commands = {
|
|
|
84
84
|
console.log(`Engine was running (PID ${control.pid}) but process is dead — restarting.`);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
|
|
87
|
+
// Record version + git commit so dashboard can detect stale engine code
|
|
88
|
+
let codeVersion = null;
|
|
89
|
+
try { codeVersion = require('../package.json').version; } catch {}
|
|
90
|
+
let codeCommit = null;
|
|
91
|
+
try { codeCommit = require('child_process').execSync('git rev-parse --short HEAD', { cwd: path.resolve(__dirname, '..'), encoding: 'utf8', timeout: 5000, windowsHide: true }).trim(); } catch {}
|
|
92
|
+
safeWrite(CONTROL_PATH, { state: 'running', pid: process.pid, started_at: e.ts(), codeVersion, codeCommit });
|
|
88
93
|
e.log('info', 'Engine started');
|
|
89
94
|
console.log(`Engine started (PID: ${process.pid})`);
|
|
90
95
|
|
package/engine.js
CHANGED
|
@@ -2106,7 +2106,7 @@ function discoverWork(config) {
|
|
|
2106
2106
|
// Pipeline orchestration — check stage completions and start ready stages
|
|
2107
2107
|
try {
|
|
2108
2108
|
const { discoverPipelineWork } = require('./engine/pipeline');
|
|
2109
|
-
|
|
2109
|
+
discoverPipelineWork(config).catch(e => log('warn', 'discover pipeline work: ' + e.message));
|
|
2110
2110
|
} catch (e) { log('warn', 'discover pipeline work: ' + e.message); }
|
|
2111
2111
|
|
|
2112
2112
|
// Periodic plan completion sweep — catch PRDs that completed while engine was down
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.384",
|
|
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"
|