UNPKG

@2501-ai/cli

Version:

[![npm version](https://img.shields.io/npm/v/@2501-ai/cli.svg)](https://www.npmjs.com/package/@2501-ai/cli) [![HumanEval Score](https://img.shields.io/badge/HumanEval-96.95%25-brightgreen.svg)](https://www.2501.ai/research/full-humaneval-benchmark) [![Lic

94 lines (93 loc) 4.24 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.errorHandler = exports.ErrorHandler = void 0; const telemetry_1 = require("../telemetry"); const logger_1 = __importDefault(require("../utils/logger")); class ErrorHandler { constructor() { } static getInstance() { if (!ErrorHandler.instance) { ErrorHandler.instance = new ErrorHandler(); } return ErrorHandler.instance; } initializeGlobalHandlers() { process.on('uncaughtException', (error) => __awaiter(this, void 0, void 0, function* () { logger_1.default.error('Uncaught Exception:', error.message); logger_1.default.debug('Stack trace:', error.stack || 'No stack trace available'); yield this.handleError(error, { type: 'uncaughtException', fatal: true, }); yield this.gracefulShutdown(1); })); process.on('unhandledRejection', (reason, promise) => __awaiter(this, void 0, void 0, function* () { const error = reason instanceof Error ? reason : new Error(String(reason)); logger_1.default.error('Unhandled Rejection at:', promise, 'reason:', error.message); logger_1.default.debug('Stack trace:', error.stack || 'No stack trace available'); yield this.handleError(error, { type: 'unhandledRejection', fatal: true, metadata: { reason: String(reason) }, }); yield this.gracefulShutdown(1); })); process.on('warning', (warning) => { logger_1.default.warn(`Warning: ${warning.name}: ${warning.message}`); if (warning.stack) { logger_1.default.debug('Warning stack:', warning.stack); } }); } handleCommandError(error, commandName, options) { return __awaiter(this, void 0, void 0, function* () { const { silent = false } = options || {}; if (!silent) { logger_1.default.error(`Command failed${commandName ? ` (${commandName})` : ''}: ${error.message}`); logger_1.default.debug('Error details:', error.stack || 'No stack trace available'); } yield this.handleError(error, { type: 'commandError', fatal: false, metadata: { commandName, }, }); }); } handleError(error, context) { return __awaiter(this, void 0, void 0, function* () { yield (0, telemetry_1.trackError)(error, { metadata: Object.assign({ errorType: context.type, fatal: context.fatal, timestamp: new Date().toISOString() }, context.metadata), }); }); } gracefulShutdown(exitCode) { return __awaiter(this, void 0, void 0, function* () { try { logger_1.default.debug('Initiating graceful shutdown...'); logger_1.default.debug('Graceful shutdown completed'); } catch (shutdownError) { logger_1.default.error('Error during shutdown:', shutdownError); } finally { process.exit(exitCode); } }); } } exports.ErrorHandler = ErrorHandler; exports.errorHandler = ErrorHandler.getInstance();