@tomisakae/tomibot
Version:
TomiBot - AI Chatbot CLI với Google Genkit. Một chatbot AI thông minh chạy trên command line với giao diện đẹp.
61 lines • 2.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const bot_1 = require("./core/bot");
const logger_util_1 = require("./utils/logger.util");
const display_util_1 = require("./ui/utils/display.util");
const logger = new logger_util_1.Logger('Main');
async function main() {
let bot = null;
try {
logger.info('Starting TomiBot application...');
bot = new bot_1.TomiBot();
setupGracefulShutdown(bot);
await bot.start();
}
catch (error) {
logger.error('Fatal error in main:', error);
console.log('\n' + display_util_1.DisplayUtils.error('❌ Đã xảy ra lỗi nghiêm trọng!'));
if (error instanceof Error) {
console.log(display_util_1.DisplayUtils.dim(`Chi tiết: ${error.message}`));
}
console.log(display_util_1.DisplayUtils.info('💡 Vui lòng kiểm tra cấu hình và thử lại.'));
process.exit(1);
}
}
function setupGracefulShutdown(bot) {
const shutdown = async (signal) => {
logger.info(`Received ${signal}, shutting down gracefully...`);
try {
if (bot && bot.isRunning) {
await bot.stop();
}
console.log('\n' + display_util_1.DisplayUtils.success('👋 TomiBot đã thoát an toàn!'));
process.exit(0);
}
catch (error) {
logger.error('Error during shutdown:', error);
process.exit(1);
}
};
process.on('SIGINT', () => shutdown('SIGINT'));
process.on('SIGTERM', () => shutdown('SIGTERM'));
process.on('uncaughtException', error => {
logger.error('Uncaught exception:', error);
console.log('\n' + display_util_1.DisplayUtils.error('❌ Lỗi không mong muốn!'));
process.exit(1);
});
process.on('unhandledRejection', (reason, promise) => {
logger.error('Unhandled rejection at:', promise, 'reason:', reason);
console.log('\n' + display_util_1.DisplayUtils.error('❌ Lỗi promise không được xử lý!'));
process.exit(1);
});
}
if (require.main === module) {
main().catch(error => {
logger.error('Unhandled error in main:', error);
console.log('\n' + display_util_1.DisplayUtils.error('❌ Lỗi không thể khôi phục!'));
process.exit(1);
});
}
//# sourceMappingURL=index.js.map