@yemi33/minions 0.1.657 → 0.1.659
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/bin/minions.js +11 -3
- package/dashboard.js +17 -7
- package/engine.js +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.1.
|
|
3
|
+
## 0.1.659 (2026-04-09)
|
|
4
4
|
|
|
5
5
|
### Fixes
|
|
6
|
+
- retry button broken for project-level work items, add _source field
|
|
7
|
+
- use PowerShell instead of wmic for process kill on Windows 11
|
|
6
8
|
- bust require cache for package.json in engine start
|
|
7
9
|
- PRD discovery loop, github.js duplicate const, transcript null guards
|
|
8
10
|
|
package/bin/minions.js
CHANGED
|
@@ -50,11 +50,19 @@ function killByPort(port) {
|
|
|
50
50
|
function killMinionsProcesses(patterns) {
|
|
51
51
|
try {
|
|
52
52
|
if (process.platform === 'win32') {
|
|
53
|
-
|
|
53
|
+
// Use PowerShell Get-CimInstance (works on Win11 where wmic is removed)
|
|
54
|
+
let out;
|
|
55
|
+
try {
|
|
56
|
+
out = execSync('powershell -NoProfile -Command "Get-CimInstance Win32_Process -Filter \\"name=\'node.exe\'\\" | Select-Object ProcessId,CommandLine | ConvertTo-Csv -NoTypeInformation"', { encoding: 'utf8', timeout: 10000, windowsHide: true });
|
|
57
|
+
} catch {
|
|
58
|
+
// Fallback to wmic for older Windows
|
|
59
|
+
try { out = execSync('wmic process where "name=\'node.exe\'" get processid,commandline /format:csv', { encoding: 'utf8', timeout: 10000, windowsHide: true }); } catch { return; }
|
|
60
|
+
}
|
|
54
61
|
for (const line of out.split('\n')) {
|
|
55
62
|
if (patterns.some(p => line.includes(p))) {
|
|
56
|
-
const
|
|
57
|
-
|
|
63
|
+
const pidMatch = line.match(/(\d{2,})/);
|
|
64
|
+
const pid = pidMatch ? pidMatch[1] : null;
|
|
65
|
+
if (pid && pid !== String(process.pid)) try { execSync(`taskkill /F /T /PID ${pid}`, { stdio: 'ignore', timeout: 5000, windowsHide: true }); } catch {}
|
|
58
66
|
}
|
|
59
67
|
}
|
|
60
68
|
} else {
|
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) => {
|
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.659",
|
|
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"
|