UNPKG

codecrucible-synth

Version:

Production-Ready AI Development Platform with Multi-Voice Synthesis, Smithery MCP Integration, Enterprise Security, and Zero-Timeout Reliability

106 lines 3.94 kB
/** * Provider Interface Abstractions * Breaking circular dependencies in provider management * * Living Spiral Council Applied: * - Architect: Provider abstraction without implementation coupling * - Maintainer: Stable provider contracts for multiple implementations * - Security Guardian: Controlled provider access and validation * - Performance Engineer: Efficient provider selection and health monitoring */ export type ProviderType = 'ollama' | 'lm-studio' | 'huggingface' | 'auto'; export interface ProviderConfig { type: ProviderType; endpoint?: string; apiKey?: string; model?: string; timeout?: number; maxRetries?: number; enabled?: boolean; fallbackOrder?: number; } export interface ProviderStatus { type: ProviderType; isHealthy: boolean; isInitialized: boolean; lastHealthCheck: Date; errorCount: number; models: string[]; endpoint: string; } export interface ProviderInitResult { success: boolean; error?: Error; duration: number; provider?: IModelProvider; } export interface IModelProvider { processRequest(request: any): Promise<any>; healthCheck(): Promise<boolean>; supportsModel?(model: string): boolean; getAvailableModels?(): Promise<string[]>; switchModel?(modelName: string): Promise<void>; getConfig(): ProviderConfig; updateConfig(config: Partial<ProviderConfig>): Promise<void>; initialize(): Promise<void>; shutdown(): Promise<void>; } export interface IProviderRepository { initialize(configs: ProviderConfig[]): Promise<void>; shutdown(): Promise<void>; getProvider(type: ProviderType): IModelProvider | undefined; getAvailableProviders(): Map<ProviderType, IModelProvider>; getAllProviders(): ProviderType[]; checkProviderHealth(type: ProviderType): Promise<boolean>; getProviderStatus(type: ProviderType): ProviderStatus | undefined; getAllProviderStatuses(): Map<ProviderType, ProviderStatus>; enableProvider(type: ProviderType): Promise<void>; disableProvider(type: ProviderType): Promise<void>; switchProvider(from: ProviderType, to: ProviderType): Promise<void>; getAvailableModels(providerType?: ProviderType): Promise<string[]>; switchModel(providerType: ProviderType, modelName: string): Promise<void>; updateProviderConfig(type: ProviderType, config: Partial<ProviderConfig>): Promise<void>; getProviderConfig(type: ProviderType): ProviderConfig | undefined; } export interface IProviderFactory { createProvider(config: ProviderConfig): Promise<IModelProvider>; createOllamaProvider(config: ProviderConfig): Promise<IModelProvider>; createLMStudioProvider(config: ProviderConfig): Promise<IModelProvider>; createHuggingFaceProvider(config: ProviderConfig): Promise<IModelProvider>; } export interface ProviderEvents { providerInitialized: { type: ProviderType; provider: IModelProvider; }; providerFailed: { type: ProviderType; error: Error; }; providerHealthChanged: { type: ProviderType; isHealthy: boolean; }; providerEnabled: { type: ProviderType; }; providerDisabled: { type: ProviderType; }; modelSwitched: { type: ProviderType; model: string; }; } export interface IProviderSelector { selectProvider(request: any, availableProviders: Map<ProviderType, IModelProvider>): IModelProvider | null; selectOptimalProvider(criteria: any): IModelProvider | null; getRankedProviders(request: any): IModelProvider[]; } export interface IProviderPerformanceTracker { recordRequest(providerType: ProviderType, duration: number, success: boolean): void; getProviderMetrics(providerType: ProviderType): any; getPerformanceRanking(): ProviderType[]; resetMetrics(providerType?: ProviderType): void; } //# sourceMappingURL=provider-interfaces.d.ts.map