Files
call_monitor/migrations/001_init.sql
T
2026-05-14 00:28:13 +02:00

114 lines
4.6 KiB
SQL

-- call_monitor schema v1.0.0
-- Event-log de invocaciones del agente al registry + telemetria asociada.
-- Issue 0085. Aditivo. Aplicado via embed.FS al abrir operations.db.
PRAGMA journal_mode=WAL;
PRAGMA foreign_keys=ON;
-- Sesiones Claude Code. Una por arranque de claude-code.
CREATE TABLE IF NOT EXISTS sessions (
session_id TEXT PRIMARY KEY,
cwd TEXT NOT NULL DEFAULT '',
started_at INTEGER NOT NULL,
ended_at INTEGER,
health_score REAL,
mcp_ratio REAL,
notes TEXT NOT NULL DEFAULT ''
);
CREATE INDEX IF NOT EXISTS idx_sessions_started ON sessions(started_at);
-- Cada invocacion del agente sobre funcion del registry (heredoc/mcp/fn_run).
CREATE TABLE IF NOT EXISTS calls (
id INTEGER PRIMARY KEY AUTOINCREMENT,
session_id TEXT NOT NULL DEFAULT '',
function_id TEXT NOT NULL DEFAULT '',
tool_used TEXT NOT NULL,
args_hash TEXT NOT NULL DEFAULT '',
duration_ms INTEGER NOT NULL DEFAULT 0,
success INTEGER NOT NULL DEFAULT 1,
error_class TEXT NOT NULL DEFAULT '',
error_snippet TEXT NOT NULL DEFAULT '',
ts INTEGER NOT NULL
);
CREATE INDEX IF NOT EXISTS idx_calls_function ON calls(function_id);
CREATE INDEX IF NOT EXISTS idx_calls_session ON calls(session_id);
CREATE INDEX IF NOT EXISTS idx_calls_ts ON calls(ts);
CREATE INDEX IF NOT EXISTS idx_calls_tool ON calls(tool_used);
CREATE INDEX IF NOT EXISTS idx_calls_success ON calls(success);
-- Edit/Write del agente sobre archivos del registry.
CREATE TABLE IF NOT EXISTS code_writes (
id INTEGER PRIMARY KEY AUTOINCREMENT,
session_id TEXT NOT NULL DEFAULT '',
function_id TEXT NOT NULL DEFAULT '',
file_path TEXT NOT NULL,
lines_added INTEGER NOT NULL DEFAULT 0,
lines_removed INTEGER NOT NULL DEFAULT 0,
ts INTEGER NOT NULL
);
CREATE INDEX IF NOT EXISTS idx_code_writes_function ON code_writes(function_id);
CREATE INDEX IF NOT EXISTS idx_code_writes_ts ON code_writes(ts);
-- Test run de unit tests del registry (go test / pytest / etc.).
CREATE TABLE IF NOT EXISTS test_runs (
id INTEGER PRIMARY KEY AUTOINCREMENT,
session_id TEXT NOT NULL DEFAULT '',
function_id TEXT NOT NULL DEFAULT '',
test_id TEXT NOT NULL DEFAULT '',
passed INTEGER NOT NULL DEFAULT 1,
duration_ms INTEGER NOT NULL DEFAULT 0,
output_snippet TEXT NOT NULL DEFAULT '',
ts INTEGER NOT NULL
);
CREATE INDEX IF NOT EXISTS idx_test_runs_function ON test_runs(function_id);
CREATE INDEX IF NOT EXISTS idx_test_runs_passed ON test_runs(passed);
CREATE INDEX IF NOT EXISTS idx_test_runs_ts ON test_runs(ts);
-- E2E checks de apps que dependen de una funcion del registry.
CREATE TABLE IF NOT EXISTS e2e_runs_fn (
id INTEGER PRIMARY KEY AUTOINCREMENT,
session_id TEXT NOT NULL DEFAULT '',
function_id TEXT NOT NULL,
app_id TEXT NOT NULL,
check_id TEXT NOT NULL,
passed INTEGER NOT NULL DEFAULT 1,
ts INTEGER NOT NULL
);
CREATE INDEX IF NOT EXISTS idx_e2e_function ON e2e_runs_fn(function_id);
CREATE INDEX IF NOT EXISTS idx_e2e_app ON e2e_runs_fn(app_id);
CREATE INDEX IF NOT EXISTS idx_e2e_passed ON e2e_runs_fn(passed);
-- Antipatrones detectados (sqlite3 inline, import *, heredoc reescribiendo, etc.).
CREATE TABLE IF NOT EXISTS violations (
id INTEGER PRIMARY KEY AUTOINCREMENT,
session_id TEXT NOT NULL DEFAULT '',
rule_id TEXT NOT NULL,
function_id TEXT NOT NULL DEFAULT '',
command_snippet TEXT NOT NULL DEFAULT '',
severity TEXT NOT NULL DEFAULT 'warning',
ts INTEGER NOT NULL
);
CREATE INDEX IF NOT EXISTS idx_violations_rule ON violations(rule_id);
CREATE INDEX IF NOT EXISTS idx_violations_function ON violations(function_id);
CREATE INDEX IF NOT EXISTS idx_violations_severity ON violations(severity);
-- Heredocs/snippets clusterizados por similitud (alimenta proposals new_function).
CREATE TABLE IF NOT EXISTS patterns (
pattern_hash TEXT PRIMARY KEY,
representative_snippet TEXT NOT NULL,
occurrences INTEGER NOT NULL DEFAULT 1,
session_ids_json TEXT NOT NULL DEFAULT '[]',
first_seen INTEGER NOT NULL,
last_seen INTEGER NOT NULL,
proposal_id TEXT NOT NULL DEFAULT ''
);
CREATE INDEX IF NOT EXISTS idx_patterns_occurrences ON patterns(occurrences);
CREATE INDEX IF NOT EXISTS idx_patterns_last_seen ON patterns(last_seen);