From 9a100d520d93219d9635b119382f5550f056710e Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Wed, 18 Feb 2026 23:08:28 +0000 Subject: [PATCH] refactor(gateway): dedupe exec approvals node validation --- src/gateway/server-methods/exec-approvals.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/gateway/server-methods/exec-approvals.ts b/src/gateway/server-methods/exec-approvals.ts index d55befb14a8..0fbed7b4be4 100644 --- a/src/gateway/server-methods/exec-approvals.ts +++ b/src/gateway/server-methods/exec-approvals.ts @@ -86,6 +86,15 @@ function toExecApprovalsPayload(snapshot: ExecApprovalsSnapshot) { }; } +function resolveNodeIdOrRespond(nodeId: string, respond: RespondFn): string | null { + const id = nodeId.trim(); + if (!id) { + respond(false, undefined, errorShape(ErrorCodes.INVALID_REQUEST, "nodeId required")); + return null; + } + return id; +} + export const execApprovalsHandlers: GatewayRequestHandlers = { "exec.approvals.get": ({ params, respond }) => { if (!assertValidParams(params, validateExecApprovalsGetParams, "exec.approvals.get", respond)) { @@ -131,9 +140,8 @@ export const execApprovalsHandlers: GatewayRequestHandlers = { return; } const { nodeId } = params as { nodeId: string }; - const id = nodeId.trim(); + const id = resolveNodeIdOrRespond(nodeId, respond); if (!id) { - respond(false, undefined, errorShape(ErrorCodes.INVALID_REQUEST, "nodeId required")); return; } await respondUnavailableOnThrow(respond, async () => { @@ -165,9 +173,8 @@ export const execApprovalsHandlers: GatewayRequestHandlers = { file: ExecApprovalsFile; baseHash?: string; }; - const id = nodeId.trim(); + const id = resolveNodeIdOrRespond(nodeId, respond); if (!id) { - respond(false, undefined, errorShape(ErrorCodes.INVALID_REQUEST, "nodeId required")); return; } await respondUnavailableOnThrow(respond, async () => {