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
TypeScript
/**
* 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