@yemi33/minions 0.1.413 → 0.1.415
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 +10 -0
- package/dashboard.js +3 -3
- package/engine/lifecycle.js +2 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.415 (2026-04-06)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
- Fix null crashes in lifecycle.js syncPrsFromOutput and createReviewFeedbackForAuthor
|
|
7
|
+
|
|
8
|
+
## 0.1.414 (2026-04-06)
|
|
9
|
+
|
|
10
|
+
### Fixes
|
|
11
|
+
- use shell exec for npm view — execFile can't run .cmd on Windows
|
|
12
|
+
|
|
3
13
|
## 0.1.413 (2026-04-06)
|
|
4
14
|
|
|
5
15
|
### Fixes
|
package/dashboard.js
CHANGED
|
@@ -180,12 +180,12 @@ async function checkNpmVersion() {
|
|
|
180
180
|
if (_npmVersionCache && (now - _npmVersionCacheTs) < NPM_CHECK_INTERVAL) return _npmVersionCache;
|
|
181
181
|
try {
|
|
182
182
|
// Use npm view — respects user's .npmrc proxy/registry config
|
|
183
|
-
//
|
|
184
|
-
const {
|
|
183
|
+
// Must use shell:true on Windows because npm is a .cmd batch script
|
|
184
|
+
const { exec: _exec } = require('child_process');
|
|
185
185
|
const nodeDir = require('path').dirname(process.execPath);
|
|
186
186
|
const npmPath = require('path').join(nodeDir, process.platform === 'win32' ? 'npm.cmd' : 'npm');
|
|
187
187
|
const version = await new Promise((resolve, reject) => {
|
|
188
|
-
|
|
188
|
+
_exec(`"${npmPath}" view ${PKG_NAME} version`, { timeout: 15000, windowsHide: true, encoding: 'utf8' }, (err, stdout) => {
|
|
189
189
|
if (err) reject(err); else resolve((stdout || '').trim());
|
|
190
190
|
});
|
|
191
191
|
});
|
package/engine/lifecycle.js
CHANGED
|
@@ -617,6 +617,7 @@ function syncPrsFromOutput(output, agentId, meta, config) {
|
|
|
617
617
|
const inboxFiles = getInboxFiles().filter(f => f.includes(agentId) && f.includes(today));
|
|
618
618
|
for (const f of inboxFiles) {
|
|
619
619
|
const content = safeRead(path.join(INBOX_DIR, f));
|
|
620
|
+
if (!content) continue;
|
|
620
621
|
const prHeaderPattern = /\*\*PR[:\*]*\*?\s*[#-]*\s*(?:(?:visualstudio\.com|dev\.azure\.com)[^\s"]*?pullrequest\/(\d+)|github\.com\/[^\s"]*?\/pull\/(\d+))/gi;
|
|
621
622
|
while ((match = prHeaderPattern.exec(content)) !== null) prMatches.add(match[1] || match[2]);
|
|
622
623
|
}
|
|
@@ -991,7 +992,7 @@ function createReviewFeedbackForAuthor(reviewerAgentId, pr, config) {
|
|
|
991
992
|
const inboxFiles = getInboxFiles();
|
|
992
993
|
const reviewFiles = inboxFiles.filter(f => f.includes(reviewerAgentId) && f.includes(today));
|
|
993
994
|
if (reviewFiles.length === 0) return;
|
|
994
|
-
const reviewContent = reviewFiles.map(f => safeRead(path.join(INBOX_DIR, f))).join('\n\n');
|
|
995
|
+
const reviewContent = reviewFiles.map(f => safeRead(path.join(INBOX_DIR, f))).filter(Boolean).join('\n\n');
|
|
995
996
|
const feedbackFile = `feedback-${authorAgentId}-from-${reviewerAgentId}-${pr.id}-${today}.md`;
|
|
996
997
|
const feedbackPath = shared.uniquePath(path.join(INBOX_DIR, feedbackFile));
|
|
997
998
|
const content = `# Review Feedback for ${config.agents[authorAgentId]?.name || authorAgentId}\n\n` +
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.415",
|
|
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"
|