@boundless-oss/atlas
Version:
Atlas - MCP Server for comprehensive startup project management
194 lines • 5.17 kB
TypeScript
/**
* 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