File
Blob: src/contracts/run-ws.ts
| 1 | import { eg, type TypeFromCodec } from "@cloudflare/util-en-garde"; |
| 2 | |
| 3 | import { LogEvent } from "@/contracts/log"; |
| 4 | import { RunExecutionState, RunStep } from "@/contracts/run"; |
| 5 | |
| 6 | export const RunWsLogMessage = eg.exactStrict( |
| 7 | eg.object({ |
| 8 | type: eg.literal("log"), |
| 9 | event: LogEvent, |
| 10 | }), |
| 11 | ); |
| 12 | export type RunWsLogMessage = TypeFromCodec<typeof RunWsLogMessage>; |
| 13 | |
| 14 | export const RunWsStateMessage = eg.exactStrict( |
| 15 | eg.object({ |
| 16 | type: eg.literal("state"), |
| 17 | run: RunExecutionState, |
| 18 | steps: eg.array(RunStep), |
| 19 | }), |
| 20 | ); |
| 21 | export type RunWsStateMessage = TypeFromCodec<typeof RunWsStateMessage>; |
| 22 | |
| 23 | export type RunWsMessage = RunWsLogMessage | RunWsStateMessage; |