mcp-ai-agent-guidelines
Version:
A comprehensive Model Context Protocol server providing advanced tools, resources, and prompts for implementing AI agent best practices
223 lines • 6.61 kB
TypeScript
/**
* SDDStrategy - Spec-Driven Development output format
*
* Generates three interconnected documents that form a complete development specification:
* - spec.md: Requirements, constraints, acceptance criteria
* - plan.md: Implementation phases, timeline, dependencies
* - tasks.md: Task breakdown with Mermaid dependency graph
*
* @module strategies/sdd-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.4
*/
import type { SessionState } from "../domain/design/types.js";
import type { PromptResult } from "../domain/prompting/types.js";
import type { OutputArtifacts, OutputStrategy, RenderOptions } from "./output-strategy.js";
import { OutputApproach } from "./output-strategy.js";
/**
* SDDStrategy implements Spec-Driven Development output format.
*
* Supports rendering:
* - SessionState: Complete design session state into spec/plan/tasks
* - PromptResult: Prompt configuration into SDD format
*
* @implements {OutputStrategy<SessionState | PromptResult>}
*/
export declare class SDDStrategy implements OutputStrategy<SessionState | PromptResult> {
/** The output approach this strategy implements */
readonly approach = OutputApproach.SDD;
/**
* Render a domain result to SDD artifacts (spec.md, plan.md, tasks.md).
*
* @param result - The domain result to render (SessionState or PromptResult)
* @param options - Optional rendering options
* @returns Output artifacts with primary spec.md and secondary plan.md, tasks.md
* @throws {Error} If result type is not supported
*/
render(result: SessionState | PromptResult, options?: Partial<RenderOptions>): OutputArtifacts;
/**
* 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 SessionState to SDD artifacts.
*
* @param result - The session state to render
* @param options - Optional rendering options
* @returns Output artifacts with spec, plan, and tasks documents
* @private
*/
private renderSession;
/**
* Render a PromptResult to SDD artifacts.
*
* @param result - The prompt result to render
* @param options - Optional rendering options
* @returns Output artifacts with spec, plan, and tasks documents
* @private
*/
private renderPrompt;
/**
* Generate spec.md from SessionState.
*
* @param result - The session state
* @returns Specification document
* @private
*/
private generateSpec;
/**
* Generate plan.md from SessionState.
*
* @param result - The session state
* @returns Implementation plan document
* @private
*/
private generatePlan;
/**
* Generate tasks.md from SessionState.
*
* @param result - The session state
* @returns Task breakdown document with Mermaid diagram
* @private
*/
private generateTasks;
/**
* Generate spec.md from PromptResult.
*
* @param result - The prompt result
* @returns Specification document
* @private
*/
private generateSpecFromPrompt;
/**
* Generate plan.md from PromptResult.
*
* @param result - The prompt result
* @returns Implementation plan document
* @private
*/
private generatePlanFromPrompt;
/**
* Generate tasks.md from PromptResult.
*
* @param result - The prompt result
* @returns Task breakdown document
* @private
*/
private generateTasksFromPrompt;
/**
* Extract title from SessionState.
*
* @param result - The session state
* @returns Title string
* @private
*/
private extractTitle;
/**
* Extract overview from SessionState.
*
* @param result - The session state
* @returns Overview text
* @private
*/
private extractOverview;
/**
* Extract functional requirements from SessionState.
*
* @param result - The session state
* @returns Formatted requirements list
* @private
*/
private extractFunctionalRequirements;
/**
* Extract non-functional requirements from SessionState.
*
* @param result - The session state
* @returns Formatted non-functional requirements
* @private
*/
private extractNonFunctionalRequirements;
/**
* Extract constraints from SessionState.
*
* @param result - The session state
* @returns Formatted constraints list
* @private
*/
private extractConstraints;
/**
* Extract success criteria from SessionState.
*
* @param result - The session state
* @returns Formatted success criteria
* @private
*/
private extractSuccessCriteria;
/**
* Extract phases from SessionState.
*
* @param result - The session state
* @returns Formatted phases description
* @private
*/
private extractPhases;
/**
* Extract timeline from SessionState.
*
* @param result - The session state
* @returns Formatted timeline
* @private
*/
private extractTimeline;
/**
* Extract dependencies from SessionState.
*
* @param result - The session state
* @returns Formatted dependencies
* @private
*/
private extractDependencies;
/**
* Extract risks from SessionState.
*
* @param result - The session state
* @returns Formatted risks
* @private
*/
private extractRisks;
/**
* Extract tasks from SessionState.
*
* @param result - The session state
* @returns Formatted task list
* @private
*/
private extractTasks;
/**
* Generate Mermaid dependency graph from SessionState.
*
* @param result - The session state
* @returns Mermaid diagram syntax
* @private
*/
private generateDependencyGraph;
/**
* Type guard for SessionState.
*
* @param result - The value to check
* @returns True if result is a SessionState
* @private
*/
private isSessionState;
/**
* Type guard for PromptResult.
*
* @param result - The value to check
* @returns True if result is a PromptResult
* @private
*/
private isPromptResult;
}
//# sourceMappingURL=sdd-strategy.d.ts.map