/** * Plugin Manager for cross-cutting capabilities. * Manages plugins that generate additional artifacts alongside strategy output. * @module */ import type { CrossCuttingArtifacts, CrossCuttingCapability } from "./types.js"; /** * Plugin interface - all cross-cutting plugins must implement this. */ export interface CrossCuttingPlugin { /** Plugin identifier */ readonly name: CrossCuttingCapability; /** Plugin version */ readonly version: string; /** * Execute the plugin on strategy output. */ execute(strategyOutput: T, context: PluginContext): Promise; } /** * Context provided to plugins during execution. */ export interface PluginContext { approach: string; requestId: string; metadata: Record; } /** * Result from plugin execution. */ export interface PluginResult { success: boolean; artifacts?: Partial; error?: Error; } /** * Plugin Manager - manages cross-cutting capability plugins. * * Executes plugins in parallel using Promise.allSettled for resilience. * * @example * ```typescript * manager.register(new DiagramPlugin()); * const artifacts = await manager.execute(['diagram'], output, context); * ``` */ export declare class PluginManager { private readonly plugins; /** * Register a plugin. */ register(plugin: CrossCuttingPlugin): void; /** * Execute selected plugins on strategy output in parallel. */ execute(capabilities: CrossCuttingCapability[], strategyOutput: T, context: PluginContext): Promise<{ artifacts: CrossCuttingArtifacts; executed: string[]; errors: Array<{ plugin: string; error: Error; }>; }>; /** * Check if a capability is available. */ has(capability: CrossCuttingCapability): boolean; /** * List all registered plugins. */ list(): Array<{ name: CrossCuttingCapability; version: string; }>; private mergeArtifacts; } /** * Default singleton instance. */ export declare const pluginManager: PluginManager; //# sourceMappingURL=plugin-manager.d.ts.map