diff options
| author | Frank <[email protected]> | 2025-12-28 13:54:09 -0500 |
|---|---|---|
| committer | Frank <[email protected]> | 2025-12-28 13:54:11 -0500 |
| commit | 81c5e7b9ed218e342aba154cdd5ed436c7775966 (patch) | |
| tree | a85f85d0496818a2ddf6f169308252b22845ec8d /packages/console/app/src | |
| parent | ddf4897eaa7580bbc473923f4d3026a628e58a65 (diff) | |
| download | opencode-81c5e7b9ed218e342aba154cdd5ed436c7775966.tar.gz opencode-81c5e7b9ed218e342aba154cdd5ed436c7775966.zip | |
wip: benchmark
Diffstat (limited to 'packages/console/app/src')
| -rw-r--r-- | packages/console/app/src/routes/bench/index.tsx | 52 | ||||
| -rw-r--r-- | packages/console/app/src/routes/bench/submission.ts | 29 |
2 files changed, 81 insertions, 0 deletions
diff --git a/packages/console/app/src/routes/bench/index.tsx b/packages/console/app/src/routes/bench/index.tsx new file mode 100644 index 000000000..adf31fbc6 --- /dev/null +++ b/packages/console/app/src/routes/bench/index.tsx @@ -0,0 +1,52 @@ +import { Title } from "@solidjs/meta" +import { createAsync, query } from "@solidjs/router" +import { For } 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" + +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 { averageScore: number } + return { + agent: row.agent, + model: row.model, + averageScore: parsed.averageScore, + } + }) +} + +const queryBenchmarks = query(getBenchmarks, "benchmarks.list") + +export default function Bench() { + const benchmarks = createAsync(() => queryBenchmarks()) + + return ( + <main data-page="bench"> + <Title>Benchmark</Title> + <table> + <thead> + <tr> + <th>Agent</th> + <th>Model</th> + <th>Average Score</th> + </tr> + </thead> + <tbody> + <For each={benchmarks()}> + {(row) => ( + <tr> + <td>{row.agent}</td> + <td>{row.model}</td> + <td>{row.averageScore}</td> + </tr> + )} + </For> + </tbody> + </table> + </main> + ) +} diff --git a/packages/console/app/src/routes/bench/submission.ts b/packages/console/app/src/routes/bench/submission.ts new file mode 100644 index 000000000..94639439b --- /dev/null +++ b/packages/console/app/src/routes/bench/submission.ts @@ -0,0 +1,29 @@ +import type { APIEvent } from "@solidjs/start/server" +import { Database } from "@opencode-ai/console-core/drizzle/index.js" +import { BenchmarkTable } from "@opencode-ai/console-core/schema/benchmark.sql.js" +import { Identifier } from "@opencode-ai/console-core/identifier.js" + +interface SubmissionBody { + model: string + agent: string + result: string +} + +export async function POST(event: APIEvent) { + const body = (await event.request.json()) as SubmissionBody + + if (!body.model || !body.agent || !body.result) { + return Response.json({ error: "All fields are required" }, { status: 400 }) + } + + await Database.use((tx) => + tx.insert(BenchmarkTable).values({ + id: Identifier.create("benchmark"), + model: body.model, + agent: body.agent, + result: body.result, + }), + ) + + return Response.json({ success: true }, { status: 200 }) +} |
