@yemi33/minions 0.1.558 → 0.1.560
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 +5 -1
- package/dashboard/js/render-kb.js +1 -1
- package/dashboard.js +4 -1
- package/engine/meeting.js +6 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.1.
|
|
3
|
+
## 0.1.560 (2026-04-08)
|
|
4
4
|
|
|
5
5
|
### Features
|
|
6
6
|
- max retry cap and escalation for build fix cycles (#488)
|
|
7
7
|
|
|
8
|
+
### Fixes
|
|
9
|
+
- prevent duplicate conclude dispatches in meetings
|
|
10
|
+
- protect pinned KB items from sweep deduplication
|
|
11
|
+
|
|
8
12
|
## 0.1.557 (2026-04-08)
|
|
9
13
|
|
|
10
14
|
### Features
|
|
@@ -144,7 +144,7 @@ async function kbSweep() {
|
|
|
144
144
|
btn.textContent = 'sweeping...';
|
|
145
145
|
btn.style.color = 'var(--blue)';
|
|
146
146
|
try {
|
|
147
|
-
const res = await fetch('/api/knowledge/sweep', { method: 'POST', signal: AbortSignal.timeout(300000) });
|
|
147
|
+
const res = await fetch('/api/knowledge/sweep', { method: 'POST', signal: AbortSignal.timeout(300000), headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ pinnedKeys: getPinnedItems().filter(function(k) { return k.startsWith('knowledge/'); }) }) });
|
|
148
148
|
const data = await res.json();
|
|
149
149
|
if (data.ok) {
|
|
150
150
|
btn.textContent = 'done';
|
package/dashboard.js
CHANGED
|
@@ -1766,12 +1766,15 @@ const server = http.createServer(async (req, res) => {
|
|
|
1766
1766
|
global._kbSweepInFlight = true;
|
|
1767
1767
|
global._kbSweepStartedAt = Date.now();
|
|
1768
1768
|
try {
|
|
1769
|
+
const body = await readBody(req).catch(() => ({}));
|
|
1769
1770
|
const entries = getKnowledgeBaseEntries();
|
|
1770
1771
|
if (entries.length < 2) return jsonReply(res, 200, { ok: true, summary: 'nothing to sweep (< 2 entries)' });
|
|
1771
1772
|
|
|
1772
|
-
// Build a manifest of all KB entries with their content
|
|
1773
|
+
// Build a manifest of all KB entries with their content (skip pinned — user wants to keep them)
|
|
1774
|
+
const pinnedKeys = new Set(body.pinnedKeys || []);
|
|
1773
1775
|
const manifest = [];
|
|
1774
1776
|
for (const e of entries) {
|
|
1777
|
+
if (pinnedKeys.has('knowledge/' + e.cat + '/' + e.file)) continue;
|
|
1775
1778
|
const content = safeRead(path.join(MINIONS_DIR, 'knowledge', e.cat, e.file));
|
|
1776
1779
|
if (!content) continue;
|
|
1777
1780
|
manifest.push({ category: e.cat, file: e.file, title: e.title, agent: e.agent, date: e.date, content: content.slice(0, 3000) });
|
package/engine/meeting.js
CHANGED
|
@@ -85,6 +85,11 @@ function discoverMeetingWork(config) {
|
|
|
85
85
|
const agents = config.agents || {};
|
|
86
86
|
|
|
87
87
|
if (roundName === 'concluding') {
|
|
88
|
+
// Only one agent should conclude — skip if already concluded or any conclude dispatch is active
|
|
89
|
+
if (meeting.conclusion) continue;
|
|
90
|
+
const concludePrefix = `meeting-${meeting.id}-r${round}-`;
|
|
91
|
+
if ([...activeKeys].some(k => k.startsWith(concludePrefix))) continue;
|
|
92
|
+
|
|
88
93
|
// Pick the first non-busy participant as concluder (fallback to any participant)
|
|
89
94
|
const busyAgents = new Set(
|
|
90
95
|
(dispatch.active || []).map(d => d.agent).filter(Boolean)
|
|
@@ -92,7 +97,7 @@ function discoverMeetingWork(config) {
|
|
|
92
97
|
const concluder = meeting.participants.find(p => !busyAgents.has(p))
|
|
93
98
|
|| meeting.participants[0];
|
|
94
99
|
if (!concluder) continue;
|
|
95
|
-
const key =
|
|
100
|
+
const key = `${concludePrefix}${concluder}`;
|
|
96
101
|
if (activeKeys.has(key)) continue;
|
|
97
102
|
|
|
98
103
|
const humanNotes = (Array.isArray(meeting.humanNotes) ? meeting.humanNotes : []).map(n => '- ' + n).join('\n');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.560",
|
|
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"
|