/** * Output Selector - Intelligent strategy selection based on context * * Analyzes context signals to recommend the most appropriate output strategy. * Provides automatic selection with confidence scoring and reasoning. * * @module gateway/output-selector */ import { OutputApproach } from "../strategies/output-strategy.js"; /** * Context signals used to determine the appropriate output strategy. * * @interface ContextSignals */ export interface ContextSignals { /** Keywords extracted from context or user input (expected to be normalized to lowercase) */ keywords: string[]; /** Optional domain type identifier (e.g., "PromptResult", "SessionState") */ domainType?: string; /** Whether the context references a constitution or constraint document */ hasConstitution?: boolean; } /** * Result of output strategy recommendation. * * @interface RecommendationResult */ export interface RecommendationResult { /** Recommended output approach */ approach: OutputApproach; /** Confidence score (0-100) */ confidence: number; /** Human-readable reasoning for the recommendation */ reasoning: string; } /** * Extract keywords from context text. * * Simple extraction that splits on whitespace and punctuation, * filters out common stop words, and normalizes to lowercase. * Preserves file extensions like .md in filenames. * * @param context - Input text to analyze * @returns Array of extracted keywords */ export declare function extractKeywords(context: string): string[]; /** * Select the appropriate output approach based on context signals. * * Decision logic: * 1. If constitution is referenced → SPECKIT (high confidence) * 2. If ≥2 Spec-Kit signals detected → SPECKIT * 3. Otherwise → CHAT (default) * * @param signals - Context signals for strategy selection * @returns Recommended output approach */ export declare function selectApproach(signals: ContextSignals): OutputApproach; /** * Calculate confidence score for a recommendation. * * Confidence scoring: * - Constitution present: 95% * - 3+ Spec-Kit signals: 90% * - 2 Spec-Kit signals: 75% * - Default (CHAT): 60% * * @param signals - Context signals * @param approach - Selected approach * @returns Confidence score (0-100) */ export declare function calculateConfidence(signals: ContextSignals, approach: OutputApproach): number; /** * Generate human-readable reasoning for the recommendation. * * @param signals - Context signals * @param approach - Selected approach * @returns Reasoning explanation */ export declare function generateReasoning(signals: ContextSignals, approach: OutputApproach): string; /** * Recommend an output approach based on context analysis. * * This is the main entry point for strategy selection. It: * 1. Extracts keywords from context * 2. Detects constitution references * 3. Selects appropriate approach * 4. Calculates confidence and generates reasoning * * @param context - Input context text to analyze * @returns Recommendation with approach, confidence, and reasoning * * @example * ```typescript * const result = recommendApproach('Create a spec.md and plan.md for the project'); * // Returns: { approach: OutputApproach.SPECKIT, confidence: 75, reasoning: "..." } * ``` */ export declare function recommendApproach(context: string): RecommendationResult; //# sourceMappingURL=output-selector.d.ts.map