@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 +3 -3
- package/dashboard/js/command-center.js +4 -18
- package/dashboard.js +3 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.1.
|
|
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.
|
|
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"
|