@yemi33/minions 0.1.57 → 0.1.59
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 +39 -0
- package/dashboard/js/command-center.js +1 -1
- package/dashboard/js/live-stream.js +3 -3
- package/dashboard/js/modal-qa.js +4 -4
- package/dashboard/js/refresh.js +2 -2
- package/dashboard/js/render-inbox.js +3 -3
- package/dashboard/js/render-kb.js +1 -1
- package/dashboard/js/render-plans.js +3 -3
- package/dashboard/js/render-prs.js +2 -2
- package/dashboard/js/render-work-items.js +2 -2
- package/dashboard/js/settings.js +1 -1
- package/dashboard.js +87 -58
- package/engine/ado.js +2 -2
- package/engine/cli.js +16 -16
- package/engine/consolidation.js +4 -4
- package/engine/github.js +3 -3
- package/engine/lifecycle.js +14 -14
- package/engine/llm.js +2 -2
- package/engine/preflight.js +2 -2
- package/engine/queries.js +13 -13
- package/engine/shared.js +6 -6
- package/engine/spawn-agent.js +3 -3
- package/engine.js +101 -101
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,44 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.59 (2026-03-30)
|
|
4
|
+
|
|
5
|
+
### Engine
|
|
6
|
+
- engine.js
|
|
7
|
+
- engine/ado.js
|
|
8
|
+
- engine/cli.js
|
|
9
|
+
- engine/consolidation.js
|
|
10
|
+
- engine/github.js
|
|
11
|
+
- engine/lifecycle.js
|
|
12
|
+
- engine/llm.js
|
|
13
|
+
- engine/preflight.js
|
|
14
|
+
- engine/queries.js
|
|
15
|
+
- engine/shared.js
|
|
16
|
+
- engine/spawn-agent.js
|
|
17
|
+
|
|
18
|
+
### Dashboard
|
|
19
|
+
- dashboard.js
|
|
20
|
+
- dashboard/js/command-center.js
|
|
21
|
+
- dashboard/js/live-stream.js
|
|
22
|
+
- dashboard/js/modal-qa.js
|
|
23
|
+
- dashboard/js/refresh.js
|
|
24
|
+
- dashboard/js/render-inbox.js
|
|
25
|
+
- dashboard/js/render-kb.js
|
|
26
|
+
- dashboard/js/render-plans.js
|
|
27
|
+
- dashboard/js/render-prs.js
|
|
28
|
+
- dashboard/js/render-work-items.js
|
|
29
|
+
- dashboard/js/settings.js
|
|
30
|
+
|
|
31
|
+
## 0.1.58 (2026-03-30)
|
|
32
|
+
|
|
33
|
+
### Engine
|
|
34
|
+
- engine.js
|
|
35
|
+
|
|
36
|
+
### Dashboard
|
|
37
|
+
- dashboard.js
|
|
38
|
+
|
|
39
|
+
### Other
|
|
40
|
+
- test/unit.test.js
|
|
41
|
+
|
|
3
42
|
## 0.1.57 (2026-03-30)
|
|
4
43
|
|
|
5
44
|
### Engine
|
|
@@ -44,7 +44,7 @@ function ccSaveState() {
|
|
|
44
44
|
// Keep last 30 messages for display
|
|
45
45
|
const toSave = _ccMessages.slice(-30);
|
|
46
46
|
localStorage.setItem('cc-messages', JSON.stringify(toSave));
|
|
47
|
-
} catch {
|
|
47
|
+
} catch { /* localStorage might be full */ }
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
function ccUpdateSessionIndicator() {
|
|
@@ -58,7 +58,7 @@ function renderLiveChatMessage(raw) {
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
continue;
|
|
61
|
-
} catch {}
|
|
61
|
+
} catch { /* JSON parse fallback */ }
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
// Fallback: raw text (stderr, non-JSON lines)
|
|
@@ -88,7 +88,7 @@ function startLiveStream(agentId) {
|
|
|
88
88
|
try {
|
|
89
89
|
const chunk = JSON.parse(e.data);
|
|
90
90
|
renderLiveChatMessage(chunk);
|
|
91
|
-
} catch {}
|
|
91
|
+
} catch (e) { console.error('live-stream:', e.message); }
|
|
92
92
|
};
|
|
93
93
|
|
|
94
94
|
liveEventSource.addEventListener('done', function() {
|
|
@@ -137,7 +137,7 @@ async function refreshLiveOutput() {
|
|
|
137
137
|
renderLiveChatMessage(text);
|
|
138
138
|
if (wasAtBottom) el.scrollTop = el.scrollHeight;
|
|
139
139
|
}
|
|
140
|
-
} catch {}
|
|
140
|
+
} catch (e) { console.error('live-stream reload:', e.message); }
|
|
141
141
|
}
|
|
142
142
|
|
|
143
143
|
async function sendSteering() {
|
package/dashboard/js/modal-qa.js
CHANGED
|
@@ -16,7 +16,7 @@ const _qaSessions = new Map(); // persist conversations across modal open/close
|
|
|
16
16
|
try {
|
|
17
17
|
const saved = JSON.parse(localStorage.getItem('qa-sessions') || '{}');
|
|
18
18
|
for (const [k, v] of Object.entries(saved)) _qaSessions.set(k, v);
|
|
19
|
-
} catch {}
|
|
19
|
+
} catch { /* optional */ }
|
|
20
20
|
function _saveQaSessions() {
|
|
21
21
|
try {
|
|
22
22
|
const obj = {};
|
|
@@ -24,7 +24,7 @@ function _saveQaSessions() {
|
|
|
24
24
|
const entries = [..._qaSessions.entries()].slice(-10);
|
|
25
25
|
for (const [k, v] of entries) obj[k] = { ...v, threadHtml: (v.threadHtml || '').slice(0, 50000) };
|
|
26
26
|
localStorage.setItem('qa-sessions', JSON.stringify(obj));
|
|
27
|
-
} catch {}
|
|
27
|
+
} catch { /* localStorage might be full */ }
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
function modalAskAboutSelection() {
|
|
@@ -293,13 +293,13 @@ async function qaReplacePrd(planFile) {
|
|
|
293
293
|
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
|
294
294
|
body: JSON.stringify({ file: existingPrd.file })
|
|
295
295
|
});
|
|
296
|
-
} catch {}
|
|
296
|
+
} catch (e) { console.error('plan pause:', e.message); }
|
|
297
297
|
try {
|
|
298
298
|
await fetch('/api/plans/regenerate', {
|
|
299
299
|
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
|
300
300
|
body: JSON.stringify({ source: existingPrd.file })
|
|
301
301
|
});
|
|
302
|
-
} catch {}
|
|
302
|
+
} catch (e) { console.error('plan regenerate:', e.message); }
|
|
303
303
|
}
|
|
304
304
|
|
|
305
305
|
planExecute(planFile, project, null);
|
package/dashboard/js/refresh.js
CHANGED
|
@@ -61,7 +61,7 @@ let _statusStream = null;
|
|
|
61
61
|
try {
|
|
62
62
|
_statusStream = new EventSource('/api/status-stream');
|
|
63
63
|
_statusStream.onmessage = (e) => {
|
|
64
|
-
try { _processStatusUpdate(JSON.parse(e.data)); } catch {}
|
|
64
|
+
try { _processStatusUpdate(JSON.parse(e.data)); } catch (e2) { console.error('status-stream:', e2.message); }
|
|
65
65
|
};
|
|
66
66
|
_statusStream.onerror = () => {
|
|
67
67
|
// Fall back to polling
|
|
@@ -82,4 +82,4 @@ switchPage(currentPage);
|
|
|
82
82
|
try {
|
|
83
83
|
const _hotReload = new EventSource('/api/hot-reload');
|
|
84
84
|
_hotReload.onmessage = (e) => { if (e.data === 'reload') location.reload(); };
|
|
85
|
-
} catch {}
|
|
85
|
+
} catch { /* expected */ }
|
|
@@ -142,7 +142,7 @@ async function openInboxInExplorer(name) {
|
|
|
142
142
|
method: 'POST', headers: { 'Content-Type': 'application/json' },
|
|
143
143
|
body: JSON.stringify({ name })
|
|
144
144
|
});
|
|
145
|
-
} catch {}
|
|
145
|
+
} catch (e) { console.error('inbox open:', e.message); }
|
|
146
146
|
}
|
|
147
147
|
|
|
148
148
|
function openQuickNoteModal() {
|
|
@@ -174,9 +174,9 @@ async function submitQuickNote() {
|
|
|
174
174
|
body: JSON.stringify({ title: title || 'Quick note', what: content || title })
|
|
175
175
|
});
|
|
176
176
|
if (res.ok) {
|
|
177
|
-
try { closeModal(); } catch {}
|
|
177
|
+
try { closeModal(); } catch { /* expected */ }
|
|
178
178
|
refresh();
|
|
179
|
-
try { showToast('cmd-toast', 'Note saved to inbox', true); } catch {}
|
|
179
|
+
try { showToast('cmd-toast', 'Note saved to inbox', true); } catch { /* expected */ }
|
|
180
180
|
}
|
|
181
181
|
else { const d = await res.json().catch(() => ({})); alert('Error: ' + (d.error || 'unknown')); }
|
|
182
182
|
} catch (e) { alert('Error saving note: ' + e.message); }
|
|
@@ -36,10 +36,10 @@ async function _submitCreatePlan() {
|
|
|
36
36
|
});
|
|
37
37
|
const data = await res.json();
|
|
38
38
|
if (res.ok) {
|
|
39
|
-
try { closeModal(); } catch {}
|
|
39
|
+
try { closeModal(); } catch { /* expected */ }
|
|
40
40
|
refreshPlans();
|
|
41
41
|
refresh();
|
|
42
|
-
try { showToast('cmd-toast', 'Plan "' + data.file + '" created — click Execute to convert to PRD', true); } catch {}
|
|
42
|
+
try { showToast('cmd-toast', 'Plan "' + data.file + '" created — click Execute to convert to PRD', true); } catch { /* expected */ }
|
|
43
43
|
} else {
|
|
44
44
|
alert('Failed: ' + (data.error || 'unknown'));
|
|
45
45
|
}
|
|
@@ -50,7 +50,7 @@ async function refreshPlans() {
|
|
|
50
50
|
try {
|
|
51
51
|
const plans = await fetch('/api/plans').then(r => r.json());
|
|
52
52
|
renderPlans(plans);
|
|
53
|
-
} catch {}
|
|
53
|
+
} catch (e) { console.error('plans refresh:', e.message); }
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
/**
|
|
@@ -135,9 +135,9 @@ async function _submitLinkPr() {
|
|
|
135
135
|
});
|
|
136
136
|
const data = await res.json();
|
|
137
137
|
if (res.ok) {
|
|
138
|
-
try { closeModal(); } catch {}
|
|
138
|
+
try { closeModal(); } catch { /* expected */ }
|
|
139
139
|
refresh();
|
|
140
|
-
try { showToast('cmd-toast', 'PR ' + (data.id || '') + ' linked' + (autoObserve ? ' (auto-observe on)' : ''), true); } catch {}
|
|
140
|
+
try { showToast('cmd-toast', 'PR ' + (data.id || '') + ' linked' + (autoObserve ? ' (auto-observe on)' : ''), true); } catch { /* expected */ }
|
|
141
141
|
} else {
|
|
142
142
|
alert('Failed: ' + (data.error || 'unknown'));
|
|
143
143
|
}
|
|
@@ -341,10 +341,10 @@ async function _submitCreateWorkItem() {
|
|
|
341
341
|
});
|
|
342
342
|
const data = await res.json();
|
|
343
343
|
if (res.ok) {
|
|
344
|
-
try { closeModal(); } catch {}
|
|
344
|
+
try { closeModal(); } catch { /* expected */ }
|
|
345
345
|
wakeEngine();
|
|
346
346
|
refresh();
|
|
347
|
-
try { showToast('cmd-toast', 'Work item ' + (data.id || '') + ' created', true); } catch {}
|
|
347
|
+
try { showToast('cmd-toast', 'Work item ' + (data.id || '') + ' created', true); } catch { /* expected */ }
|
|
348
348
|
} else {
|
|
349
349
|
alert('Failed: ' + (data.error || 'unknown'));
|
|
350
350
|
}
|
package/dashboard/js/settings.js
CHANGED
|
@@ -147,7 +147,7 @@ async function addProject() {
|
|
|
147
147
|
});
|
|
148
148
|
const addData = await addRes.json();
|
|
149
149
|
if (!addRes.ok) { alert('Failed: ' + (addData.error || 'unknown')); return; }
|
|
150
|
-
try { showToast('cmd-toast', 'Project "' + addData.name + '" added — restart engine to pick it up', true); } catch {}
|
|
150
|
+
try { showToast('cmd-toast', 'Project "' + addData.name + '" added — restart engine to pick it up', true); } catch { /* expected */ }
|
|
151
151
|
refresh();
|
|
152
152
|
} catch (e) { alert('Error: ' + e.message); }
|
|
153
153
|
}
|