UNPKG

@sethdouglasford/claude-flow

Version:

Claude Code Flow - Advanced AI-powered development workflows with SPARC methodology

230 lines 6.59 kB
/** * Real-time monitoring system for swarm operations */ import { EventEmitter } from "node:events"; import { ILogger } from "../core/logger.js"; import { IEventBus } from "../core/event-bus.js"; import { SystemMetrics, Alert, AlertLevel, SwarmMetrics } from "../swarm/types.js"; import { DistributedMemorySystem } from "../memory/distributed-memory.js"; export interface MonitorConfig { updateInterval: number; retentionPeriod: number; alertingEnabled: boolean; alertThresholds: AlertThresholds; metricsEnabled: boolean; tracingEnabled: boolean; dashboardEnabled: boolean; exportEnabled: boolean; exportFormat: "json" | "csv" | "prometheus"; debugMode: boolean; } export interface AlertThresholds { cpu: { warning: number; critical: number; }; memory: { warning: number; critical: number; }; disk: { warning: number; critical: number; }; errorRate: { warning: number; critical: number; }; responseTime: { warning: number; critical: number; }; queueDepth: { warning: number; critical: number; }; agentHealth: { warning: number; critical: number; }; swarmUtilization: { warning: number; critical: number; }; } export interface MetricPoint { timestamp: Date; value: number; tags: Record<string, string>; metadata?: Record<string, unknown>; } export interface TimeSeries { name: string; points: MetricPoint[]; aggregations: { min: number; max: number; avg: number; sum: number; count: number; }; lastUpdated: Date; } export interface MonitoringDashboard { title: string; panels: DashboardPanel[]; refreshInterval: number; timeRange: { start: Date; end: Date; }; filters: Record<string, unknown>; } export interface DashboardPanel { id: string; title: string; type: "line" | "bar" | "gauge" | "table" | "heatmap" | "stat"; metrics: string[]; config: { width: number; height: number; position: { x: number; y: number; }; visualization: Record<string, unknown>; }; } export interface AlertRule { id: string; name: string; enabled: boolean; metric: string; condition: "gt" | "lt" | "eq" | "gte" | "lte"; threshold: number; duration: number; severity: AlertLevel; tags: Record<string, string>; actions: AlertAction[]; suppressions: AlertSuppression[]; } export interface AlertAction { type: "email" | "webhook" | "slack" | "log" | "auto-scale" | "restart"; config: Record<string, unknown>; enabled: boolean; } export interface AlertSuppression { condition: string; duration: number; reason: string; } export interface HealthCheck { name: string; type: "http" | "tcp" | "custom"; target: string; interval: number; timeout: number; retries: number; expectedResponse?: unknown; customCheck?: () => Promise<boolean>; } /** * Comprehensive real-time monitoring and alerting system */ export declare class RealTimeMonitor extends EventEmitter { private logger; private eventBus; private memory; private config; private timeSeries; private activeAlerts; private alertHistory; private monitoringInterval?; private healthCheckInterval?; private alertRules; private healthChecks; private systemMetrics; private agentMetrics; private swarmMetrics; private dashboards; private lastMetricsUpdate; private metricsBuffer; private alertProcessor?; constructor(config: Partial<MonitorConfig>, logger: ILogger, eventBus: IEventBus, memory: DistributedMemorySystem); private setupEventHandlers; initialize(): Promise<void>; shutdown(): Promise<void>; private startMetricsCollection; private collectSystemMetrics; private updateSwarmLevelMetrics; recordMetric(name: string, value: number, tags?: Record<string, string>): void; private processMetricsBuffer; private processMetricPoint; private startAlertProcessing; private processAlerts; private checkAlertsForMetric; private evaluateAlertRule; private createAlert; private executeAlertActions; private resolveAlert; private startHealthChecks; private performHealthChecks; private executeHealthCheck; createDashboard(title: string, panels: DashboardPanel[]): string; getDashboardData(dashboardId: string): Record<string, unknown>; private getPanelData; private getCpuUsage; private getMemoryUsage; private getDiskUsage; private getNetworkUsage; private updateAgentMetrics; private updateSystemMetrics; private updateSwarmMetrics; private handleError; private isCriticalMetric; private evaluateCondition; private isAlertResolved; private getAlertTypeFromMetric; private calculateAgentUtilization; private calculateSwarmThroughput; private calculateAverageLatency; private calculateSwarmEfficiency; private calculateSwarmReliability; private calculateAverageQuality; private calculateAggregations; private cleanupOldMetrics; private cleanupResolvedAlerts; private flushMetrics; private exportMetrics; private initializeDefaultAlertRules; private initializeDefaultDashboards; private initializeHealthChecks; private performHttpHealthCheck; private performTcpHealthCheck; private sendEmailAlert; private sendWebhookAlert; private triggerAutoScale; private triggerRestart; private initializeSystemMetrics; private initializeSwarmMetrics; getSystemMetrics(): SystemMetrics; getSwarmMetrics(): SwarmMetrics; getActiveAlerts(): Alert[]; getAlertHistory(limit?: number): Alert[]; getTimeSeries(metricName: string): TimeSeries | undefined; getAllTimeSeries(): TimeSeries[]; acknowledgeAlert(alertId: string, acknowledgedBy: string): void; createAlertRule(rule: Omit<AlertRule, "id">): string; updateAlertRule(ruleId: string, updates: Partial<AlertRule>): void; deleteAlertRule(ruleId: string): void; getAlertRules(): AlertRule[]; getMonitoringStatistics(): { metricsCount: number; activeAlerts: number; alertRules: number; healthChecks: number; dashboards: number; uptime: number; }; } //# sourceMappingURL=real-time-monitor.d.ts.map