/**
* Performance Optimization Layer
*
* Provides intelligent performance optimization for A2A tool invocations.
* Includes predictive optimization, adaptive resource allocation, and
* machine learning-based performance tuning.
*/
///
import { EventEmitter } from "events";
import { PerformanceMonitor } from "../../../monitoring/performance-monitor.js";
import { A2AToolInvocation, A2AToolResponse, A2AToolContext } from "./a2a-tool-wrapper.js";
import { MCPToolRegistry } from "./mcp-a2a-tool-registry.js";
export interface PerformanceProfile {
toolId: string;
averageLatency: number;
p95Latency: number;
p99Latency: number;
successRate: number;
errorRate: number;
throughput: number;
resourceUtilization: {
cpu: number;
memory: number;
network: number;
io: number;
};
contextMetrics: {
trustLevelPerformance: Record;
parameterSizeImpact: number;
timeOfDayVariance: number;
loadFactorImpact: number;
};
lastUpdated: Date;
}
export interface OptimizationStrategy {
id: string;
name: string;
description: string;
conditions: OptimizationCondition[];
actions: OptimizationAction[];
priority: number;
successRate: number;
averageImprovement: number;
enabled: boolean;
}
export interface OptimizationCondition {
type: "latency" | "error_rate" | "throughput" | "resource_usage" | "context" | "custom";
operator: "gt" | "lt" | "eq" | "gte" | "lte" | "contains" | "matches";
value: any;
threshold?: number;
customCheck?: (profile: PerformanceProfile, context: A2AToolContext) => boolean;
}
export interface OptimizationAction {
type: "cache" | "parallel" | "retry" | "circuit_breaker" | "load_balance" | "precompute" | "batch" | "custom";
parameters: Record;
execute: (invocation: A2AToolInvocation, context: OptimizationContext) => Promise;
}
export interface OptimizationContext {
originalInvocation: A2AToolInvocation;
performanceProfile: PerformanceProfile;
systemLoad: SystemLoadMetrics;
historicalData: HistoricalPerformanceData;
constraints: PerformanceConstraints;
}
export interface OptimizationResult {
success: boolean;
optimizationApplied: string[];
performanceImprovement: {
latencyReduction: number;
throughputIncrease: number;
resourceSavings: Record;
};
response?: A2AToolResponse;
metadata: {
executionTime: number;
optimizationOverhead: number;
cacheHit: boolean;
fallbackUsed: boolean;
};
}
export interface SystemLoadMetrics {
cpuUsage: number;
memoryUsage: number;
networkLatency: number;
diskIO: number;
activeConnections: number;
queueLength: number;
timestamp: Date;
}
export interface HistoricalPerformanceData {
timeWindow: string;
invocations: number;
patterns: {
peakHours: number[];
commonParameterSizes: number[];
frequentErrors: string[];
performanceTrends: Array<{
timestamp: Date;
metric: string;
value: number;
}>;
};
}
export interface PerformanceConstraints {
maxLatency?: number;
maxResourceUsage?: number;
minSuccessRate?: number;
budget?: number;
availabilityTarget?: number;
}
export interface PredictionModel {
id: string;
name: string;
type: "linear" | "neural" | "ensemble" | "statistical";
features: string[];
accuracy: number;
lastTrained: Date;
predictions: Record;
}
/**
* Main performance optimization layer
*/
export declare class PerformanceOptimizationLayer extends EventEmitter {
private logger;
private cache;
private performanceMonitor;
private toolRegistry;
private performanceProfiles;
private optimizationStrategies;
private systemLoadHistory;
private predictionModels;
private circuitBreakers;
private loadBalancers;
private batchProcessors;
constructor(toolRegistry: MCPToolRegistry, performanceMonitor: PerformanceMonitor);
/**
* Optimize tool invocation with intelligent strategies
*/
optimizeInvocation(invocation: A2AToolInvocation): Promise;
/**
* Get or create performance profile for a tool
*/
getPerformanceProfile(toolId: string): Promise;
/**
* Predict performance for an invocation
*/
predictPerformance(invocation: A2AToolInvocation): Promise<{
estimatedLatency: number;
estimatedSuccessRate: number;
estimatedResourceUsage: Record;
confidence: number;
}>;
/**
* Enable or disable optimization strategies
*/
configureOptimizationStrategy(strategyId: string, enabled: boolean): void;
/**
* Add custom optimization strategy
*/
addOptimizationStrategy(strategy: OptimizationStrategy): void;
/**
* Get performance statistics
*/
getPerformanceStatistics(): {
totalOptimizations: number;
averageImprovement: number;
strategyEffectiveness: Record;
systemLoad: SystemLoadMetrics;
profileCount: number;
};
/**
* Private helper methods
*/
private initializeOptimizationStrategies;
private selectOptimizationStrategies;
private evaluateConditions;
private evaluateCondition;
private compareValues;
private applyOptimizationStrategy;
private applyCachingOptimization;
private applyCircuitBreakerOptimization;
private applyLoadBalancingOptimization;
private applyParallelExecutionOptimization;
private applyBatchProcessingOptimization;
private executeWithoutOptimization;
private generateCacheKey;
private canParallelize;
private extractConstraints;
private getCurrentSystemLoad;
private getHistoricalData;
private updatePerformanceProfile;
private updateStrategyMetrics;
private startPerformanceMonitoring;
private getOrCreateCircuitBreaker;
private getOrCreateLoadBalancer;
private getOrCreateBatchProcessor;
}
//# sourceMappingURL=performance-optimization-layer.d.ts.map