/** * RFCStrategy - Request for Comments document format * * Renders domain results as RFC (Request for Comments) documents with * standard sections for formal technical proposals. * * @module strategies/rfc-strategy * @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} ยง4.2 */ import type { SessionState } from "../domain/design/types.js"; import type { PromptResult } from "../domain/prompting/types.js"; import type { OutputArtifacts, RenderOptions } from "./output-strategy.js"; import { OutputApproach } from "./output-strategy.js"; import { BaseStrategy } from "./shared/base-strategy.js"; import type { ValidationResult } from "./shared/types.js"; /** * RFCStrategy implements the RFC (Request for Comments) document format. * * Supports rendering: * - PromptResult: Convert prompt analysis to RFC proposal * - SessionState: Convert design session to RFC document * * @extends {BaseStrategy} */ export declare class RFCStrategy extends BaseStrategy { protected readonly name = "rfc"; protected readonly version = "2.0.0"; /** The output approach this strategy implements */ readonly approach = OutputApproach.RFC; /** * Validate that the input is a PromptResult or SessionState. * * @param input - Input to validate * @returns Validation result */ validate(input: PromptResult | SessionState): ValidationResult; /** * Execute the RFC rendering strategy. * * @param input - The domain result to render (PromptResult or SessionState) * @returns Output artifacts with primary RFC document */ execute(input: PromptResult | SessionState, options?: Partial): Promise; /** * Check if this strategy supports rendering a specific domain type. * * @param domainType - The domain type identifier * @returns True if this strategy can render the domain type */ supports(domainType: string): boolean; /** * Render a PromptResult to RFC format. * * @param result - The prompt result to render * @param options - Optional rendering options * @returns Output artifacts with RFC document * @private */ private renderPromptAsRFC; /** * Render a SessionState to RFC format. * * @param result - The session state to render * @returns Output artifacts with RFC document * @private */ private renderSessionAsRFC; /** * Extract title from PromptResult. * * @param result - The prompt result * @returns Extracted title * @private */ private extractTitle; /** * Extract summary from PromptResult. * * @param result - The prompt result * @returns Extracted summary * @private */ private extractSummary; /** * Extract scope from PromptResult. * * @param result - The prompt result * @returns Extracted scope * @private */ private extractScope; /** * Extract proposal from PromptResult. * * @param result - The prompt result * @returns Extracted proposal * @private */ private extractProposal; /** * Extract pros from PromptResult. * * @param result - The prompt result * @returns Extracted pros as bullet list * @private */ private extractPros; /** * Extract cons from PromptResult. * * @param result - The prompt result * @returns Extracted cons as bullet list * @private */ private extractCons; /** * Extract alternatives from PromptResult. * * @param result - The prompt result * @returns Extracted alternatives * @private */ private extractAlternatives; /** * Extract conclusion from PromptResult. * * @param result - The prompt result * @returns Extracted conclusion * @private */ private extractConclusion; /** * Extract title from SessionState. * * @param result - The session state * @returns Extracted title * @private */ private extractSessionTitle; /** * Extract summary from SessionState. * * @param result - The session state * @returns Extracted summary * @private */ private extractSessionSummary; /** * Extract scope from SessionState. * * @param result - The session state * @returns Extracted scope * @private */ private extractSessionScope; /** * Extract proposal from SessionState. * * @param result - The session state * @returns Extracted proposal * @private */ private extractSessionProposal; /** * Extract pros from SessionState. * * @param result - The session state * @returns Extracted pros as bullet list * @private */ private extractSessionPros; /** * Extract cons from SessionState. * * @param result - The session state * @returns Extracted cons as bullet list * @private */ private extractSessionCons; /** * Extract alternatives from SessionState. * * @param result - The session state * @returns Extracted alternatives * @private */ private extractSessionAlternatives; /** * Extract conclusion from SessionState. * * @param result - The session state * @returns Extracted conclusion * @private */ private extractSessionConclusion; /** * Format RFC content with optional metadata footer. * * @param baseContent - The base RFC content without metadata * @param options - Optional rendering options * @returns Formatted content with or without metadata footer * @private */ private formatRFCContent; /** * Type guard for PromptResult. * * @param result - The value to check * @returns True if result is a PromptResult * @private */ private isPromptResult; /** * Type guard for SessionState. * * @param result - The value to check * @returns True if result is a SessionState * @private */ private isSessionState; } //# sourceMappingURL=rfc-strategy.d.ts.map