@yemi33/minions 0.1.242 → 0.1.244

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 CHANGED
@@ -1,8 +1,9 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.242 (2026-04-03)
3
+ ## 0.1.244 (2026-04-03)
4
4
 
5
5
  ### Features
6
+ - minions uninstall --confirm — full removal command
6
7
  - capture-demos seeds mock data for richer screenshots
7
8
  - add capture-demos skill for regenerating GitHub Pages screenshots
8
9
 
package/bin/minions.js CHANGED
@@ -464,6 +464,7 @@ if (!cmd || cmd === 'help' || cmd === '--help' || cmd === '-h') {
464
464
  minions complete <dispatch-id> Manually mark a dispatch as completed
465
465
  minions cleanup Clean temp files, worktrees, zombies
466
466
  minions nuke --confirm Factory reset (delete state, reset config to defaults)
467
+ minions uninstall --confirm Remove everything + uninstall npm package
467
468
 
468
469
  Dashboard:
469
470
  minions dash Start web dashboard (default :7331)
@@ -624,6 +625,73 @@ if (!cmd || cmd === 'help' || cmd === '--help' || cmd === '-h') {
624
625
  try { execSync(`node "${path.join(MINIONS_HOME, 'minions.js')}" init --skip-scan`, { stdio: 'inherit' }); } catch {}
625
626
 
626
627
  console.log('\n Factory reset complete. Run "minions init" to link projects and start fresh.\n');
628
+ } else if (cmd === 'uninstall') {
629
+ if (!rest.includes('--confirm')) {
630
+ console.log(`
631
+ Uninstall Minions — removes EVERYTHING.
632
+
633
+ This will:
634
+ 1. Kill all running engine, dashboard, and agent processes
635
+ 2. Delete the entire ${MINIONS_HOME} directory (all state, config, agents, knowledge)
636
+ 3. Remove extracted skills from ~/.claude/skills/ (minions-authored only)
637
+ 4. Uninstall the npm package (@yemi33/minions)
638
+
639
+ This is irreversible. Your project repos are NOT affected.
640
+
641
+ Run: minions uninstall --confirm
642
+ `);
643
+ process.exit(0);
644
+ }
645
+
646
+ console.log('\n Uninstalling Minions...\n');
647
+
648
+ // 1. Kill all processes
649
+ try { execSync(`node "${path.join(MINIONS_HOME, 'engine.js')}" stop`, { stdio: 'ignore', cwd: MINIONS_HOME, timeout: 10000 }); } catch {}
650
+ try {
651
+ if (process.platform === 'win32') {
652
+ const out = execSync('wmic process where "name=\'node.exe\'" get processid,commandline /format:csv', { encoding: 'utf8', timeout: 10000, windowsHide: true });
653
+ for (const line of out.split('\n')) {
654
+ if (line.includes('minions') && (line.includes('engine.js') || line.includes('dashboard.js') || line.includes('spawn-agent.js'))) {
655
+ const pid = line.split(',').pop()?.trim();
656
+ if (pid && pid !== String(process.pid)) try { process.kill(parseInt(pid)); } catch {}
657
+ }
658
+ }
659
+ } else {
660
+ try { execSync('pkill -f "minions.*engine.js" 2>/dev/null', { timeout: 5000 }); } catch {}
661
+ try { execSync('pkill -f "minions.*dashboard.js" 2>/dev/null', { timeout: 5000 }); } catch {}
662
+ try { execSync('lsof -ti:7331 | xargs kill -9 2>/dev/null', { timeout: 5000 }); } catch {}
663
+ }
664
+ } catch {}
665
+ console.log(' Killed all processes');
666
+
667
+ // 2. Remove minions-authored skills from ~/.claude/skills/
668
+ try {
669
+ const claudeSkills = path.join(process.env.HOME || process.env.USERPROFILE || '', '.claude', 'skills');
670
+ if (fs.existsSync(claudeSkills)) {
671
+ for (const dir of fs.readdirSync(claudeSkills)) {
672
+ const skillFile = path.join(claudeSkills, dir, 'SKILL.md');
673
+ try {
674
+ const content = fs.readFileSync(skillFile, 'utf8');
675
+ if (content.includes('Auto-extracted skill') || content.includes('author:')) {
676
+ fs.rmSync(path.join(claudeSkills, dir), { recursive: true, force: true });
677
+ }
678
+ } catch {}
679
+ }
680
+ console.log(' Cleaned minions skills from ~/.claude/skills/');
681
+ }
682
+ } catch {}
683
+
684
+ // 3. Delete ~/.minions entirely
685
+ if (fs.existsSync(MINIONS_HOME)) {
686
+ fs.rmSync(MINIONS_HOME, { recursive: true, force: true });
687
+ console.log(' Deleted ' + MINIONS_HOME);
688
+ }
689
+
690
+ // 4. Uninstall npm package
691
+ console.log(' Uninstalling npm package...');
692
+ try { execSync('npm uninstall -g @yemi33/minions', { stdio: 'inherit', timeout: 60000 }); } catch {}
693
+
694
+ console.log('\n Minions uninstalled. Your project repos were not touched.\n');
627
695
  } else if (cmd === 'doctor') {
628
696
  ensureInstalled();
629
697
  const { doctor } = require(path.join(MINIONS_HOME, 'engine', 'preflight'));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yemi33/minions",
3
- "version": "0.1.242",
3
+ "version": "0.1.244",
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"