Skip to content
File

Blob: src/contracts/run-ws.ts

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