@yemi33/minions 0.1.237 → 0.1.239
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/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/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.1.
|
|
3
|
+
## 0.1.239 (2026-04-03)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
- capture-demos seeds mock data for richer screenshots
|
|
7
|
+
- add capture-demos skill for regenerating GitHub Pages screenshots
|
|
4
8
|
|
|
5
9
|
### Fixes
|
|
6
10
|
- CLI audit — kill dashboard on restart, expose kill/complete, update help
|
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yemi33/minions",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.239",
|
|
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"
|