anon-identity
Version:
Decentralized identity framework with DIDs, Verifiable Credentials, and privacy-preserving selective disclosure
196 lines • 4.87 kB
TypeScript
/**
* Secure Message Router for MCP
*
* Routes messages between agents and LLM providers with security, monitoring, and reliability
*/
import { EventEmitter } from 'events';
import { LLMRequest, LLMResponse, LLMResponseChunk, MCPError, RequestPriority, ConnectionStatus } from '../types';
import { MCPClient } from '../client';
import { AuthManager } from '../security/auth-manager';
import { AuditLogger } from '../security/audit-logger';
import { RateLimiterManager } from '../security/rate-limiter';
import { CredentialManager } from '../security/credential-manager';
/**
* Message routing configuration
*/
export interface RoutingConfig {
maxRetries: number;
retryDelay: number;
timeout: number;
circuitBreaker: {
enabled: boolean;
threshold: number;
resetTimeout: number;
};
loadBalancing: {
enabled: boolean;
strategy: 'round-robin' | 'least-connections' | 'weighted' | 'latency-based';
};
encryption: {
enabled: boolean;
algorithm: string;
};
}
/**
* Routed message
*/
export interface RoutedMessage {
id: string;
originalRequest: LLMRequest;
routedTo: string;
timestamp: Date;
attempts: number;
status: 'pending' | 'success' | 'failed' | 'timeout';
response?: LLMResponse;
error?: MCPError;
metrics: {
queueTime: number;
routingTime: number;
responseTime: number;
totalTime: number;
};
}
/**
* Provider health metrics
*/
interface ProviderHealth {
providerId: string;
status: ConnectionStatus;
successRate: number;
averageLatency: number;
errorCount: number;
lastError?: string;
lastSuccess?: Date;
circuitBreakerOpen: boolean;
}
/**
* Secure Message Router
*/
export declare class MessageRouter extends EventEmitter {
private mcpClient;
private authManager;
private auditLogger;
private rateLimiter;
private credentialManager;
private config;
private messageQueue;
private activeRequests;
private providerHealth;
private circuitBreakers;
private loadBalancer;
private encryptionKey?;
private isShuttingDown;
constructor(mcpClient: MCPClient, authManager: AuthManager, auditLogger: AuditLogger, rateLimiter: RateLimiterManager, credentialManager: CredentialManager, config?: RoutingConfig);
/**
* Route message to LLM provider
*/
routeMessage(request: LLMRequest): Promise<LLMResponse>;
/**
* Stream message to LLM provider
*/
streamMessage(request: LLMRequest): AsyncIterable<LLMResponseChunk>;
/**
* Perform security checks
*/
private performSecurityChecks;
/**
* Detect suspicious activity
*/
private detectSuspiciousActivity;
/**
* Select provider based on strategy
*/
private selectProvider;
/**
* Get available providers
*/
private getAvailableProviders;
/**
* Calculate provider score
*/
private calculateProviderScore;
/**
* Process message immediately
*/
private processMessageImmediately;
/**
* Queue message for processing
*/
private queueMessage;
/**
* Send request to provider
*/
private sendToProvider;
/**
* Initialize queues
*/
private initializeQueues;
/**
* Start queue processor
*/
private startQueueProcessor;
/**
* Process message queues
*/
private processQueues;
/**
* Update provider health metrics
*/
private updateProviderHealth;
/**
* Open circuit breaker for provider
*/
private openCircuitBreaker;
/**
* Setup health monitoring
*/
private setupHealthMonitoring;
/**
* Initialize encryption
*/
private initializeEncryption;
/**
* Encrypt request
*/
private encryptRequest;
/**
* Encrypt content
*/
private encryptContent;
/**
* Decrypt content
*/
private decryptContent;
/**
* Check if provider supports request
*/
private supportsRequest;
/**
* Get routing statistics
*/
getStatistics(): {
activeRequests: number;
queuedRequests: Record<RequestPriority, number>;
providerHealth: ProviderHealth[];
circuitBreakers: Array<{
providerId: string;
open: boolean;
resetTime?: Date;
}>;
successRate: number;
averageLatency: number;
};
/**
* Route streaming message
*/
routeStreamingMessage(request: LLMRequest): Promise<AsyncIterable<LLMResponseChunk> & {
providerId?: string;
model?: string;
}>;
/**
* Shutdown router
*/
shutdown(): Promise<void>;
}
export default MessageRouter;
//# sourceMappingURL=message-router.d.ts.map