export interface ComplexityAnalysisResult { /** Complexity score from 0 to 1 */ complexityScore: number; /** Whether the request is considered complex (score > threshold) */ isComplex: boolean; /** List of detected tasks */ detectedTasks: string[]; /** Sequential indicators found (then, after, next, etc.) */ sequentialIndicators: string[]; /** Number of questions detected */ questionCount: number; /** Whether to suggest using todos */ shouldSuggestTodos: boolean; /** The suggestion reminder text if applicable */ suggestionReminder?: string; } export interface ComplexityAnalyzerOptions { /** Threshold for considering a task complex (default: 0.5) */ complexityThreshold?: number; /** Minimum number of tasks to suggest todos (default: 3) */ minTasksForSuggestion?: number; } export interface AnalysisStats { /** Total number of analyses performed */ totalAnalyses: number; /** Number of complex requests detected */ complexRequestCount: number; /** Number of todo suggestions generated */ suggestionsGenerated: number; /** Average complexity score across all analyses */ averageComplexityScore: number; } /** * Service that analyzes user messages to detect multi-step tasks * and determine when todo lists should be suggested. * @requirement REQ-005.1 */ export declare class ComplexityAnalyzer { private readonly complexityThreshold; private readonly minTasksForSuggestion; private analysisHistory; private readonly sequentialKeywords; private readonly taskSeparatorPattern; constructor(options?: ComplexityAnalyzerOptions); /** * Analyzes a user message to determine its complexity and whether * it would benefit from using a todo list. * @requirement REQ-005.2 */ analyzeComplexity(message: string): ComplexityAnalysisResult; /** * Extracts individual tasks from the message using various patterns. * @requirement REQ-005.2 */ private extractTasks; /** * Extracts file references from the message. * NOTE: No longer used for complexity counting to reduce false positives, * but kept in case needed for future functionality. */ /** * Finds sequential indicator keywords in the message. * @requirement REQ-005.2 */ private findSequentialIndicators; /** * Counts the number of questions in the message. */ private countQuestions; /** * Determines if a message is narrative-heavy enough to count as complex. */ private isNarrativeComplex; private extractListTaskFromLine; private isAllDigits; private normalizeTaskText; private isWhitespaceChar; /** * Calculates a complexity score based on various factors. */ private calculateComplexityScore; /** * Generates a suggestion reminder for using todos. * @requirement REQ-005.3 */ private generateSuggestionReminder; /** * Creates an empty result for edge cases. */ private createEmptyResult; /** * Gets the current complexity threshold. */ getComplexityThreshold(): number; /** * Gets analysis statistics. * @requirement REQ-005.4 */ getAnalysisStats(): AnalysisStats; /** * Resets the analysis history. */ reset(): void; }