"""Shared exploration metadata for queue cards and history pagination.""" # Rank execution runs independently from validations: a rerun never replaces the # conversation card. Keep all raw sessions accessible for evidence inspection. EXPLORATION_RUNS_CTE = """ exploration_runs AS ( SELECT r.id AS run_id, json_extract(r.payload,'$.exploration_id') AS exploration_id, json_extract(r.payload,'$.kind') AS exploration_kind, json_extract(r.payload,'$.case_version') AS case_version, json_extract(r.payload,'$.task_config.model') AS exploration_model, json_extract(r.payload,'$.task_config.profile') AS exploration_profile, json_extract(v.payload,'$.name') AS exploration_case_name, CASE WHEN json_extract(r.payload,'$.kind')='exploration' AND (json_extract(c.payload,'$.active_run_id') IS NULL OR json_extract(c.payload,'$.active_run_id') = r.id) THEN json_extract(c.payload,'$.status') ELSE json_extract(r.payload,'$.status') END AS exploration_status, FIRST_VALUE(r.id) OVER ( PARTITION BY json_extract(r.payload,'$.exploration_id'),json_extract(r.payload,'$.kind') ORDER BY json_extract(r.payload,'$.created_at') DESC, r.id DESC ) AS exploration_latest_run_id, COUNT(*) OVER ( PARTITION BY json_extract(r.payload,'$.exploration_id'),json_extract(r.payload,'$.kind') ) AS exploration_run_count FROM automation_records r LEFT JOIN automation_records c ON c.kind='exploration' AND c.id=json_extract(r.payload,'$.exploration_id') LEFT JOIN automation_records v ON v.kind='exploration_case' AND v.id=json_extract(r.payload,'$.exploration_id') || '_' || printf('%010d',json_extract(r.payload,'$.case_version')) WHERE r.kind='exploration_run' ) """ def exploration_metadata(connection) -> dict[str, dict]: rows = connection.execute("WITH " + EXPLORATION_RUNS_CTE + " SELECT * FROM exploration_runs") result = {} for row in rows: item = {key: row[key] for key in row.keys() if key != "run_id"} if item.get("exploration_kind") == "validation" and item.get("exploration_case_name"): item["display_name"] = item["exploration_case_name"] result[row["run_id"]] = item return result