@yemi33/minions 0.1.238 → 0.1.240
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/docs/capture-demos.js +128 -64
- package/docs/demo/01-dashboard-overview.png +0 -0
- package/docs/demo/02-work-items.png +0 -0
- package/docs/demo/03-plans-prd.png +0 -0
- package/docs/demo/04-pull-requests.png +0 -0
- package/docs/demo/05-meetings.png +0 -0
- package/docs/demo/06-pipelines.png +0 -0
- package/docs/demo/07-notes-kb.png +0 -0
- package/docs/demo/08-schedules.png +0 -0
- package/docs/demo/09-engine.png +0 -0
- package/docs/demo/10-command-center.png +0 -0
- package/docs/index.html +2 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.1.
|
|
3
|
+
## 0.1.240 (2026-04-03)
|
|
4
4
|
|
|
5
5
|
### Features
|
|
6
|
+
- capture-demos seeds mock data for richer screenshots
|
|
6
7
|
- add capture-demos skill for regenerating GitHub Pages screenshots
|
|
7
8
|
|
|
8
9
|
### Fixes
|
|
@@ -10,6 +11,7 @@
|
|
|
10
11
|
- clean _pendingReason on all status→done transitions, not just updateWorkItemStatus
|
|
11
12
|
|
|
12
13
|
### Other
|
|
14
|
+
- docs: fix quick start — use 'minions dash' not raw URL
|
|
13
15
|
- docs: update GitHub Pages with all features + fresh screenshots
|
|
14
16
|
- docs: fix outdated references across all documentation
|
|
15
17
|
|
package/docs/capture-demos.js
CHANGED
|
@@ -1,82 +1,146 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
3
|
* Capture dashboard screenshots for GitHub Pages.
|
|
4
|
-
*
|
|
4
|
+
* Seeds demo data, captures all pages, then cleans up.
|
|
5
|
+
*
|
|
6
|
+
* Run: node docs/capture-demos.js
|
|
7
|
+
* Requires: dashboard running on :7331, playwright chromium installed
|
|
5
8
|
*/
|
|
6
9
|
const { chromium } = require('@playwright/test');
|
|
10
|
+
const { execSync } = require('child_process');
|
|
7
11
|
const path = require('path');
|
|
8
12
|
|
|
9
13
|
const DEMO_DIR = path.join(__dirname, 'demo');
|
|
10
14
|
const BASE = 'http://localhost:7331';
|
|
15
|
+
const ROOT = path.resolve(__dirname, '..');
|
|
11
16
|
|
|
12
17
|
async function capture() {
|
|
18
|
+
// Seed demo data
|
|
19
|
+
console.log(' Seeding demo data...');
|
|
20
|
+
execSync(`node "${path.join(ROOT, 'test', 'seed-demo-data.js')}"`, { stdio: 'inherit' });
|
|
21
|
+
|
|
22
|
+
// Wait for dashboard to pick up seeded data
|
|
23
|
+
await new Promise(r => setTimeout(r, 5000));
|
|
24
|
+
|
|
13
25
|
const browser = await chromium.launch({ headless: true });
|
|
14
26
|
const ctx = await browser.newContext({ viewport: { width: 1400, height: 900 }, colorScheme: 'dark' });
|
|
15
27
|
const page = await ctx.newPage();
|
|
16
28
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
29
|
+
try {
|
|
30
|
+
await page.goto(BASE, { waitUntil: 'networkidle' });
|
|
31
|
+
await page.waitForTimeout(3000);
|
|
32
|
+
|
|
33
|
+
// 1. Home / Overview (agents should show as working from seeded dispatches)
|
|
34
|
+
console.log(' Capturing: home');
|
|
35
|
+
await page.screenshot({ path: path.join(DEMO_DIR, '01-dashboard-overview.png'), fullPage: false });
|
|
36
|
+
|
|
37
|
+
// 2. Work Items
|
|
38
|
+
console.log(' Capturing: work items');
|
|
39
|
+
await page.click('a[data-page="work"]');
|
|
40
|
+
await page.waitForTimeout(2000);
|
|
41
|
+
await page.screenshot({ path: path.join(DEMO_DIR, '02-work-items.png'), fullPage: false });
|
|
42
|
+
|
|
43
|
+
// 3. Plans & PRD (seeded PRD with dependency graph)
|
|
44
|
+
console.log(' Capturing: plans & PRD');
|
|
45
|
+
await page.click('a[data-page="plans"]');
|
|
46
|
+
await page.waitForTimeout(2000);
|
|
47
|
+
await page.screenshot({ path: path.join(DEMO_DIR, '03-plans-prd.png'), fullPage: false });
|
|
48
|
+
|
|
49
|
+
// 4. Pull Requests
|
|
50
|
+
console.log(' Capturing: pull requests');
|
|
51
|
+
await page.click('a[data-page="prs"]');
|
|
52
|
+
await page.waitForTimeout(1500);
|
|
53
|
+
await page.screenshot({ path: path.join(DEMO_DIR, '04-pull-requests.png'), fullPage: false });
|
|
54
|
+
|
|
55
|
+
// 5. Meetings
|
|
56
|
+
console.log(' Capturing: meetings');
|
|
57
|
+
await page.click('a[data-page="meetings"]');
|
|
58
|
+
await page.waitForTimeout(1500);
|
|
59
|
+
await page.screenshot({ path: path.join(DEMO_DIR, '05-meetings.png'), fullPage: false });
|
|
60
|
+
|
|
61
|
+
// 6. Pipelines
|
|
62
|
+
console.log(' Capturing: pipelines');
|
|
63
|
+
await page.click('a[data-page="pipelines"]');
|
|
64
|
+
await page.waitForTimeout(1500);
|
|
65
|
+
await page.screenshot({ path: path.join(DEMO_DIR, '06-pipelines.png'), fullPage: false });
|
|
66
|
+
|
|
67
|
+
// 7. Notes & KB
|
|
68
|
+
console.log(' Capturing: notes & KB');
|
|
69
|
+
await page.click('a[data-page="inbox"]');
|
|
70
|
+
await page.waitForTimeout(1500);
|
|
71
|
+
await page.screenshot({ path: path.join(DEMO_DIR, '07-notes-kb.png'), fullPage: false });
|
|
72
|
+
|
|
73
|
+
// 8. Schedules
|
|
74
|
+
console.log(' Capturing: schedules');
|
|
75
|
+
await page.click('a[data-page="schedule"]');
|
|
76
|
+
await page.waitForTimeout(1500);
|
|
77
|
+
await page.screenshot({ path: path.join(DEMO_DIR, '08-schedules.png'), fullPage: false });
|
|
78
|
+
|
|
79
|
+
// 9. Engine page (dispatch, log, metrics)
|
|
80
|
+
console.log(' Capturing: engine');
|
|
81
|
+
await page.click('a[data-page="engine"]');
|
|
82
|
+
await page.waitForTimeout(1500);
|
|
83
|
+
await page.screenshot({ path: path.join(DEMO_DIR, '09-engine.png'), fullPage: false });
|
|
84
|
+
|
|
85
|
+
// 10. Command Center with mock conversation
|
|
86
|
+
console.log(' Capturing: command center');
|
|
87
|
+
await page.click('#cc-toggle-btn');
|
|
88
|
+
await page.waitForTimeout(500);
|
|
89
|
+
|
|
90
|
+
// Inject mock CC messages into the DOM for the screenshot
|
|
91
|
+
await page.evaluate(() => {
|
|
92
|
+
const el = document.getElementById('cc-messages');
|
|
93
|
+
if (!el) return;
|
|
94
|
+
el.innerHTML = '';
|
|
95
|
+
|
|
96
|
+
function addMsg(role, html) {
|
|
97
|
+
const div = document.createElement('div');
|
|
98
|
+
div.className = 'cc-msg cc-msg-' + role;
|
|
99
|
+
div.innerHTML = html;
|
|
100
|
+
el.appendChild(div);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
addMsg('user', 'Create a plan to add OAuth2 authentication to OfficeAgent with JWT tokens and role-based access control.');
|
|
104
|
+
|
|
105
|
+
addMsg('assistant', '<div class="md-content">' +
|
|
106
|
+
'<p>I\'ll create a plan for OAuth2 authentication with RBAC. Let me check the current auth setup first.</p>' +
|
|
107
|
+
'<p>After reviewing the codebase, here\'s what I\'m dispatching:</p>' +
|
|
108
|
+
'<ul>' +
|
|
109
|
+
'<li><strong>Plan created:</strong> <code>auth-plan.md</code> with 5 features (OAuth2, RBAC, rate limiting, sessions, audit logging)</li>' +
|
|
110
|
+
'<li><strong>Dispatched to Lambert</strong> for PRD generation</li>' +
|
|
111
|
+
'</ul>' +
|
|
112
|
+
'<p>The plan is now in <strong>Plans & PRD</strong> awaiting your approval. Once approved, Dallas and Rebecca will start implementing in parallel.</p>' +
|
|
113
|
+
'</div>' +
|
|
114
|
+
'<div style="margin-top:8px;padding:6px 10px;background:rgba(63,185,80,0.1);border:1px solid rgba(63,185,80,0.2);border-radius:6px;font-size:11px;color:var(--green)">' +
|
|
115
|
+
'✓ Created plan: auth-plan.md ✓ Dispatched: Lambert → plan-to-prd</div>');
|
|
116
|
+
|
|
117
|
+
addMsg('user', 'What\'s the status of the auth implementation?');
|
|
118
|
+
|
|
119
|
+
addMsg('assistant', '<div class="md-content">' +
|
|
120
|
+
'<p>Here\'s the current status:</p>' +
|
|
121
|
+
'<table style="width:100%;font-size:12px">' +
|
|
122
|
+
'<tr><td style="color:var(--green)">✓ Done</td><td>OAuth2 Middleware</td><td style="color:var(--muted)">Dallas — PR-4520 merged</td></tr>' +
|
|
123
|
+
'<tr><td style="color:var(--green)">✓ Done</td><td>Role-Based Access Control</td><td style="color:var(--muted)">Rebecca — PR-4521 in review</td></tr>' +
|
|
124
|
+
'<tr><td style="color:var(--blue)">○ Active</td><td>API Rate Limiting</td><td style="color:var(--muted)">Dallas — working now</td></tr>' +
|
|
125
|
+
'<tr><td style="color:var(--blue)">○ Active</td><td>Session Management</td><td style="color:var(--muted)">Rebecca — working now</td></tr>' +
|
|
126
|
+
'<tr><td style="color:var(--muted)">○ Pending</td><td>Audit Logging</td><td style="color:var(--muted)">Blocked on RBAC</td></tr>' +
|
|
127
|
+
'</table>' +
|
|
128
|
+
'<p><strong>2/5 done, 2 active, 1 pending.</strong> On track for completion today.</p>' +
|
|
129
|
+
'</div>');
|
|
130
|
+
|
|
131
|
+
el.scrollTop = el.scrollHeight;
|
|
132
|
+
});
|
|
133
|
+
await page.waitForTimeout(500);
|
|
134
|
+
await page.screenshot({ path: path.join(DEMO_DIR, '10-command-center.png'), fullPage: false });
|
|
135
|
+
|
|
136
|
+
} finally {
|
|
137
|
+
await browser.close();
|
|
138
|
+
|
|
139
|
+
// Clean up demo data
|
|
140
|
+
console.log(' Cleaning demo data...');
|
|
141
|
+
execSync(`node "${path.join(ROOT, 'test', 'seed-demo-data.js')}" --clean`, { stdio: 'inherit' });
|
|
142
|
+
}
|
|
143
|
+
|
|
80
144
|
console.log('\n Done! Screenshots saved to docs/demo/');
|
|
81
145
|
}
|
|
82
146
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/docs/demo/09-engine.png
CHANGED
|
Binary file
|
|
Binary file
|
package/docs/index.html
CHANGED
|
@@ -225,8 +225,8 @@ minions init
|
|
|
225
225
|
<span class="comment"># Give your first task</span>
|
|
226
226
|
minions work "Explore the codebase and document the architecture"
|
|
227
227
|
|
|
228
|
-
<span class="comment"># Open dashboard</span>
|
|
229
|
-
|
|
228
|
+
<span class="comment"># Open dashboard at http://localhost:7331</span>
|
|
229
|
+
minions dash
|
|
230
230
|
|
|
231
231
|
<span class="comment"># Update to latest</span>
|
|
232
232
|
minions update</pre>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.240",
|
|
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"
|