import * as readline from 'readline'; import { Command } from 'commander'; import chalk from 'chalk'; import { writeConfig } from '../config'; function prompt(rl: readline.Interface, question: string): Promise { return new Promise((resolve) => { rl.question(question, (answer) => { resolve(answer.trim()); }); }); } export function registerConfigure(program: Command): void { program .command('configure') .description('Configure the CLI with API URL and credentials') .action(async () => { const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); try { console.log(chalk.bold('SentryAgent CLI Configuration')); console.log(chalk.dim('─'.repeat(40))); const apiUrl = await prompt( rl, chalk.cyan('API URL') + ' (e.g. https://api.sentryagent.ai): ', ); if (apiUrl === '') { console.error(chalk.red('API URL cannot be empty.')); process.exit(1); } const clientId = await prompt(rl, chalk.cyan('Client ID') + ': '); if (clientId === '') { console.error(chalk.red('Client ID cannot be empty.')); process.exit(1); } const clientSecret = await prompt( rl, chalk.cyan('Client Secret') + ': ', ); if (clientSecret === '') { console.error(chalk.red('Client Secret cannot be empty.')); process.exit(1); } writeConfig({ apiUrl, clientId, clientSecret }); console.log(); console.log( chalk.green('✓') + ' Configuration saved to ~/.sentryagent/config.json', ); } finally { rl.close(); } }); }