UNPKG

mirror-magi-meta-agent

Version:

AI-powered development planning and execution system with Supabase integration

154 lines (127 loc) • 4.23 kB
#!/usr/bin/env node const fs = require('fs').promises; const path = require('path'); const { spawn } = require('child_process'); const commands = { 'init': initProject, 'setup': setupProject, 'test': testAgent, 'validate': validateConfig, 'customize': customizeProject, 'help': showHelp }; async function main() { const command = process.argv[2] || 'help'; if (commands[command]) { await commands[command](); } else { console.log(`Unknown command: ${command}`); showHelp(); } } async function initProject() { console.log('šŸš€ Initializing Mirror Magi Meta-Agent in current project...\n'); const targetDir = process.cwd(); const sourceDir = __dirname + '/..'; // Create meta-agent directory const metaAgentDir = path.join(targetDir, 'meta-agent'); try { await fs.mkdir(metaAgentDir, { recursive: true }); // Copy essential files const filesToCopy = [ 'config', 'core', 'scripts', 'state', 'test-agent.js', 'package.json', 'README.md', 'GETTING_STARTED.md' ]; for (const file of filesToCopy) { await copyRecursive( path.join(sourceDir, file), path.join(metaAgentDir, file) ); } console.log('āœ… Meta-agent files copied to ./meta-agent/'); console.log('šŸ“‹ Next steps:'); console.log(' cd meta-agent'); console.log(' npm install'); console.log(' npm run setup'); console.log(' npm test'); } catch (error) { console.error('āŒ Error initializing project:', error.message); process.exit(1); } } async function setupProject() { const setupScript = path.join(__dirname, '..', 'scripts', 'setup.js'); runScript(setupScript); } async function testAgent() { const testScript = path.join(__dirname, '..', 'test-agent.js'); runScript(testScript); } async function validateConfig() { const validateScript = path.join(__dirname, '..', 'scripts', 'validate-config.js'); runScript(validateScript); } async function customizeProject() { console.log('šŸŽÆ Mirror Magi Meta-Agent Project Customization\n'); console.log('šŸ“š Available Documentation:'); console.log(' CUSTOMIZATION_GUIDE.md - Comprehensive 10-question setup guide'); console.log(' CORE_SCRIPTS.md - Complete reference for all entry points and scripts'); console.log(' GETTING_STARTED.md - Installation and setup instructions'); console.log('\n🌐 Online Resources:'); console.log(' https://github.com/franklindickinson/mirror-magi/blob/main/meta-agent/CUSTOMIZATION_GUIDE.md'); console.log(' https://github.com/franklindickinson/mirror-magi/blob/main/meta-agent/CORE_SCRIPTS.md'); console.log('\nšŸ’» Interactive Setup:'); console.log(' cd meta-agent && node scripts/customize.js'); } function showHelp() { console.log(` šŸ¤– Mirror Magi Meta-Agent CLI Usage: mirror-magi <command> Commands: init Initialize meta-agent in current project setup Set up configuration files from templates test Test the meta-agent with sample tasks validate Validate configuration files customize Get customization guidance and documentation links help Show this help message Examples: mirror-magi init # Add to existing project mirror-magi setup # Configure for your project mirror-magi test # Test the configuration šŸ“š Documentation: CORE_SCRIPTS.md # Complete scripts and entry points reference CUSTOMIZATION_GUIDE.md # 10-question setup guide GETTING_STARTED.md # Installation and setup guide `); } function runScript(scriptPath) { const child = spawn('node', [scriptPath], { stdio: 'inherit', cwd: process.cwd() }); child.on('exit', (code) => { process.exit(code); }); } async function copyRecursive(src, dest) { const stat = await fs.stat(src); if (stat.isDirectory()) { await fs.mkdir(dest, { recursive: true }); const files = await fs.readdir(src); for (const file of files) { await copyRecursive( path.join(src, file), path.join(dest, file) ); } } else { await fs.copyFile(src, dest); } } main().catch(console.error);