@yemi33/minions 0.1.371 → 0.1.373
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/engine/lifecycle.js +7 -2
- package/engine/pipeline.js +2 -2
- package/engine/scheduler.js +1 -1
- package/engine.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.1.
|
|
3
|
+
## 0.1.373 (2026-04-06)
|
|
4
4
|
|
|
5
5
|
### Features
|
|
6
6
|
- Fix review re-dispatch infinite loop (#226)
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
- Fix 2 failing source-pattern test assertions (#224)
|
|
9
9
|
|
|
10
10
|
### Fixes
|
|
11
|
+
- critical engine bugs — pipeline async, lifecycle null guard, scheduler (#215)
|
|
12
|
+
- restore dispatched_to on work items when marking done after retry
|
|
11
13
|
- copy button preserves markdown formatting
|
|
12
14
|
|
|
13
15
|
## 0.1.368 (2026-04-06)
|
package/engine/lifecycle.js
CHANGED
|
@@ -546,6 +546,8 @@ function updateWorkItemStatus(meta, status, reason) {
|
|
|
546
546
|
delete target.failReason;
|
|
547
547
|
delete target.failedAt;
|
|
548
548
|
target.completedAt = ts();
|
|
549
|
+
// Restore agent info from dispatch metadata (cleared on retry reset)
|
|
550
|
+
if (meta._agentId && !target.dispatched_to) target.dispatched_to = meta._agentId;
|
|
549
551
|
} else if (status === WI_STATUS.FAILED) {
|
|
550
552
|
if (reason) target.failReason = reason;
|
|
551
553
|
target.failedAt = ts();
|
|
@@ -782,7 +784,7 @@ async function handlePostMerge(pr, project, config, newStatus) {
|
|
|
782
784
|
|
|
783
785
|
const prNum = (pr.id || '').replace('PR-', '');
|
|
784
786
|
|
|
785
|
-
if (pr.branch) {
|
|
787
|
+
if (pr.branch && project) {
|
|
786
788
|
const root = path.resolve(project.localPath);
|
|
787
789
|
const wtRoot = path.resolve(root, config.engine?.worktreeRoot || '../worktrees');
|
|
788
790
|
// Find worktrees matching this branch — dir format is {slug}-{branch}-{suffix}
|
|
@@ -1163,7 +1165,10 @@ function runPostCompletionHooks(dispatchItem, agentId, code, stdout, config) {
|
|
|
1163
1165
|
// If decomposition produced nothing, fall through to mark parent as done
|
|
1164
1166
|
}
|
|
1165
1167
|
|
|
1166
|
-
if (isSuccess && meta?.item?.id && !skipDoneStatus)
|
|
1168
|
+
if (isSuccess && meta?.item?.id && !skipDoneStatus) {
|
|
1169
|
+
meta._agentId = agentId;
|
|
1170
|
+
updateWorkItemStatus(meta, WI_STATUS.DONE, '');
|
|
1171
|
+
}
|
|
1167
1172
|
if (!isSuccess && meta?.item?.id) {
|
|
1168
1173
|
// Auto-retry: read fresh _retryCount from file (not stale dispatch-time snapshot)
|
|
1169
1174
|
let retries = (meta.item._retryCount || 0);
|
package/engine/pipeline.js
CHANGED
|
@@ -358,7 +358,7 @@ function executeScheduleStage(stage, stageState, config) {
|
|
|
358
358
|
return { status: 'completed', completedAt: ts() };
|
|
359
359
|
}
|
|
360
360
|
|
|
361
|
-
function executeParallelStage(stage, stageState, run, pipeline, config) {
|
|
361
|
+
async function executeParallelStage(stage, stageState, run, pipeline, config) {
|
|
362
362
|
const subStages = stage.stages || [];
|
|
363
363
|
const subResults = {};
|
|
364
364
|
for (const sub of subStages) {
|
|
@@ -496,7 +496,7 @@ function isStageComplete(stage, stageState, run, config) {
|
|
|
496
496
|
|
|
497
497
|
// ── Discovery (called per tick) ──────────────────────────────────────────────
|
|
498
498
|
|
|
499
|
-
function discoverPipelineWork(config) {
|
|
499
|
+
async function discoverPipelineWork(config) {
|
|
500
500
|
const pipelines = getPipelines();
|
|
501
501
|
if (pipelines.length === 0) return;
|
|
502
502
|
|
package/engine/scheduler.js
CHANGED
|
@@ -114,7 +114,7 @@ function discoverScheduledWork(config) {
|
|
|
114
114
|
mutateJsonFileLocked(SCHEDULE_RUNS_PATH, (runs) => {
|
|
115
115
|
for (const sched of schedules) {
|
|
116
116
|
if (!sched.id || !sched.cron || !sched.title) continue;
|
|
117
|
-
if (sched.enabled
|
|
117
|
+
if (!sched.enabled) continue; // truthy check — matches dashboard UI badge behavior
|
|
118
118
|
|
|
119
119
|
const lastRun = runs[sched.id] || null;
|
|
120
120
|
if (!shouldRunNow(sched, lastRun)) continue;
|
package/engine.js
CHANGED
|
@@ -2104,7 +2104,7 @@ function discoverWork(config) {
|
|
|
2104
2104
|
// Pipeline orchestration — check stage completions and start ready stages
|
|
2105
2105
|
try {
|
|
2106
2106
|
const { discoverPipelineWork } = require('./engine/pipeline');
|
|
2107
|
-
discoverPipelineWork(config);
|
|
2107
|
+
await discoverPipelineWork(config);
|
|
2108
2108
|
} catch (e) { log('warn', 'discover pipeline work: ' + e.message); }
|
|
2109
2109
|
|
|
2110
2110
|
// 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.373",
|
|
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"
|