/** * MAMA (Memory-Augmented MCP Architecture) - Outcome Tracker * * Track decision outcomes from user feedback * Tasks: 4.1-4.8 (Failure/success indicators, UserPromptSubmit analysis, outcome marking) * AC #3: Failure tracking (user feedback → outcome marked, failure_reason extracted, duration calculated) * * @module outcome-tracker * @version 1.0 * @date 2025-11-14 */ /** * Decision record from database */ interface DecisionRecord { id: string; topic: string; decision: string; outcome?: string | null; confidence?: number; created_at: number; } /** * Hook context from Claude Code */ export interface HookContext { user_message?: string; session_id?: string; } /** * Failure indicators * Task 4.2: Define failure indicators */ export declare const FAILURE_INDICATORS: RegExp[]; /** * Success indicators * Task 4.3: Define success indicators */ export declare const SUCCESS_INDICATORS: RegExp[]; /** * Partial success indicators * Task 4.3: Define partial success indicators */ export declare const PARTIAL_INDICATORS: RegExp[]; /** * Recent decision time window (1 hour in milliseconds) * Task 4.5: Only mark outcome if decision is recent (< 1 hour) */ export declare const RECENT_WINDOW_MS: number; /** * Check if message matches failure indicators * * Task 4.2: Match failure patterns * * @param message - User message * @returns True if failure detected */ export declare function matchesFailureIndicators(message: string): boolean; /** * Check if message matches success indicators * * Task 4.3: Match success patterns * * @param message - User message * @returns True if success detected */ export declare function matchesSuccessIndicators(message: string): boolean; /** * Check if message matches partial success indicators * * Task 4.3: Match partial success patterns * * @param message - User message * @returns True if partial success detected */ export declare function matchesPartialIndicators(message: string): boolean; /** * Outcome type from analysis */ export type OutcomeType = 'FAILED' | 'SUCCESS' | 'PARTIAL'; /** * Determine outcome from user message * * Task 4.4, 4.5: Analyze user message for indicators * AC #3: Failure tracking from user feedback * * @param message - User message * @returns Outcome type ('FAILED', 'SUCCESS', 'PARTIAL') or null */ export declare function analyzeOutcome(message: string): OutcomeType | null; /** * Extract failure reason from user message * * Task 4.6: Extract failure_reason from user message * AC #3: failure_reason extracted * * Simple extraction: First sentence or first 200 characters * Future: Use LLM for better extraction * * @param message - User message * @param outcome - Outcome type * @returns Failure reason */ export declare function extractFailureReason(message: string, outcome: OutcomeType | null): string | null; /** * Get recent decision (within 1 hour) * * Task 4.5: Find recent decision (< 1 hour) * AC #3: Recent decision (< 1 hour) marked * * @param sessionId - Session ID * @returns Recent decision or null */ export declare function getRecentDecision(sessionId: string): DecisionRecord | null; /** * Calculate duration in days * * Task 4.7: Calculate duration_days * AC #3: duration_days calculated * * @param createdAt - Decision created timestamp * @returns Duration in days */ export declare function calculateDurationDays(createdAt: number): number; /** * Get evidence impact for outcome * * Task 6: Confidence evolution - Calculate impact based on outcome * AC #5: Confidence score calculated based on history * * @param outcome - Outcome type ('FAILED', 'SUCCESS', 'PARTIAL') * @param durationDays - Duration in days * @returns Impact on confidence */ export declare function getEvidenceImpact(outcome: OutcomeType, durationDays: number): number; /** * Mark decision outcome * * Task 4.8: Update decision row with outcome, failure_reason, duration_days * Task 6.5: Update confidence when outcome is marked * AC #3: Outcome marked with failure_reason and duration_days * AC #5: Confidence evolution * * @param decisionId - Decision ID * @param outcome - Outcome type ('FAILED', 'SUCCESS', 'PARTIAL') * @param failureReason - Failure reason (if outcome=FAILED) * @param durationDays - Duration in days */ export declare function markOutcome(decisionId: string, outcome: OutcomeType, failureReason: string | null, durationDays: number): Promise; /** * UserPromptSubmit Handler * * Task 4.4: On UserPromptSubmit, analyze user message for indicators * Task 4.5: If matches + recent decision (< 1 hour), mark outcome * Task 4.6: Extract failure_reason from user message * Task 4.7: Calculate duration_days * Task 4.8: Update decision row * * AC #3: Failure tracking (user feedback → outcome marked) * * @param hookContext - Hook context from Claude Code */ export declare function onUserPromptSubmit(hookContext: HookContext): Promise; export {}; //# sourceMappingURL=outcome-tracker.d.ts.map