UNPKG

newo

Version:

NEWO CLI: Professional command-line tool with modular architecture for NEWO AI Agent development. Features account migration, integration management, webhook automation, AKB knowledge base, project attributes, sandbox testing, IDN-based file management, r

111 lines 4.6 kB
/** * Enhanced error handling utilities for NEWO CLI */ import { EnvValidationError } from '../env.js'; /** * Enhanced error logging for CLI */ export function logCliError(level, message, meta) { const timestamp = new Date().toISOString(); const logEntry = { timestamp, level, module: 'cli', message, ...meta }; // Only log JSON format in verbose mode, otherwise use clean user messages const verbose = process.argv.includes('--verbose') || process.argv.includes('-v'); if (verbose) { if (level === 'error') { console.error(JSON.stringify(logEntry)); } else if (level === 'warn') { console.warn(JSON.stringify(logEntry)); } else { console.log(JSON.stringify(logEntry)); } } else { // Clean user-facing messages if (level === 'error') { console.error(`❌ ${message}`); } else if (level === 'warn') { console.warn(`⚠️ ${message}`); } else { console.log(`ℹ️ ${message}`); } } } /** * Enhanced error handling with user-friendly messages */ export function handleCliError(error, operation = 'operation') { const verbose = process.argv.includes('--verbose') || process.argv.includes('-v'); if (error instanceof Error) { // Authentication errors if (error.message.includes('API key') || error.message.includes('Authentication failed')) { logCliError('error', 'Authentication failed. Please check your API key configuration.'); if (!verbose) { console.error('\n💡 Troubleshooting tips:'); console.error(' • Verify your API key is correct in .env file'); console.error(' • For multi-customer setup, check NEWO_CUSTOMER_<IDN>_API_KEY'); console.error(' • Run with --verbose for detailed error information'); } } // Network errors else if (error.message.includes('Network timeout') || error.message.includes('ENOTFOUND') || error.message.includes('ECONNREFUSED')) { logCliError('error', 'Network connection failed. Please check your internet connection.'); if (!verbose) { console.error('\n💡 Troubleshooting tips:'); console.error(' • Check your internet connection'); console.error(' • Verify NEWO_BASE_URL is correct'); console.error(' • Try again in a few moments'); } } // Environment configuration errors else if (error instanceof EnvValidationError || error.message.includes('not set')) { logCliError('error', 'Configuration error. Please check your environment setup.'); if (!verbose) { console.error('\n💡 Setup help:'); console.error(' • Copy .env.example to .env and configure your settings'); console.error(' • Run "newo --help" to see configuration examples'); console.error(' • Check the README for detailed setup instructions'); } } // File system errors else if (error.message.includes('ENOENT') || error.message.includes('EACCES')) { logCliError('error', 'File system error. Please check file permissions and paths.'); } // Rate limiting else if (error.message.includes('Rate limit exceeded')) { logCliError('error', 'Rate limit exceeded. Please wait before trying again.'); } // General API errors else if (error.message.includes('response') || error.message.includes('status')) { logCliError('error', `API error during ${operation}. Please try again or contact support.`); } // Unknown errors else { logCliError('error', `Unexpected error during ${operation}: ${error.message}`); if (!verbose) { console.error('\n💡 For more details, run the command with --verbose flag'); } } if (verbose) { logCliError('error', 'Full error details', { operation, errorType: error.constructor.name, stack: error.stack?.split('\n').slice(0, 5).join('\n') // First 5 lines of stack }); } } else { logCliError('error', `Unknown error during ${operation}: ${String(error)}`); } process.exit(1); } //# sourceMappingURL=errors.js.map