/** * Validation Session Service * * Orchestrates the validation session lifecycle: * startSession → recordRun → finalizeSession * * Includes snapshot building (API-only, no DOM), * metric computation, status classification, and stale session cleanup. */ import type { SQLiteDatabase } from '../sqlite.js'; import { type ValidationSessionRow, type ValidationTriggerType, type ExecutionStatus } from './types.js'; export interface RecordRunInput { activityId?: number; duration_ms?: number; tokens_used?: number; tools_called?: string[]; error_message?: string; } export interface FinalizeInput { execution_status: ExecutionStatus; metrics?: Record; error_message?: string; test_input_summary?: string; activity_row_id?: number; } interface StartSessionOptions { goal?: string; customBeforeSnapshot?: string; } export declare class ValidationSessionService { private db; constructor(db: SQLiteDatabase); /** * Start a new validation session. * Captures before snapshot, looks up baseline, creates DB row. */ startSession(agentId: string, agentVersion: number, triggerType: ValidationTriggerType, options?: StartSessionOptions): ValidationSessionRow; /** * Record a run envelope. Links an activity row to this session via run_id. */ recordRun(sessionId: string, input: RecordRunInput): void; /** * Finalize a session: capture after snapshot, compute metrics, * classify status, update validation state. */ finalizeSession(sessionId: string, input: FinalizeInput): ValidationSessionRow; /** * Clean up stale sessions (started but never ended). * Returns count of cleaned sessions. */ cleanupStaleSessions(maxAgeMs: number): number; private getSession; private buildBeforeSnapshot; private buildAfterSnapshot; private validateFinalizeInput; private loadBaselineMetrics; private saveMetricsWithDelta; private classifyOutcome; /** * Infer metric direction from naming conventions when the metric profile does not * provide an explicit override. * * `down_good`: names containing latency, duration, cost, error, meaningless, staleness * `up_good`: names containing rate, efficiency, accuracy, signal * default: neutral */ private inferDirection; private buildReport; private updateState; } export {}; //# sourceMappingURL=session-service.d.ts.map