/** * Performance Monitoring System for WordPress MCP Server * Collects, analyzes, and reports performance metrics */ export interface PerformanceMetrics { requests: { total: number; successful: number; failed: number; averageResponseTime: number; minResponseTime: number; maxResponseTime: number; requestsPerSecond: number; p50ResponseTime: number; p95ResponseTime: number; p99ResponseTime: number; }; cache: { hits: number; misses: number; hitRate: number; totalSize: number; memoryUsageMB: number; evictions: number; averageCacheTime: number; }; system: { cpuUsage: number; memoryUsage: number; uptime: number; activeConnections: number; concurrentRequests: number; }; wordpress: { authSuccessRate: number; apiVersion: string; siteHealth: "healthy" | "warning" | "critical"; averageDbResponseTime: number; pluginCompatibility: number; }; tools: { mostUsedTool: string; toolUsageCount: Record; toolPerformance: Record; }; } export interface PerformanceAlert { id: string; timestamp: number; severity: "info" | "warning" | "error" | "critical"; category: "performance" | "cache" | "system" | "wordpress"; message: string; metric: string; threshold: number; actualValue: number; suggestion?: string; } export interface PerformanceConfig { collectInterval: number; retentionPeriod: number; alertThresholds: { responseTime: number; errorRate: number; cacheHitRate: number; memoryUsage: number; cpuUsage: number; }; enableRealTimeMonitoring: boolean; enableHistoricalData: boolean; enableAlerts: boolean; } /** * Core Performance Monitor class */ export declare class PerformanceMonitor { private metrics; private historicalData; private alerts; private config; private startTime; private responseTimes; private collectionTimer?; private lastAlertTime; private static readonly ALERT_COOLDOWN_MS; constructor(config?: Partial); /** * Initialize empty metrics structure */ private initializeMetrics; /** * Record a request performance metric */ recordRequest(responseTime: number, success: boolean, toolName?: string): void; /** * Update cache metrics from cache manager */ updateCacheMetrics(cacheStats: Record): void; /** * Update system metrics */ updateSystemMetrics(): void; /** * Get current performance metrics */ getMetrics(): PerformanceMetrics; /** * Get historical performance data */ getHistoricalData(startTime?: number, endTime?: number): PerformanceMetrics[]; /** * Get performance alerts */ getAlerts(severity?: string): PerformanceAlert[]; /** * Clear alerts */ clearAlerts(): void; /** * Generate performance insights */ generateInsights(): { summary: string; recommendations: string[]; trends: string[]; health: "excellent" | "good" | "warning" | "critical"; }; /** * Export performance data */ exportData(format?: "json" | "csv"): string; /** * Start automatic metric collection * Note: This uses setInterval and is not called in test environments to avoid Jest timer issues */ private startCollection; /** * Stop metric collection */ stop(): void; /** * Record tool usage and performance */ private recordToolUsage; /** * Update response time metrics with percentiles */ private updateResponseTimeMetrics; /** * Get percentile value from sorted array */ private getPercentile; /** * Estimate cache memory usage */ private estimateCacheMemoryUsage; /** * Get CPU usage (simplified) */ private getCpuUsage; /** * Check for performance alerts */ private checkPerformanceAlerts; /** * Add performance alert with per-metric cooldown to prevent spam. * If the same (metric, severity) fired within the cooldown window, * only the timestamp and actual value on the existing alert are updated. */ private addAlert; /** * Calculate overall system health */ private calculateOverallHealth; /** * Generate performance summary */ private generateSummary; /** * Generate performance recommendations */ private generateRecommendations; /** * Generate trend analysis */ private generateTrends; /** * Check if values are increasing */ private isIncreasing; /** * Check if values are decreasing */ private isDecreasing; /** * Convert data to CSV format */ private convertToCSV; /** * Clean up old historical data */ private cleanupOldData; } //# sourceMappingURL=PerformanceMonitor.d.ts.map