import { Command } from 'commander'; import chalk from 'chalk'; import { createLoginCommand } from './commands/login.js'; import { createLinkCommand } from './commands/link.js'; import { createScanCommand } from './commands/scan.js'; import { createFixCommand } from './commands/fix.js'; import { createSyncCommand } from './commands/sync.js'; import { createInitCommand } from './commands/init.js'; import { createCheckCommand } from './commands/check.js'; import { createHooksCommand } from './commands/hooks.js'; import { createDaemonCommand } from './commands/daemon.js'; import { createWorkCommand } from './commands/work.js'; import { createWatchCommand } from './commands/watch.js'; import { createFocusCommand } from './commands/focus.js'; import { createEnvPullCommand } from './commands/env.js'; import { createConfigCommand } from './commands/config.js'; import { createMcpCommand } from './commands/mcp.js'; import { createNexusCommand } from './commands/nexus.js'; import { createSyncRulesCommand } from './commands/sync-rules.js'; import { createOverrideCommand } from './commands/override.js'; import { createIdeaCommand } from './commands/idea.js'; import { createReleaseCommand } from './commands/release.js'; import { createRoadmapCommand } from './commands/roadmap.js'; import { createCouncilCommand } from './commands/council.js'; import { createPlanCommand } from './commands/plan.js'; import { createGenesisCommand } from './commands/genesis.js'; import { createRememberCommand } from './commands/remember.js'; import { createAskCommand } from './commands/ask.js'; import { createMonitorCommand } from './commands/monitor.js'; import { createAntidoteCommand } from './commands/antidote.js'; import { createHealCommand } from './commands/heal.js'; import { createCommitCommand } from './commands/commit.js'; import { createNextCommand } from './commands/next.js'; import { createHistoryCommand } from './commands/history.js'; import { createBootCommand } from './commands/boot.js'; import { checkVersion } from './utils/version.js'; import dotenv from 'dotenv'; import pkg from '../package.json' assert { type: 'json' }; // Load environment variables dotenv.config(); const program = new Command(); program .name('rigstate') .description('CLI for Rigstate - The AI-Native Dev Studio') .version(pkg.version); // Register commands program.addCommand(createLoginCommand()); program.addCommand(createLinkCommand()); program.addCommand(createScanCommand()); program.addCommand(createFixCommand()); program.addCommand(createSyncCommand()); program.addCommand(createInitCommand()); program.addCommand(createCheckCommand()); program.addCommand(createHooksCommand()); program.addCommand(createDaemonCommand()); program.addCommand(createWorkCommand()); program.addCommand(createWatchCommand()); program.addCommand(createFocusCommand()); program.addCommand(createEnvPullCommand()); program.addCommand(createConfigCommand()); program.addCommand(createMcpCommand()); program.addCommand(createNexusCommand()); program.addCommand(createSyncRulesCommand()); program.addCommand(createOverrideCommand()); program.addCommand(createIdeaCommand()); program.addCommand(createReleaseCommand()); program.addCommand(createRoadmapCommand()); program.addCommand(createCouncilCommand()); program.addCommand(createPlanCommand()); program.addCommand(createGenesisCommand()); program.addCommand(createRememberCommand()); program.addCommand(createAskCommand()); program.addCommand(createMonitorCommand()); program.addCommand(createAntidoteCommand()); program.addCommand(createHealCommand()); program.addCommand(createCommitCommand()); program.addCommand(createNextCommand()); program.addCommand(createBootCommand()); program.addCommand(createHistoryCommand()); program.hook('preAction', async () => { await checkVersion(); }); // Add helpful examples program.on('--help', () => { console.log(''); console.log(chalk.bold('Examples:')); console.log(''); console.log(chalk.cyan(' $ rigstate boot')); console.log(chalk.dim(' The ultimate takeoff. Syncs rules, starts daemon and monitor.')); console.log(''); console.log(chalk.cyan(' $ rigstate login sk_rigstate_your_api_key')); console.log(chalk.dim(' Authenticate with your Rigstate API key')); console.log(''); console.log(chalk.cyan(' $ rigstate scan')); console.log(chalk.dim(' Scan the current directory')); console.log(''); console.log(chalk.cyan(' $ rigstate genesis')); console.log(chalk.dim(' Initialize project foundation (auto-detects stack)')); console.log(''); console.log(chalk.cyan(' $ rigstate genesis --status')); console.log(chalk.dim(' Check genesis status without triggering')); console.log(''); console.log(chalk.cyan(' $ rigstate scan ./src --project abc123')); console.log(chalk.dim(' Scan a specific directory with project ID')); console.log(''); console.log(chalk.cyan(' $ rigstate scan --json')); console.log(chalk.dim(' Output results in JSON format (useful for IDE extensions)')); console.log(''); }); // Parse arguments program.parse(process.argv); // Show help if no command provided if (!process.argv.slice(2).length) { program.outputHelp(); }