const { Command } = require('commander');
const chalk = require('chalk');
const figlet = require('figlet');
const ora = require('ora');
const boxen = require('boxen');
const inquirer = require('inquirer');
const { table } = require('table');
const path = require('path');
const fs = require('fs');
const { spawn } = require('child_process');
const StrangeLoop = require('../lib/strange-loop');
const program = new Command();
program
.name('strange-loop')
.description('A framework where thousands of tiny agents collaborate in real-time, each operating within nanosecond budgets, forming emergent intelligence through temporal consciousness and quantum-classical hybrid computing')
.version('0.1.0');
function showHeader() {
console.log(
chalk.cyan(
figlet.textSync('Strange Loop', {
font: 'ANSI Shadow',
horizontalLayout: 'default',
verticalLayout: 'default'
})
)
);
console.log(
boxen(
chalk.white('🌀 Emergent Intelligence Through Temporal Consciousness\n') +
chalk.gray('Thousands of nano-agents • Nanosecond budgets • Quantum-classical hybrid computing'),
{
padding: 1,
margin: 1,
borderStyle: 'round',
borderColor: 'cyan',
backgroundColor: 'black'
}
)
);
}
program
.command('demo')
.description('Run interactive demos of Strange Loop capabilities')
.argument('[type]', 'Demo type: nano-agents, quantum, consciousness, prediction, all')
.action(async (type) => {
showHeader();
if (!type) {
const { demoType } = await inquirer.prompt([
{
type: 'list',
name: 'demoType',
message: 'Choose a demo to run:',
choices: [
{ name: '🔧 Nano-Agent Swarm (1000+ agents)', value: 'nano-agents' },
{ name: '🌀 Quantum-Classical Computing', value: 'quantum' },
{ name: '🧠 Temporal Consciousness', value: 'consciousness' },
{ name: '⏰ Temporal Lead Prediction', value: 'prediction' },
{ name: '🚀 All Demos', value: 'all' }
]
}
]);
type = demoType;
}
await runDemo(type);
});
program
.command('benchmark')
.description('Run performance benchmarks')
.option('-a, --agents <number>', 'Number of agents', '1000')
.option('-d, --duration <time>', 'Duration (e.g., 60s, 5m)', '30s')
.option('-t, --topology <type>', 'Topology: mesh, hierarchical, ring, star', 'mesh')
.action(async (options) => {
showHeader();
const spinner = ora('Initializing benchmark...').start();
try {
const agentCount = parseInt(options.agents);
const duration = parseDuration(options.duration);
spinner.text = `Running benchmark: ${agentCount} agents, ${options.topology} topology...`;
await StrangeLoop.init();
const results = await StrangeLoop.runBenchmark({
agentCount,
duration,
topology: options.topology
});
spinner.succeed('Benchmark completed!');
displayBenchmarkResults(results);
} catch (error) {
spinner.fail(`Benchmark failed: ${error.message}`);
}
});
program
.command('interactive')
.description('Enter interactive REPL mode')
.action(async () => {
showHeader();
console.log(chalk.yellow('🔬 Entering Interactive Mode\n'));
console.log(chalk.gray('Available commands:'));
console.log(chalk.white(' .nano - Create nano-agent swarm'));
console.log(chalk.white(' .quantum - Initialize quantum container'));
console.log(chalk.white(' .temporal - Start temporal consciousness'));
console.log(chalk.white(' .predict - Run temporal prediction'));
console.log(chalk.white(' .help - Show help'));
console.log(chalk.white(' .exit - Exit interactive mode\n'));
await startREPL();
});
program
.command('create')
.description('Create a new Strange Loop project')
.argument('<name>', 'Project name')
.option('-t, --template <type>', 'Template: basic, quantum, swarm, consciousness', 'basic')
.action(async (name, options) => {
showHeader();
const spinner = ora(`Creating ${options.template} project: ${name}...`).start();
try {
await createProject(name, options.template);
spinner.succeed(`Project ${name} created successfully!`);
console.log(chalk.green(`\n📁 Project created: ./${name}`));
console.log(chalk.white('Next steps:'));
console.log(chalk.gray(` cd ${name}`));
console.log(chalk.gray(' npm install'));
console.log(chalk.gray(' npm run dev'));
} catch (error) {
spinner.fail(`Failed to create project: ${error.message}`);
}
});
program
.command('mcp')
.description('MCP (Model Context Protocol) server operations')
.addCommand(
new Command('start')
.description('Start the Strange Loops MCP server')
.option('-p, --port <port>', 'Server port (not used in stdio mode)', '3000')
.option('-v, --verbose', 'Verbose output')
.action(async (options) => {
try {
const serverPath = path.join(__dirname, '..', 'mcp', 'server.js');
require(serverPath);
} catch (error) {
console.error(`❌ Failed to start MCP server: ${error.message}`);
process.exit(1);
}
})
);
program
.command('info')
.description('Show system information and capabilities')
.action(async () => {
showHeader();
const spinner = ora('Gathering system information...').start();
try {
await StrangeLoop.init();
const info = await StrangeLoop.getSystemInfo();
spinner.succeed('System information gathered');
displaySystemInfo(info);
} catch (error) {
spinner.fail(`Failed to gather info: ${error.message}`);
}
});
async function runDemo(type) {
try {
await StrangeLoop.init();
switch (type) {
case 'nano-agents':
await demoNanoAgents();
break;
case 'quantum':
await demoQuantum();
break;
case 'consciousness':
await demoConsciousness();
break;
case 'prediction':
await demoPrediction();
break;
case 'all':
await demoNanoAgents();
await demoQuantum();
await demoConsciousness();
await demoPrediction();
break;
default:
console.log(chalk.red(`Unknown demo type: ${type}`));
}
} catch (error) {
console.error(chalk.red(`Demo failed: ${error.message}`));
}
}
async function demoNanoAgents() {
console.log(chalk.cyan('\n🔧 NANO-AGENT SWARM DEMO\n'));
const spinner = ora('Creating 1000-agent swarm...').start();
const swarm = await StrangeLoop.createSwarm({
agentCount: 1000,
topology: 'mesh',
tickDurationNs: 25000
});
spinner.text = 'Running swarm simulation...';
const results = await swarm.run(5000);
spinner.succeed('Swarm simulation completed!');
console.log(chalk.green(`✅ Executed ${results.totalTicks} ticks across ${results.agentCount} agents`));
console.log(chalk.white(`⚡ Throughput: ${Math.round(results.totalTicks / (results.runtimeNs / 1e9))} ticks/second`));
console.log(chalk.white(`🔋 Budget violations: ${results.budgetViolations}`));
console.log(chalk.gray(`💾 Runtime: ${(results.runtimeNs / 1e6).toFixed(2)}ms\n`));
}
async function demoQuantum() {
console.log(chalk.magenta('\n🌀 QUANTUM-CLASSICAL HYBRID DEMO\n'));
const spinner = ora('Initializing 8-state quantum system...').start();
const quantum = await StrangeLoop.createQuantumContainer(3);
spinner.text = 'Creating superposition...';
await quantum.createSuperposition();
quantum.storeClassical('temperature', 298.15);
quantum.storeClassical('pressure', 101.325);
spinner.text = 'Running quantum measurements...';
const measurements = [];
for (let i = 0; i < 10; i++) {
measurements.push(await quantum.measure());
}
spinner.succeed('Quantum measurements completed!');
console.log(chalk.green('✅ Quantum states measured:', measurements.join(', ')));
console.log(chalk.white(`🌡️ Classical data preserved: ${quantum.getClassical('temperature')}K`));
console.log(chalk.white(`📊 Classical data preserved: ${quantum.getClassical('pressure')} kPa\n`));
}
async function demoConsciousness() {
console.log(chalk.blue('\n🧠 TEMPORAL CONSCIOUSNESS DEMO\n'));
const spinner = ora('Evolving consciousness...').start();
const consciousness = await StrangeLoop.createTemporalConsciousness({
maxIterations: 100,
integrationSteps: 50,
enableQuantum: true
});
for (let i = 0; i < 10; i++) {
const state = await consciousness.evolveStep();
if (state.consciousnessIndex > 0.8) {
spinner.succeed(`High consciousness detected! Φ = ${state.consciousnessIndex.toFixed(6)}`);
break;
}
spinner.text = `Evolving... iteration ${i + 1}, Φ = ${state.consciousnessIndex.toFixed(3)}`;
}
const patterns = await consciousness.getTemporalPatterns();
console.log(chalk.green(`✅ Consciousness patterns detected: ${patterns.length}`));
patterns.slice(0, 3).forEach((pattern, i) => {
console.log(chalk.white(` ${i + 1}. ${pattern.name}: confidence ${pattern.confidence.toFixed(3)}`));
});
console.log();
}
async function demoPrediction() {
console.log(chalk.yellow('\n⏰ TEMPORAL PREDICTION DEMO\n'));
const spinner = ora('Initializing temporal predictor...').start();
const predictor = await StrangeLoop.createTemporalPredictor({
horizonNs: 10_000_000, historySize: 500
});
spinner.text = 'Generating time series and predictions...';
let correct = 0;
const total = 20;
for (let t = 0; t < total; t++) {
const actual = Math.sin(t * 0.2) + (Math.random() - 0.5) * 0.1;
const predicted = await predictor.predict([actual]);
const error = Math.abs(predicted[0] - actual) / Math.abs(actual);
if (error < 0.5) correct++;
await predictor.updateHistory([actual]);
}
spinner.succeed('Temporal prediction completed!');
console.log(chalk.green(`✅ Prediction accuracy: ${(correct / total * 100).toFixed(1)}%`));
console.log(chalk.white(`⚡ Sub-microsecond prediction latency achieved`));
console.log(chalk.white(`🔮 Computing solutions before data arrives\n`));
}
function displayBenchmarkResults(results) {
console.log(chalk.green('\n📊 BENCHMARK RESULTS\n'));
const data = [
['Metric', 'Value'],
['Agent Count', results.agentCount.toLocaleString()],
['Total Ticks', results.totalTicks.toLocaleString()],
['Runtime', `${(results.runtimeNs / 1e6).toFixed(2)}ms`],
['Throughput', `${Math.round(results.totalTicks / (results.runtimeNs / 1e9)).toLocaleString()} ticks/sec`],
['Budget Violations', results.budgetViolations.toLocaleString()],
['Violation Rate', `${(results.budgetViolations / results.totalTicks * 100).toFixed(2)}%`],
['Avg Cycles/Tick', results.avgCyclesPerTick.toFixed(1)]
];
console.log(table(data, {
border: {
topBody: '─',
topJoin: '┬',
topLeft: '┌',
topRight: '┐',
bottomBody: '─',
bottomJoin: '┴',
bottomLeft: '└',
bottomRight: '┘',
bodyLeft: '│',
bodyRight: '│',
bodyJoin: '│',
joinBody: '─',
joinLeft: '├',
joinRight: '┤',
joinJoin: '┼'
}
}));
}
function displaySystemInfo(info) {
console.log(chalk.cyan('\n💻 SYSTEM INFORMATION\n'));
const data = [
['Component', 'Status', 'Details'],
['WASM Support', info.wasmSupported ? '✅' : '❌', info.wasmVersion || 'N/A'],
['SIMD Support', info.simdSupported ? '✅' : '❌', info.simdFeatures?.join(', ') || 'N/A'],
['Memory Available', '✅', `${(info.memoryMB || 0)}MB`],
['Nano-Agents', '✅', `${info.maxAgents || 1000} max agents`],
['Quantum Container', info.quantumSupported ? '✅' : '❌', `${info.maxQubits || 8} qubits`],
['Temporal Prediction', '✅', `${info.predictionHorizonMs || 10}ms horizon`],
['Consciousness Engine', info.consciousnessSupported ? '✅' : '❌', 'IIT-based'],
];
console.log(table(data));
console.log(chalk.white('\n🚀 Ready for nano-scale agent orchestration!\n'));
}
async function startREPL() {
let running = true;
try {
await StrangeLoop.init();
} catch (error) {
console.log(chalk.red(`Failed to initialize: ${error.message}`));
return;
}
while (running) {
const { command } = await inquirer.prompt([
{
type: 'input',
name: 'command',
message: chalk.cyan('strange-loop>'),
prefix: ''
}
]);
try {
switch (command.trim()) {
case '.exit':
running = false;
console.log(chalk.yellow('Goodbye! 🌀'));
break;
case '.help':
console.log(chalk.white('Available commands:'));
console.log(chalk.gray(' .nano - Create nano-agent swarm'));
console.log(chalk.gray(' .quantum - Initialize quantum container'));
console.log(chalk.gray(' .temporal - Start temporal consciousness'));
console.log(chalk.gray(' .predict - Run temporal prediction'));
console.log(chalk.gray(' .exit - Exit'));
break;
case '.nano':
console.log(chalk.cyan('Creating nano-agent swarm...'));
break;
case '.quantum':
console.log(chalk.magenta('Initializing quantum container...'));
break;
case '.temporal':
console.log(chalk.blue('Starting temporal consciousness...'));
break;
case '.predict':
console.log(chalk.yellow('Running temporal prediction...'));
break;
default:
if (command.trim()) {
console.log(chalk.red(`Unknown command: ${command}`));
console.log(chalk.gray('Type .help for available commands'));
}
}
} catch (error) {
console.log(chalk.red(`Error: ${error.message}`));
}
}
}
async function createProject(name, template) {
const templatesDir = path.join(__dirname, '..', 'templates', template);
const targetDir = path.join(process.cwd(), name);
if (!fs.existsSync(templatesDir)) {
throw new Error(`Template ${template} not found`);
}
await fs.promises.mkdir(targetDir, { recursive: true });
await fs.promises.writeFile(
path.join(targetDir, 'package.json'),
JSON.stringify({
name,
version: '1.0.0',
description: `Strange Loop project: ${template} template`,
main: 'index.js',
dependencies: {
'@strange-loop/cli': '^0.1.0'
}
}, null, 2)
);
await fs.promises.writeFile(
path.join(targetDir, 'index.js'),
`// Strange Loop ${template} project\n// Generated by @strange-loop/cli\n\nconst StrangeLoop = require('@strange-loop/cli');\n\nasync function main() {\n await StrangeLoop.init();\n console.log('Strange Loop ${template} project initialized!');\n}\n\nmain().catch(console.error);\n`
);
}
function parseDuration(duration) {
if (/^\d+$/.test(duration)) {
return parseInt(duration);
}
const match = duration.match(/^(\\d+)([sm])$/);
if (!match) throw new Error('Invalid duration format');
const value = parseInt(match[1]);
const unit = match[2];
return unit === 's' ? value * 1000 : value * 60 * 1000; }
program.action(() => {
showHeader();
console.log(chalk.white('Use --help to see available commands\n'));
console.log(chalk.gray('Quick start:'));
console.log(chalk.white(' npx strange-loops demo # Run interactive demos'));
console.log(chalk.white(' npx strange-loops benchmark # Performance benchmarks'));
console.log(chalk.white(' npx strange-loops interactive # REPL mode'));
console.log(chalk.white(' npx strange-loops mcp start # Start MCP server'));
console.log(chalk.white(' npx strange-loops create myapp # Create new project\n'));
});
program.parse();