@yemi33/minions 0.1.658 → 0.1.660
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 +5 -1
- package/dashboard.js +18 -8
- package/engine/cli.js +6 -3
- package/engine.js +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.1.
|
|
3
|
+
## 0.1.660 (2026-04-09)
|
|
4
4
|
|
|
5
5
|
### Fixes
|
|
6
|
+
- retry button broken for project-level work items, add _source field
|
|
6
7
|
- use PowerShell instead of wmic for process kill on Windows 11
|
|
7
8
|
- bust require cache for package.json in engine start
|
|
8
9
|
- PRD discovery loop, github.js duplicate const, transcript null guards
|
|
9
10
|
|
|
11
|
+
### Other
|
|
12
|
+
- perf: run checkSteering every 3s instead of every 60s tick
|
|
13
|
+
|
|
10
14
|
## 0.1.655 (2026-04-09)
|
|
11
15
|
|
|
12
16
|
### Fixes
|
package/dashboard.js
CHANGED
|
@@ -997,17 +997,27 @@ const server = http.createServer(async (req, res) => {
|
|
|
997
997
|
const { id, source } = body;
|
|
998
998
|
if (!id) return jsonReply(res, 400, { error: 'id required' });
|
|
999
999
|
|
|
1000
|
-
// Find the right file
|
|
1000
|
+
// Find the right file — check source first, then search all project files
|
|
1001
1001
|
let wiPath;
|
|
1002
|
-
if (
|
|
1003
|
-
wiPath = path.join(MINIONS_DIR, 'work-items.json');
|
|
1004
|
-
} else {
|
|
1002
|
+
if (source && source !== 'central') {
|
|
1005
1003
|
const proj = PROJECTS.find(p => p.name === source);
|
|
1006
|
-
if (proj)
|
|
1007
|
-
|
|
1004
|
+
if (proj) wiPath = shared.projectWorkItemsPath(proj);
|
|
1005
|
+
}
|
|
1006
|
+
if (!wiPath) {
|
|
1007
|
+
// Search central first, then all projects
|
|
1008
|
+
const centralPath = path.join(MINIONS_DIR, 'work-items.json');
|
|
1009
|
+
const centralItems = shared.safeJson(centralPath) || [];
|
|
1010
|
+
if (centralItems.some(i => i.id === id)) {
|
|
1011
|
+
wiPath = centralPath;
|
|
1012
|
+
} else {
|
|
1013
|
+
for (const proj of PROJECTS) {
|
|
1014
|
+
const projPath = shared.projectWorkItemsPath(proj);
|
|
1015
|
+
const projItems = shared.safeJson(projPath) || [];
|
|
1016
|
+
if (projItems.some(i => i.id === id)) { wiPath = projPath; break; }
|
|
1017
|
+
}
|
|
1008
1018
|
}
|
|
1009
1019
|
}
|
|
1010
|
-
if (!wiPath) return jsonReply(res, 404, { error: '
|
|
1020
|
+
if (!wiPath) return jsonReply(res, 404, { error: 'work item not found in any source' });
|
|
1011
1021
|
|
|
1012
1022
|
let found = false;
|
|
1013
1023
|
mutateJsonFileLocked(wiPath, (items) => {
|
|
@@ -3922,7 +3932,7 @@ What would you like to discuss or change? When you're happy, say "approve" and I
|
|
|
3922
3932
|
const agentDir = path.join(MINIONS_DIR, 'agents', agentId);
|
|
3923
3933
|
if (!fs.existsSync(agentDir)) return jsonReply(res, 404, { error: 'Agent not found' });
|
|
3924
3934
|
|
|
3925
|
-
// Write steering file
|
|
3935
|
+
// Write steering file
|
|
3926
3936
|
safeWrite(steerPath, message);
|
|
3927
3937
|
|
|
3928
3938
|
// Also append to live-output.log so it shows in the chat view
|
package/engine/cli.js
CHANGED
|
@@ -359,15 +359,18 @@ const commands = {
|
|
|
359
359
|
// Start tick loop
|
|
360
360
|
const tickTimer = setInterval(() => e.tick(), interval);
|
|
361
361
|
|
|
362
|
-
// Fast poll
|
|
363
|
-
|
|
362
|
+
// Fast poll: check steering every 3s (lightweight — just fs.stat per agent)
|
|
363
|
+
// and wakeup signals every 3s (control.json read)
|
|
364
|
+
const { checkSteering } = require('./timeout');
|
|
365
|
+
const fastPollTimer = setInterval(() => {
|
|
366
|
+
try { checkSteering(getConfig()); } catch {}
|
|
364
367
|
const ctrl = getControl();
|
|
365
368
|
if (ctrl._wakeupAt && Date.now() - ctrl._wakeupAt < 5000) {
|
|
366
369
|
delete ctrl._wakeupAt;
|
|
367
370
|
safeWrite(CONTROL_PATH, ctrl);
|
|
368
371
|
e.tick();
|
|
369
372
|
}
|
|
370
|
-
},
|
|
373
|
+
}, 3000);
|
|
371
374
|
|
|
372
375
|
console.log(`Tick interval: ${interval / 1000}s | Max concurrent: ${config.engine?.maxConcurrent || 5}`);
|
|
373
376
|
console.log('Press Ctrl+C to stop');
|
package/engine.js
CHANGED
|
@@ -1400,6 +1400,7 @@ function materializePlansAsWorkItems(config) {
|
|
|
1400
1400
|
branchStrategy: plan.branch_strategy || 'parallel',
|
|
1401
1401
|
featureBranch: plan.feature_branch || null,
|
|
1402
1402
|
project: item.project || plan.project || null,
|
|
1403
|
+
_source: projName,
|
|
1403
1404
|
};
|
|
1404
1405
|
existingItems.push(newItem);
|
|
1405
1406
|
newlyCreatedIds.add(id);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.660",
|
|
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"
|