@yemi33/minions 0.1.1800 → 0.1.1801
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/engine/cli.js +3 -3
- package/engine/copilot-models.json +1 -1
- package/engine/dispatch.js +45 -1
- package/package.json +1 -1
package/engine/cli.js
CHANGED
|
@@ -1079,14 +1079,14 @@ const commands = {
|
|
|
1079
1079
|
return;
|
|
1080
1080
|
}
|
|
1081
1081
|
const dispatch = getDispatch();
|
|
1082
|
-
const
|
|
1083
|
-
if (!
|
|
1082
|
+
const item = (dispatch.active || []).find(d => d.id === id);
|
|
1083
|
+
if (!item) {
|
|
1084
1084
|
console.log(` Dispatch "${id}" not found in active queue.`);
|
|
1085
1085
|
const pending = (dispatch.pending || []).some(d => d.id === id);
|
|
1086
1086
|
if (pending) console.log(' (It is in pending — it hasn\'t started yet.)');
|
|
1087
1087
|
return;
|
|
1088
1088
|
}
|
|
1089
|
-
engine().completeDispatch(id, '
|
|
1089
|
+
engine().completeDispatch(id, DISPATCH_RESULT.SUCCESS, '', '', { processWorkItemSuccess: true });
|
|
1090
1090
|
console.log(` Marked ${id} as completed.`);
|
|
1091
1091
|
},
|
|
1092
1092
|
|
package/engine/dispatch.js
CHANGED
|
@@ -322,12 +322,45 @@ function writeFailedAgentReport(item, reason, resultSummary, failureClass) {
|
|
|
322
322
|
shared.writeToInbox(agentId, `agent-failure-${item.id}`, content, null, metadata);
|
|
323
323
|
}
|
|
324
324
|
|
|
325
|
+
function markCompletedSourceWorkItem(item) {
|
|
326
|
+
const meta = item?.meta;
|
|
327
|
+
const itemId = meta?.item?.id;
|
|
328
|
+
if (!itemId) return false;
|
|
329
|
+
const wiPath = lifecycle().resolveWorkItemPath(meta);
|
|
330
|
+
if (!wiPath) return false;
|
|
331
|
+
let found = false;
|
|
332
|
+
let terminal = false;
|
|
333
|
+
mutateWorkItems(wiPath, items => {
|
|
334
|
+
if (!Array.isArray(items)) return items;
|
|
335
|
+
const wi = items.find(i => i.id === itemId);
|
|
336
|
+
if (!wi) return items;
|
|
337
|
+
found = true;
|
|
338
|
+
if (wi.status === WI_STATUS.DONE) {
|
|
339
|
+
terminal = true;
|
|
340
|
+
return items;
|
|
341
|
+
}
|
|
342
|
+
wi.status = WI_STATUS.DONE;
|
|
343
|
+
delete wi.failReason;
|
|
344
|
+
delete wi.failedAt;
|
|
345
|
+
delete wi._retryCount;
|
|
346
|
+
if (!wi.completedAt) wi.completedAt = ts();
|
|
347
|
+
if (item.agent && !wi.dispatched_to) wi.dispatched_to = item.agent;
|
|
348
|
+
terminal = true;
|
|
349
|
+
return items;
|
|
350
|
+
});
|
|
351
|
+
if (!found) {
|
|
352
|
+
throw new Error(`source work item ${itemId} not found`);
|
|
353
|
+
}
|
|
354
|
+
return terminal;
|
|
355
|
+
}
|
|
356
|
+
|
|
325
357
|
// ─── Complete Dispatch ───────────────────────────────────────────────────────
|
|
326
358
|
|
|
327
359
|
function completeDispatch(id, result = DISPATCH_RESULT.SUCCESS, reason = '', resultSummary = '', opts = {}) {
|
|
328
|
-
const { processWorkItemFailure = true, failureClass } = opts;
|
|
360
|
+
const { processWorkItemFailure = true, processWorkItemSuccess = false, failureClass } = opts;
|
|
329
361
|
const agentRetryable = normalizeRetryableDecision(opts.agentRetryable ?? opts.retryable);
|
|
330
362
|
let item = null;
|
|
363
|
+
let completedSourceWorkItem = false;
|
|
331
364
|
|
|
332
365
|
mutateDispatch((dispatch) => {
|
|
333
366
|
// Check active list first
|
|
@@ -356,6 +389,10 @@ function completeDispatch(id, result = DISPATCH_RESULT.SUCCESS, reason = '', res
|
|
|
356
389
|
item.meta.completionReportPath = opts.structuredCompletion._path;
|
|
357
390
|
}
|
|
358
391
|
}
|
|
392
|
+
if (processWorkItemSuccess && result === DISPATCH_RESULT.SUCCESS && item.meta?.item?.id) {
|
|
393
|
+
if (item.agent) item.meta._agentId = item.agent;
|
|
394
|
+
completedSourceWorkItem = markCompletedSourceWorkItem(item);
|
|
395
|
+
}
|
|
359
396
|
// Drop prompt (and sidecar file, if any) — completed entries don't need
|
|
360
397
|
// replayable content and it would accumulate forever (#1167).
|
|
361
398
|
try { deleteDispatchPromptSidecar(item); } catch { /* best-effort */ }
|
|
@@ -469,6 +506,13 @@ function completeDispatch(id, result = DISPATCH_RESULT.SUCCESS, reason = '', res
|
|
|
469
506
|
}
|
|
470
507
|
}
|
|
471
508
|
|
|
509
|
+
if (completedSourceWorkItem) {
|
|
510
|
+
try {
|
|
511
|
+
lifecycle().syncPrdItemStatus(item.meta.item.id, WI_STATUS.DONE, item.meta.item?.sourcePlan);
|
|
512
|
+
log('info', `Work item ${item.meta.item.id} → ${WI_STATUS.DONE}`);
|
|
513
|
+
} catch (e) { log('warn', 'manual completion PRD sync: ' + e.message); }
|
|
514
|
+
}
|
|
515
|
+
|
|
472
516
|
// Restore pendingFix on failed human-feedback fix so engine re-dispatches on next tick
|
|
473
517
|
if (result === DISPATCH_RESULT.ERROR && item.meta?.source === 'pr-human-feedback') {
|
|
474
518
|
const prId = item.meta.pr?.id;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1801",
|
|
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"
|