il2cpp-dump-analyzer-mcp
Version:
Agentic RAG system for analyzing IL2CPP dump.cs files from Unity games
161 lines (160 loc) • 3.88 kB
TypeScript
/**
* Container lifecycle management for IL2CPP dump analyzer MCP system
* Handles startup, shutdown, health monitoring, and restart policies
*/
import { EventEmitter } from 'events';
import { HealthService } from './health-service.js';
import { MetricsService } from './metrics-service.js';
export interface LifecycleConfig {
startupTimeout: number;
shutdownTimeout: number;
healthCheckInterval: number;
restartPolicy: 'never' | 'on-failure' | 'always' | 'unless-stopped';
maxRestarts: number;
restartDelay: number;
dependencyChecks: boolean;
gracefulShutdown: boolean;
}
export interface LifecycleState {
phase: 'starting' | 'running' | 'stopping' | 'stopped' | 'failed';
startTime?: Date;
lastRestart?: Date;
restartCount: number;
isHealthy: boolean;
dependencies: DependencyStatus[];
}
export interface DependencyStatus {
name: string;
status: 'healthy' | 'unhealthy' | 'unknown';
lastCheck: Date;
required: boolean;
checkUrl?: string;
timeout: number;
}
/**
* Container lifecycle management service
*/
export declare class LifecycleManager extends EventEmitter {
private config;
private state;
private healthService?;
private metricsService?;
private startupTimer?;
private shutdownTimer?;
private restartTimer?;
private dependencyCheckInterval?;
private shutdownHandlers;
private startupHandlers;
constructor(config?: Partial<LifecycleConfig>);
/**
* Initialize dependency definitions
*/
private initializeDependencies;
/**
* Initialize lifecycle manager with services
*/
initialize(services: {
healthService: HealthService;
metricsService: MetricsService;
}): void;
/**
* Start the application lifecycle
*/
start(): Promise<void>;
/**
* Execute startup sequence
*/
private executeStartup;
/**
* Stop the application lifecycle
*/
stop(): Promise<void>;
/**
* Execute graceful shutdown
*/
private executeGracefulShutdown;
/**
* Execute shutdown sequence
*/
private executeShutdownSequence;
/**
* Execute immediate shutdown
*/
private executeImmediateShutdown;
/**
* Handle health status changes
*/
private handleHealthStatusChange;
/**
* Handle restart policy
*/
private handleRestartPolicy;
/**
* Schedule a restart
*/
private scheduleRestart;
/**
* Restart the application
*/
private restart;
/**
* Check dependencies health
*/
private checkDependencies;
/**
* Check individual dependency
*/
private checkDependency;
/**
* Check database dependency
*/
private checkDatabaseDependency;
/**
* Check REST API dependency
*/
private checkRestApiDependency;
/**
* Check models dependency (Xenova models availability)
*/
private checkModelsDependency;
/**
* Start dependency monitoring
*/
private startDependencyMonitoring;
/**
* Stop dependency monitoring
*/
private stopDependencyMonitoring;
/**
* Setup signal handlers
*/
private setupSignalHandlers;
/**
* Update lifecycle state
*/
private setState;
/**
* Register startup handler
*/
onStartup(handler: () => Promise<void>): void;
/**
* Register shutdown handler
*/
onShutdown(handler: () => Promise<void>): void;
/**
* Get current lifecycle state
*/
getState(): LifecycleState;
/**
* Get lifecycle configuration
*/
getConfig(): LifecycleConfig;
/**
* Force restart (manual trigger)
*/
forceRestart(reason?: string): Promise<void>;
/**
* Reset restart counter
*/
resetRestartCounter(): void;
}