@shipfox/client-workflows 16.0.0 → 17.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.turbo/turbo-type.log +1 -0
  3. package/CHANGELOG.md +20 -0
  4. package/dist/components/identifier/identifier.js +2 -2
  5. package/dist/components/identifier/identifier.js.map +1 -1
  6. package/dist/components/job-detail/agent-config-failure-callout.d.ts.map +1 -1
  7. package/dist/components/job-detail/agent-config-failure-callout.js +1 -1
  8. package/dist/components/job-detail/agent-config-failure-callout.js.map +1 -1
  9. package/dist/components/job-detail/job-context-panel.d.ts +6 -0
  10. package/dist/components/job-detail/job-context-panel.d.ts.map +1 -0
  11. package/dist/components/job-detail/job-context-panel.js +224 -0
  12. package/dist/components/job-detail/job-context-panel.js.map +1 -0
  13. package/dist/components/job-detail/job-detail-header.d.ts +3 -1
  14. package/dist/components/job-detail/job-detail-header.d.ts.map +1 -1
  15. package/dist/components/job-detail/job-detail-header.js +54 -48
  16. package/dist/components/job-detail/job-detail-header.js.map +1 -1
  17. package/dist/components/job-detail/job-detail-view.d.ts +1 -1
  18. package/dist/components/job-detail/job-detail-view.d.ts.map +1 -1
  19. package/dist/components/job-detail/job-detail-view.js +80 -44
  20. package/dist/components/job-detail/job-detail-view.js.map +1 -1
  21. package/dist/components/job-detail/job-empty-states.d.ts.map +1 -1
  22. package/dist/components/job-detail/job-empty-states.js +19 -10
  23. package/dist/components/job-detail/job-empty-states.js.map +1 -1
  24. package/dist/components/job-detail/job-execution-switcher.js +4 -4
  25. package/dist/components/job-detail/job-execution-switcher.js.map +1 -1
  26. package/dist/components/job-detail/json-code.d.ts +14 -0
  27. package/dist/components/job-detail/json-code.d.ts.map +1 -0
  28. package/dist/components/job-detail/json-code.js +93 -0
  29. package/dist/components/job-detail/json-code.js.map +1 -0
  30. package/dist/components/job-detail/step-attempt-log-panel.d.ts.map +1 -1
  31. package/dist/components/job-detail/step-attempt-log-panel.js +9 -6
  32. package/dist/components/job-detail/step-attempt-log-panel.js.map +1 -1
  33. package/dist/components/job-detail/step-troubleshooting.d.ts +18 -0
  34. package/dist/components/job-detail/step-troubleshooting.d.ts.map +1 -0
  35. package/dist/components/job-detail/step-troubleshooting.js +493 -0
  36. package/dist/components/job-detail/step-troubleshooting.js.map +1 -0
  37. package/dist/components/job-graph/job-graph-content.d.ts.map +1 -1
  38. package/dist/components/job-graph/job-graph-content.js +5 -4
  39. package/dist/components/job-graph/job-graph-content.js.map +1 -1
  40. package/dist/components/job-graph/job-node.js +3 -3
  41. package/dist/components/job-graph/job-node.js.map +1 -1
  42. package/dist/components/step-list/index.d.ts +1 -0
  43. package/dist/components/step-list/index.d.ts.map +1 -1
  44. package/dist/components/step-list/index.js.map +1 -1
  45. package/dist/components/step-list/step-list-model.d.ts.map +1 -1
  46. package/dist/components/step-list/step-list-model.js +5 -0
  47. package/dist/components/step-list/step-list-model.js.map +1 -1
  48. package/dist/components/step-list/step-list.d.ts +5 -1
  49. package/dist/components/step-list/step-list.d.ts.map +1 -1
  50. package/dist/components/step-list/step-list.js +117 -82
  51. package/dist/components/step-list/step-list.js.map +1 -1
  52. package/dist/components/workflow-run-duration-label.js +1 -1
  53. package/dist/components/workflow-run-duration-label.js.map +1 -1
  54. package/dist/components/workflow-run-list/job-status-strip.js +6 -6
  55. package/dist/components/workflow-run-list/job-status-strip.js.map +1 -1
  56. package/dist/components/workflow-run-list/workflow-run-filter-menu.js +1 -1
  57. package/dist/components/workflow-run-list/workflow-run-filter-menu.js.map +1 -1
  58. package/dist/components/workflow-run-list/workflow-run-filters.js +4 -4
  59. package/dist/components/workflow-run-list/workflow-run-filters.js.map +1 -1
  60. package/dist/components/workflow-run-list/workflow-run-list-states.js +6 -6
  61. package/dist/components/workflow-run-list/workflow-run-list-states.js.map +1 -1
  62. package/dist/components/workflow-run-list/workflow-run-list-view.js +1 -1
  63. package/dist/components/workflow-run-list/workflow-run-list-view.js.map +1 -1
  64. package/dist/components/workflow-run-list/workflow-run-row.js +7 -7
  65. package/dist/components/workflow-run-list/workflow-run-row.js.map +1 -1
  66. package/dist/components/workflow-run-summary/workflow-run-attempt-switcher.js +1 -1
  67. package/dist/components/workflow-run-summary/workflow-run-attempt-switcher.js.map +1 -1
  68. package/dist/components/workflow-run-summary/workflow-run-summary.d.ts +0 -1
  69. package/dist/components/workflow-run-summary/workflow-run-summary.d.ts.map +1 -1
  70. package/dist/components/workflow-run-summary/workflow-run-summary.js +8 -13
  71. package/dist/components/workflow-run-summary/workflow-run-summary.js.map +1 -1
  72. package/dist/components/workflow-run-tabs/index.d.ts +1 -1
  73. package/dist/components/workflow-run-tabs/index.d.ts.map +1 -1
  74. package/dist/components/workflow-run-tabs/index.js.map +1 -1
  75. package/dist/components/workflow-run-tabs/run-annotation-count-chip.js +2 -2
  76. package/dist/components/workflow-run-tabs/run-annotation-count-chip.js.map +1 -1
  77. package/dist/components/workflow-run-tabs/run-annotation-list.d.ts +9 -2
  78. package/dist/components/workflow-run-tabs/run-annotation-list.d.ts.map +1 -1
  79. package/dist/components/workflow-run-tabs/run-annotation-list.js +28 -19
  80. package/dist/components/workflow-run-tabs/run-annotation-list.js.map +1 -1
  81. package/dist/components/workflow-run-tabs/run-annotation-summary-line.d.ts.map +1 -1
  82. package/dist/components/workflow-run-tabs/run-annotation-summary-line.js +5 -5
  83. package/dist/components/workflow-run-tabs/run-annotation-summary-line.js.map +1 -1
  84. package/dist/components/workflow-run-view/run-workspace-nav.js +7 -7
  85. package/dist/components/workflow-run-view/run-workspace-nav.js.map +1 -1
  86. package/dist/components/workflow-run-view/workflow-run-states.js +6 -6
  87. package/dist/components/workflow-run-view/workflow-run-states.js.map +1 -1
  88. package/dist/components/workflow-run-view/workflow-run-view.d.ts.map +1 -1
  89. package/dist/components/workflow-run-view/workflow-run-view.js +72 -12
  90. package/dist/components/workflow-run-view/workflow-run-view.js.map +1 -1
  91. package/dist/core/entities/job-execution.d.ts +7 -0
  92. package/dist/core/entities/job-execution.d.ts.map +1 -1
  93. package/dist/core/entities/job-execution.js.map +1 -1
  94. package/dist/core/entities/job.d.ts +9 -0
  95. package/dist/core/entities/job.d.ts.map +1 -1
  96. package/dist/core/entities/job.js.map +1 -1
  97. package/dist/core/entities/step-attempt.d.ts +29 -0
  98. package/dist/core/entities/step-attempt.d.ts.map +1 -1
  99. package/dist/core/entities/step-attempt.js.map +1 -1
  100. package/dist/core/entities/step.d.ts +3 -1
  101. package/dist/core/entities/step.d.ts.map +1 -1
  102. package/dist/core/entities/step.js.map +1 -1
  103. package/dist/core/run-annotation.d.ts +6 -0
  104. package/dist/core/run-annotation.d.ts.map +1 -1
  105. package/dist/core/run-annotation.js.map +1 -1
  106. package/dist/core/workflow-run.d.ts +1 -1
  107. package/dist/core/workflow-run.d.ts.map +1 -1
  108. package/dist/core/workflow-run.js.map +1 -1
  109. package/dist/hooks/api/annotations.d.ts +63 -0
  110. package/dist/hooks/api/annotations.d.ts.map +1 -0
  111. package/dist/hooks/api/annotations.js +145 -0
  112. package/dist/hooks/api/annotations.js.map +1 -0
  113. package/dist/hooks/api/step-attempt-detail.d.ts +14 -0
  114. package/dist/hooks/api/step-attempt-detail.d.ts.map +1 -0
  115. package/dist/hooks/api/step-attempt-detail.js +43 -0
  116. package/dist/hooks/api/step-attempt-detail.js.map +1 -0
  117. package/dist/hooks/api/workflow-run-mapper.d.ts +9 -2
  118. package/dist/hooks/api/workflow-run-mapper.d.ts.map +1 -1
  119. package/dist/hooks/api/workflow-run-mapper.js +47 -0
  120. package/dist/hooks/api/workflow-run-mapper.js.map +1 -1
  121. package/dist/pages/project-workflows-page.js +19 -19
  122. package/dist/pages/project-workflows-page.js.map +1 -1
  123. package/dist/pages/workflow-run-list-page.js +1 -1
  124. package/dist/pages/workflow-run-list-page.js.map +1 -1
  125. package/dist/tsconfig.test.tsbuildinfo +1 -1
  126. package/package.json +10 -10
  127. package/src/components/identifier/identifier.tsx +2 -2
  128. package/src/components/job-detail/agent-config-failure-callout.tsx +5 -1
  129. package/src/components/job-detail/job-context-panel.test.tsx +72 -0
  130. package/src/components/job-detail/job-context-panel.tsx +237 -0
  131. package/src/components/job-detail/job-detail-header.tsx +52 -46
  132. package/src/components/job-detail/job-detail-view.stories.tsx +555 -53
  133. package/src/components/job-detail/job-detail-view.tsx +87 -45
  134. package/src/components/job-detail/job-empty-states.tsx +23 -10
  135. package/src/components/job-detail/job-execution-switcher.tsx +5 -5
  136. package/src/components/job-detail/json-code.tsx +120 -0
  137. package/src/components/job-detail/step-attempt-log-panel.test.tsx +1 -0
  138. package/src/components/job-detail/step-attempt-log-panel.tsx +17 -6
  139. package/src/components/job-detail/step-troubleshooting.stories.tsx +120 -0
  140. package/src/components/job-detail/step-troubleshooting.test.tsx +337 -0
  141. package/src/components/job-detail/step-troubleshooting.tsx +537 -0
  142. package/src/components/job-graph/job-graph-content.tsx +4 -3
  143. package/src/components/job-graph/job-node.tsx +3 -3
  144. package/src/components/step-list/index.ts +1 -0
  145. package/src/components/step-list/step-list-model.ts +5 -0
  146. package/src/components/step-list/step-list.test.tsx +75 -2
  147. package/src/components/step-list/step-list.tsx +73 -20
  148. package/src/components/workflow-run-duration-label.tsx +1 -1
  149. package/src/components/workflow-run-list/job-status-strip.tsx +6 -6
  150. package/src/components/workflow-run-list/workflow-run-filter-menu.tsx +1 -1
  151. package/src/components/workflow-run-list/workflow-run-filters.tsx +4 -4
  152. package/src/components/workflow-run-list/workflow-run-list-states.tsx +6 -6
  153. package/src/components/workflow-run-list/workflow-run-list-view.tsx +1 -1
  154. package/src/components/workflow-run-list/workflow-run-row.tsx +7 -7
  155. package/src/components/workflow-run-summary/workflow-run-attempt-switcher.tsx +1 -1
  156. package/src/components/workflow-run-summary/workflow-run-summary.test.tsx +1 -1
  157. package/src/components/workflow-run-summary/workflow-run-summary.tsx +11 -11
  158. package/src/components/workflow-run-tabs/index.ts +5 -1
  159. package/src/components/workflow-run-tabs/run-annotation-count-chip.tsx +2 -2
  160. package/src/components/workflow-run-tabs/run-annotation-list.tsx +25 -10
  161. package/src/components/workflow-run-tabs/run-annotation-summary-line.tsx +5 -5
  162. package/src/components/workflow-run-view/run-workspace-nav.tsx +7 -7
  163. package/src/components/workflow-run-view/workflow-run-states.tsx +6 -6
  164. package/src/components/workflow-run-view/workflow-run-view.tsx +114 -14
  165. package/src/core/entities/job-execution.ts +7 -0
  166. package/src/core/entities/job.ts +9 -0
  167. package/src/core/entities/step-attempt.ts +33 -0
  168. package/src/core/entities/step.ts +3 -1
  169. package/src/core/run-annotation.ts +6 -0
  170. package/src/core/workflow-run.ts +4 -0
  171. package/src/hooks/api/annotations.test.ts +84 -0
  172. package/src/hooks/api/annotations.ts +240 -0
  173. package/src/hooks/api/step-attempt-detail.ts +67 -0
  174. package/src/hooks/api/workflow-run-mapper.ts +46 -0
  175. package/src/hooks/api/workflow-runs.test.tsx +61 -1
  176. package/src/pages/project-workflows-page.tsx +19 -19
  177. package/src/pages/workflow-job-detail-page.test.tsx +52 -1
  178. package/src/pages/workflow-run-list-page.tsx +1 -1
  179. package/test/fixtures/workflow-run.ts +7 -0
  180. package/tsconfig.build.tsbuildinfo +1 -1
@@ -66,9 +66,9 @@ function ProjectWorkflowsPageInner({projectId}: {projectId: string}) {
66
66
  }
67
67
 
68
68
  return (
69
- <div className="flex w-full flex-col gap-24">
69
+ <div className="flex w-full flex-col gap-section">
70
70
  {projectQuery.isPending ? (
71
- <div className="flex flex-col gap-12">
71
+ <div className="flex flex-col gap-cluster">
72
72
  <Skeleton className="h-28 w-1/3" />
73
73
  <Skeleton className="h-18 w-1/2" />
74
74
  </div>
@@ -88,7 +88,7 @@ function ProjectWorkflowsPageInner({projectId}: {projectId: string}) {
88
88
 
89
89
  {projectQuery.data ? (
90
90
  <>
91
- <header className="flex flex-col gap-4">
91
+ <header className="flex flex-col gap-tight">
92
92
  <Header variant="h2">Workflows</Header>
93
93
  <Text size="sm" className="text-foreground-neutral-muted">
94
94
  Synced workflow definitions for this project source.
@@ -170,7 +170,7 @@ function WorkflowDefinitionsList({
170
170
  }) {
171
171
  if (isPending) {
172
172
  return (
173
- <div className="flex flex-col gap-8">
173
+ <div className="flex flex-col gap-inline">
174
174
  <Skeleton className="h-40 w-full" />
175
175
  <Skeleton className="h-40 w-full" />
176
176
  <Skeleton className="h-40 w-full" />
@@ -228,11 +228,11 @@ function WorkflowDefinitionsList({
228
228
  />
229
229
  </TableCell>
230
230
  <TableCell className="max-w-260">
231
- <div className="flex min-w-0 flex-col gap-2">
231
+ <div className="flex min-w-0 flex-col gap-tight">
232
232
  <button
233
233
  type="button"
234
234
  onClick={() => onOpenDefinition(definition)}
235
- className="flex min-w-0 flex-col gap-2 text-left outline-none focus-visible:shadow-border-interactive-with-active rounded-4"
235
+ className="flex min-w-0 flex-col gap-tight text-left outline-none focus-visible:shadow-border-interactive-with-active rounded-4"
236
236
  >
237
237
  <Text size="sm" bold className="truncate">
238
238
  {definition.name}
@@ -276,11 +276,11 @@ function WorkflowDefinitionsList({
276
276
  return (
277
277
  <div
278
278
  key={definition.id}
279
- className="flex flex-col gap-10 border-b border-border-neutral-base p-12 last:border-b-0"
279
+ className="flex flex-col gap-inline border-b border-border-neutral-base p-panel-compact last:border-b-0"
280
280
  >
281
281
  <button
282
282
  type="button"
283
- className="flex min-w-0 items-start gap-10 text-left"
283
+ className="flex min-w-0 items-start gap-inline text-left"
284
284
  onClick={() => onOpenDefinition(definition)}
285
285
  >
286
286
  <Icon
@@ -288,7 +288,7 @@ function WorkflowDefinitionsList({
288
288
  className="size-16 shrink-0 text-foreground-neutral-muted"
289
289
  aria-hidden="true"
290
290
  />
291
- <div className="flex min-w-0 flex-col gap-4">
291
+ <div className="flex min-w-0 flex-col gap-tight">
292
292
  <Text size="sm" bold className="break-words">
293
293
  {definition.name}
294
294
  </Text>
@@ -297,7 +297,7 @@ function WorkflowDefinitionsList({
297
297
  </Code>
298
298
  </div>
299
299
  </button>
300
- <div className="flex items-center justify-between gap-8">
300
+ <div className="flex items-center justify-between gap-inline">
301
301
  <Text size="xs" className="text-foreground-neutral-muted">
302
302
  Updated <RelativeTime value={definition.updatedAt} />
303
303
  </Text>
@@ -319,7 +319,7 @@ function WorkflowDefinitionsList({
319
319
 
320
320
  {isFetchNextPageError ? (
321
321
  <Callout role="alert" type="error">
322
- <div className="flex items-center justify-between gap-12">
322
+ <div className="flex items-center justify-between gap-cluster">
323
323
  <Text size="sm">Could not load more workflows.</Text>
324
324
  <Button size="sm" variant="secondary" onClick={onLoadMore}>
325
325
  Retry
@@ -363,7 +363,7 @@ function WorkflowSyncAlert({sync}: {sync: DefinitionSyncSummary | null | undefin
363
363
 
364
364
  return (
365
365
  <Callout role="alert" type="error">
366
- <div className="flex flex-col gap-4">
366
+ <div className="flex flex-col gap-tight">
367
367
  <Text size="sm" bold>
368
368
  Workflow sync failed
369
369
  </Text>
@@ -388,11 +388,11 @@ function WorkflowSyncWarnings({sync}: {sync: DefinitionSyncSummary | null | unde
388
388
 
389
389
  return (
390
390
  <Callout role="status" type="warning">
391
- <div className="flex flex-col gap-6">
391
+ <div className="flex flex-col gap-inline">
392
392
  <Text size="sm" bold>
393
393
  Workflow definition warnings
394
394
  </Text>
395
- <ul className="flex flex-col gap-4">
395
+ <ul className="flex flex-col gap-tight">
396
396
  {warningItems.map(({key, warning}) => (
397
397
  <li key={key}>
398
398
  <Text size="sm">{warning.message}</Text>
@@ -436,18 +436,18 @@ function DefinitionSheet({
436
436
  {definition.configPath ?? 'Manual workflow definition'}
437
437
  </SheetDescription>
438
438
  </SheetHeader>
439
- <SheetBody className="gap-18">
440
- <div className="grid w-full gap-10">
439
+ <SheetBody className="gap-group">
440
+ <div className="grid w-full gap-inline">
441
441
  <Metadata label="Definition id" value={definition.id} />
442
442
  <Metadata label="Source" value={definition.source} />
443
443
  <Metadata label="Ref" value={definition.ref ?? 'Not set'} />
444
444
  <Metadata label="SHA" value={definition.sha ?? 'Not set'} />
445
445
  </div>
446
- <div className="flex w-full flex-col gap-8">
446
+ <div className="flex w-full flex-col gap-inline">
447
447
  <Text size="sm" bold>
448
448
  Normalized definition
449
449
  </Text>
450
- <pre className="max-h-[52vh] w-full overflow-auto rounded-8 border border-border-neutral-base bg-background-neutral-subtle p-12 scrollbar">
450
+ <pre className="max-h-[52vh] w-full overflow-auto rounded-8 border border-border-neutral-base bg-background-neutral-subtle p-panel-compact scrollbar">
451
451
  <Code as="code" className="whitespace-pre text-foreground-neutral-base">
452
452
  {normalizedJson}
453
453
  </Code>
@@ -463,7 +463,7 @@ function DefinitionSheet({
463
463
 
464
464
  function Metadata({label, value}: {label: string; value: string}) {
465
465
  return (
466
- <div className="min-w-0 py-12 first:pt-0 last:pb-0">
466
+ <div className="min-w-0 py-row first:pt-0 last:pb-0">
467
467
  <Text size="xs" className="text-foreground-neutral-muted">
468
468
  {label}
469
469
  </Text>
@@ -1,5 +1,5 @@
1
1
  import {configureApiClient} from '@shipfox/client-api';
2
- import {act, screen} from '@testing-library/react';
2
+ import {act, screen, waitFor} from '@testing-library/react';
3
3
  import userEvent from '@testing-library/user-event';
4
4
  import {workflowRunsQueryKeys} from '#hooks/api/workflow-runs.js';
5
5
  import type {WorkflowJobSearch, WorkflowRunsSearch} from '#routes/inputs.js';
@@ -34,6 +34,7 @@ const RUN_MOVED_ON_PATTERN = /Run moved on to/;
34
34
  const LINT_LINK_PATTERN = /lint/;
35
35
  const RELEASE_LINK_PATTERN = /release/;
36
36
  const ANNOTATION_LINK_PATTERN = /annotation/;
37
+ const ANNOTATIONS_LINK_PATTERN = /Annotations/;
37
38
 
38
39
  describe('WorkflowJobDetailPage', () => {
39
40
  beforeEach(() => {
@@ -228,6 +229,56 @@ describe('WorkflowJobDetailPage', () => {
228
229
  expect(screen.queryByText('This job has no annotations to show.')).not.toBeInTheDocument();
229
230
  });
230
231
 
232
+ test('keeps the job navigation count run-scoped', async () => {
233
+ jobAnnotations.value = Array.from({length: 5}, (_unused, index) => ({
234
+ id: `aaaaaaaa-1111-4aaa-8aaa-${String(index + 1).padStart(12, '0')}`,
235
+ job_id: JOB_ID,
236
+ job_execution_id: EXECUTION_ID,
237
+ origin_step_id: STEP_ID,
238
+ origin_step_attempt: 1,
239
+ context: `annotation-${index + 1}`,
240
+ style: 'error',
241
+ sequence: index + 1,
242
+ body: 'Body',
243
+ }));
244
+ const annotationRequests: URL[] = [];
245
+ const summaryRequests: URL[] = [];
246
+ configureApiClient({
247
+ fetchImpl: vi.fn((input: RequestInfo | URL) => {
248
+ const request = input as Request;
249
+ const url = new URL(request.url);
250
+ if (url.pathname.endsWith('/annotations')) {
251
+ annotationRequests.push(url);
252
+ return jobDetailFetch(input);
253
+ }
254
+ if (url.pathname.endsWith('/annotations/summary')) {
255
+ summaryRequests.push(url);
256
+ const executionScoped = url.searchParams.has('job_execution_id');
257
+ return Promise.resolve(
258
+ jsonResponse({
259
+ total: executionScoped ? 2 : 5,
260
+ error: executionScoped ? 2 : 5,
261
+ warning: 0,
262
+ info: 0,
263
+ success: 0,
264
+ step_counts: [],
265
+ }),
266
+ );
267
+ }
268
+ return jobDetailFetch(input);
269
+ }),
270
+ });
271
+
272
+ renderJobPath('?runAttempt=1');
273
+
274
+ const annotationsLink = await screen.findByRole('link', {name: ANNOTATIONS_LINK_PATTERN});
275
+ await waitFor(() => expect(annotationsLink).toHaveTextContent('5'));
276
+ expect(annotationRequests.some((url) => !url.searchParams.has('job_execution_id'))).toBe(true);
277
+ expect(
278
+ summaryRequests.some((url) => url.searchParams.get('job_execution_id') === EXECUTION_ID),
279
+ ).toBe(true);
280
+ });
281
+
231
282
  test('explains a failure that happened before the first step started', async () => {
232
283
  configureApiClient({
233
284
  fetchImpl: vi.fn(() => Promise.resolve(jsonResponse(failedBeforeStepsDetailDto()))),
@@ -50,7 +50,7 @@ export function WorkflowRunsPage({
50
50
 
51
51
  return (
52
52
  <div className="flex min-h-0 flex-1 overflow-hidden bg-background-neutral-base">
53
- <div className="mx-auto flex min-h-0 w-full max-w-[1120px] flex-1 flex-col px-24 py-24">
53
+ <div className="mx-auto flex min-h-0 w-full max-w-[1120px] flex-1 flex-col px-frame py-frame">
54
54
  <WorkflowRunList
55
55
  projectId={projectId}
56
56
  workspaceSlug={workspaceSlug}
@@ -233,6 +233,9 @@ export function workflowJobDto(overrides: JobDtoOverrides = {}): WorkflowRunJobD
233
233
  status: 'pending',
234
234
  status_reason: null,
235
235
  carried_over: false,
236
+ success: null,
237
+ runner: null,
238
+ evaluation_trace: null,
236
239
  listening: null,
237
240
  listener_status: 'inactive',
238
241
  resolution_reason: null,
@@ -271,8 +274,10 @@ export function workflowJobExecutionDto(
271
274
  name: 'build',
272
275
  status: 'pending',
273
276
  status_reason: null,
277
+ runner: null,
274
278
  trigger_events: [],
275
279
  outputs: null,
280
+ evaluation_trace: null,
276
281
  queued_at: null,
277
282
  started_at: null,
278
283
  finished_at: null,
@@ -296,8 +301,10 @@ export function workflowStepDto(
296
301
  name: 'build',
297
302
  source_location: null,
298
303
  status: 'pending',
304
+ status_reason: null,
299
305
  type: 'run',
300
306
  config: {},
307
+ evaluation_trace: null,
301
308
  error: null,
302
309
  position: 0,
303
310
  current_attempt: 1,