@yemi33/minions 0.1.448 → 0.1.450
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 -1
- package/engine/ado.js +10 -0
- package/engine/meeting.js +19 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.1.
|
|
3
|
+
## 0.1.450 (2026-04-07)
|
|
4
4
|
|
|
5
5
|
### Features
|
|
6
6
|
- notification dot on Notes & KB sidebar when sweep completes/fails
|
|
7
7
|
|
|
8
8
|
### Fixes
|
|
9
|
+
- meeting conclude timeout synthesizes conclusion instead of null
|
|
10
|
+
- track ADO head commit for push detection — unblocks re-review cycle
|
|
9
11
|
- block all fix dispatches while awaiting re-review after a fix
|
|
10
12
|
- prevent double-dispatch — dedup by work item ID and dispatchKey
|
|
11
13
|
- pipeline agent is optional — set only when user explicitly requests
|
package/engine/ado.js
CHANGED
|
@@ -166,6 +166,16 @@ async function pollPrStatus(config) {
|
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
168
|
|
|
169
|
+
// Track head commit changes to detect new pushes (used for review re-dispatch gating)
|
|
170
|
+
const headCommit = prData.lastMergeSourceCommit?.commitId || prData.sourceRefName || '';
|
|
171
|
+
if (headCommit && pr._adoHeadCommit !== headCommit) {
|
|
172
|
+
if (pr._adoHeadCommit) { // skip first detection — only track changes
|
|
173
|
+
pr.lastPushedAt = new Date().toISOString();
|
|
174
|
+
}
|
|
175
|
+
pr._adoHeadCommit = headCommit;
|
|
176
|
+
updated = true;
|
|
177
|
+
}
|
|
178
|
+
|
|
169
179
|
const reviewers = prData.reviewers || [];
|
|
170
180
|
const votes = reviewers.map(r => r.vote).filter(v => v !== undefined);
|
|
171
181
|
let newReviewStatus = pr.reviewStatus || 'pending';
|
package/engine/meeting.js
CHANGED
|
@@ -375,10 +375,27 @@ function checkMeetingTimeouts(config) {
|
|
|
375
375
|
meeting.roundStartedAt = new Date().toISOString();
|
|
376
376
|
saveMeeting(meeting);
|
|
377
377
|
} else if (meeting.status === 'concluding') {
|
|
378
|
-
log('warn', `Meeting ${meeting.id}: conclusion round timed out after ${Math.round(elapsed / 60000)}min —
|
|
379
|
-
|
|
378
|
+
log('warn', `Meeting ${meeting.id}: conclusion round timed out after ${Math.round(elapsed / 60000)}min — auto-summarizing`);
|
|
379
|
+
// Synthesize a conclusion from available findings and debate rather than leaving it empty
|
|
380
|
+
const findingsSummary = Object.entries(meeting.findings || {}).map(([agent, f]) =>
|
|
381
|
+
`**${(config.agents || {})[agent]?.name || agent}**: ${(f.content || '').slice(0, 200)}`
|
|
382
|
+
).join('\n');
|
|
383
|
+
const debateSummary = Object.entries(meeting.debate || {}).map(([agent, d]) =>
|
|
384
|
+
`**${(config.agents || {})[agent]?.name || agent}**: ${(d.content || '').slice(0, 200)}`
|
|
385
|
+
).join('\n');
|
|
386
|
+
const autoConclusion = `*Auto-generated — conclusion round timed out.*\n\n## Key Findings\n${findingsSummary || '(none)'}\n\n## Debate Summary\n${debateSummary || '(none)'}`;
|
|
387
|
+
meeting.conclusion = { content: autoConclusion, agent: 'system', submittedAt: new Date().toISOString() };
|
|
388
|
+
meeting.transcript.push({ round: meeting.round, agent: 'system', type: 'conclusion', content: autoConclusion, at: new Date().toISOString() });
|
|
380
389
|
meeting.status = 'completed';
|
|
381
390
|
meeting.completedAt = new Date().toISOString();
|
|
391
|
+
|
|
392
|
+
// Write transcript to inbox (same as normal conclusion path)
|
|
393
|
+
const agents = config.agents || {};
|
|
394
|
+
const transcript = meeting.transcript.map(t =>
|
|
395
|
+
`### ${agents[t.agent]?.name || t.agent} (${t.type}, Round ${t.round})\n\n${t.content}`
|
|
396
|
+
).join('\n\n---\n\n');
|
|
397
|
+
shared.writeToInbox('meeting', meeting.id, `# Meeting Transcript: ${meeting.title}\n\n${transcript}`);
|
|
398
|
+
|
|
382
399
|
saveMeeting(meeting);
|
|
383
400
|
}
|
|
384
401
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.450",
|
|
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"
|