UNPKG

@boundless-oss/atlas

Version:

Atlas - MCP Server for comprehensive startup project management

194 lines 5.17 kB
/** * Performance Monitor * Implements MCP Design Guide Section 5.3 principles for performance measurement and observability */ export interface PerformanceMetrics { toolName: string; executionTime: number; success: boolean; errorType?: string; tokenCount?: number; cost?: number; timestamp: number; userId?: string; sessionId: string; parameters?: any; } export interface ToolQualityMetrics { toolName: string; totalCalls: number; successRate: number; averageExecutionTime: number; medianExecutionTime: number; p95ExecutionTime: number; errorTypes: Record<string, number>; totalTokens: number; totalCost: number; lastCalled: number; } export interface SystemMetrics { totalTools: number; totalCalls: number; overallSuccessRate: number; averageLatency: number; totalTokensUsed: number; totalCost: number; topPerformingTools: Array<{ tool: string; successRate: number; calls: number; }>; slowestTools: Array<{ tool: string; avgTime: number; calls: number; }>; mostErrorProneTools: Array<{ tool: string; errorRate: number; calls: number; }>; errorBreakdown: Record<string, number>; timeRange: { start: number; end: number; }; } export interface LLMJudgeEvaluation { toolName: string; outputQuality: number; appropriatenessScore: number; completenessScore: number; accuracyScore: number; comments: string; evaluationCriteria: string[]; timestamp: number; } /** * Comprehensive performance monitoring and observability system */ export declare class PerformanceMonitor { private static instance; private metrics; private qualityEvaluations; private activeTraces; private constructor(); static getInstance(): PerformanceMonitor; /** * Start tracking a tool execution */ startTrace(traceId: string, toolName: string, context: { userId?: string; sessionId: string; parameters?: any; }): void; /** * End tracking and record metrics */ endTrace(traceId: string, success: boolean, errorType?: string, additionalMetrics?: { tokenCount?: number; cost?: number; }): void; /** * Start monitoring (no-op for compatibility) */ startMonitoring(): void; /** * Stop monitoring (no-op for compatibility) */ stopMonitoring(): void; /** * Record tool execution for simple use cases */ recordToolExecution(toolName: string, executionTime: number, success?: boolean): void; /** * Record LLM-as-a-Judge evaluation */ recordQualityEvaluation(evaluation: Omit<LLMJudgeEvaluation, 'timestamp'>): void; /** * Generate comprehensive metrics for a specific tool */ getToolMetrics(toolName: string, timeRange?: { start: number; end: number; }): ToolQualityMetrics | null; /** * Generate system-wide performance metrics */ getSystemMetrics(timeRange?: { start: number; end: number; }): SystemMetrics; /** * Get quality evaluation metrics */ getQualityMetrics(toolName?: string): { averageQuality: number; averageAppropriateness: number; averageCompleteness: number; averageAccuracy: number; totalEvaluations: number; evaluationTrend: Array<{ timestamp: number; quality: number; }>; }; /** * Generate performance alerts */ generateAlerts(): Array<{ type: string; message: string; severity: 'low' | 'medium' | 'high'; }>; /** * Export metrics for external analysis */ exportMetrics(format?: 'json' | 'csv'): string; /** * Get module-specific metrics */ getModuleMetrics(moduleName?: string): Record<string, any>; /** * Get all tool metrics as a summary */ getAllToolMetrics(): Record<string, ToolQualityMetrics>; /** * Analyze performance bottlenecks */ analyzeBottlenecks(options?: { threshold?: number; }): any; /** * Generate performance report */ generatePerformanceReport(options?: { format?: string; includeRecommendations?: boolean; }): any; /** * Clear metrics data */ clearMetrics(options?: { before?: string; }): any; private convertReportToCSV; private sanitizeParameters; /** * Persist a metric to the database */ private persistMetric; /** * Load metrics from database for a time range */ loadMetricsFromDB(timeRangeHours: number): Promise<PerformanceMetrics[]>; } /** * Decorator for automatic performance monitoring */ export declare function monitorPerformance(target: any, propertyKey: string, descriptor: PropertyDescriptor): PropertyDescriptor; /** * Create a unique trace ID for manual tracking */ export declare function createTraceId(toolName: string): string; //# sourceMappingURL=performance-monitor.d.ts.map