/**
* Unified API Abstraction Layer
*
* Single interface for all Google AI models with <75ms routing optimization
* Handles model selection, fallback strategies, and performance optimization
*/
///
import { EventEmitter } from "events";
import { ModelRequest, ModelResponse, StreamChunk, HealthCheck } from "./base-model-adapter.js";
import { EnhancedStreamingConfig, StreamingContext, StreamSession } from "../streaming/enhanced-streaming-api.js";
import { VideoStreamRequest, AudioStreamRequest, VideoStreamResponse, AudioStreamResponse, MultiModalChunk } from "../types/streaming.js";
export interface UnifiedAPIConfig {
routing: {
strategy: "latency" | "cost" | "quality" | "balanced" | "custom";
latencyTarget: number;
fallbackEnabled: boolean;
circuitBreakerThreshold: number;
retryAttempts: number;
retryDelay: number;
};
caching: {
enabled: boolean;
ttl: number;
maxSize: number;
keyStrategy: "prompt" | "semantic" | "hybrid";
};
monitoring: {
metricsEnabled: boolean;
healthCheckInterval: number;
performanceThreshold: number;
};
models: {
gemini: any[];
deepmind: any[];
jules: any[];
};
streaming?: {
enabled: boolean;
config: EnhancedStreamingConfig;
};
}
export interface RoutingDecision {
selectedAdapter: string;
confidence: number;
reasoning: string;
fallbacks: string[];
routingTime: number;
factors: {
latency: number;
cost: number;
availability: number;
capability: number;
};
}
export interface UnifiedMetrics {
totalRequests: number;
successfulRequests: number;
failedRequests: number;
averageLatency: number;
averageRoutingTime: number;
cacheHitRate: number;
modelDistribution: Record;
errorDistribution: Record;
costMetrics: {
totalCost: number;
costPerRequest: number;
costPerToken: number;
};
performanceMetrics: {
p50Latency: number;
p95Latency: number;
p99Latency: number;
throughput: number;
};
}
export declare class UnifiedAPI extends EventEmitter {
private logger;
private config;
private adapters;
private circuitBreakers;
private metrics;
private performanceHistory;
private routingDecisionCache;
private capabilityMatrix;
private latencyBaseline;
private streamingAPI?;
private streamingSessions;
constructor(config: UnifiedAPIConfig);
/**
* Main generation method with unified interface
*/
generate(request: ModelRequest): Promise;
/**
* Streaming generation with unified interface
*/
generateStream(request: ModelRequest): AsyncIterableIterator;
/**
* Make fast routing decision (<75ms target)
*/
private makeRoutingDecision;
/**
* Filter adapters by capability (fast lookup using pre-built matrix)
*/
private filterCapableAdapters;
/**
* Score adapters quickly using cached metrics
*/
private scoreAdapters;
/**
* Execute request with specific adapter and handle fallbacks
*/
private executeWithAdapter;
/**
* Initialize all configured adapters
*/
private initializeAdapters;
/**
* Update capability matrix for fast lookups
*/
private updateCapabilityMatrix;
/**
* Extract required capabilities from request
*/
private extractRequiredCapabilities;
/**
* Calculate latency score (higher is better)
*/
private calculateLatencyScore;
/**
* Calculate cost score (higher is better for lower cost)
*/
private calculateCostScore;
/**
* Calculate availability score based on circuit breaker state
*/
private calculateAvailabilityScore;
/**
* Calculate capability score based on feature match
*/
private calculateCapabilityScore;
/**
* Filter adapters by circuit breaker state
*/
private filterAvailableAdapters;
/**
* Record adapter failure and update circuit breaker
*/
private recordAdapterFailure;
/**
* Reset circuit breaker on successful request
*/
private resetCircuitBreaker;
/**
* Select fallback adapter
*/
private selectFallbackAdapter;
/**
* Handle request errors with retry logic
*/
private handleRequestError;
/**
* Update performance metrics
*/
private updateMetrics;
/**
* Record performance data for optimization
*/
private recordPerformance;
/**
* Generate routing cache key
*/
private generateRoutingCacheKey;
/**
* Setup monitoring and health checks
*/
private setupMonitoring;
/**
* Start health checks for all adapters
*/
private startHealthChecks;
/**
* Analyze performance and emit insights
*/
private analyzePerformance;
/**
* Optimize routing based on performance data
*/
private optimizeRouting;
/**
* Get comprehensive metrics
*/
getMetrics(): UnifiedMetrics;
/**
* Get routing decision for a request (without executing)
*/
getRoutingDecision(request: ModelRequest): Promise;
/**
* Get adapter health status
*/
getAdapterHealth(): Promise>;
/**
* Create a new streaming session with full multimedia support
*/
createStreamingSession(sessionId: string, type: "video" | "audio" | "multimodal" | "data", context: StreamingContext): Promise;
/**
* Start video streaming with real-time optimization
*/
startVideoStream(sessionId: string, request: VideoStreamRequest, context: StreamingContext): Promise;
/**
* Start audio streaming with low-latency optimization
*/
startAudioStream(sessionId: string, request: AudioStreamRequest, context: StreamingContext): Promise;
/**
* Process multi-modal chunks with synchronization
*/
processMultiModalChunk(sessionId: string, chunk: MultiModalChunk): Promise;
/**
* Get streaming session metrics
*/
getStreamingMetrics(sessionId?: string): any;
/**
* Adapt stream quality in real-time
*/
adaptStreamQuality(sessionId: string, streamId: string, _targetQuality?: any): Promise;
/**
* End streaming session and cleanup
*/
endStreamingSession(sessionId: string): Promise;
/**
* Emergency stream degradation
*/
emergencyStreamDegrade(sessionId: string, reason: string): Promise;
/**
* Initialize streaming API if enabled
*/
private initializeStreaming;
/**
* Validate streaming latency against targets
*/
private validateStreamingLatency;
/**
* Create default streaming configuration
*/
private createDefaultStreamingConfig;
private initializeMetrics;
private updateErrorMetrics;
private estimateRequestCost;
private getBudgetThreshold;
private calculateCustomScore;
private generateReasoningExplanation;
private calculateAverageRoutingTime;
private getTotalTokensProcessed;
private sanitizeRequest;
private sanitizeResponse;
}
//# sourceMappingURL=unified-api.d.ts.map