codecrucible-synth
Version:
Production-Ready AI Development Platform with Multi-Voice Synthesis, Smithery MCP Integration, Enterprise Security, and Zero-Timeout Reliability
159 lines • 4.27 kB
TypeScript
#!/usr/bin/env node
/**
* Comprehensive Error Handling and Observability System
* Provides centralized error handling, tracking, and observability
*/
import { EventEmitter } from 'events';
export interface ErrorContext {
userId?: string;
sessionId?: string;
operation: string;
component: string;
timestamp: number;
requestId?: string;
metadata?: Record<string, any>;
}
export interface ErrorInfo {
id: string;
type: ErrorType;
severity: ErrorSeverity;
message: string;
stack?: string;
context: ErrorContext;
count: number;
firstOccurrence: number;
lastOccurrence: number;
resolution?: string;
status: 'active' | 'acknowledged' | 'resolved' | 'ignored';
}
export type ErrorType = 'validation' | 'authentication' | 'authorization' | 'network' | 'database' | 'file_system' | 'external_api' | 'configuration' | 'business_logic' | 'system' | 'performance' | 'security' | 'unknown';
export type ErrorSeverity = 'low' | 'medium' | 'high' | 'critical';
export interface ErrorPattern {
id: string;
pattern: RegExp;
type: ErrorType;
severity: ErrorSeverity;
description: string;
recommendation: string;
autoFixable: boolean;
}
export interface AlertRule {
id: string;
name: string;
condition: (error: ErrorInfo) => boolean;
severity: ErrorSeverity;
enabled: boolean;
cooldownMs: number;
lastTriggered?: number;
actions: AlertAction[];
}
export interface AlertAction {
type: 'log' | 'email' | 'webhook' | 'restart' | 'circuit_breaker';
config: Record<string, any>;
}
export interface ObservabilityMetrics {
errorRate: number;
errorsByType: Record<ErrorType, number>;
errorsBySeverity: Record<ErrorSeverity, number>;
errorsByComponent: Record<string, number>;
meanTimeToResolve: number;
circuitBreakerStatus: Record<string, 'open' | 'closed' | 'half_open'>;
healthScore: number;
}
export declare class ErrorHandlingSystem extends EventEmitter {
private errors;
private errorPatterns;
private alertRules;
private circuitBreakers;
private correlationContext;
private isInitialized;
/**
* Initialize the error handling system
*/
initialize(): Promise<void>;
/**
* Handle an error with comprehensive context
*/
handleError(error: Error | string, context: Partial<ErrorContext>): Promise<string>;
/**
* Classify error type and severity
*/
private classifyError;
/**
* Find existing error by similarity
*/
private findExistingError;
/**
* Log error with appropriate level
*/
private logError;
/**
* Check and trigger alert rules
*/
private checkAlertRules;
/**
* Execute alert actions
*/
private executeAlertActions;
/**
* Execute webhook alert action
*/
private executeWebhookAction;
/**
* Update circuit breakers based on errors
*/
private updateCircuitBreakers;
/**
* Trigger circuit breaker manually
*/
private triggerCircuitBreaker;
/**
* Get comprehensive observability metrics
*/
getMetrics(): ObservabilityMetrics;
/**
* Load error patterns from configuration
*/
private loadErrorPatterns;
/**
* Setup default alert rules
*/
private setupDefaultAlertRules;
/**
* Setup default circuit breakers
*/
private setupDefaultCircuitBreakers;
/**
* Generate unique error ID
*/
private generateErrorId;
/**
* Generate unique request ID for correlation
*/
private generateRequestId;
/**
* Resolve an error manually
*/
resolveError(errorId: string, resolution: string): boolean;
/**
* Get error details
*/
getError(errorId: string): ErrorInfo | null;
/**
* Get correlation context for request
*/
getCorrelationContext(requestId: string): Record<string, any> | null;
/**
* Generate error report
*/
generateReport(): string;
/**
* Cleanup old errors and correlation data
*/
cleanup(): void;
/**
* Dispose of the error handling system
*/
dispose(): void;
}
//# sourceMappingURL=error-handling-system.d.ts.map