"use strict"; /** * ABE Database Migrations * Creates all tables if they do not exist. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.runMigrations = runMigrations; function runMigrations(db) { db.exec(` CREATE TABLE IF NOT EXISTS sessions ( id TEXT PRIMARY KEY, url TEXT NOT NULL, status TEXT NOT NULL DEFAULT 'running', seed INTEGER NOT NULL, max_states INTEGER NOT NULL DEFAULT 50, states_visited INTEGER NOT NULL DEFAULT 0, anomalies_found INTEGER NOT NULL DEFAULT 0, started_at INTEGER NOT NULL, finished_at INTEGER, config_json TEXT NOT NULL DEFAULT '{}' ); CREATE TABLE IF NOT EXISTS states ( id TEXT PRIMARY KEY, session_id TEXT NOT NULL REFERENCES sessions(id), url TEXT NOT NULL, title TEXT NOT NULL, dom_snapshot_path TEXT, visit_count INTEGER NOT NULL DEFAULT 0, discovered_at INTEGER NOT NULL ); CREATE TABLE IF NOT EXISTS actions ( id TEXT PRIMARY KEY, session_id TEXT NOT NULL REFERENCES sessions(id), state_id TEXT NOT NULL REFERENCES states(id), type TEXT NOT NULL, selector TEXT, value TEXT, url TEXT, seed INTEGER NOT NULL, executed_at INTEGER NOT NULL, sequence_order INTEGER NOT NULL ); CREATE TABLE IF NOT EXISTS anomalies ( id TEXT PRIMARY KEY, session_id TEXT NOT NULL REFERENCES sessions(id), type TEXT NOT NULL, severity TEXT NOT NULL, description TEXT NOT NULL, action_trace_json TEXT NOT NULL, evidence_json TEXT NOT NULL, screenshot_path TEXT, dom_snapshot_path TEXT, detected_at INTEGER NOT NULL, ai_enrichment_json TEXT, ai_enriched_at INTEGER, browser TEXT, browser_version TEXT ); CREATE TABLE IF NOT EXISTS notifications ( id TEXT PRIMARY KEY, anomaly_id TEXT NOT NULL REFERENCES anomalies(id), channel TEXT NOT NULL, status TEXT NOT NULL DEFAULT 'pending', sent_at INTEGER, error TEXT ); CREATE TABLE IF NOT EXISTS schedules ( id TEXT PRIMARY KEY, name TEXT NOT NULL, url TEXT NOT NULL, config_json TEXT NOT NULL, cron_expression TEXT NOT NULL, enabled INTEGER NOT NULL DEFAULT 1, last_run_at INTEGER, next_run_at INTEGER, created_at INTEGER NOT NULL ); CREATE TABLE IF NOT EXISTS visual_baselines ( id TEXT PRIMARY KEY, state_id TEXT NOT NULL, url TEXT NOT NULL, screenshot_path TEXT NOT NULL, approved_at INTEGER NOT NULL, approved_by TEXT DEFAULT 'user', width INTEGER NOT NULL, height INTEGER NOT NULL ); CREATE TABLE IF NOT EXISTS visual_comparisons ( id TEXT PRIMARY KEY, session_id TEXT NOT NULL, state_id TEXT NOT NULL, baseline_id TEXT, current_screenshot_path TEXT NOT NULL, diff_screenshot_path TEXT, diff_pixels INTEGER, diff_percent REAL, status TEXT NOT NULL, created_at INTEGER NOT NULL ); CREATE TABLE IF NOT EXISTS performance_metrics ( id TEXT PRIMARY KEY, session_id TEXT NOT NULL, state_id TEXT NOT NULL, url TEXT NOT NULL, ttfb INTEGER, dom_content_loaded INTEGER, load_complete INTEGER, lcp INTEGER, cls REAL, fid INTEGER, inp INTEGER, total_requests INTEGER, failed_requests INTEGER, total_transfer_size INTEGER, captured_at INTEGER NOT NULL ); `); }