@yemi33/minions 0.1.966 → 0.1.968
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 +1 -0
- package/engine.js +37 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.1.
|
|
3
|
+
## 0.1.968 (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
|
+
- trigger second-pass re-review after fix agent completes
|
|
29
|
+
- update ccInFlightAborts when retry LLM replaces original
|
|
28
30
|
- skip orphaned LLM retry when client disconnected during CC stream
|
|
29
31
|
- restore queue flush after abort — queued messages are user intent
|
|
30
32
|
- CC stale lock auto-release + queue drain on abort
|
|
@@ -43,8 +45,6 @@
|
|
|
43
45
|
- deduplicate work item creation by title
|
|
44
46
|
- ADO build query uses repositoryId+pullRequest instead of branchName
|
|
45
47
|
- persist adoPollEnabled/ghPollEnabled in settings save
|
|
46
|
-
- prevent _consolidationInFlight race from stale force-reset timeout (#1023)
|
|
47
|
-
- stop perpetual ADO poll retry when token unavailable (#1021)
|
|
48
48
|
|
|
49
49
|
### Other
|
|
50
50
|
- refactor(dashboard): extract _releaseCCTab helper and CC_LOCK_WAIT_MS constant
|
package/dashboard.js
CHANGED
|
@@ -3579,6 +3579,7 @@ What would you like to discuss or change? When you're happy, say "approve" and I
|
|
|
3579
3579
|
}
|
|
3580
3580
|
});
|
|
3581
3581
|
_ccStreamAbort = retryPromise.abort;
|
|
3582
|
+
ccInFlightAborts.set(tabId, _ccStreamAbort);
|
|
3582
3583
|
const retryResult = await retryPromise;
|
|
3583
3584
|
trackUsage('command-center', retryResult.usage);
|
|
3584
3585
|
if (retryResult.text) {
|
package/engine.js
CHANGED
|
@@ -1984,6 +1984,43 @@ async function discoverFromPrs(config, project) {
|
|
|
1984
1984
|
if (item) { newWork.push(item); setCooldown(key); }
|
|
1985
1985
|
}
|
|
1986
1986
|
|
|
1987
|
+
// Re-review after fix: fall back to fixedAt > lastReviewedAt when lastPushedAt lags poller
|
|
1988
|
+
const fixedAfterReview = !!(pr.minionsReview?.fixedAt &&
|
|
1989
|
+
pr.lastReviewedAt && pr.minionsReview.fixedAt > pr.lastReviewedAt);
|
|
1990
|
+
const needsReReview = autoReview && reviewStatus === 'waiting' &&
|
|
1991
|
+
(fixedAfterReview || (!alreadyReviewed && !!pr.minionsReview?.fixedAt)) && !evalEscalated;
|
|
1992
|
+
if (needsReReview) {
|
|
1993
|
+
const key = `review-${project?.name || 'default'}-${pr.id}`;
|
|
1994
|
+
if (isAlreadyDispatched(key) || isOnCooldown(key, cooldownMs)) continue;
|
|
1995
|
+
|
|
1996
|
+
// Pre-dispatch live vote check — cached 'waiting' may be stale if reviewer already acted
|
|
1997
|
+
try {
|
|
1998
|
+
const checkFn = project.repoHost === 'github' ? ghCheckLiveReview : adoCheckLiveReview;
|
|
1999
|
+
const liveStatus = await checkFn(pr, project);
|
|
2000
|
+
if (liveStatus && liveStatus !== 'waiting') {
|
|
2001
|
+
log('info', `Pre-dispatch vote check: ${pr.id} is ${liveStatus} (cached was waiting) — skipping re-review`);
|
|
2002
|
+
if (pr.reviewStatus !== 'approved') pr.reviewStatus = liveStatus;
|
|
2003
|
+
try {
|
|
2004
|
+
mutateJsonFileLocked(projectPrPath(project), data => {
|
|
2005
|
+
if (!Array.isArray(data)) return data;
|
|
2006
|
+
const target = data.find(p => p.id === pr.id);
|
|
2007
|
+
if (target && target.reviewStatus !== 'approved') target.reviewStatus = liveStatus;
|
|
2008
|
+
return data;
|
|
2009
|
+
});
|
|
2010
|
+
} catch {}
|
|
2011
|
+
continue;
|
|
2012
|
+
}
|
|
2013
|
+
} catch (e) { log('warn', `Pre-dispatch vote check for ${pr.id}: ${e.message}`); }
|
|
2014
|
+
|
|
2015
|
+
const agentId = resolveAgent('review', config);
|
|
2016
|
+
if (!agentId) continue;
|
|
2017
|
+
const item = buildPrDispatch(agentId, config, project, pr, 'review', {
|
|
2018
|
+
pr_id: pr.id, pr_number: prNumber, pr_title: pr.title || '', pr_branch: pr.branch || '',
|
|
2019
|
+
pr_author: pr.agent || '', pr_url: pr.url || '',
|
|
2020
|
+
}, `Review ${pr.id}: ${pr.title}`, { dispatchKey: key, source: 'pr', pr, branch: pr.branch, project: projMeta });
|
|
2021
|
+
if (item) { newWork.push(item); setCooldown(key); }
|
|
2022
|
+
}
|
|
2023
|
+
|
|
1987
2024
|
// PRs with changes requested → route back to author for fix
|
|
1988
2025
|
let fixDispatched = false;
|
|
1989
2026
|
if (reviewStatus === 'changes-requested' && !awaitingReReview && !evalEscalated) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.968",
|
|
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"
|