@yemi33/minions 0.1.1882 → 0.1.1883

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.
@@ -179,6 +179,29 @@ async function _ccDashboardHealth() {
179
179
  }
180
180
  }
181
181
 
182
+ // Triggered by the CC "Restart Minions" recovery button when a stale dashboard
183
+ // connection is killing CC streams with "Failed to fetch". Spawns the same
184
+ // `minions restart` flow as the CLI command (kills + respawns engine AND
185
+ // dashboard). The browser auto-reloads via refresh.js when it sees the new
186
+ // dashboardStartedAt; if the POST itself fails (dashboard truly unreachable),
187
+ // fall back to a plain location.reload() so behavior is never worse than before.
188
+ async function ccRestartMinions(btn) {
189
+ if (btn) { try { btn.disabled = true; btn.textContent = 'Restarting...'; } catch {} }
190
+ try {
191
+ var res = await fetch('/api/dashboard/restart', { method: 'POST', headers: { 'Content-Type': 'application/json' } });
192
+ if (!res.ok) throw new Error('HTTP ' + res.status);
193
+ if (btn) { try { btn.textContent = 'Restarting Minions — page will reload...'; } catch {} }
194
+ // The dashboard process is about to be killed. refresh.js's status poll
195
+ // will detect the new dashboardStartedAt and call location.reload() once
196
+ // the new dashboard is online; this fallback handles the case where the
197
+ // poll hasn't fired (e.g., user closed the browser tab and reopened).
198
+ setTimeout(function() { try { location.reload(); } catch {} }, 8000);
199
+ } catch (e) {
200
+ if (btn) { try { btn.textContent = 'Restart failed — reloading...'; } catch {} }
201
+ setTimeout(function() { try { location.reload(); } catch {} }, 500);
202
+ }
203
+ }
204
+
182
205
  function _ccIsReconnectableStreamError(err) {
183
206
  if (!err) return false;
184
207
  var name = String(err.name || '').toLowerCase();
@@ -764,7 +787,7 @@ async function _ccDoSend(message, skipUserMsg, forceTabId, intentMetadata) {
764
787
  var retryId = retryRequest && retryRequest.id ? retryRequest.id : '';
765
788
  return (extraHtml || '') +
766
789
  '<button onclick="ccRetryLast(' + _ccJsArg(retryTabId) + ',' + _ccJsArg(retryId) + ')" style="margin-top:6px;padding:4px 12px;background:var(--surface2);border:1px solid var(--border);border-radius:4px;color:var(--blue);cursor:pointer;font-size:11px">Retry</button>' +
767
- (showReload ? ' <button onclick="location.reload()" style="margin-top:6px;padding:4px 12px;background:var(--orange);color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:11px">Reload Page</button>' : '') +
790
+ (showReload ? ' <button onclick="ccRestartMinions(this)" style="margin-top:6px;padding:4px 12px;background:var(--orange);color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:11px">Restart Minions</button>' : '') +
768
791
  ' <button onclick="ccNewTab()" style="margin-top:6px;padding:4px 12px;background:var(--surface2);border:1px solid var(--border);border-radius:4px;color:var(--muted);cursor:pointer;font-size:11px">New Session</button>';
769
792
  }
770
793
  // Start phase timer immediately so thinking text updates while waiting for SSE
@@ -913,7 +936,7 @@ async function _ccDoSend(message, skipUserMsg, forceTabId, intentMetadata) {
913
936
  if (!reconnectHealth.reachable || reconnectHealth.restarted) {
914
937
  _cleanupStreamDiv();
915
938
  var reconnectHint = reconnectHealth.restarted
916
- ? '<div style="font-size:10px;color:var(--muted);margin-top:4px">Dashboard restarted while this response was streaming. Reload the page to reconnect to the new instance.</div>'
939
+ ? '<div style="font-size:10px;color:var(--muted);margin-top:4px">Dashboard restarted while this response was streaming. Restart Minions to reconnect to the new instance.</div>'
917
940
  : '<div style="font-size:10px;color:var(--muted);margin-top:4px">The request stream was interrupted, but the dashboard is still reachable. Retry or start a new session.</div>';
918
941
  var reconnectRetry = _ccStoreRetryRequest(activeTab, activeTabId, message);
919
942
  addMsg('assistant', (streamedText ? renderMd(streamedText) + _ccElapsedFooter('Stream interrupted after {seconds}s') : '') +
@@ -943,10 +966,10 @@ async function _ccDoSend(message, skipUserMsg, forceTabId, intentMetadata) {
943
966
  var connectionHint = '';
944
967
  if (isNetworkError) {
945
968
  connectionHint = dashboardHealth.restarted
946
- ? '<div style="font-size:10px;color:var(--muted);margin-top:4px">Dashboard restarted while this response was streaming. Reload the page to reconnect to the new instance.</div>'
969
+ ? '<div style="font-size:10px;color:var(--muted);margin-top:4px">Dashboard restarted while this response was streaming. Restart Minions to reconnect to the new instance.</div>'
947
970
  : dashboardHealth.reachable
948
971
  ? '<div style="font-size:10px;color:var(--muted);margin-top:4px">The request stream was interrupted, but the dashboard is still reachable. Retry or start a new session.</div>'
949
- : '<div style="font-size:10px;color:var(--muted);margin-top:4px">Dashboard connection lost. Reload the page to reconnect.</div>';
972
+ : '<div style="font-size:10px;color:var(--muted);margin-top:4px">Dashboard connection lost. Restart Minions to reconnect.</div>';
950
973
  }
951
974
  var errorRetry = _ccStoreRetryRequest(activeTab, activeTabId, message);
952
975
  addMsg('assistant', (streamedText ? renderMd(streamedText) + _ccElapsedFooter('Stream interrupted after {seconds}s') : '') +
package/dashboard.js CHANGED
@@ -6428,6 +6428,27 @@ What would you like to discuss or change? When you're happy, say "approve" and I
6428
6428
  } catch (e) { return jsonReply(res, e.statusCode || 500, { error: e.message }); }
6429
6429
  }
6430
6430
 
6431
+ // Spawns `node bin/minions.js restart` detached so it kills + respawns BOTH
6432
+ // engine and dashboard. Used by the CC "Restart Minions" recovery button when
6433
+ // a stale dashboard connection has CC streams failing with "Failed to fetch".
6434
+ // The reply returns immediately — the new dashboard will be online seconds
6435
+ // later and the browser's refresh poll auto-reloads on dashboardStartedAt change.
6436
+ async function handleDashboardRestart(req, res) {
6437
+ try {
6438
+ const { spawn: cpSpawn } = require('child_process');
6439
+ const minionsBin = path.join(MINIONS_DIR, 'bin', 'minions.js');
6440
+ const childEnv = { ...process.env };
6441
+ for (const key of Object.keys(childEnv)) {
6442
+ if (key === 'CLAUDECODE' || key.startsWith('CLAUDE_CODE') || key.startsWith('CLAUDECODE_')) delete childEnv[key];
6443
+ }
6444
+ const proc = cpSpawn(process.execPath, [minionsBin, 'restart'], {
6445
+ cwd: MINIONS_DIR, stdio: 'ignore', detached: true, env: childEnv, windowsHide: true,
6446
+ });
6447
+ proc.unref();
6448
+ return jsonReply(res, 200, { ok: true, pid: proc.pid });
6449
+ } catch (e) { return jsonReply(res, e.statusCode || 500, { error: e.message }); }
6450
+ }
6451
+
6431
6452
  function settingsClaudeConfig(config) {
6432
6453
  const claude = { ...shared.DEFAULT_CLAUDE, ...(config.claude || {}) };
6433
6454
  delete claude.permissionMode;
@@ -7606,6 +7627,7 @@ What would you like to discuss or change? When you're happy, say "approve" and I
7606
7627
  return jsonReply(res, 200, { ok: true, message: 'Wakeup signal sent' });
7607
7628
  }},
7608
7629
  { method: 'POST', path: '/api/engine/restart', desc: 'Force-kill engine and restart immediately', handler: handleEngineRestart },
7630
+ { method: 'POST', path: '/api/dashboard/restart', desc: 'Run `minions restart` to kill+respawn engine AND dashboard (detached)', handler: handleDashboardRestart },
7609
7631
 
7610
7632
  // Runtimes (CLI fleet) — model discovery + capability surface
7611
7633
  { method: 'GET', path: '/api/runtimes', desc: 'List registered CLI runtimes and their capability flags', handler: (req, res) => {
package/docs/index.html CHANGED
@@ -3,8 +3,8 @@
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Minions Multi-Agent AI Dev Team</title>
7
- <meta name="description" content="5 autonomous AI agents, one engine, one dashboard. Minions orchestrates Claude-powered agents to plan, implement, review, and ship code autonomously.">
6
+ <title>Minions &mdash; Multi-Agent AI Dev Team</title>
7
+ <meta name="description" content="Five autonomous coding agents, one engine, and one dashboard. Minions orchestrates Claude or GitHub Copilot agents to plan, implement, review, verify, and ship code.">
8
8
  <style>
9
9
  :root { --bg: #0d1117; --surface: #161b22; --border: #30363d; --text: #c9d1d9; --muted: #8b949e; --blue: #58a6ff; --green: #3fb950; --yellow: #d29922; --red: #f85149; --purple: #bc8cff; }
10
10
  * { margin: 0; padding: 0; box-sizing: border-box; }
@@ -83,15 +83,15 @@
83
83
  <!-- Hero -->
84
84
  <div class="hero">
85
85
  <h1>Minions <span>Mission Control</span></h1>
86
- <p class="tagline">5 autonomous AI agents, one engine, one dashboard. Plan, implement, review, and ship code &mdash; hands-free.</p>
86
+ <p class="tagline">Five autonomous coding agents, one engine, one dashboard. Plan, implement, review, verify, and ship code with human control at every gate.</p>
87
87
  <div class="hero-badges">
88
- <span class="hero-badge green">Zero Dependencies</span>
89
- <span class="hero-badge blue">Claude-Powered</span>
88
+ <span class="hero-badge green">Node.js 18+</span>
89
+ <span class="hero-badge blue">Claude or Copilot</span>
90
90
  <span class="hero-badge yellow">Multi-Project</span>
91
- <span class="hero-badge purple">Self-Improving</span>
91
+ <span class="hero-badge purple">Dashboard + CLI</span>
92
92
  </div>
93
93
  <div class="cta">
94
- <a href="https://github.com/yemi33/minions" class="cta-primary">View on GitHub</a>
94
+ <a href="https://www.npmjs.com/package/@yemi33/minions" class="cta-primary">Install from npm</a>
95
95
  <a href="#quickstart" class="cta-secondary">Quick Start</a>
96
96
  </div>
97
97
  </div>
@@ -108,24 +108,25 @@
108
108
  <!-- Features -->
109
109
  <div class="container">
110
110
  <div class="features">
111
- <div class="feature"><h3>Autonomous Dispatch</h3><p>Engine discovers work from plans, PRs, pipelines, and queues &mdash; routes to the right agent based on skills and availability.</p></div>
112
- <div class="feature"><h3>Plan Lifecycle</h3><p>Plan &rarr; Approve &rarr; PRD &rarr; Execute &rarr; Review &rarr; Verify. Human-in-the-loop at every gate.</p></div>
111
+ <div class="feature"><h3>Autonomous Dispatch</h3><p>Engine discovers work from plans, PRs, schedules, pipelines, and queues &mdash; then routes to the right agent by role, skill, and availability.</p></div>
112
+ <div class="feature"><h3>Plan Lifecycle</h3><p>Plan &rarr; Approve &rarr; PRD &rarr; Execute &rarr; Review &rarr; Verify. Completed plans stay available until you manually archive them.</p></div>
113
113
  <div class="feature"><h3>Team Meetings</h3><p>Multi-agent meetings with investigate, debate, and conclude rounds. Agents research, discuss, and produce actionable conclusions.</p></div>
114
114
  <div class="feature"><h3>Multi-Stage Pipelines</h3><p>Chain tasks, meetings, plans, and more into automated workflows. Cron triggers or manual. Artifacts flow between stages.</p></div>
115
- <div class="feature"><h3>Eval Loop</h3><p>After implementation, auto-dispatches review &rarr; fix cycles. Configurable iterations and cost ceiling per work item.</p></div>
115
+ <div class="feature"><h3>Review / Fix Loop</h3><p>After implementation, Minions can dispatch reviews, react to human PR comments, and send fixes back to the original author agent.</p></div>
116
116
  <div class="feature"><h3>Git Worktree Isolation</h3><p>Each agent works in its own worktree. No conflicts, no cross-contamination, safe parallel execution.</p></div>
117
- <div class="feature"><h3>Knowledge Consolidation</h3><p>Agent findings auto-consolidate into team notes and a searchable knowledge base. The team learns as it works.</p></div>
118
- <div class="feature"><h3>PR Integration</h3><p>Auto-syncs PRs from Azure DevOps and GitHub. Detects review feedback, build failures, and human comments.</p></div>
119
- <div class="feature"><h3>Scheduled Tasks</h3><p>Cron-style recurring work: nightly tests, weekly audits, daily standups. Visual cron builder in the dashboard.</p></div>
120
- <div class="feature"><h3>Command Center</h3><p>Natural language interface for delegating work to agents. CC orchestrates &mdash; agents implement.</p></div>
121
- <div class="feature"><h3>Live Dashboard</h3><p>Real-time mission control on port 7331. Paginated views, optimistic updates, and visibility-aware polling.</p></div>
122
- <div class="feature"><h3>One-Command Updates</h3><p><code>minions update</code> pulls latest from npm and applies. Config and charters preserved automatically.</p></div>
117
+ <div class="feature"><h3>Knowledge Consolidation</h3><p>Agent findings, quick notes, pinned notes, and feedback consolidate into team notes and a categorized knowledge base.</p></div>
118
+ <div class="feature"><h3>PR Integration</h3><p>Tracks Azure DevOps and GitHub PRs, including review votes, build status, merge status, human comments, and context-only links.</p></div>
119
+ <div class="feature"><h3>Scheduled Tasks &amp; Watches</h3><p>Cron-style recurring work plus watches for PRs, work items, dispatches, meetings, pipelines, agents, and status changes.</p></div>
120
+ <div class="feature"><h3>Command Center &amp; Doc Chat</h3><p>Natural language orchestration, persistent CC tabs, document Q&amp;A/editing, issue filing, routing updates, and local API actions.</p></div>
121
+ <div class="feature"><h3>Pluggable Runtimes</h3><p>Run agents through Claude Code or GitHub Copilot CLI, with runtime-specific models, effort, session resume, and permission handling.</p></div>
122
+ <div class="feature"><h3>Live Dashboard</h3><p>Real-time mission control on port 7331 with paginated views, optimistic updates, live streams, metrics, and settings.</p></div>
123
+ <div class="feature"><h3>One-Command Updates</h3><p><code>minions update</code> pulls the latest npm package, reapplies files, and restarts while preserving config and customizations.</p></div>
123
124
  </div>
124
125
 
125
126
  <!-- Demo scenarios -->
126
127
  <div class="scenario">
127
128
  <div class="scenario-header"><div class="scenario-num">1</div><h2>Dashboard Overview</h2></div>
128
- <p>Home page with agent status cards, project bar, and setup guidance. All agents visible at a glance.</p>
129
+ <p>Home page with agent status cards, project bar, setup guidance, and engine state. All agents visible at a glance.</p>
129
130
  <div class="demo-frame">
130
131
  <img src="demo/01-dashboard-overview.png" alt="Dashboard overview with agent cards">
131
132
  <div class="demo-caption">Home page showing Minions Members, project bar, and engine status badge</div>
@@ -134,7 +135,7 @@
134
135
 
135
136
  <div class="scenario">
136
137
  <div class="scenario-header"><div class="scenario-num">2</div><h2>Work Items</h2></div>
137
- <p>Paginated table with status, type, priority, agent, and linked PRs. <span class="badge badge-yellow">PENDING</span> <span class="badge badge-blue">DISPATCHED</span> <span class="badge badge-green">DONE</span> <span class="badge badge-red">FAILED</span>. Retry, delete, and archive with optimistic updates.</p>
138
+ <p>Paginated table with status, type, priority, agent, dependencies, artifacts, and linked PRs. <span class="badge badge-yellow">PENDING</span> <span class="badge badge-blue">DISPATCHED</span> <span class="badge badge-green">DONE</span> <span class="badge badge-red">FAILED</span>. Retry, delete, archive, and add feedback with optimistic updates.</p>
138
139
  <div class="demo-frame">
139
140
  <img src="demo/02-work-items.png" alt="Work items table">
140
141
  <div class="demo-caption">Work items page &mdash; 20 per page with create, edit, retry, and delete actions</div>
@@ -143,7 +144,7 @@
143
144
 
144
145
  <div class="scenario">
145
146
  <div class="scenario-header"><div class="scenario-num">3</div><h2>Plans &amp; PRD</h2></div>
146
- <p>Plan cards with Approve / Discuss &amp; Revise / Reject. PRD dependency graph with per-item retry. Archive completed plans.</p>
147
+ <p>Plan cards with Approve / Discuss &amp; Revise / Reject. PRD dependency graph with per-item retry, reopening, verification, and manual archive.</p>
147
148
  <div class="demo-frame">
148
149
  <img src="demo/03-plans-prd.png" alt="Plans and PRD progress">
149
150
  <div class="demo-caption">Plans page with status-colored cards, PRD dependency graph, and action buttons</div>
@@ -152,7 +153,7 @@
152
153
 
153
154
  <div class="scenario">
154
155
  <div class="scenario-header"><div class="scenario-num">4</div><h2>Pull Requests</h2></div>
155
- <p>PR tracker sorted by date, with review, build, and merge status. Linked to work items and PRD items. Manual PR linking supported.</p>
156
+ <p>PR tracker sorted by date, with review, build, merge, conflict, and human-comment status. Linked to work items and PRD items. Manual PR linking and context-only observation supported.</p>
156
157
  <div class="demo-frame">
157
158
  <img src="demo/04-pull-requests.png" alt="Pull requests tracker">
158
159
  <div class="demo-caption">PRs sorted newest-first with build status, review status, and agent attribution</div>
@@ -170,7 +171,7 @@
170
171
 
171
172
  <div class="scenario">
172
173
  <div class="scenario-header"><div class="scenario-num">6</div><h2>Pipelines</h2></div>
173
- <p>Multi-stage workflows chaining tasks, meetings, plans, and more. Cron triggers or manual. Artifact tracking between stages.</p>
174
+ <p>Multi-stage workflows chaining tasks, meetings, plans, tests, docs, and more. Cron triggers or manual runs. Artifact tracking between stages.</p>
174
175
  <div class="demo-frame">
175
176
  <img src="demo/06-pipelines.png" alt="Pipelines page">
176
177
  <div class="demo-caption">Pipeline cards with stage flow visualization, run history, and progress bars</div>
@@ -179,7 +180,7 @@
179
180
 
180
181
  <div class="scenario">
181
182
  <div class="scenario-header"><div class="scenario-num">7</div><h2>Notes &amp; Knowledge Base</h2></div>
182
- <p>Inbox for agent findings, consolidated team notes, and categorized knowledge base. Inline Q&amp;A on any document.</p>
183
+ <p>Inbox for agent findings, quick notes, pinned notes, consolidated team notes, and categorized knowledge base. Inline Q&amp;A/editing on documents.</p>
183
184
  <div class="demo-frame">
184
185
  <img src="demo/07-notes-kb.png" alt="Notes and knowledge base">
185
186
  <div class="demo-caption">Notes inbox, team notes, and knowledge base with category tabs and pagination</div>
@@ -188,7 +189,7 @@
188
189
 
189
190
  <div class="scenario">
190
191
  <div class="scenario-header"><div class="scenario-num">8</div><h2>Scheduled Tasks</h2></div>
191
- <p>Cron-style recurring work with visual builder. Natural language parsing &mdash; type "every weekday at 9am" and it generates the cron.</p>
192
+ <p>Cron-style recurring work with a visual builder. Schedule work items, tests, docs, plans, asks, meetings, and recurring maintenance.</p>
192
193
  <div class="demo-frame">
193
194
  <img src="demo/08-schedules.png" alt="Schedules page">
194
195
  <div class="demo-caption">Schedule list with cron expressions, last-run times, and enable/disable toggles</div>
@@ -197,7 +198,7 @@
197
198
 
198
199
  <div class="scenario">
199
200
  <div class="scenario-header"><div class="scenario-num">9</div><h2>Engine &amp; Metrics</h2></div>
200
- <p>Dispatch queue, engine log, agent metrics, token usage, and context pressure. All paginated.</p>
201
+ <p>Dispatch queue, engine log, agent metrics, token usage, runtime/model data, quality signals, and context pressure. All paginated.</p>
201
202
  <div class="demo-frame">
202
203
  <img src="demo/09-engine.png" alt="Engine page">
203
204
  <div class="demo-caption">Active/pending dispatches, completed history, engine log, and per-agent quality metrics</div>
@@ -206,7 +207,7 @@
206
207
 
207
208
  <div class="scenario">
208
209
  <div class="scenario-header"><div class="scenario-num">10</div><h2>Command Center</h2></div>
209
- <p>Natural language delegation. CC orchestrates &mdash; agents implement. Session persists across refreshes. Actions auto-execute.</p>
210
+ <p>Natural language delegation. CC orchestrates &mdash; agents implement. Sessions persist across refreshes and tabs; actions can create work, notes, plans, watches, PR links, and issues.</p>
210
211
  <div class="demo-frame">
211
212
  <img src="demo/10-command-center.png" alt="Command Center panel">
212
213
  <div class="demo-caption">Command Center side panel with conversation history, action execution, and session indicator</div>
@@ -216,17 +217,27 @@
216
217
  <!-- Quick Start -->
217
218
  <div class="quickstart" id="quickstart">
218
219
  <h2>Quick Start</h2>
219
- <pre><span class="comment"># Install</span>
220
+ <pre><span class="comment"># Prerequisites: Node.js 18+, Git, and at least one agent runtime</span>
221
+ <span class="comment"># Install Claude Code or GitHub Copilot CLI separately, then install Minions</span>
220
222
  npm install -g @yemi33/minions
221
223
 
222
- <span class="comment"># Initialize &mdash; prompts for project locations, starts engine + dashboard</span>
224
+ <span class="comment"># Bootstrap ~/.minions/ and scan/link repositories</span>
223
225
  minions init
224
226
 
227
+ <span class="comment"># Or add a specific project later</span>
228
+ minions add ~/my-project
229
+
230
+ <span class="comment"># Start engine + dashboard, then open http://localhost:7331</span>
231
+ minions restart --open
232
+ minions dash
233
+
225
234
  <span class="comment"># Give your first task</span>
226
235
  minions work "Explore the codebase and document the architecture"
227
236
 
228
- <span class="comment"># Open dashboard at http://localhost:7331</span>
229
- minions dash
237
+ <span class="comment"># Useful operations</span>
238
+ minions status
239
+ minions doctor
240
+ minions config set-cli copilot --model gpt-5.4
230
241
 
231
242
  <span class="comment"># Update to latest</span>
232
243
  minions update</pre>
@@ -241,7 +252,7 @@ minions update</pre>
241
252
  │ │
242
253
  │ engine.js ──── 60s tick loop ────┐ │
243
254
  │ │ │ │
244
- │ discover work spawn agents poll PRs
255
+ │ discover work spawn agents poll PRs/comments
245
256
  │ │ │ │ │
246
257
  │ ┌───┴───┐ ┌──────┴──────┐ ┌──┴───┐ │
247
258
  │ │ Plans │ │ Worktrees │ │ ADO │ │
@@ -250,10 +261,11 @@ minions update</pre>
250
261
  │ └───────┘ └─────────────┘ └──────┘ │
251
262
  │ │
252
263
  │ dashboard.js ── port 7331 ── mission control │
264
+ │ runtimes/ ── Claude Code or GitHub Copilot CLI │
253
265
  │ meetings/ ── multi-agent discussions │
254
266
  │ pipelines/ ── multi-stage workflows │
255
- notes.md ── consolidated team knowledge
256
- │ knowledge/ ── searchable KB by category
267
+ schedules + watches ── recurring/conditional work
268
+ notes.md + knowledge/ ── team memory and KB
257
269
  └─────────────────────────────────────────────────────┘
258
270
  </pre>
259
271
  </div>
@@ -261,7 +273,7 @@ minions update</pre>
261
273
  </div>
262
274
 
263
275
  <footer>
264
- <p>Minions &mdash; <a href="https://github.com/yemi33/minions">GitHub</a> &mdash; <a href="https://www.npmjs.com/package/@yemi33/minions">npm</a> &mdash; MIT License &mdash; Zero dependencies, powered by Claude</p>
276
+ <p>Minions &mdash; <a href="https://www.npmjs.com/package/@yemi33/minions">npm</a> &mdash; <a href="https://yemi33.github.io/minions/">Public site</a> &mdash; MIT License &mdash; Claude Code or GitHub Copilot CLI runtime</p>
265
277
  </footer>
266
278
 
267
279
  </body>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.1882",
3
+ "version": "0.1.1883",
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"