11import {
22 AttemptStatus ,
3- RetrieveRunResponse ,
43 RunStatus ,
54 SerializedError ,
65 TaskRunError ,
@@ -12,10 +11,12 @@ import {
1211} from "@trigger.dev/core/v3" ;
1312import { Prisma , TaskRunAttemptStatus , TaskRunStatus } from "@trigger.dev/database" ;
1413import assertNever from "assert-never" ;
14+ import { API_VERSIONS , CURRENT_API_VERSION , RunStatusUnspecifiedApiVersion } from "~/api/versions" ;
15+ import { $replica , prisma } from "~/db.server" ;
1516import { AuthenticatedEnvironment } from "~/services/apiAuth.server" ;
1617import { generatePresignedUrl } from "~/v3/r2.server" ;
17- import { BasePresenter } from "./basePresenter .server" ;
18- import { $replica , prisma } from "~/db .server" ;
18+ import { tracer } from "~/v3/tracer .server" ;
19+ import { startSpanWithEnv } from "~/v3/tracing .server" ;
1920
2021// Build 'select' object
2122const commonRunSelect = {
@@ -63,7 +64,9 @@ type CommonRelatedRun = Prisma.Result<
6364
6465type FoundRun = NonNullable < Awaited < ReturnType < typeof ApiRetrieveRunPresenter . findRun > > > ;
6566
66- export class ApiRetrieveRunPresenter extends BasePresenter {
67+ export class ApiRetrieveRunPresenter {
68+ constructor ( private readonly apiVersion : API_VERSIONS ) { }
69+
6770 public static async findRun ( friendlyId : string , env : AuthenticatedEnvironment ) {
6871 return $replica . taskRun . findFirst ( {
6972 where : {
@@ -98,11 +101,8 @@ export class ApiRetrieveRunPresenter extends BasePresenter {
98101 } ) ;
99102 }
100103
101- public async call (
102- taskRun : FoundRun ,
103- env : AuthenticatedEnvironment
104- ) : Promise < RetrieveRunResponse | undefined > {
105- return this . traceWithEnv ( "call" , env , async ( span ) => {
104+ public async call ( taskRun : FoundRun , env : AuthenticatedEnvironment ) {
105+ return startSpanWithEnv ( tracer , "ApiRetrieveRunPresenter.call" , env , async ( ) => {
106106 let $payload : any ;
107107 let $payloadPresignedUrl : string | undefined ;
108108 let $output : any ;
@@ -167,7 +167,7 @@ export class ApiRetrieveRunPresenter extends BasePresenter {
167167 }
168168
169169 return {
170- ...( await createCommonRunStructure ( taskRun ) ) ,
170+ ...( await createCommonRunStructure ( taskRun , this . apiVersion ) ) ,
171171 payload : $payload ,
172172 payloadPresignedUrl : $payloadPresignedUrl ,
173173 output : $output ,
@@ -180,13 +180,13 @@ export class ApiRetrieveRunPresenter extends BasePresenter {
180180 attempts : [ ] ,
181181 relatedRuns : {
182182 root : taskRun . rootTaskRun
183- ? await createCommonRunStructure ( taskRun . rootTaskRun )
183+ ? await createCommonRunStructure ( taskRun . rootTaskRun , this . apiVersion )
184184 : undefined ,
185185 parent : taskRun . parentTaskRun
186- ? await createCommonRunStructure ( taskRun . parentTaskRun )
186+ ? await createCommonRunStructure ( taskRun . parentTaskRun , this . apiVersion )
187187 : undefined ,
188188 children : await Promise . all (
189- taskRun . childRuns . map ( async ( r ) => await createCommonRunStructure ( r ) )
189+ taskRun . childRuns . map ( async ( r ) => await createCommonRunStructure ( r , this . apiVersion ) )
190190 ) ,
191191 } ,
192192 } ;
@@ -205,7 +205,7 @@ export class ApiRetrieveRunPresenter extends BasePresenter {
205205 }
206206 }
207207
208- static isStatusFinished ( status : RunStatus ) {
208+ static isStatusFinished ( status : RunStatus | RunStatusUnspecifiedApiVersion ) {
209209 return (
210210 status === "COMPLETED" ||
211211 status === "FAILED" ||
@@ -216,7 +216,21 @@ export class ApiRetrieveRunPresenter extends BasePresenter {
216216 ) ;
217217 }
218218
219- static apiStatusFromRunStatus ( status : TaskRunStatus ) : RunStatus {
219+ static apiStatusFromRunStatus (
220+ status : TaskRunStatus ,
221+ apiVersion : API_VERSIONS
222+ ) : RunStatus | RunStatusUnspecifiedApiVersion {
223+ switch ( apiVersion ) {
224+ case CURRENT_API_VERSION : {
225+ return this . apiStatusFromRunStatusV2 ( status ) ;
226+ }
227+ default : {
228+ return this . apiStatusFromRunStatusV1 ( status ) ;
229+ }
230+ }
231+ }
232+
233+ static apiStatusFromRunStatusV1 ( status : TaskRunStatus ) : RunStatusUnspecifiedApiVersion {
220234 switch ( status ) {
221235 case "DELAYED" : {
222236 return "DELAYED" ;
@@ -237,6 +251,7 @@ export class ApiRetrieveRunPresenter extends BasePresenter {
237251 case "RETRYING_AFTER_FAILURE" : {
238252 return "REATTEMPTING" ;
239253 }
254+ case "DEQUEUED" :
240255 case "EXECUTING" : {
241256 return "EXECUTING" ;
242257 }
@@ -270,19 +285,77 @@ export class ApiRetrieveRunPresenter extends BasePresenter {
270285 }
271286 }
272287
273- static apiBooleanHelpersFromTaskRunStatus ( status : TaskRunStatus ) {
288+ static apiStatusFromRunStatusV2 ( status : TaskRunStatus ) : RunStatus {
289+ switch ( status ) {
290+ case "DELAYED" : {
291+ return "DELAYED" ;
292+ }
293+ case "PENDING_VERSION" : {
294+ return "PENDING_VERSION" ;
295+ }
296+ case "WAITING_FOR_DEPLOY" : {
297+ return "PENDING_VERSION" ;
298+ }
299+ case "PENDING" : {
300+ return "QUEUED" ;
301+ }
302+ case "PAUSED" :
303+ case "WAITING_TO_RESUME" : {
304+ return "WAITING" ;
305+ }
306+ case "DEQUEUED" : {
307+ return "DEQUEUED" ;
308+ }
309+ case "RETRYING_AFTER_FAILURE" :
310+ case "EXECUTING" : {
311+ return "EXECUTING" ;
312+ }
313+ case "CANCELED" : {
314+ return "CANCELED" ;
315+ }
316+ case "COMPLETED_SUCCESSFULLY" : {
317+ return "COMPLETED" ;
318+ }
319+ case "SYSTEM_FAILURE" : {
320+ return "SYSTEM_FAILURE" ;
321+ }
322+ case "CRASHED" : {
323+ return "CRASHED" ;
324+ }
325+ case "INTERRUPTED" :
326+ case "COMPLETED_WITH_ERRORS" : {
327+ return "FAILED" ;
328+ }
329+ case "EXPIRED" : {
330+ return "EXPIRED" ;
331+ }
332+ case "TIMED_OUT" : {
333+ return "TIMED_OUT" ;
334+ }
335+ default : {
336+ assertNever ( status ) ;
337+ }
338+ }
339+ }
340+
341+ static apiBooleanHelpersFromTaskRunStatus ( status : TaskRunStatus , apiVersion : API_VERSIONS ) {
274342 return ApiRetrieveRunPresenter . apiBooleanHelpersFromRunStatus (
275- ApiRetrieveRunPresenter . apiStatusFromRunStatus ( status )
343+ ApiRetrieveRunPresenter . apiStatusFromRunStatus ( status , apiVersion )
276344 ) ;
277345 }
278346
279- static apiBooleanHelpersFromRunStatus ( status : RunStatus ) {
347+ static apiBooleanHelpersFromRunStatus ( status : RunStatus | RunStatusUnspecifiedApiVersion ) {
280348 const isQueued =
281349 status === "QUEUED" ||
282350 status === "WAITING_FOR_DEPLOY" ||
283351 status === "DELAYED" ||
284352 status === "PENDING_VERSION" ;
285- const isExecuting = status === "EXECUTING" || status === "REATTEMPTING" || status === "FROZEN" ;
353+ const isExecuting =
354+ status === "EXECUTING" ||
355+ status === "REATTEMPTING" ||
356+ status === "FROZEN" ||
357+ status === "DEQUEUED" ||
358+ status === "WAITING" ;
286359 const isCompleted =
287360 status === "COMPLETED" ||
288361 status === "CANCELED" ||
@@ -358,7 +431,7 @@ async function resolveSchedule(run: CommonRelatedRun) {
358431 } ;
359432}
360433
361- async function createCommonRunStructure ( run : CommonRelatedRun ) {
434+ async function createCommonRunStructure ( run : CommonRelatedRun , apiVersion : API_VERSIONS ) {
362435 const metadata = await parsePacket ( {
363436 data : run . metadata ?? undefined ,
364437 dataType : run . metadataType ,
@@ -369,7 +442,7 @@ async function createCommonRunStructure(run: CommonRelatedRun) {
369442 taskIdentifier : run . taskIdentifier ,
370443 idempotencyKey : run . idempotencyKey ?? undefined ,
371444 version : run . lockedToVersion ?. version ,
372- status : ApiRetrieveRunPresenter . apiStatusFromRunStatus ( run . status ) ,
445+ status : ApiRetrieveRunPresenter . apiStatusFromRunStatus ( run . status , apiVersion ) ,
373446 createdAt : run . createdAt ,
374447 startedAt : run . startedAt ?? undefined ,
375448 updatedAt : run . updatedAt ,
@@ -385,7 +458,7 @@ async function createCommonRunStructure(run: CommonRelatedRun) {
385458 tags : run . tags
386459 . map ( ( t : { name : string } ) => t . name )
387460 . sort ( ( a : string , b : string ) => a . localeCompare ( b ) ) ,
388- ...ApiRetrieveRunPresenter . apiBooleanHelpersFromTaskRunStatus ( run . status ) ,
461+ ...ApiRetrieveRunPresenter . apiBooleanHelpersFromTaskRunStatus ( run . status , apiVersion ) ,
389462 triggerFunction : resolveTriggerFunction ( run ) ,
390463 batchId : run . batch ?. friendlyId ,
391464 metadata,
0 commit comments