@tehreet/conduit
Version:
LLM API gateway with intelligent routing, robust process management, and health monitoring
94 lines • 2.44 kB
TypeScript
import { EventEmitter } from 'events';
import { ConduitPlugin, PluginConfig, RoutingContext, RoutingDecision, HealthStatus } from '../types';
/**
* Enhanced plugin manager with lifecycle hooks and health monitoring
*/
export declare class PluginManager extends EventEmitter {
private plugins;
private pluginConfigs;
/**
* Load plugins from configuration
*/
loadPlugins(configs: PluginConfig[]): Promise<void>;
/**
* Load plugins from directory (backward compatibility)
*/
loadPluginsFromDirectory(pluginDir: string): Promise<void>;
/**
* Load a single plugin from configuration
*/
private loadPlugin;
/**
* Load a builtin plugin from the conduit package
*/
private loadBuiltinPlugin;
/**
* Load plugin from file
*/
private loadPluginFromFile;
/**
* Load plugin file (backward compatibility)
*/
private loadPluginFile;
/**
* Register a plugin with lifecycle management
*/
private registerPlugin;
/**
* Unregister a plugin
*/
private unregisterPlugin;
/**
* Execute beforeRouting hooks
*/
beforeRouting(context: RoutingContext): Promise<RoutingContext>;
/**
* Execute afterRouting hooks
*/
afterRouting(decision: RoutingDecision): Promise<RoutingDecision>;
/**
* Execute custom routing
*/
customRouting(context: RoutingContext): Promise<RoutingDecision | null>;
/**
* Get health status from all plugins
*/
getHealthStatus(): Promise<Record<string, HealthStatus>>;
/**
* Validate plugin configurations
*/
validateConfigs(): Record<string, boolean>;
/**
* Execute generic hook
*/
executeHook<T>(hookName: string, data: T): Promise<T>;
/**
* Get registered plugins
*/
getRegisteredPlugins(): string[];
/**
* Get plugin by name
*/
getPlugin(name: string): ConduitPlugin | undefined;
/**
* Get plugin configuration
*/
getPluginConfig(name: string): PluginConfig | undefined;
/**
* Get plugin count
*/
getPluginCount(): number;
/**
* Check if plugin is loaded
*/
hasPlugin(name: string): boolean;
/**
* Validate plugin interface
*/
private isValidPlugin;
/**
* Cleanup all plugins
*/
cleanup(): Promise<void>;
}
//# sourceMappingURL=EnhancedPluginManager.d.ts.map