/** * Plugin manager for discovering and loading evaluator plugins. * * Supports: * 1. Built-in evaluators (TypeScript, HTML) * 2. External plugins via npm packages with praisonaibench.evaluators field * 3. Programmatic registration via register() method * * External plugins should declare evaluators in package.json: * ```json * { * "praisonaibench": { * "evaluators": { * "python": "./dist/evaluator.js" * } * } * } * ``` */ import { BaseEvaluator } from './base-evaluator'; export interface LoadedPlugin { language: string; packageName: string; evaluator: BaseEvaluator; } /** * Manages evaluator plugins for different languages. * * Automatically discovers and loads plugins from: * 1. Built-in evaluators (TypeScript, HTML) * 2. npm packages with praisonaibench.evaluators in package.json */ export declare class PluginManager { private evaluators; private loadedPlugins; constructor(autoDiscover?: boolean); /** * Load built-in evaluators (TypeScript/JavaScript and HTML). */ private loadBuiltinEvaluators; /** * Discover and load plugins from npm packages. * * Scans node_modules for packages with praisonaibench.evaluators field. */ discoverPlugins(): void; /** * Load a single plugin from plugin info. */ private loadPlugin; /** * Load a plugin from a specific npm package. * * @param packageName - Name of the npm package * @returns True if plugin was loaded successfully */ loadPluginFromPackage(packageName: string): boolean; /** * Register an evaluator for a language. * * @param language - Language identifier (case-insensitive) * @param evaluator - Evaluator instance */ register(language: string, evaluator: BaseEvaluator): void; /** * Get evaluator for a language. * * @param language - Language identifier (case-insensitive) * @returns Evaluator instance or undefined if not found */ getEvaluator(language: string): BaseEvaluator | undefined; /** * Get list of all supported languages. * * @returns List of language identifiers */ listLanguages(): string[]; /** * Check if evaluator exists for a language. * * @param language - Language identifier (case-insensitive) * @returns True if evaluator exists */ hasEvaluator(language: string): boolean; /** * Unregister an evaluator. * * @param language - Language identifier to unregister */ unregister(language: string): boolean; /** * Get list of loaded external plugins. */ getLoadedPlugins(): LoadedPlugin[]; /** * Get plugin info for a specific language. */ getPluginInfo(language: string): LoadedPlugin | undefined; /** * Reload all plugins (useful for development). */ reloadPlugins(): void; } //# sourceMappingURL=plugin-manager.d.ts.map