@re-shell/cli
Version:
Full-stack development platform uniting microservices and microfrontends. Build complete applications with .NET (ASP.NET Core Web API, Minimal API), Java (Spring Boot, Quarkus, Micronaut, Vert.x), Rust (Actix-Web, Warp, Rocket, Axum), Python (FastAPI, Dja
128 lines (127 loc) • 3.4 kB
TypeScript
import { EventEmitter } from 'events';
export interface HealthCheck {
id: string;
name: string;
category: HealthCategory;
description: string;
severity: HealthSeverity;
check: () => Promise<HealthResult>;
repair?: () => Promise<RepairResult>;
dependencies?: string[];
timeout: number;
enabled: boolean;
}
export declare enum HealthCategory {
SYSTEM = "system",
NETWORK = "network",
FILESYSTEM = "filesystem",
DEPENDENCIES = "dependencies",
CONFIGURATION = "configuration",
PERFORMANCE = "performance",
SECURITY = "security",
ENVIRONMENT = "environment"
}
export declare enum HealthSeverity {
INFO = 0,
WARNING = 1,
ERROR = 2,
CRITICAL = 3
}
export declare enum HealthStatus {
HEALTHY = "healthy",
DEGRADED = "degraded",
UNHEALTHY = "unhealthy",
UNKNOWN = "unknown"
}
export interface HealthResult {
status: HealthStatus;
message: string;
details?: Record<string, any>;
metrics?: Record<string, number>;
suggestions?: string[];
timestamp: Date;
duration: number;
}
export interface RepairResult {
success: boolean;
message: string;
actions: string[];
timestamp: Date;
duration: number;
}
export interface DiagnosticReport {
id: string;
timestamp: Date;
overallStatus: HealthStatus;
summary: {
total: number;
healthy: number;
degraded: number;
unhealthy: number;
unknown: number;
};
results: Array<{
check: HealthCheck;
result: HealthResult;
repairAttempted?: boolean;
repairResult?: RepairResult;
}>;
systemInfo: SystemInfo;
recommendations: string[];
duration: number;
}
export interface SystemInfo {
platform: string;
arch: string;
nodeVersion: string;
cliVersion: string;
workingDirectory: string;
homeDirectory: string;
memory: {
total: number;
free: number;
used: number;
};
cpu: {
model: string;
cores: number;
loadAverage: number[];
};
uptime: number;
}
export declare class HealthDiagnostics extends EventEmitter {
private checks;
private lastReport?;
private running;
constructor();
private registerBuiltinChecks;
registerCheck(check: HealthCheck): void;
unregisterCheck(id: string): boolean;
runDiagnostics(options?: {
categories?: HealthCategory[];
includeRepairs?: boolean;
timeout?: number;
}): Promise<DiagnosticReport>;
private runSingleCheck;
private runRepair;
private sortChecksByDependencies;
private calculateOverallStatus;
private generateRecommendations;
private getSystemInfo;
private getCliVersion;
private generateReportId;
getChecks(): HealthCheck[];
getChecksByCategory(category: HealthCategory): HealthCheck[];
getLastReport(): DiagnosticReport | undefined;
isRunning(): boolean;
enableCheck(id: string): boolean;
disableCheck(id: string): boolean;
quickCheck(): Promise<{
status: HealthStatus;
message: string;
critical: number;
}>;
}
export declare function createHealthDiagnostics(): HealthDiagnostics;
export declare function getGlobalHealthDiagnostics(): HealthDiagnostics;
export declare function setGlobalHealthDiagnostics(diagnostics: HealthDiagnostics): void;