/** * PolyglotGateway - Central orchestrator for output strategies * * Coordinates domain services, output strategies, and cross-cutting capabilities. * Provides a unified interface for rendering domain results in multiple formats * with optional cross-cutting artifacts (workflows, diagrams, configs, etc.). * * @module gateway/polyglot-gateway * @see {@link https://github.com/Anselmoo/mcp-ai-agent-guidelines/blob/development/plan-v0.13.x/specs/SPEC-001-output-strategy-layer.md SPEC-001} ยง6 */ import { type CrossCuttingCapability, OutputApproach, type OutputArtifacts, type RenderOptions } from "../strategies/output-strategy.js"; /** * Request structure for the PolyglotGateway. * * Contains domain result, rendering preferences, and cross-cutting capabilities * to be applied to the output. * * @interface GatewayRequest */ export interface GatewayRequest { /** Domain result to be rendered (e.g., SessionState, PromptResult, ScoringResult) */ domainResult: unknown; /** Domain type identifier for strategy selection (e.g., "SessionState", "PromptResult") */ domainType: string; /** Output approach to use (defaults to CHAT) */ approach?: OutputApproach; /** Cross-cutting capabilities to add to the output */ crossCutting?: CrossCuttingCapability[]; /** Optional rendering options */ options?: Partial; } /** * PolyglotGateway orchestrates output strategies and cross-cutting capabilities. * * Provides a centralized interface for: * - Rendering domain results in multiple formats (RFC, ADR, SDD, TOGAF, etc.) * - Adding cross-cutting artifacts (workflows, diagrams, configs) * - Querying supported approaches and capabilities for domain types * * @class PolyglotGateway */ export declare class PolyglotGateway { private strategies; /** * Create a new PolyglotGateway with all 7 output strategies registered. * * Strategies include: * - CHAT: Default markdown format * - RFC: Request for Comments * - ADR: Architecture Decision Record * - SDD: Spec-Driven Development * - TOGAF: Enterprise architecture * - ENTERPRISE: Traditional enterprise docs * - SPECKIT: GitHub Spec Kit format */ constructor(); /** * Render a domain result using the specified output approach and cross-cutting capabilities. * * The method: * 1. Selects the appropriate strategy based on approach (defaults to CHAT) * 2. Validates the strategy supports the domain type * 3. Renders primary and secondary documents * 4. Adds cross-cutting artifacts if requested * * @param request - Gateway request with domain result and rendering preferences * @returns Output artifacts with primary document, optional secondary docs, and cross-cutting artifacts * @throws {Error} If approach is unknown or strategy doesn't support domain type * * @example * ```typescript * const artifacts = await gateway.render({ * domainResult: promptResult, * domainType: 'PromptResult', * approach: OutputApproach.RFC, * crossCutting: [CrossCuttingCapability.WORKFLOW], * }); * ``` */ render(request: GatewayRequest): Promise; /** * Get output approaches that support a specific domain type. * * Filters registered strategies to find those compatible with * the given domain type identifier. * * @param domainType - Domain type identifier (e.g., "SessionState", "PromptResult") * @returns Array of output approaches that can render this domain type * * @example * ```typescript * const approaches = gateway.getSupportedApproaches('SessionState'); * // Returns: [OutputApproach.CHAT, OutputApproach.ADR, OutputApproach.SDD, ...] * ``` */ getSupportedApproaches(domainType: string): OutputApproach[]; /** * Get cross-cutting capabilities supported for a specific domain type. * * Delegates to the cross-cutting manager to determine which * capabilities (workflows, diagrams, configs, etc.) are applicable * to the given domain type. * * @param domainType - Domain type identifier (e.g., "SessionState", "PromptResult") * @returns Array of supported cross-cutting capabilities * * @example * ```typescript * const capabilities = gateway.getSupportedCrossCutting('SessionState'); * // Returns: [CrossCuttingCapability.WORKFLOW, CrossCuttingCapability.DIAGRAM] * ``` */ getSupportedCrossCutting(domainType: string): CrossCuttingCapability[]; } /** * Singleton instance of PolyglotGateway. * * Provides a shared gateway instance for consistent strategy orchestration * across the application. Use this instance for all rendering operations. * * @example * ```typescript * import { polyglotGateway, OutputApproach } from './gateway/index.js'; * * const artifacts = polyglotGateway.render({ * domainResult: myResult, * domainType: 'PromptResult', * approach: OutputApproach.ADR, * }); * ``` */ export declare const polyglotGateway: PolyglotGateway; //# sourceMappingURL=polyglot-gateway.d.ts.map