From e9c5164e4dc3659245c99e109609148da31cc1c8 Mon Sep 17 00:00:00 2001 From: James Long Date: Tue, 7 Jul 2026 12:42:20 +0000 Subject: [PATCH] refactor(simulation): type frontend RPC methods --- packages/simulation/src/frontend/server.ts | 3 +-- packages/simulation/src/protocol/index.ts | 4 ++++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/simulation/src/frontend/server.ts b/packages/simulation/src/frontend/server.ts index d99334d6a2..7b4baec95d 100644 --- a/packages/simulation/src/frontend/server.ts +++ b/packages/simulation/src/frontend/server.ts @@ -16,7 +16,7 @@ function parseRequest(input: string | Buffer) { } async function handle(harness: Harness, request: SimulationProtocol.JsonRpc.Request, headless: boolean) { - switch (request.method) { + switch (SimulationProtocol.Frontend.decodeMethod(request.method)) { case "ui.state": { if (headless) await harness.renderOnce() const result = SimulationActions.state(harness) @@ -33,7 +33,6 @@ async function handle(harness: Harness, request: SimulationProtocol.JsonRpc.Requ case "trace.export": return SimulationTrace.exportTrace() } - throw new Error(`Unknown simulation method: ${request.method}`) } export function start(harness: Harness, endpoint: string, headless: boolean): Server { diff --git a/packages/simulation/src/protocol/index.ts b/packages/simulation/src/protocol/index.ts index b05f24d501..e480a62b43 100644 --- a/packages/simulation/src/protocol/index.ts +++ b/packages/simulation/src/protocol/index.ts @@ -46,6 +46,10 @@ export namespace JsonRpc { } export namespace Frontend { + export const Method = Schema.Literals(["ui.state", "ui.action", "trace.list", "trace.clear", "trace.export"]) + export type Method = Schema.Schema.Type + export const decodeMethod = Schema.decodeUnknownSync(Method) + export const KeyModifiers = Schema.Struct({ ctrl: Schema.optional(Schema.Boolean), shift: Schema.optional(Schema.Boolean),