import { logger } from './logging.js';
export enum ErrorCode {
VALIDATION_ERROR = 'VALIDATION_ERROR',
NOT_FOUND = 'NOT_FOUND',
UNAUTHORIZED = 'UNAUTHORIZED',
EXTERNAL_API_ERROR = 'EXTERNAL_API_ERROR',
RATE_LIMITED = 'RATE_LIMITED',
INTERNAL_ERROR = 'INTERNAL_ERROR'
}
export class AppError extends Error {
constructor(
public code: ErrorCode,
message: string,
public statusCode: number = 500,
public details?: any
) {
super(message);
this.name = this.constructor.name;
Error.captureStackTrace(this, this.constructor);
}
}
export function setupErrorHandling() {
process.on('uncaughtException', (error) => {
logger.error('Uncaught Exception', { error });
process.exit(1);
});
process.on('unhandledRejection', (reason, promise) => {
logger.error('Unhandled Rejection', { reason, promise });
process.exit(1);
});
}
export function handleMcpError(error: unknown): Error {
if (error instanceof AppError) {
return error;
}
if (error instanceof Error) {
return new AppError(
ErrorCode.INTERNAL_ERROR,
error.message
);
}
return new AppError(
ErrorCode.INTERNAL_ERROR,
'Unknown error occurred'
);
}