UNPKG

@synet/shell-exec

Version:

Safe shell command execution with Unit Architecture - foundation component for MetaDev

212 lines (171 loc) โ€ข 8.1 kB
#!/usr/bin/env tsx /** * @synet/shell-exec Demo - Foundation Unit for MetaDev * * This demo shows how ShellExecUnit provides safe, monitored shell command * execution with consciousness-based architecture. * * Key Demonstrations: * 1. Basic command execution with output capture * 2. Command validation and safety features * 3. Teaching contract for capability sharing * 4. Real-time process monitoring * 5. MetaDev integration patterns */ import { ShellExecUnit } from '../src/index.js'; async function runShellExecDemo() { console.log('๐Ÿš€ SYNET Shell Exec Unit Demo'); console.log('=====================================\n'); // Create shell execution unit with consciousness const shellExec = ShellExecUnit.create({ defaultTimeout: 10000, maxConcurrent: 3 }); console.log('๐Ÿง  Unit Consciousness:'); console.log(shellExec.whoami()); console.log(''); // Show capabilities console.log('โšก Available Capabilities:'); const capabilities = shellExec.getCapabilities(); capabilities.forEach(cap => console.log(` โ€ข ${cap}`)); console.log(''); try { // Demonstrate basic command execution console.log('๐Ÿ“ Test 1: Basic Command Execution'); console.log('Command: echo "Hello from SYNET!"'); const echoResult = await shellExec.execute('exec', 'echo "Hello from SYNET!"'); console.log('โœ… Result:', echoResult); console.log(''); // Demonstrate command validation console.log('๐Ÿ›ก๏ธ Test 2: Command Validation'); console.log('Validating safe command: npm --version'); const validation1 = await shellExec.execute('validate', 'npm --version'); console.log('โœ… Safe command validation:', validation1); console.log('Validating dangerous command: rm -rf packages/shell-exec/node_modules'); const validation2 = await shellExec.execute('validate', 'rm -rf /'); console.log('๐Ÿšซ Dangerous command validation:', validation2); console.log(''); // Demonstrate real command execution console.log('โš™๏ธ Test 3: Real Development Commands'); console.log('Command: npm --version'); const npmResult = await shellExec.execute('exec', 'npm --version'); console.log('โœ… npm version:', npmResult.stdout); console.log(`โฑ๏ธ Execution time: ${npmResult.duration}ms`); console.log(''); // Show execution history console.log('๐Ÿ“Š Test 4: Execution History'); const history = await shellExec.execute('getHistory'); console.log(`๐Ÿ“ˆ Total commands executed: ${history.length}`); history.forEach((cmd, i) => { console.log(` ${i + 1}. ${cmd.command} (${cmd.duration}ms, exit: ${cmd.exitCode})`); }); console.log(''); // Demonstrate teaching capabilities console.log('๐ŸŽ“ Test 5: Teaching Contract'); const teaching = shellExec.teach(); console.log(`๐Ÿ”— Unit ID: ${teaching.unitId}`); console.log(`๐Ÿ“š Available capabilities: ${teaching.capabilities.list().join(', ')}`); console.log(`๐Ÿ—‚๏ธ Schema tools: ${teaching.schema.list().join(', ')}`); console.log(''); // Show help system console.log('๐Ÿ“– Test 6: Built-in Help'); shellExec.help(); console.log('๐ŸŽฏ MetaDev Integration Example:'); console.log(''); console.log('```typescript'); console.log('// Other units can learn shell execution capabilities'); console.log('const codeGen = CodeGenUnit.create();'); console.log('codeGen.learn([shellExec.teach()]);'); console.log(''); console.log('// Now CodeGen can compile the code it generates'); console.log('const generatedCode = await codeGen.generateUnit(spec);'); console.log('const compileResult = await codeGen.execute("shell-exec.exec", "tsc generated-unit.ts");'); console.log('```'); console.log(''); console.log('โœ… Demo completed successfully!'); console.log('๐Ÿš€ ShellExecUnit is ready for MetaDev integration'); } catch (error) { console.error('โŒ Demo failed:', error.message); process.exit(1); } } // Self-executing demo if (import.meta.url === `file://${process.argv[1]}`) { runShellExecDemo() .then(() => process.exit(0)) .catch((error) => { console.error('Fatal error:', error); process.exit(1); }); } export { runShellExecDemo }; }, onExit: (code) => { console.log(`\n๐Ÿ Stream completed with exit code: ${code}`); } }); console.log(`โœ… Streaming completed: ${streamResult.duration}ms, ${outputLines} output events`); } catch (error) { console.error('โŒ Streaming failed:', error); } // Demo 5: Consciousness features console.log(`\n${'='.repeat(60)}`); console.log('๐Ÿง  DEMO 5: Consciousness Analysis'); console.log('='.repeat(60)); console.log('\n๐Ÿง  Analyzing execution patterns...'); const patterns = shellExec.analyzePatterns(); console.log(`๐Ÿ“Š Total executions: ${patterns.totalExecutions}`); console.log(`โœ… Success rate: ${(patterns.successRate * 100).toFixed(1)}%`); console.log(`โฑ๏ธ Average duration: ${patterns.averageDuration.toFixed(1)}ms`); console.log(`๐Ÿ”ฅ Most used commands: ${patterns.mostUsedCommands.join(', ')}`); if (patterns.recentFailures.length > 0) { console.log(`โŒ Recent failures: ${patterns.recentFailures.length}`); for (const failure of patterns.recentFailures.slice(0, 3)) { console.log(` - ${failure.command} (exit ${failure.exitCode})`); } } // Demo 6: Teaching capabilities console.log(`\n${'='.repeat(60)}`); console.log('๐ŸŽ“ DEMO 6: Teaching Contract'); console.log('='.repeat(60)); const teachingContract = shellExec.getTeachingContract(); console.log('\n๐Ÿ“š Teaching Contract for Other Units:'); console.log(`๐Ÿ†” Unit ID: ${teachingContract.unitId}`); console.log(`๐ŸŽฏ Capabilities: ${teachingContract.capabilities.join(', ')}`); console.log(`๐Ÿ“‹ Description: ${teachingContract.description}`); console.log('\nโœจ In full Unit Architecture, other units could learn:'); console.log(' const learner = SomeUnit.create();'); console.log(' learner.learn([shellExec.teach()]);'); console.log(' learner.execute("shell-exec.exec", "npm test"); // Now possible!'); // Demo 7: MetaDev integration preview console.log(`\n${'='.repeat(60)}`); console.log('๐Ÿš€ DEMO 7: MetaDev Integration Preview'); console.log('='.repeat(60)); console.log('\n๐Ÿ”ฎ How this enables MetaDev capabilities:'); console.log('\n1. ๐Ÿ—๏ธ Code Generation + Build:'); console.log(' generateCode() โ†’ writeFile() โ†’ shellExec.exec("tsc") โ†’ validateOutput()'); console.log('\n2. ๐Ÿงช Automated Testing:'); console.log(' generateTests() โ†’ shellExec.exec("npm test") โ†’ parseResults() โ†’ learnFromFailures()'); console.log('\n3. ๐Ÿ“ฆ Package Management:'); console.log(' shellExec.exec("npm init") โ†’ generatePackageJson() โ†’ shellExec.exec("npm publish")'); console.log('\n4. ๐Ÿ”„ Self-Improvement:'); console.log(' analyzeFailures() โ†’ generateFixes() โ†’ shellExec.exec("npm test") โ†’ measureImprovement()'); console.log('\n๐ŸŽฏ Next Steps:'); console.log('================'); console.log('โœ… ShellExec Unit: Foundation component complete'); console.log('๐Ÿšง CodeGen Unit: Generate TypeScript code from specs'); console.log('๐Ÿšง ProjectTemplate Unit: Scaffold project structures'); console.log('๐Ÿšง DevWorkflow Unit: Orchestrate build/test/deploy'); console.log('๐Ÿšง MetaDev Unit: AI-driven development with self-improvement'); console.log(''); console.log('๐ŸŒŸ Each component builds on the consciousness foundation of ShellExec'); console.log('๐Ÿ”— Components compose through teaching/learning contracts'); console.log('๐Ÿง  The result: Self-building AI that improves through experience'); console.log('\n๐ŸŽ‰ ShellExec Demo Complete!'); console.log('This consciousness-enabled command executor is ready to be the foundation for MetaDev.'); } // Execute demo if this file is run directly if (require.main === module) { runShellExecDemo().catch(console.error); } export { runShellExecDemo };