/** * Frontend Plugin Orchestrator * * Handles frontend/tooling plugin registration and lifecycle. This is * intentionally separate from the service runtime PluginManager. */ type FrontendCapability = "frontend-build" | "static-serve" | "frontend-dev"; interface Logger { info?: (...args: unknown[]) => void; warn?: (...args: unknown[]) => void; error?: (...args: unknown[]) => void; } interface OrchestratorOptions { logger?: Logger; } interface SiteFrontendConfig { plugin?: string; [key: string]: unknown; } interface Site { siteId?: string; frontend?: SiteFrontendConfig; [key: string]: unknown; } interface StaticMount { path: string; dir: string; [key: string]: unknown; } interface DisposeError { name: string; error: string; } interface FrontendPlugin { name: string; capabilities: FrontendCapability[]; validate?: (ctx: Record) => Promise | void; register?: (ctx: Record) => Promise | void; dispose?: (ctx: Record) => Promise | void; buildSite?: (ctx: Record, site: Site) => Promise | unknown; staticMounts?: (ctx: Record, site: Site) => Promise | StaticMount[]; devSite?: (ctx: Record, site: Site) => Promise | unknown; [key: string]: unknown; } export declare const FRONTEND_PLUGIN_CAPABILITIES: readonly FrontendCapability[]; export declare class FrontendPluginOrchestrator { plugins: Map; private _logger; constructor(options?: OrchestratorOptions); register(plugins: unknown[] | null | undefined): void; get(name: string): FrontendPlugin | null; has(name: string): boolean; list(): FrontendPlugin[]; pluginsForCapability(capability: FrontendCapability): FrontendPlugin[]; validateAll(ctx?: Record): Promise; registerAll(ctx?: Record): Promise; disposeAll(ctx?: Record): Promise; resolvePluginForSite(site: Site | null | undefined): FrontendPlugin | null; buildSite(site: Site | null | undefined, ctx?: Record): Promise; staticMounts(site: Site | null | undefined, ctx?: Record): Promise; devSite(site: Site | null | undefined, ctx?: Record): Promise; } export {}; //# sourceMappingURL=FrontendPluginOrchestrator.d.ts.map