@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.371 (2026-04-06)
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)
@@ -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) updateWorkItemStatus(meta, WI_STATUS.DONE, '');
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);
@@ -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
 
@@ -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 !== true) continue; // explicit true required undefined/null/false all skip
117
+ if (!sched.enabled) continue; // truthy checkmatches 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.371",
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"