@yemi33/minions 0.1.1799 → 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/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.1800 (2026-05-08)
4
+
5
+ ### Other
6
+ - Remove unredacted CC parse warning (#2213)
7
+
3
8
  ## 0.1.1799 (2026-05-08)
4
9
 
5
10
  ### Other
package/dashboard.js CHANGED
@@ -1871,10 +1871,9 @@ function parseCCActions(text) {
1871
1871
  const result = { text: displayText, actions };
1872
1872
  if (parseError && actions.length === 0) {
1873
1873
  result._actionParseError = parseError;
1874
- // Visibility for the engine log — silent failure here previously masked issue #1834.
1874
+ // Visibility for the engine log — shared.log applies SEC-09 redaction before persistence.
1875
1875
  try {
1876
1876
  const snippet = (segment.trim() || '').slice(0, 200);
1877
- console.warn(`[CC] action JSON parse failed (${parseError}); raw segment: ${snippet}`);
1878
1877
  if (typeof shared !== 'undefined' && shared && typeof shared.log === 'function') {
1879
1878
  shared.log('warn', `CC action JSON parse failed: ${parseError} — segment: ${snippet}`);
1880
1879
  }
package/engine/cli.js CHANGED
@@ -1079,14 +1079,14 @@ const commands = {
1079
1079
  return;
1080
1080
  }
1081
1081
  const dispatch = getDispatch();
1082
- const found = (dispatch.active || []).some(d => d.id === id);
1083
- if (!found) {
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, 'success');
1089
+ engine().completeDispatch(id, DISPATCH_RESULT.SUCCESS, '', '', { processWorkItemSuccess: true });
1090
1090
  console.log(` Marked ${id} as completed.`);
1091
1091
  },
1092
1092
 
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "runtime": "copilot",
3
3
  "models": null,
4
- "cachedAt": "2026-05-08T16:51:53.990Z"
4
+ "cachedAt": "2026-05-08T17:21:22.511Z"
5
5
  }
@@ -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.1799",
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"