/** * SpecCompletionSummary - Displays spec generation recap * * Shows the goal, key decisions, file preview, and "what's next" * section after a spec has been generated. Extracts a recap from * the conversation history using heuristic text analysis. */ import React from 'react'; import type { Message } from './MessageList.js'; /** * Props for the SpecCompletionSummary component */ export interface SpecCompletionSummaryProps { /** Name of the feature */ featureName: string; /** Generated spec content */ spec: string; /** Path where spec was saved */ specPath: string; /** Conversation messages from the interview */ messages: Message[]; } /** Strip filler prefixes from AI recap text and capitalize. */ export declare function normalizeRecap(text: string): string; /** Strip user speech filler and normalize decision text: add trailing period if missing, capitalize. */ export declare function normalizeUserDecision(text: string): string; /** Truncate text to max characters with ellipsis. */ export declare function summarizeText(text: string, max?: number): string; /** Return true if the decision string is substantive enough to display (>= 8 chars and >= 3 words). */ export declare function isUsefulDecision(entry: string): boolean; /** * Extract goal and key decisions from conversation messages. * * @returns `goalCandidate` — a one-line summary of the feature goal (polished * via selectGoalSource + polishGoalSentence), and * `decisions` — up to 4 key decisions extracted from the conversation. */ export declare function extractRecap(messages: Message[], featureName: string): { goalCandidate: string; decisions: string[]; }; /** * SpecCompletionSummary component * * Renders the spec generation completion recap inline within the * InterviewScreen content area. */ export declare function SpecCompletionSummary({ featureName, spec, specPath, messages, }: SpecCompletionSummaryProps): React.ReactElement;