@yemi33/minions 0.1.187 → 0.1.189
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 +13 -0
- package/dashboard/js/refresh.js +29 -23
- package/dashboard/js/render-plans.js +1 -1
- package/package.json +1 -1
- package/playbooks/meeting-conclude.md +1 -39
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.189 (2026-04-02)
|
|
4
|
+
|
|
5
|
+
### Dashboard
|
|
6
|
+
- dashboard/js/render-plans.js
|
|
7
|
+
|
|
8
|
+
### Playbooks
|
|
9
|
+
- meeting-conclude.md
|
|
10
|
+
|
|
11
|
+
## 0.1.188 (2026-04-02)
|
|
12
|
+
|
|
13
|
+
### Dashboard
|
|
14
|
+
- dashboard/js/refresh.js
|
|
15
|
+
|
|
3
16
|
## 0.1.187 (2026-04-02)
|
|
4
17
|
|
|
5
18
|
### Engine
|
package/dashboard/js/refresh.js
CHANGED
|
@@ -97,17 +97,24 @@ function _processStatusUpdate(data) {
|
|
|
97
97
|
}
|
|
98
98
|
document.getElementById('ts').textContent = new Date(data.timestamp).toLocaleTimeString();
|
|
99
99
|
const engineState = (data.engine && data.engine.state) ? data.engine.state : 'stopped';
|
|
100
|
+
|
|
101
|
+
// Engine status FIRST — most critical indicator, must not be blocked by other render failures
|
|
102
|
+
renderEngineStatus(data.engine);
|
|
103
|
+
|
|
100
104
|
// Show setup banner if no projects linked (the key onboarding step)
|
|
101
105
|
const noProjects = !data.projects || data.projects.length === 0;
|
|
102
106
|
document.getElementById('setup-banner').style.display = (noProjects && engineState !== 'stopped') ? 'block' : 'none';
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
107
|
+
|
|
108
|
+
// Each render call wrapped so one failure doesn't block the rest
|
|
109
|
+
const _r = (fn) => { try { fn(); } catch (e) { console.error('render error:', e.message); } };
|
|
110
|
+
_r(() => renderAgents(data.agents));
|
|
111
|
+
_r(() => renderPrdProgress(data.prdProgress));
|
|
112
|
+
_r(() => _cachePrdItems(data.prdProgress));
|
|
113
|
+
_r(() => renderInbox(data.inbox));
|
|
114
|
+
_r(() => cmdUpdateAgentList(data.agents));
|
|
115
|
+
_r(() => cmdUpdateProjectList(data.projects || []));
|
|
116
|
+
_r(() => renderNotes(data.notes));
|
|
117
|
+
_r(() => renderPrd(data.prd, data.prdProgress));
|
|
111
118
|
// Auto-approve badge
|
|
112
119
|
const autoEl = document.getElementById('auto-approve-badge');
|
|
113
120
|
if (autoEl) autoEl.innerHTML = data.autoMode?.approvePlans
|
|
@@ -116,24 +123,23 @@ function _processStatusUpdate(data) {
|
|
|
116
123
|
// Inbox consolidation threshold from config
|
|
117
124
|
const threshEl = document.getElementById('inbox-threshold');
|
|
118
125
|
if (threshEl && data.autoMode?.inboxThreshold) threshEl.textContent = data.autoMode.inboxThreshold;
|
|
119
|
-
renderPrs(data.pullRequests || []);
|
|
120
|
-
renderArchiveButtons(data.archivedPrds || []);
|
|
121
|
-
|
|
122
|
-
renderDispatch(data.dispatch);
|
|
126
|
+
_r(() => renderPrs(data.pullRequests || []));
|
|
127
|
+
_r(() => renderArchiveButtons(data.archivedPrds || []));
|
|
128
|
+
_r(() => renderDispatch(data.dispatch));
|
|
123
129
|
window._lastDispatch = data.dispatch;
|
|
124
130
|
window._lastWorkItems = data.workItems || [];
|
|
125
131
|
window._lastStatus = data;
|
|
126
|
-
prunePrdRequeueState(window._lastWorkItems);
|
|
127
|
-
renderEngineLog(data.engineLog || []);
|
|
128
|
-
renderProjects(data.projects || []);
|
|
129
|
-
renderMetrics(data.metrics || {});
|
|
130
|
-
renderWorkItems(data.workItems || []);
|
|
131
|
-
renderSkills(data.skills || []);
|
|
132
|
-
renderMcpServers(data.mcpServers || []);
|
|
133
|
-
renderSchedules(data.schedules || []);
|
|
134
|
-
renderMeetings(data.meetings || []);
|
|
135
|
-
if (typeof renderPipelines === 'function') renderPipelines(data.pipelines || []);
|
|
136
|
-
renderPinned(data.pinned || []);
|
|
132
|
+
_r(() => prunePrdRequeueState(window._lastWorkItems));
|
|
133
|
+
_r(() => renderEngineLog(data.engineLog || []));
|
|
134
|
+
_r(() => renderProjects(data.projects || []));
|
|
135
|
+
_r(() => renderMetrics(data.metrics || {}));
|
|
136
|
+
_r(() => renderWorkItems(data.workItems || []));
|
|
137
|
+
_r(() => renderSkills(data.skills || []));
|
|
138
|
+
_r(() => renderMcpServers(data.mcpServers || []));
|
|
139
|
+
_r(() => renderSchedules(data.schedules || []));
|
|
140
|
+
_r(() => renderMeetings(data.meetings || []));
|
|
141
|
+
_r(() => { if (typeof renderPipelines === 'function') renderPipelines(data.pipelines || []); });
|
|
142
|
+
_r(() => renderPinned(data.pinned || []));
|
|
137
143
|
// Update sidebar counts
|
|
138
144
|
const swi = document.getElementById('sidebar-wi');
|
|
139
145
|
if (swi) swi.textContent = (data.workItems || []).length || '';
|
|
@@ -70,7 +70,7 @@ function derivePlanStatus(prdFile, mdFile, prdJsonStatus, workItems) {
|
|
|
70
70
|
w.sourcePlan === prdFile || w.sourcePlan === mdFile ||
|
|
71
71
|
(w.type === 'plan-to-prd' && (w.planFile === prdFile || w.planFile === mdFile))
|
|
72
72
|
);
|
|
73
|
-
const implementWi = wi.filter(w => w.type !== 'plan-to-prd' && w.type !== 'verify');
|
|
73
|
+
const implementWi = wi.filter(w => w.type !== 'plan-to-prd' && w.type !== 'verify' && w.type !== 'evaluate');
|
|
74
74
|
const hasPendingPrd = wi.some(w => w.type === 'plan-to-prd' && (w.status === 'pending' || w.status === 'dispatched'));
|
|
75
75
|
const hasActiveWork = implementWi.some(w => w.status === 'pending' || w.status === 'dispatched');
|
|
76
76
|
const allDone = implementWi.length > 0 && implementWi.every(w => w.status === 'done');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.189",
|
|
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"
|
|
@@ -34,42 +34,4 @@ Write a clear meeting conclusion covering:
|
|
|
34
34
|
|
|
35
35
|
Be decisive. If there's a clear best option, say so.
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
After writing the conclusion, decide: **are there concrete action items that require implementation work?**
|
|
40
|
-
|
|
41
|
-
- **If YES** — write a plan file to `plans/<slugified-meeting-title>-<YYYY-MM-DD>.md` using the Minions plan format below. Only create this file if there are real, actionable implementation tasks — not just discussion points or observations.
|
|
42
|
-
|
|
43
|
-
- **If NO** — do not create a plan file. A conclusion with only open questions, observations, or decisions that require no code/implementation changes does not need a plan.
|
|
44
|
-
|
|
45
|
-
### Plan format (only if action items exist)
|
|
46
|
-
|
|
47
|
-
```markdown
|
|
48
|
-
# <Plan Title>
|
|
49
|
-
|
|
50
|
-
> Source: Meeting {{meeting_title}} — <date>
|
|
51
|
-
|
|
52
|
-
## Background
|
|
53
|
-
|
|
54
|
-
<1-2 sentence summary of why this plan exists, from the meeting conclusion>
|
|
55
|
-
|
|
56
|
-
## Tasks
|
|
57
|
-
|
|
58
|
-
### 1. <Task title>
|
|
59
|
-
- **What**: <what needs to be done>
|
|
60
|
-
- **Why**: <from the meeting — what problem does this fix>
|
|
61
|
-
- **Owner**: <agent role best suited: Engineer / Architect / Analyst>
|
|
62
|
-
- **Files**: <relevant files if known>
|
|
63
|
-
|
|
64
|
-
### 2. <Task title>
|
|
65
|
-
...
|
|
66
|
-
|
|
67
|
-
## Open Questions
|
|
68
|
-
|
|
69
|
-
<Any unresolved items that need human input before work begins>
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
Do NOT create a plan for:
|
|
73
|
-
- Informational findings with no follow-up work
|
|
74
|
-
- Decisions that have already been made and require no changes
|
|
75
|
-
- Items that are purely "monitor and observe"
|
|
37
|
+
Do NOT create plan files — plan creation is handled separately (by the pipeline plan stage or the dashboard "Create Plan" button).
|