From 5116ce2d5e772998ecb1171d8b02b338a490ebdd Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 6 Apr 2026 19:13:42 +0100 Subject: [PATCH] refactor: dedupe webhook view mappers --- extensions/webhooks/src/http.ts | 37 ++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/extensions/webhooks/src/http.ts b/extensions/webhooks/src/http.ts index ab96f69af28..371a6d0c344 100644 --- a/extensions/webhooks/src/http.ts +++ b/extensions/webhooks/src/http.ts @@ -230,6 +230,13 @@ function optionalField( return value !== undefined ? ({ [key]: value } as Record) : {}; } +function optionalTruthyStringField( + key: TKey, + value: string | undefined, +): Partial> { + return value ? ({ [key]: value } as Record) : {}; +} + function toFlowView(flow: { flowId: string; syncMode: "task_mirrored" | "managed"; @@ -251,14 +258,14 @@ function toFlowView(flow: { return { flowId: flow.flowId, syncMode: flow.syncMode, - ...(flow.controllerId ? { controllerId: flow.controllerId } : {}), + ...optionalTruthyStringField("controllerId", flow.controllerId), revision: flow.revision, status: flow.status, notifyPolicy: flow.notifyPolicy, goal: flow.goal, - ...(flow.currentStep ? { currentStep: flow.currentStep } : {}), - ...(flow.blockedTaskId ? { blockedTaskId: flow.blockedTaskId } : {}), - ...(flow.blockedSummary ? { blockedSummary: flow.blockedSummary } : {}), + ...optionalTruthyStringField("currentStep", flow.currentStep), + ...optionalTruthyStringField("blockedTaskId", flow.blockedTaskId), + ...optionalTruthyStringField("blockedSummary", flow.blockedSummary), ...optionalField("stateJson", flow.stateJson), ...optionalField("waitJson", flow.waitJson), ...optionalField("cancelRequestedAt", flow.cancelRequestedAt), @@ -296,14 +303,14 @@ function toTaskView(task: { return { taskId: task.taskId, runtime: task.runtime, - ...(task.sourceId ? { sourceId: task.sourceId } : {}), + ...optionalTruthyStringField("sourceId", task.sourceId), scopeKind: task.scopeKind, - ...(task.childSessionKey ? { childSessionKey: task.childSessionKey } : {}), - ...(task.parentFlowId ? { parentFlowId: task.parentFlowId } : {}), - ...(task.parentTaskId ? { parentTaskId: task.parentTaskId } : {}), - ...(task.agentId ? { agentId: task.agentId } : {}), - ...(task.runId ? { runId: task.runId } : {}), - ...(task.label ? { label: task.label } : {}), + ...optionalTruthyStringField("childSessionKey", task.childSessionKey), + ...optionalTruthyStringField("parentFlowId", task.parentFlowId), + ...optionalTruthyStringField("parentTaskId", task.parentTaskId), + ...optionalTruthyStringField("agentId", task.agentId), + ...optionalTruthyStringField("runId", task.runId), + ...optionalTruthyStringField("label", task.label), task: task.task, status: task.status, deliveryStatus: task.deliveryStatus, @@ -313,10 +320,10 @@ function toTaskView(task: { ...optionalField("endedAt", task.endedAt), ...optionalField("lastEventAt", task.lastEventAt), ...optionalField("cleanupAfter", task.cleanupAfter), - ...(task.error ? { error: task.error } : {}), - ...(task.progressSummary ? { progressSummary: task.progressSummary } : {}), - ...(task.terminalSummary ? { terminalSummary: task.terminalSummary } : {}), - ...(task.terminalOutcome ? { terminalOutcome: task.terminalOutcome } : {}), + ...optionalTruthyStringField("error", task.error), + ...optionalTruthyStringField("progressSummary", task.progressSummary), + ...optionalTruthyStringField("terminalSummary", task.terminalSummary), + ...optionalTruthyStringField("terminalOutcome", task.terminalOutcome), }; }