@yemi33/minions 0.1.308 → 0.1.310
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/engine.js +13 -7
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.310 (2026-04-03)
|
|
4
|
+
|
|
5
|
+
### Fixes
|
|
6
|
+
- wrap all tickInner phases in try-catch for resilient dispatch
|
|
7
|
+
|
|
8
|
+
## 0.1.309 (2026-04-03)
|
|
9
|
+
|
|
10
|
+
### Fixes
|
|
11
|
+
- per-item try-catch in discovery loops — one bad item no longer blocks tick
|
|
12
|
+
|
|
3
13
|
## 0.1.308 (2026-04-03)
|
|
4
14
|
|
|
5
15
|
### Features
|
package/engine.js
CHANGED
|
@@ -1373,6 +1373,7 @@ function discoverFromWorkItems(config, project) {
|
|
|
1373
1373
|
let needsWrite = false;
|
|
1374
1374
|
|
|
1375
1375
|
for (const item of items) {
|
|
1376
|
+
try {
|
|
1376
1377
|
// Re-evaluate failed items: if deps have recovered, reset to pending
|
|
1377
1378
|
if (item.status === 'failed' && item.failReason === 'Dependency failed — cannot proceed') {
|
|
1378
1379
|
const depStatus = areDependenciesMet(item, config);
|
|
@@ -1562,6 +1563,7 @@ function discoverFromWorkItems(config, project) {
|
|
|
1562
1563
|
});
|
|
1563
1564
|
|
|
1564
1565
|
setCooldown(key);
|
|
1566
|
+
} catch (err) { log('warn', `discoverFromWorkItems: skipping ${item.id}: ${err.message}`); }
|
|
1565
1567
|
}
|
|
1566
1568
|
|
|
1567
1569
|
// Write back updated statuses (always, since we mark items dispatched before newWork check)
|
|
@@ -1768,6 +1770,7 @@ function discoverCentralWorkItems(config) {
|
|
|
1768
1770
|
const newWork = [];
|
|
1769
1771
|
|
|
1770
1772
|
for (const item of items) {
|
|
1773
|
+
try {
|
|
1771
1774
|
if (item.status !== 'queued' && item.status !== 'pending') continue;
|
|
1772
1775
|
|
|
1773
1776
|
const key = `central-work-${item.id}`;
|
|
@@ -2001,6 +2004,7 @@ function discoverCentralWorkItems(config) {
|
|
|
2001
2004
|
item.dispatched_to = agentId;
|
|
2002
2005
|
setCooldown(key);
|
|
2003
2006
|
}
|
|
2007
|
+
} catch (err) { log('warn', `discoverCentralWorkItems: skipping ${item.id}: ${err.message}`); }
|
|
2004
2008
|
}
|
|
2005
2009
|
|
|
2006
2010
|
if (newWork.length > 0) safeWrite(centralPath, items);
|
|
@@ -2179,9 +2183,9 @@ async function tickInner() {
|
|
|
2179
2183
|
tickCount++;
|
|
2180
2184
|
|
|
2181
2185
|
// 1. Check for timed-out agents, steering messages, and idle threshold
|
|
2182
|
-
checkTimeouts(config);
|
|
2183
|
-
checkSteering(config);
|
|
2184
|
-
checkIdleThreshold(config);
|
|
2186
|
+
try { checkTimeouts(config); } catch (e) { log('warn', 'checkTimeouts: ' + e.message); }
|
|
2187
|
+
try { checkSteering(config); } catch (e) { log('warn', 'checkSteering: ' + e.message); }
|
|
2188
|
+
try { checkIdleThreshold(config); } catch (e) { log('warn', 'checkIdleThreshold: ' + e.message); }
|
|
2185
2189
|
|
|
2186
2190
|
// 1b. Check for meeting round timeouts
|
|
2187
2191
|
try {
|
|
@@ -2196,11 +2200,11 @@ async function tickInner() {
|
|
|
2196
2200
|
}
|
|
2197
2201
|
|
|
2198
2202
|
// 2. Consolidate inbox
|
|
2199
|
-
consolidateInbox(config);
|
|
2203
|
+
try { consolidateInbox(config); } catch (e) { log('warn', 'consolidateInbox: ' + e.message); }
|
|
2200
2204
|
|
|
2201
2205
|
// 2.5. Periodic cleanup + MCP sync (every 10 ticks = ~5 minutes)
|
|
2202
2206
|
if (tickCount % 10 === 0) {
|
|
2203
|
-
runCleanup(config);
|
|
2207
|
+
try { runCleanup(config); } catch (e) { log('warn', 'runCleanup: ' + e.message); }
|
|
2204
2208
|
}
|
|
2205
2209
|
|
|
2206
2210
|
// 2.6. Poll PR status: build, review, merge (every 6 ticks = ~3 minutes)
|
|
@@ -2331,12 +2335,13 @@ async function tickInner() {
|
|
|
2331
2335
|
}
|
|
2332
2336
|
|
|
2333
2337
|
// 3. Discover new work from sources
|
|
2334
|
-
discoverWork(config);
|
|
2338
|
+
try { discoverWork(config); } catch (e) { log('warn', 'discoverWork: ' + e.message); }
|
|
2335
2339
|
|
|
2336
2340
|
// 4. Update snapshot
|
|
2337
|
-
updateSnapshot(config);
|
|
2341
|
+
try { updateSnapshot(config); } catch (e) { log('warn', 'updateSnapshot: ' + e.message); }
|
|
2338
2342
|
|
|
2339
2343
|
// 5. Process pending dispatches — auto-spawn agents
|
|
2344
|
+
try {
|
|
2340
2345
|
const dispatch = getDispatch();
|
|
2341
2346
|
const activeCount = (dispatch.active || []).length;
|
|
2342
2347
|
const maxConcurrent = config.engine?.maxConcurrent || 5;
|
|
@@ -2444,6 +2449,7 @@ async function tickInner() {
|
|
|
2444
2449
|
if (skipReasonChanged) {
|
|
2445
2450
|
mutateDispatch((dp) => { dp.pending = postDispatch.pending; return dp; });
|
|
2446
2451
|
}
|
|
2452
|
+
} catch (e) { log('warn', 'dispatch: ' + e.message); }
|
|
2447
2453
|
}
|
|
2448
2454
|
|
|
2449
2455
|
// ─── Exports (for engine/cli.js and other modules) ──────────────────────────
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.310",
|
|
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"
|