il2cpp-dump-analyzer-mcp
Version:
Agentic RAG system for analyzing IL2CPP dump.cs files from Unity games
173 lines (172 loc) • 4.34 kB
TypeScript
/**
* 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;
};
}