@@ -2,18 +2,19 @@ import {
22 type MachinePresetName ,
33 conditionallyImportPacket ,
44 parsePacket ,
5+ stringifyIO ,
56} from "@trigger.dev/core/v3" ;
67import { type TaskRun } from "@trigger.dev/database" ;
78import { findEnvironmentById } from "~/models/runtimeEnvironment.server" ;
8- import { getTagsForRunId } from "~/models/taskRunTag.server" ;
99import { logger } from "~/services/logger.server" ;
1010import { BaseService } from "./baseService.server" ;
1111import { OutOfEntitlementError , TriggerTaskService } from "./triggerTask.server" ;
1212import { type RunOptionsData } from "../testTask" ;
13+ import { replaceSuperJsonPayload } from "@trigger.dev/core/v3/utils/ioSerialization" ;
1314
1415type OverrideOptions = {
1516 environmentId ?: string ;
16- payload ?: unknown ;
17+ payload ?: string ;
1718 metadata ?: unknown ;
1819 bulkActionId ?: string ;
1920} & RunOptionsData ;
@@ -36,7 +37,15 @@ export class ReplayTaskRunService extends BaseService {
3637 taskRunFriendlyId : existingTaskRun . friendlyId ,
3738 } ) ;
3839
39- const payload = overrideOptions . payload ?? ( await this . getExistingPayload ( existingTaskRun ) ) ;
40+ const payloadPacket = await this . overrideExistingPayloadPacket (
41+ existingTaskRun ,
42+ overrideOptions . payload
43+ ) ;
44+ const parsedPayload =
45+ payloadPacket . dataType === "application/json"
46+ ? await parsePacket ( payloadPacket )
47+ : payloadPacket . data ;
48+ const payloadType = payloadPacket . dataType ;
4049 const metadata = overrideOptions . metadata ?? ( await this . getExistingMetadata ( existingTaskRun ) ) ;
4150 const tags = overrideOptions . tags ?? existingTaskRun . runTags ;
4251
@@ -53,8 +62,9 @@ export class ReplayTaskRunService extends BaseService {
5362 existingTaskRun . taskIdentifier ,
5463 authenticatedEnvironment ,
5564 {
56- payload,
65+ payload : parsedPayload ,
5766 options : {
67+ payloadType,
5868 queue : taskQueue
5969 ? {
6070 name : taskQueue . name ,
@@ -108,15 +118,23 @@ export class ReplayTaskRunService extends BaseService {
108118 }
109119 }
110120
111- private async getExistingPayload ( existingTaskRun : TaskRun ) {
112- const existingPayloadPacket = await conditionallyImportPacket ( {
113- data : existingTaskRun . payload ,
121+ private async overrideExistingPayloadPacket (
122+ existingTaskRun : TaskRun ,
123+ stringifiedPayloadOverride : string | undefined
124+ ) {
125+ if ( stringifiedPayloadOverride && existingTaskRun . payloadType === "application/super+json" ) {
126+ const newPayload = await replaceSuperJsonPayload (
127+ existingTaskRun . payload ,
128+ stringifiedPayloadOverride
129+ ) ;
130+
131+ return stringifyIO ( newPayload ) ;
132+ }
133+
134+ return conditionallyImportPacket ( {
135+ data : stringifiedPayloadOverride ?? existingTaskRun . payload ,
114136 dataType : existingTaskRun . payloadType ,
115137 } ) ;
116-
117- return existingPayloadPacket . dataType === "application/json"
118- ? await parsePacket ( existingPayloadPacket )
119- : existingPayloadPacket . data ;
120138 }
121139
122140 private async getExistingMetadata ( existingTaskRun : TaskRun ) {
0 commit comments