import { eg, type TypeFromCodec } from "@cloudflare/util-en-garde"; import { LogEvent } from "@/contracts/log"; import { RunExecutionState, RunStep } from "@/contracts/run"; export const RunWsLogMessage = eg.exactStrict( eg.object({ type: eg.literal("log"), event: LogEvent, }), ); export type RunWsLogMessage = TypeFromCodec; export const RunWsStateMessage = eg.exactStrict( eg.object({ type: eg.literal("state"), run: RunExecutionState, steps: eg.array(RunStep), }), ); export type RunWsStateMessage = TypeFromCodec; export type RunWsMessage = RunWsLogMessage | RunWsStateMessage;