import { Title } from "@solidjs/meta" import { A, createAsync, query } from "@solidjs/router" import { createMemo, For, Show } from "solid-js" import { Database, desc } from "@opencode-ai/console-core/drizzle/index.js" import { BenchmarkTable } from "@opencode-ai/console-core/schema/benchmark.sql.js" import { useI18n } from "~/context/i18n" interface BenchmarkResult { averageScore: number tasks: { averageScore: number; task: { id: string } }[] } async function getBenchmarks() { "use server" const rows = await Database.use((tx) => tx.select().from(BenchmarkTable).orderBy(desc(BenchmarkTable.timeCreated)).limit(100), ) return rows.map((row) => { const parsed = JSON.parse(row.result) as BenchmarkResult const taskScores: Record = {} for (const t of parsed.tasks) { taskScores[t.task.id] = t.averageScore } return { id: row.id, agent: row.agent, model: row.model, averageScore: parsed.averageScore, taskScores, } }) } const queryBenchmarks = query(getBenchmarks, "benchmarks.list") export default function Bench() { const i18n = useI18n() const benchmarks = createAsync(() => queryBenchmarks()) const taskIds = createMemo(() => { const ids = new Set() for (const row of benchmarks() ?? []) { for (const id of Object.keys(row.taskScores)) { ids.add(id) } } return [...ids].sort() }) return (
{i18n.t("bench.list.title")}

{i18n.t("bench.list.heading")}

{(id) => } {(row) => ( {(id) => ( )} )}
{i18n.t("bench.list.table.agent")} {i18n.t("bench.list.table.model")} {i18n.t("bench.list.table.score")} {id}
{row.agent} {row.model} {row.averageScore.toFixed(3)} {row.taskScores[id]?.toFixed(3)}
) }