UNPKG

il2cpp-dump-analyzer-mcp

Version:

Agentic RAG system for analyzing IL2CPP dump.cs files from Unity games

173 lines (172 loc) 4.34 kB
/** * Comprehensive health monitoring service for IL2CPP dump analyzer MCP system * Provides health checks, metrics collection, and lifecycle management */ import { EventEmitter } from 'events'; import { SupabaseConnectionManager } from '../database/connection-manager.js'; import { EnhancedSupabaseVectorStore } from '../database/enhanced-vector-store.js'; import { XenovaEmbeddings } from '../embeddings/xenova-embeddings.js'; export interface HealthStatus { status: 'healthy' | 'degraded' | 'unhealthy'; timestamp: Date; uptime: number; version: string; components: ComponentHealth[]; metrics: HealthMetrics; } export interface ComponentHealth { name: string; status: 'healthy' | 'degraded' | 'unhealthy'; message: string; lastCheck: Date; responseTime?: number; details?: Record<string, any>; } export interface HealthMetrics { memory: { used: number; total: number; percentage: number; heapUsed: number; heapTotal: number; }; cpu: { usage: number; loadAverage: number[]; }; database: { connectionCount: number; activeQueries: number; avgResponseTime: number; errorRate: number; }; embeddings: { modelLoaded: boolean; cacheSize: number; avgProcessingTime: number; }; mcp: { activeConnections: number; totalRequests: number; avgResponseTime: number; errorRate: number; }; } export interface HealthCheckConfig { interval: number; timeout: number; retries: number; gracefulShutdownTimeout: number; components: { database: boolean; vectorStore: boolean; embeddings: boolean; mcp: boolean; }; } /** * Health monitoring service with comprehensive component checking */ export declare class HealthService extends EventEmitter { private config; private isRunning; private healthCheckInterval?; private startTime; private lastHealthStatus?; private shutdownHandlers; private connectionManager?; private vectorStore?; private embeddings?; private mcpMetrics; constructor(config?: Partial<HealthCheckConfig>); /** * Initialize health service with component dependencies */ initialize(components: { connectionManager?: SupabaseConnectionManager; vectorStore?: EnhancedSupabaseVectorStore; embeddings?: XenovaEmbeddings; }): Promise<void>; /** * Start health monitoring */ start(): void; /** * Stop health monitoring */ stop(): void; /** * Get current health status */ getHealthStatus(): Promise<HealthStatus>; /** * Perform comprehensive health check */ private performHealthCheck; /** * Check database connection health */ private checkDatabaseHealth; /** * Check vector store health */ private checkVectorStoreHealth; /** * Check embeddings model health */ private checkEmbeddingsHealth; /** * Check MCP server health */ private checkMCPHealth; /** * Determine overall health status from component statuses */ private determineOverallStatus; /** * Collect system and application metrics */ private collectMetrics; /** * Get database-specific metrics */ private getDatabaseMetrics; /** * Get embeddings-specific metrics */ private getEmbeddingsMetrics; /** * Get MCP server metrics */ private getMCPMetrics; /** * Update MCP metrics (called by MCP server) */ updateMCPMetrics(metrics: { activeConnections?: number; requestProcessed?: boolean; responseTime?: number; error?: boolean; }): void; /** * Setup signal handlers for graceful shutdown */ private setupSignalHandlers; /** * Perform graceful shutdown */ private gracefulShutdown; /** * Register a shutdown handler */ onShutdown(handler: () => Promise<void>): void; /** * Get health service statistics */ getStats(): { isRunning: boolean; uptime: number; lastHealthCheck?: Date; totalHealthChecks: number; }; }