claude-flow
Version:
Enterprise-grade AI agent orchestration with ruv-swarm integration (Alpha Release)
77 lines (67 loc) • 3.43 kB
text/typescript
/**
* Hive Mind Initialization Command
*
* Initializes a new Hive Mind swarm with Queen coordination
* and collective intelligence capabilities.
*/
import { Command } from 'commander';
import chalk from 'chalk';
import ora from 'ora';
import { HiveMind } from '../../../hive-mind/core/HiveMind.js';
import { HiveMindConfig, SwarmTopology } from '../../../hive-mind/types.js';
import { DatabaseManager } from '../../../hive-mind/core/DatabaseManager.js';
import { formatSuccess, formatError, formatInfo } from '../../formatter.js';
export const initCommand = new Command('init')
.description('Initialize a new Hive Mind swarm')
.option('-t, --topology <type>', 'Swarm topology (mesh, hierarchical, ring, star)', 'hierarchical')
.option('-m, --max-agents <number>', 'Maximum agents in swarm', '8')
.option('-n, --name <string>', 'Swarm name', 'hive-mind-' + Date.now())
.option('-q, --queen-mode <mode>', 'Queen coordination mode (centralized, distributed)', 'centralized')
.option('--memory-ttl <seconds>', 'Default memory TTL in seconds', '86400')
.option('--consensus-threshold <percent>', 'Consensus threshold percentage', '0.66')
.option('--auto-spawn', 'Automatically spawn initial agents', false)
.action(async (options) => {
const spinner = ora('Initializing Hive Mind...').start();
try {
// Initialize database
const db = await DatabaseManager.getInstance();
await db.initialize();
// Create Hive Mind configuration
const config: HiveMindConfig = {
name: options.name,
topology: options.topology as SwarmTopology,
maxAgents: parseInt(options.maxAgents, 10),
queenMode: options.queenMode,
memoryTTL: parseInt(options.memoryTtl, 10),
consensusThreshold: parseFloat(options.consensusThreshold),
autoSpawn: options.autoSpawn,
createdAt: new Date(),
};
// Initialize Hive Mind
const hiveMind = new HiveMind(config);
const swarmId = await hiveMind.initialize();
spinner.succeed(formatSuccess('Hive Mind initialized successfully!'));
console.log('\n' + chalk.bold('🐝 Hive Mind Details:'));
console.log(formatInfo(`Swarm ID: ${swarmId}`));
console.log(formatInfo(`Name: ${config.name}`));
console.log(formatInfo(`Topology: ${config.topology}`));
console.log(formatInfo(`Queen Mode: ${config.queenMode}`));
console.log(formatInfo(`Max Agents: ${config.maxAgents}`));
console.log(formatInfo(`Consensus Threshold: ${config.consensusThreshold * 100}%`));
if (options.autoSpawn) {
console.log('\n' + chalk.bold('🚀 Auto-spawning initial agents...'));
await hiveMind.autoSpawnAgents();
console.log(formatSuccess('Initial agents spawned successfully!'));
}
console.log('\n' + chalk.bold('📝 Next Steps:'));
console.log(formatInfo('1. Spawn agents: ruv-swarm hive-mind spawn <type>'));
console.log(formatInfo('2. Submit task: ruv-swarm hive-mind task "Your task"'));
console.log(formatInfo('3. Check status: ruv-swarm hive-mind status'));
console.log(formatInfo('4. Interactive: ruv-swarm hive-mind wizard'));
} catch (error) {
spinner.fail(formatError('Failed to initialize Hive Mind'));
console.error(formatError((error as Error).message));
process.exit(1);
}
});