refactor: dedupe webhook view mappers

This commit is contained in:
Peter Steinberger
2026-04-06 19:13:42 +01:00
parent 3826af6c40
commit 5116ce2d5e

View File

@@ -230,6 +230,13 @@ function optionalField<TKey extends string, TValue>(
return value !== undefined ? ({ [key]: value } as Record<TKey, TValue>) : {};
}
function optionalTruthyStringField<TKey extends string>(
key: TKey,
value: string | undefined,
): Partial<Record<TKey, string>> {
return value ? ({ [key]: value } as Record<TKey, string>) : {};
}
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),
};
}