@yemi33/minions 0.1.964 → 0.1.966

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.964 (2026-04-14)
3
+ ## 0.1.966 (2026-04-14)
4
4
 
5
5
  ### Features
6
6
  - add quality standard reminder to all agent and CC prompts
@@ -25,6 +25,8 @@
25
25
  - fix dashboard plan-pause nested lock violation (#968)
26
26
 
27
27
  ### Fixes
28
+ - skip orphaned LLM retry when client disconnected during CC stream
29
+ - restore queue flush after abort — queued messages are user intent
28
30
  - CC stale lock auto-release + queue drain on abort
29
31
  - CC streaming 'tabId' TDZ error on new tab first message
30
32
  - fix tabId scope and close-event lock race in CC handlers
@@ -43,8 +45,6 @@
43
45
  - persist adoPollEnabled/ghPollEnabled in settings save
44
46
  - prevent _consolidationInFlight race from stale force-reset timeout (#1023)
45
47
  - stop perpetual ADO poll retry when token unavailable (#1021)
46
- - await discoverPipelineWork instead of fire-and-forget .catch (#1020)
47
- - add unhandledRejection/uncaughtException handlers to engine process (#1019)
48
48
 
49
49
  ### Other
50
50
  - refactor(dashboard): extract _releaseCCTab helper and CC_LOCK_WAIT_MS constant
@@ -388,28 +388,14 @@ async function ccSend() {
388
388
  }
389
389
  var wasAborted = await _ccDoSend(message, false, originTabId);
390
390
 
391
- // Flush queued messages to the ORIGINAL tab, even if user switched tabs.
392
- // If the user aborted, drain the queue — the session was killed server-side so sending
393
- // queued messages would fail or create confusing behavior.
394
- if (wasAborted && tab._queue && tab._queue.length > 0) {
395
- var drained = tab._queue.length;
396
- tab._queue = [];
397
- _renderQueueIndicator();
398
- ccAddMessage('system', '<div style="text-align:center;padding:4px 12px;font-size:11px;color:var(--muted);background:var(--surface2);border-radius:6px;margin:4px 0">' + drained + ' queued message' + (drained > 1 ? 's' : '') + ' cleared after stop</div>', false, originTabId);
399
- }
391
+ // Flush queued messages to the ORIGINAL tab, even if user switched tabs
400
392
  while (tab._queue && tab._queue.length > 0) {
393
+ if (wasAborted) {
394
+ await new Promise(function(r) { setTimeout(r, 1500); });
395
+ }
401
396
  var next = tab._queue.shift();
402
397
  _renderQueueIndicator();
403
398
  wasAborted = await _ccDoSend(next, false, originTabId);
404
- if (wasAborted) {
405
- var drained2 = tab._queue.length;
406
- if (drained2 > 0) {
407
- tab._queue = [];
408
- _renderQueueIndicator();
409
- ccAddMessage('system', '<div style="text-align:center;padding:4px 12px;font-size:11px;color:var(--muted);background:var(--surface2);border-radius:6px;margin:4px 0">' + drained2 + ' queued message' + (drained2 > 1 ? 's' : '') + ' cleared after stop</div>', false, originTabId);
410
- }
411
- break;
412
- }
413
399
  }
414
400
  }
415
401
 
package/dashboard.js CHANGED
@@ -3560,8 +3560,8 @@ What would you like to discuss or change? When you're happy, say "approve" and I
3560
3560
  trackUsage('command-center', result.usage);
3561
3561
 
3562
3562
  // Handle failure — non-zero exit with text = max_turns or partial success, still usable
3563
- if (!result.text && wasResume && result.code !== 0) {
3564
- // Resume failed (stale/expired session) — auto-retry as fresh session
3563
+ if (!result.text && wasResume && result.code !== 0 && !req.destroyed) {
3564
+ // Resume failed (stale/expired session) — auto-retry as fresh session (skip if client already disconnected)
3565
3565
  console.log(`[CC-stream] Resume failed (code=${result.code}) — retrying fresh`);
3566
3566
  const freshPreamble = buildCCStatePreamble();
3567
3567
  const freshPrompt = (freshPreamble ? freshPreamble + '\n\n---\n\n' : '') + body.message;
@@ -3587,6 +3587,7 @@ What would you like to discuss or change? When you're happy, say "approve" and I
3587
3587
  }
3588
3588
  }
3589
3589
  if (!result.text) {
3590
+ if (req.destroyed) { _ccStreamEnded = true; return; } // client already gone — nothing to send
3590
3591
  const debugInfo = result.code !== 0 ? `(exit code ${result.code})` : '(empty response)';
3591
3592
  const stderrTail = (result.stderr || '').trim().split('\n').filter(Boolean).slice(-3).join(' | ');
3592
3593
  console.error(`[CC-stream] Failed: code=${result.code}, stderr=${(result.stderr || '').slice(0, 500)}, stdout_tail=${(result.raw || '').slice(-500)}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.964",
3
+ "version": "0.1.966",
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"