@yemi33/minions 0.1.935 → 0.1.936
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 +2 -1
- package/dashboard/js/settings.js +8 -2
- package/dashboard.js +1 -0
- package/engine/shared.js +2 -0
- package/engine.js +9 -6
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.1.
|
|
3
|
+
## 0.1.936 (2026-04-14)
|
|
4
4
|
|
|
5
5
|
### Features
|
|
6
|
+
- make ADO poll frequency configurable and ungate reconcilePrs
|
|
6
7
|
- certificate-based auth for Teams integration (#1027)
|
|
7
8
|
- add adoPollEnabled/ghPollEnabled engine settings
|
|
8
9
|
- doc-chat abort kills LLM process + queued messages auto-process
|
package/dashboard/js/settings.js
CHANGED
|
@@ -49,8 +49,12 @@ async function openSettings() {
|
|
|
49
49
|
settingsToggle('Auto-decompose', 'set-autoDecompose', e.autoDecompose !== false, 'Large implement items are auto-split into sub-tasks') +
|
|
50
50
|
settingsToggle('Allow Temp Agents', 'set-allowTempAgents', !!e.allowTempAgents, 'Spawn ephemeral agents when all permanent agents are busy') +
|
|
51
51
|
settingsToggle('Auto-archive Plans', 'set-autoArchive', !!e.autoArchive, 'Automatically archive plans after verify completes (off = manual archive via dashboard)') +
|
|
52
|
-
settingsToggle('ADO Polling', 'set-adoPollEnabled', e.adoPollEnabled !== false, 'Poll ADO PR status
|
|
53
|
-
settingsToggle('GitHub Polling', 'set-ghPollEnabled', e.ghPollEnabled !== false, 'Poll GitHub PR status
|
|
52
|
+
settingsToggle('ADO Polling', 'set-adoPollEnabled', e.adoPollEnabled !== false, 'Poll ADO PR status and comments each tick (reconciliation always runs)') +
|
|
53
|
+
settingsToggle('GitHub Polling', 'set-ghPollEnabled', e.ghPollEnabled !== false, 'Poll GitHub PR status and comments each tick (reconciliation always runs)') +
|
|
54
|
+
'</div>' +
|
|
55
|
+
'<div style="display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:16px">' +
|
|
56
|
+
settingsField('ADO Status Poll Frequency', 'set-adoPollStatusEvery', e.adoPollStatusEvery || 6, 'ticks', 'Poll ADO PR build/review/merge status every N ticks (~6 min at default tick rate)') +
|
|
57
|
+
settingsField('ADO Comments Poll Frequency', 'set-adoPollCommentsEvery', e.adoPollCommentsEvery || 12, 'ticks', 'Poll ADO PR human comments every N ticks (~12 min at default tick rate)') +
|
|
54
58
|
'</div>' +
|
|
55
59
|
'<div style="display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:16px">' +
|
|
56
60
|
settingsField('Eval Max Iterations', 'set-evalMaxIterations', e.evalMaxIterations || 3, '', 'Max review→fix cycles before escalating (1-10)') +
|
|
@@ -235,6 +239,8 @@ async function saveSettings() {
|
|
|
235
239
|
autoArchive: document.getElementById('set-autoArchive').checked,
|
|
236
240
|
adoPollEnabled: document.getElementById('set-adoPollEnabled').checked,
|
|
237
241
|
ghPollEnabled: document.getElementById('set-ghPollEnabled').checked,
|
|
242
|
+
adoPollStatusEvery: document.getElementById('set-adoPollStatusEvery').value,
|
|
243
|
+
adoPollCommentsEvery: document.getElementById('set-adoPollCommentsEvery').value,
|
|
238
244
|
evalMaxIterations: document.getElementById('set-evalMaxIterations').value,
|
|
239
245
|
evalMaxCost: document.getElementById('set-evalMaxCost').value || null,
|
|
240
246
|
maxBuildFixAttempts: document.getElementById('set-maxBuildFixAttempts').value,
|
package/dashboard.js
CHANGED
|
@@ -3730,6 +3730,7 @@ What would you like to discuss or change? When you're happy, say "approve" and I
|
|
|
3730
3730
|
meetingRoundTimeout: [60000],
|
|
3731
3731
|
versionCheckInterval: [60000],
|
|
3732
3732
|
maxBuildFixAttempts: [1, 10],
|
|
3733
|
+
adoPollStatusEvery: [1], adoPollCommentsEvery: [1],
|
|
3733
3734
|
};
|
|
3734
3735
|
for (const [key, [min, max]] of Object.entries(numericFields)) {
|
|
3735
3736
|
if (e[key] !== undefined) {
|
package/engine/shared.js
CHANGED
|
@@ -549,6 +549,8 @@ const ENGINE_DEFAULTS = {
|
|
|
549
549
|
buildFixGracePeriod: 600000, // 10min — wait for CI to run after build fix before re-dispatching
|
|
550
550
|
adoPollEnabled: true, // poll ADO PR status, comments, and reconciliation on each tick cycle
|
|
551
551
|
ghPollEnabled: true, // poll GitHub PR status, comments, and reconciliation on each tick cycle
|
|
552
|
+
adoPollStatusEvery: 6, // poll ADO PR build/review/merge status every N ticks (~6 min at default interval)
|
|
553
|
+
adoPollCommentsEvery: 12, // poll ADO PR human comments every N ticks (~12 min at default interval)
|
|
552
554
|
autoCompletePrs: false, // auto-merge PRs when builds green + review approved (opt-in)
|
|
553
555
|
prMergeMethod: 'squash', // merge method: squash, merge, rebase
|
|
554
556
|
ignoredCommentAuthors: [], // comments from these authors are auto-closed and never trigger fixes
|
package/engine.js
CHANGED
|
@@ -3122,11 +3122,13 @@ async function tickInner() {
|
|
|
3122
3122
|
|
|
3123
3123
|
const adoPollEnabled = config.engine?.adoPollEnabled ?? DEFAULTS.adoPollEnabled;
|
|
3124
3124
|
const ghPollEnabled = config.engine?.ghPollEnabled ?? DEFAULTS.ghPollEnabled;
|
|
3125
|
+
const adoPollStatusEvery = Math.max(1, Number(config.engine?.adoPollStatusEvery) || DEFAULTS.adoPollStatusEvery);
|
|
3126
|
+
const adoPollCommentsEvery = Math.max(1, Number(config.engine?.adoPollCommentsEvery) || DEFAULTS.adoPollCommentsEvery);
|
|
3125
3127
|
|
|
3126
|
-
// 2.6. Poll PR status: build, review, merge (every
|
|
3128
|
+
// 2.6. Poll PR status: build, review, merge (every adoPollStatusEvery ticks, default ~6 minutes)
|
|
3127
3129
|
// Awaited so PR state is consistent before discoverWork reads it
|
|
3128
3130
|
// Also re-polls early if previous tick had ADO auth failures (stale build status recovery)
|
|
3129
|
-
if (tickCount %
|
|
3131
|
+
if (tickCount % adoPollStatusEvery === 0 || needsAdoPollRetry()) {
|
|
3130
3132
|
if (adoPollEnabled) {
|
|
3131
3133
|
try { await pollPrStatus(config); } catch (err) { log('warn', `ADO PR status poll error: ${err?.message || err}${err?.stack ? ' | ' + err.stack.split('\n')[1]?.trim() : ''}`); }
|
|
3132
3134
|
}
|
|
@@ -3152,16 +3154,17 @@ async function tickInner() {
|
|
|
3152
3154
|
} catch (err) { log('warn', `Plan completion check error: ${err?.message || err}`); }
|
|
3153
3155
|
}
|
|
3154
3156
|
|
|
3155
|
-
// 2.7. Poll PR threads for human comments (every
|
|
3156
|
-
if (tickCount %
|
|
3157
|
+
// 2.7. Poll PR threads for human comments (every adoPollCommentsEvery ticks, default ~12 minutes)
|
|
3158
|
+
if (tickCount % adoPollCommentsEvery === 0) {
|
|
3157
3159
|
if (adoPollEnabled) {
|
|
3158
3160
|
try { await pollPrHumanComments(config); } catch (err) { log('warn', `ADO PR comment poll error: ${err?.message || err}${err?.stack ? ' | ' + err.stack.split('\n')[1]?.trim() : ''}`); }
|
|
3159
|
-
try { await reconcilePrs(config); } catch (err) { log('warn', `ADO PR reconciliation error: ${err?.message || err}${err?.stack ? ' | ' + err.stack.split('\n')[1]?.trim() : ''}`); }
|
|
3160
3161
|
}
|
|
3161
3162
|
if (ghPollEnabled) {
|
|
3162
3163
|
try { await ghPollPrHumanComments(config); } catch (err) { log('warn', `GitHub PR comment poll error: ${err?.message || err}${err?.stack ? ' | ' + err.stack.split('\n')[1]?.trim() : ''}`); }
|
|
3163
|
-
try { await ghReconcilePrs(config); } catch (err) { log('warn', `GitHub PR reconciliation error: ${err?.message || err}${err?.stack ? ' | ' + err.stack.split('\n')[1]?.trim() : ''}`); }
|
|
3164
3164
|
}
|
|
3165
|
+
// Reconciliation runs regardless of poll flags — it's a recovery sweep, not a convenience poll
|
|
3166
|
+
try { await reconcilePrs(config); } catch (err) { log('warn', `ADO PR reconciliation error: ${err?.message || err}${err?.stack ? ' | ' + err.stack.split('\n')[1]?.trim() : ''}`); }
|
|
3167
|
+
try { await ghReconcilePrs(config); } catch (err) { log('warn', `GitHub PR reconciliation error: ${err?.message || err}${err?.stack ? ' | ' + err.stack.split('\n')[1]?.trim() : ''}`); }
|
|
3165
3168
|
}
|
|
3166
3169
|
|
|
3167
3170
|
// 2.9. Stalled dispatch detection — auto-retry failed items blocking the graph (every 20 ticks = ~10 min)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.936",
|
|
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"
|