/** * Plugin Registry and Loader * * Central registry for all Factiii Stack plugins. * Loads plugins from the new structure: * - pipelines/ * - servers/ * - frameworks/ * - addons/ */ import type { FactiiiConfig, PluginCategory, PluginMetadata } from '../types/index.js'; export interface PluginClass { id: string; name: string; category: PluginCategory; version: string; configSchema?: Record; autoConfigSchema?: Record; shouldLoad?: (rootDir: string, config: FactiiiConfig) => Promise; detectConfig?: (rootDir: string) => Promise | null>; new (config: FactiiiConfig, secrets?: Record): any; } export interface PluginRegistry { pipelines: Record; servers: Record; frameworks: Record; addons: Record; secrets: Record; server: Record; app: Record; } /** * Central registry for all plugins * 4 categories: pipelines, servers, frameworks, addons */ export declare const registry: PluginRegistry; /** * Register a plugin */ export declare function registerPlugin(PluginClass: PluginClass): PluginClass; /** * Register multiple plugins at once */ export declare function registerPlugins(plugins: PluginClass[]): void; /** * Get a plugin by category and ID */ export declare function getPlugin(category: string, id: string): PluginClass | null; /** * Get all plugins in a category */ export declare function getPluginsByCategory(category: string): Record; /** * Get all loaded plugins as classes */ export declare function loadAllPlugins(): PluginClass[]; /** * Get a list of all registered plugins */ export declare function listPlugins(): PluginMetadata[]; /** * Create a plugin instance */ export declare function createPluginInstance(category: string, id: string, config?: FactiiiConfig, secrets?: Record): unknown; /** * Create a secret store instance (legacy) */ export declare function createSecretStore(id: string, config?: FactiiiConfig): unknown; /** * Check if a plugin is approved */ export declare function isApprovedPlugin(packageName: string): boolean; /** * Load external plugins from npm packages */ export declare function loadExternalPlugins(packageNames?: string[], trustedPlugins?: string[]): void; /** * Load only relevant plugins based on project detection * Each plugin's shouldLoad() method determines if it's relevant */ export declare function loadRelevantPlugins(rootDir: string, config?: FactiiiConfig): Promise; /** * Collect all config schemas from plugins */ export declare function collectConfigSchemas(): Record; /** * Collect all auto config schemas from plugins */ export declare function collectAutoConfigSchemas(): Record; /** * Run detectConfig on all plugins */ export declare function detectAllConfigs(rootDir: string): Promise>; export declare const plugins: { pipelines: Record; servers: Record; frameworks: Record; addons: Record; secrets: Record; }; //# sourceMappingURL=index.d.ts.map