Skip to content

Commit 0a9fbe6

Browse files
committed
Fix schemas
1 parent 39b300e commit 0a9fbe6

File tree

2 files changed

+27
-58
lines changed

2 files changed

+27
-58
lines changed
Lines changed: 12 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,20 @@
11
import { z } from "zod"
22

3-
export const messageSchema = z.object({
4-
type: z.enum(["hello", "data"]),
5-
data: z.record(z.string(), z.unknown()),
6-
})
7-
8-
export const taskSchema = z.object({
9-
id: z.number(),
10-
})
11-
12-
export const taskEventSchema = z.discriminatedUnion("event", [
13-
z.object({ event: z.literal("client"), task: taskSchema }),
14-
z.object({ event: z.literal("taskStarted"), task: taskSchema }),
15-
z.object({ event: z.literal("taskFinished"), task: taskSchema }),
3+
export const ipcServerMessageSchema = z.discriminatedUnion("type", [
164
z.object({
17-
event: z.literal("message"),
18-
task: taskSchema,
19-
message: z.object({
20-
taskId: z.string(),
21-
action: z.enum(["created", "updated"]),
22-
message: z.object({
23-
ts: z.number(),
24-
type: z.enum(["ask", "say"]),
25-
text: z.string(),
26-
partial: z.boolean().optional(),
27-
}),
28-
}),
5+
type: z.literal("Ack"),
6+
data: z.object({ clientId: z.string() }),
297
}),
308
z.object({
31-
event: z.literal("taskTokenUsageUpdated"),
32-
task: taskSchema,
33-
usage: z.object({
34-
totalTokensIn: z.number(),
35-
totalTokensOut: z.number(),
36-
totalCacheWrites: z.number().optional(),
37-
totalCacheReads: z.number().optional(),
38-
totalCost: z.number(),
39-
contextTokens: z.number(),
9+
type: z.literal("TaskEvent"),
10+
data: z.object({
11+
eventName: z.enum(["connect", "taskStarted", "message", "taskTokenUsageUpdated", "taskFinished"]),
12+
data: z.object({
13+
task: z.object({ id: z.number() }),
14+
// message: z.object({}).optional(),
15+
// usage: z.object({}).optional(),
16+
// taskMetrics: z.object({}).optional(),
17+
}),
4018
}),
4119
}),
4220
])

benchmark/apps/web/src/app/runs/[id]/use-run-status.ts

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import { useState } from "react"
2-
import { keepPreviousData, useQuery } from "@tanstack/react-query"
3-
import { useCallback } from "react"
1+
import { useState, useCallback } from "react"
2+
import { useQuery, keepPreviousData } from "@tanstack/react-query"
3+
44
import { useEventSource } from "@/hooks/use-event-source"
55

66
import { Run } from "@benchmark/db"
77

88
import { getTasks } from "./actions"
9-
import { messageSchema, taskEventSchema } from "./schemas"
9+
import { ipcServerMessageSchema } from "./schemas"
1010

1111
export const useRunStatus = (run: Run) => {
1212
const [clientId, setClientId] = useState<string>()
@@ -30,7 +30,7 @@ export const useRunStatus = (run: Run) => {
3030
return
3131
}
3232

33-
const result = messageSchema.safeParse(data)
33+
const result = ipcServerMessageSchema.safeParse(data)
3434

3535
if (!result.success) {
3636
console.log(`unrecognized messageEvent.data: ${messageEvent.data}`)
@@ -39,26 +39,17 @@ export const useRunStatus = (run: Run) => {
3939

4040
const payload = result.data
4141

42-
if (payload.type === "hello") {
42+
if (payload.type === "Ack") {
4343
setClientId(payload.data.clientId as string)
44-
} else if (payload.type === "data") {
45-
const taskEvent = taskEventSchema.safeParse(payload.data)
46-
47-
if (!taskEvent.success) {
48-
console.log(`unrecognized payload.data`, payload.data, taskEvent.error)
49-
return
50-
}
51-
52-
if (taskEvent.data.event === "client") {
53-
console.log(`client`, taskEvent.data)
54-
setRunningTaskId(taskEvent.data.task.id)
55-
} else if (taskEvent.data.event === "message") {
56-
// console.log(`message: ${taskEvent.data.message.message.text}`)
57-
} else if (taskEvent.data.event === "taskTokenUsageUpdated") {
58-
console.log(`taskTokenUsageUpdated`, taskEvent.data.usage)
59-
} else if (taskEvent.data.event === "taskStarted") {
60-
setRunningTaskId(taskEvent.data.task.id)
61-
} else if (taskEvent.data.event === "taskFinished") {
44+
} else if (payload.type === "TaskEvent") {
45+
const {
46+
eventName,
47+
data: { task },
48+
} = payload.data
49+
50+
if (eventName === "connect" || eventName === "taskStarted") {
51+
setRunningTaskId(task.id)
52+
} else if (eventName === "taskFinished") {
6253
setRunningTaskId(undefined)
6354
}
6455
}

0 commit comments

Comments
 (0)