@@ -15,12 +15,14 @@ import { type TaskRunStatus } from "@trigger.dev/database";
1515import assertNever from "assert-never" ;
1616import { HourglassIcon } from "lucide-react" ;
1717import { TimedOutIcon } from "~/assets/icons/TimedOutIcon" ;
18+ import { Callout } from "~/components/primitives/Callout" ;
1819import { Spinner } from "~/components/primitives/Spinner" ;
1920import { cn } from "~/utils/cn" ;
2021
2122export const allTaskRunStatuses = [
2223 "DELAYED" ,
2324 "WAITING_FOR_DEPLOY" ,
25+ "PENDING_VERSION" ,
2426 "PENDING" ,
2527 "EXECUTING" ,
2628 "RETRYING_AFTER_FAILURE" ,
@@ -37,7 +39,7 @@ export const allTaskRunStatuses = [
3739] as const satisfies Readonly < Array < TaskRunStatus > > ;
3840
3941export const filterableTaskRunStatuses = [
40- "WAITING_FOR_DEPLOY " ,
42+ "PENDING_VERSION " ,
4143 "DELAYED" ,
4244 "PENDING" ,
4345 "WAITING_TO_RESUME" ,
@@ -56,7 +58,8 @@ export const filterableTaskRunStatuses = [
5658const taskRunStatusDescriptions : Record < TaskRunStatus , string > = {
5759 DELAYED : "Task has been delayed and is waiting to be executed." ,
5860 PENDING : "Task is waiting to be executed." ,
59- WAITING_FOR_DEPLOY : "Task needs to be deployed first to start executing." ,
61+ PENDING_VERSION : "Run cannot execute until a version includes the task and queue." ,
62+ WAITING_FOR_DEPLOY : "Run cannot execute until a version includes the task and queue." ,
6063 EXECUTING : "Task is currently being executed." ,
6164 RETRYING_AFTER_FAILURE : "Task is being reattempted after a failure." ,
6265 WAITING_TO_RESUME : `You have used a "wait" function. When the wait is complete, the task will resume execution.` ,
@@ -73,6 +76,7 @@ const taskRunStatusDescriptions: Record<TaskRunStatus, string> = {
7376
7477export const QUEUED_STATUSES = [
7578 "PENDING" ,
79+ "PENDING_VERSION" ,
7680 "WAITING_FOR_DEPLOY" ,
7781 "DELAYED" ,
7882] satisfies TaskRunStatus [ ] ;
@@ -104,6 +108,43 @@ export function TaskRunStatusCombo({
104108 ) ;
105109}
106110
111+ const statusReasonsToDescription : Record < string , string > = {
112+ NO_DEPLOYMENT : "No deployment or deployment image reference found for deployed run" ,
113+ NO_WORKER : "No worker found for run" ,
114+ TASK_NEVER_REGISTERED : "Task never registered" ,
115+ QUEUE_NOT_FOUND : "Queue not found" ,
116+ TASK_NOT_IN_LATEST : "Task not in latest version" ,
117+ BACKGROUND_WORKER_MISMATCH : "Background worker mismatch" ,
118+ } ;
119+
120+ export function TaskRunStatusReason ( {
121+ status,
122+ statusReason,
123+ } : {
124+ status : TaskRunStatus ;
125+ statusReason ?: string ;
126+ } ) {
127+ if ( status !== "PENDING_VERSION" ) {
128+ return null ;
129+ }
130+
131+ if ( ! statusReason ) {
132+ return null ;
133+ }
134+
135+ const description = statusReasonsToDescription [ statusReason ] ;
136+
137+ if ( ! description ) {
138+ return null ;
139+ }
140+
141+ return (
142+ < Callout to = "https://trigger.dev/docs" variant = "warning" className = "text-sm" >
143+ { description }
144+ </ Callout >
145+ ) ;
146+ }
147+
107148export function TaskRunStatusLabel ( { status } : { status : TaskRunStatus } ) {
108149 return < span className = { runStatusClassNameColor ( status ) } > { runStatusTitle ( status ) } </ span > ;
109150}
@@ -120,6 +161,7 @@ export function TaskRunStatusIcon({
120161 return < ClockIcon className = { cn ( runStatusClassNameColor ( status ) , className ) } /> ;
121162 case "PENDING" :
122163 return < RectangleStackIcon className = { cn ( runStatusClassNameColor ( status ) , className ) } /> ;
164+ case "PENDING_VERSION" :
123165 case "WAITING_FOR_DEPLOY" :
124166 return < RectangleStackIcon className = { cn ( runStatusClassNameColor ( status ) , className ) } /> ;
125167 case "EXECUTING" :
@@ -158,6 +200,7 @@ export function runStatusClassNameColor(status: TaskRunStatus): string {
158200 case "PENDING" :
159201 case "DELAYED" :
160202 return "text-charcoal-500" ;
203+ case "PENDING_VERSION" :
161204 case "WAITING_FOR_DEPLOY" :
162205 return "text-amber-500" ;
163206 case "EXECUTING" :
@@ -194,8 +237,9 @@ export function runStatusTitle(status: TaskRunStatus): string {
194237 return "Delayed" ;
195238 case "PENDING" :
196239 return "Queued" ;
240+ case "PENDING_VERSION" :
197241 case "WAITING_FOR_DEPLOY" :
198- return "Waiting for deploy " ;
242+ return "Pending version " ;
199243 case "EXECUTING" :
200244 return "Executing" ;
201245 case "WAITING_TO_RESUME" :
0 commit comments