/** * Forgen Meta-Learning — Session Quality Scorer (Feature 1) * * Joins existing data sources to compute a per-session quality score. * This score feeds other meta-learning features (matcher tuning, thresholds). * * Data sources: * - injection-cache-{sessionId}.json → injected solutions * - modified-files-{sessionId}.json → drift state * - implicit-feedback.jsonl → revert/drift events * - me/behavior/*.json → correction evidence * - state/sessions/{sessionId}.json → session metadata */ import type { SessionQualityScore } from './types.js'; import { type ImplicitFeedbackEntry } from '../../store/implicit-feedback-store.js'; interface InjectionCacheData { injected: string[]; totalInjectedChars: number; updatedAt: string; /** Tag snapshot per solution (backfill feature) */ tags?: Record; } interface DriftState { sessionId: string; totalEdits: number; totalReverts: number; ewmaEditRate: number; ewmaRevertRate: number; lastWarningAt: number | null; lastCriticalAt: number | null; hardCapReached: boolean; } export declare function loadInjectionCache(sessionId: string): InjectionCacheData | null; export declare function loadDriftState(sessionId: string): DriftState | null; export declare function loadImplicitFeedback(sessionId: string): ImplicitFeedbackEntry[]; export declare function loadSessionCorrections(sessionId: string): number; /** * Compute overall session quality score (0-100, higher = better). * * Formula: * 100 * - (correctionRate × 15) // each correction/prompt penalizes 15pts * - (driftScore × 0.3) // drift 0-100 maps to 0-30 penalty * - (revertCount × 5) // each revert penalizes 5pts * + (solutionEffectiveness × 20) // good solution usage boosts 0-20pts */ export declare function computeOverallScore(correctionRate: number, driftScore: number, revertCount: number, solutionEffectiveness: number): number; /** * Score a session's quality by joining all available data sources. * Returns null if insufficient data (no session state found). */ export declare function scoreSession(sessionId: string): SessionQualityScore | null; export declare function saveSessionQuality(score: SessionQualityScore, baseDir?: string): void; export declare function loadSessionQuality(sessionId: string, baseDir?: string): SessionQualityScore | null; export declare function loadRecentQualityScores(limit?: number, baseDir?: string): SessionQualityScore[]; export {};