@mastra/playground-ui 5.1.11-alpha.0 → 5.1.11-alpha.2

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.
package/dist/index.cjs.js CHANGED
@@ -3239,7 +3239,7 @@ const ImageWithFallback = ({ alt, src, ...rest }) => {
3239
3239
  );
3240
3240
  };
3241
3241
 
3242
- const SyntaxHighlighter$2 = reactSyntaxHighlighter.makePrismAsyncSyntaxHighlighter({
3242
+ const SyntaxHighlighter$3 = reactSyntaxHighlighter.makePrismAsyncSyntaxHighlighter({
3243
3243
  style: prism.coldarkDark,
3244
3244
  customStyle: {
3245
3245
  margin: 0,
@@ -3458,7 +3458,7 @@ const defaultComponents = reactMarkdown.unstable_memoizeMarkdownComponents({
3458
3458
  );
3459
3459
  },
3460
3460
  CodeHeader,
3461
- SyntaxHighlighter: SyntaxHighlighter$2,
3461
+ SyntaxHighlighter: SyntaxHighlighter$3,
3462
3462
  img: ImageWithFallback
3463
3463
  });
3464
3464
 
@@ -4337,7 +4337,7 @@ const useCodemirrorTheme$1 = () => {
4337
4337
  []
4338
4338
  );
4339
4339
  };
4340
- const SyntaxHighlighter$1 = ({ data, className }) => {
4340
+ const SyntaxHighlighter$2 = ({ data, className }) => {
4341
4341
  const formattedCode = JSON.stringify(data, null, 2);
4342
4342
  const theme = useCodemirrorTheme$1();
4343
4343
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: clsx("rounded-md bg-surface4 p-1 font-mono relative", className), children: [
@@ -4364,7 +4364,7 @@ const ToolFallback$1 = ({ toolName, argsText, result }) => {
4364
4364
  let argSlot;
4365
4365
  try {
4366
4366
  const parsedArgs = JSON.parse(argsText);
4367
- argSlot = /* @__PURE__ */ jsxRuntime.jsx(SyntaxHighlighter$1, { data: parsedArgs });
4367
+ argSlot = /* @__PURE__ */ jsxRuntime.jsx(SyntaxHighlighter$2, { data: parsedArgs });
4368
4368
  } catch {
4369
4369
  argSlot = /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "whitespace-pre-wrap", children: argsText });
4370
4370
  }
@@ -4380,7 +4380,7 @@ const ToolFallback$1 = ({ toolName, argsText, result }) => {
4380
4380
  ] }),
4381
4381
  result !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-4 py-2", children: [
4382
4382
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium pb-2", children: "Tool result" }),
4383
- typeof result === "string" ? /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "whitespace-pre-wrap", children: result }) : /* @__PURE__ */ jsxRuntime.jsx(SyntaxHighlighter$1, { data: result })
4383
+ typeof result === "string" ? /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "whitespace-pre-wrap", children: result }) : /* @__PURE__ */ jsxRuntime.jsx(SyntaxHighlighter$2, { data: result })
4384
4384
  ] })
4385
4385
  ] }) })
4386
4386
  ] });
@@ -4761,7 +4761,7 @@ const SpeechInput$1 = () => {
4761
4761
  variant: "ghost",
4762
4762
  className: "rounded-full",
4763
4763
  onClick: () => isListening ? stop() : start(),
4764
- children: isListening ? /* @__PURE__ */ jsxRuntime.jsx(CircleStopIcon$2, {}) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Mic, { className: "h-6 w-6 text-[#898989] hover:text-[#fff]" })
4764
+ children: isListening ? /* @__PURE__ */ jsxRuntime.jsx(CircleStopIcon$1, {}) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Mic, { className: "h-6 w-6 text-[#898989] hover:text-[#fff]" })
4765
4765
  }
4766
4766
  );
4767
4767
  };
@@ -4777,7 +4777,7 @@ const ComposerAction$1 = ({ showFileSupport }) => {
4777
4777
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowUp, { className: "h-6 w-6 text-[#898989] hover:text-[#fff]" })
4778
4778
  }
4779
4779
  ) }) }),
4780
- /* @__PURE__ */ jsxRuntime.jsx(react.ThreadPrimitive.If, { running: true, children: /* @__PURE__ */ jsxRuntime.jsx(react.ComposerPrimitive.Cancel, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(TooltipIconButton, { tooltip: "Cancel", variant: "default", children: /* @__PURE__ */ jsxRuntime.jsx(CircleStopIcon$2, {}) }) }) })
4780
+ /* @__PURE__ */ jsxRuntime.jsx(react.ThreadPrimitive.If, { running: true, children: /* @__PURE__ */ jsxRuntime.jsx(react.ComposerPrimitive.Cancel, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(TooltipIconButton, { tooltip: "Cancel", variant: "default", children: /* @__PURE__ */ jsxRuntime.jsx(CircleStopIcon$1, {}) }) }) })
4781
4781
  ] });
4782
4782
  };
4783
4783
  const EditComposer$1 = () => {
@@ -4789,7 +4789,7 @@ const EditComposer$1 = () => {
4789
4789
  ] })
4790
4790
  ] });
4791
4791
  };
4792
- const CircleStopIcon$2 = () => {
4792
+ const CircleStopIcon$1 = () => {
4793
4793
  return /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 16 16", fill: "currentColor", width: "16", height: "16", children: /* @__PURE__ */ jsxRuntime.jsx("rect", { width: "10", height: "10", x: "3", y: "3", rx: "2" }) });
4794
4794
  };
4795
4795
 
@@ -6350,7 +6350,7 @@ const useCodemirrorTheme = () => {
6350
6350
  []
6351
6351
  );
6352
6352
  };
6353
- const SyntaxHighlighter = ({ data }) => {
6353
+ const SyntaxHighlighter$1 = ({ data }) => {
6354
6354
  const formattedCode = JSON.stringify(data, null, 2);
6355
6355
  const theme = useCodemirrorTheme();
6356
6356
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-md bg-[#1a1a1a] p-1 font-mono", children: /* @__PURE__ */ jsxRuntime.jsx(CodeMirror, { value: formattedCode, theme, extensions: [langJson.jsonLanguage] }) });
@@ -6465,10 +6465,10 @@ const AttributeValue = ({ value }) => {
6465
6465
  return /* @__PURE__ */ jsxRuntime.jsx(Txt, { as: "p", variant: "ui-md", className: "text-icon6", children: String(value) });
6466
6466
  }
6467
6467
  if (typeof value === "object") {
6468
- return /* @__PURE__ */ jsxRuntime.jsx(SyntaxHighlighter, { data: value });
6468
+ return /* @__PURE__ */ jsxRuntime.jsx(SyntaxHighlighter$1, { data: value });
6469
6469
  }
6470
6470
  try {
6471
- return /* @__PURE__ */ jsxRuntime.jsx(SyntaxHighlighter, { data: JSON.parse(value) });
6471
+ return /* @__PURE__ */ jsxRuntime.jsx(SyntaxHighlighter$1, { data: JSON.parse(value) });
6472
6472
  } catch {
6473
6473
  return /* @__PURE__ */ jsxRuntime.jsx(Txt, { as: "p", variant: "ui-md", className: "text-icon6", children: String(value) });
6474
6474
  }
@@ -8180,7 +8180,7 @@ const WorkflowRunEventForm = ({ event, runId, onSendEvent }) => {
8180
8180
  const formatted = await formatJSON(eventData);
8181
8181
  setEventData(formatted);
8182
8182
  };
8183
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
8183
+ return /* @__PURE__ */ jsxRuntime.jsxs(TooltipProvider, { children: [
8184
8184
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
8185
8185
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between pb-2", children: [
8186
8186
  /* @__PURE__ */ jsxRuntime.jsx(Txt, { as: "label", variant: "ui-md", className: "text-icon3", children: "Event data (JSON)" }),
@@ -8287,7 +8287,7 @@ const WorkflowStepActionBar = ({
8287
8287
  ] }),
8288
8288
  onShowTrace && /* @__PURE__ */ jsxRuntime.jsx(Button, { onClick: onShowTrace, children: "Show trace" }),
8289
8289
  showEventForm && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
8290
- /* @__PURE__ */ jsxRuntime.jsx(Button, { onClick: () => setIsEventFormOpen(true), children: "Send event" }),
8290
+ /* @__PURE__ */ jsxRuntime.jsx(Button, { className: "ring-1 ring-accent5 !text-accent5", onClick: () => setIsEventFormOpen(true), children: "Send event" }),
8291
8291
  /* @__PURE__ */ jsxRuntime.jsx(Dialog, { open: isEventFormOpen, onOpenChange: setIsEventFormOpen, children: /* @__PURE__ */ jsxRuntime.jsxs(DialogContent, { className: dialogContentClass, children: [
8292
8292
  /* @__PURE__ */ jsxRuntime.jsxs(DialogTitle, { className: dialogTitleClass, children: [
8293
8293
  "Send ",
@@ -9346,7 +9346,7 @@ const SpeechInput = () => {
9346
9346
  variant: "ghost",
9347
9347
  className: "rounded-full",
9348
9348
  onClick: () => isListening ? stop() : start(),
9349
- children: isListening ? /* @__PURE__ */ jsxRuntime.jsx(CircleStopIcon$1, {}) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Mic, { className: "h-6 w-6 text-[#898989] hover:text-[#fff]" })
9349
+ children: isListening ? /* @__PURE__ */ jsxRuntime.jsx(CircleStopIcon, {}) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Mic, { className: "h-6 w-6 text-[#898989] hover:text-[#fff]" })
9350
9350
  }
9351
9351
  );
9352
9352
  };
@@ -9362,7 +9362,7 @@ const ComposerAction = ({ showFileSupport }) => {
9362
9362
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowUp, { className: "h-6 w-6 text-[#898989] hover:text-[#fff]" })
9363
9363
  }
9364
9364
  ) }) }),
9365
- /* @__PURE__ */ jsxRuntime.jsx(react.ThreadPrimitive.If, { running: true, children: /* @__PURE__ */ jsxRuntime.jsx(react.ComposerPrimitive.Cancel, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(TooltipIconButton, { tooltip: "Cancel", variant: "default", children: /* @__PURE__ */ jsxRuntime.jsx(CircleStopIcon$1, {}) }) }) })
9365
+ /* @__PURE__ */ jsxRuntime.jsx(react.ThreadPrimitive.If, { running: true, children: /* @__PURE__ */ jsxRuntime.jsx(react.ComposerPrimitive.Cancel, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(TooltipIconButton, { tooltip: "Cancel", variant: "default", children: /* @__PURE__ */ jsxRuntime.jsx(CircleStopIcon, {}) }) }) })
9366
9366
  ] });
9367
9367
  };
9368
9368
  const EditComposer = () => {
@@ -9374,7 +9374,7 @@ const EditComposer = () => {
9374
9374
  ] })
9375
9375
  ] });
9376
9376
  };
9377
- const CircleStopIcon$1 = () => {
9377
+ const CircleStopIcon = () => {
9378
9378
  return /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 16 16", fill: "currentColor", width: "16", height: "16", children: /* @__PURE__ */ jsxRuntime.jsx("rect", { width: "10", height: "10", x: "3", y: "3", rx: "2" }) });
9379
9379
  };
9380
9380
 
@@ -11120,12 +11120,88 @@ const WorkflowStatus = ({ stepId, status, result }) => {
11120
11120
  ] }),
11121
11121
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-md bg-surface4 p-1 font-mono relative", children: [
11122
11122
  /* @__PURE__ */ jsxRuntime.jsx(CopyButton, { content: JSON.stringify(result, null, 2), className: "absolute top-2 right-2 z-10" }),
11123
- /* @__PURE__ */ jsxRuntime.jsx(SyntaxHighlighter, { data: result })
11123
+ /* @__PURE__ */ jsxRuntime.jsx(SyntaxHighlighter$1, { data: result })
11124
11124
  ] })
11125
11125
  }
11126
11126
  );
11127
11127
  };
11128
11128
 
11129
+ const WorkflowInputData = ({
11130
+ schema,
11131
+ defaultValues,
11132
+ isSubmitLoading,
11133
+ submitButtonLabel,
11134
+ onSubmit
11135
+ }) => {
11136
+ const [type, setType] = React.useState("form");
11137
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
11138
+ /* @__PURE__ */ jsxRuntime.jsx(RadioGroup, { value: type, onValueChange: (value) => setType(value), className: "pb-4", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-row gap-4", children: [
11139
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
11140
+ /* @__PURE__ */ jsxRuntime.jsx(RadioGroupItem, { value: "form", id: "form" }),
11141
+ /* @__PURE__ */ jsxRuntime.jsx(Label, { htmlFor: "form", className: "!text-icon3 text-ui-sm", children: "Form" })
11142
+ ] }),
11143
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
11144
+ /* @__PURE__ */ jsxRuntime.jsx(RadioGroupItem, { value: "json", id: "json" }),
11145
+ /* @__PURE__ */ jsxRuntime.jsx(Label, { htmlFor: "json", className: "!text-icon3 text-ui-sm", children: "JSON" })
11146
+ ] })
11147
+ ] }) }),
11148
+ type === "form" ? /* @__PURE__ */ jsxRuntime.jsx(
11149
+ DynamicForm,
11150
+ {
11151
+ schema,
11152
+ defaultValues,
11153
+ isSubmitLoading,
11154
+ submitButtonLabel,
11155
+ onSubmit
11156
+ }
11157
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
11158
+ JSONInput,
11159
+ {
11160
+ schema,
11161
+ defaultValues,
11162
+ isSubmitLoading,
11163
+ submitButtonLabel,
11164
+ onSubmit
11165
+ }
11166
+ )
11167
+ ] });
11168
+ };
11169
+ const JSONInput = ({ schema, defaultValues, isSubmitLoading, submitButtonLabel, onSubmit }) => {
11170
+ const [errors, setErrors] = React.useState([]);
11171
+ const [inputData, setInputData] = React.useState(JSON.stringify(defaultValues ?? {}, null, 2));
11172
+ const handleSubmit = () => {
11173
+ setErrors([]);
11174
+ try {
11175
+ const result = schema.safeParse(JSON.parse(inputData));
11176
+ if (!result.success) {
11177
+ setErrors(result.error.issues.map((e) => `[${e.path.join(".")}] ${e.message}`));
11178
+ } else {
11179
+ onSubmit(result.data);
11180
+ }
11181
+ } catch (e) {
11182
+ setErrors(["Invalid JSON provided"]);
11183
+ }
11184
+ };
11185
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-4", children: [
11186
+ errors.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-sm border-accent2 rounded-lg p-2", children: [
11187
+ /* @__PURE__ */ jsxRuntime.jsxs(Txt, { as: "p", variant: "ui-md", className: "text-accent2 font-semibold", children: [
11188
+ errors.length,
11189
+ " errors found"
11190
+ ] }),
11191
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "list-disc list-inside", children: errors.map((error, idx) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "text-ui-sm text-accent2", children: error }, idx)) })
11192
+ ] }),
11193
+ /* @__PURE__ */ jsxRuntime.jsx(SyntaxHighlighter, { data: inputData, onChange: setInputData }),
11194
+ /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "light", onClick: handleSubmit, className: "w-full", size: "lg", children: isSubmitLoading ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "animate-spin" }) : submitButtonLabel })
11195
+ ] });
11196
+ };
11197
+ const SyntaxHighlighter = ({ data, onChange }) => {
11198
+ const theme = useCodemirrorTheme$1();
11199
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-md bg-[#1a1a1a] p-1 font-mono", children: [
11200
+ /* @__PURE__ */ jsxRuntime.jsx(CopyButton, { content: data, className: "absolute top-2 right-2 z-10" }),
11201
+ /* @__PURE__ */ jsxRuntime.jsx(CodeMirror, { value: data, theme, extensions: [langJson.jsonLanguage], onChange })
11202
+ ] });
11203
+ };
11204
+
11129
11205
  function WorkflowTrigger({
11130
11206
  workflowId,
11131
11207
  setRunId,
@@ -11211,24 +11287,12 @@ function WorkflowTrigger({
11211
11287
  const hasWorkflowActivePaths = Object.values(workflowActivePaths).length > 0;
11212
11288
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "h-full pt-3 pb-12", children: [
11213
11289
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4 px-5 pb-5 border-b-sm border-border1", children: [
11214
- result?.runId && /* @__PURE__ */ jsxRuntime.jsxs(
11215
- Button,
11216
- {
11217
- variant: "light",
11218
- onClick: handleCancelWorkflowRun,
11219
- disabled: !!cancelResponse?.message || isCancellingWorkflowRun,
11220
- children: [
11221
- isCancellingWorkflowRun ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "animate-spin" }) }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { children: /* @__PURE__ */ jsxRuntime.jsx(CircleStopIcon, {}) }),
11222
- cancelResponse?.message || "Cancel Workflow Run"
11223
- ]
11224
- }
11225
- ),
11226
11290
  (isResumingWorkflow || isSuspendedSteps && isStreamingWorkflow) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "py-2 px-5 flex items-center gap-2 bg-surface5 -mx-5 -mt-5 border-b-sm border-border1", children: [
11227
11291
  /* @__PURE__ */ jsxRuntime.jsx(Icon, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "animate-spin text-icon6" }) }),
11228
11292
  /* @__PURE__ */ jsxRuntime.jsx(Txt, { children: "Resuming workflow" })
11229
11293
  ] }),
11230
11294
  !isSuspendedSteps && /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: zodInputSchema ? /* @__PURE__ */ jsxRuntime.jsx(
11231
- DynamicForm,
11295
+ WorkflowInputData,
11232
11296
  {
11233
11297
  schema: zodInputSchema,
11234
11298
  defaultValues: payload,
@@ -11264,7 +11328,7 @@ function WorkflowTrigger({
11264
11328
  }
11265
11329
  ) }),
11266
11330
  /* @__PURE__ */ jsxRuntime.jsx(
11267
- DynamicForm,
11331
+ WorkflowInputData,
11268
11332
  {
11269
11333
  schema: stepSchema,
11270
11334
  isSubmitLoading: isResumingWorkflow,
@@ -11281,6 +11345,20 @@ function WorkflowTrigger({
11281
11345
  )
11282
11346
  ] }, step.stepId);
11283
11347
  }),
11348
+ result?.runId && /* @__PURE__ */ jsxRuntime.jsxs(
11349
+ Button,
11350
+ {
11351
+ variant: "light",
11352
+ className: "w-full",
11353
+ size: "lg",
11354
+ onClick: handleCancelWorkflowRun,
11355
+ disabled: !!cancelResponse?.message || isCancellingWorkflowRun,
11356
+ children: [
11357
+ isCancellingWorkflowRun ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "animate-spin" }) }) : /* @__PURE__ */ jsxRuntime.jsx(Icon, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.StopCircle, {}) }),
11358
+ cancelResponse?.message || "Cancel Workflow Run"
11359
+ ]
11360
+ }
11361
+ ),
11284
11362
  hasWorkflowActivePaths && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
11285
11363
  /* @__PURE__ */ jsxRuntime.jsx("hr", { className: "border-border1 border-sm my-5" }),
11286
11364
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2", children: [
@@ -11303,13 +11381,10 @@ const WorkflowJsonDialog = ({ result }) => {
11303
11381
  ] }),
11304
11382
  /* @__PURE__ */ jsxRuntime.jsx(Dialog, { open, onOpenChange: setOpen, children: /* @__PURE__ */ jsxRuntime.jsx(DialogPortal, { children: /* @__PURE__ */ jsxRuntime.jsxs(DialogContent, { className: "max-w-6xl max-h-[90vh] overflow-y-auto overflow-x-hidden bg-surface2", children: [
11305
11383
  /* @__PURE__ */ jsxRuntime.jsx(DialogTitle, { children: "Workflow Execution (JSON)" }),
11306
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full overflow-x-scroll", children: /* @__PURE__ */ jsxRuntime.jsx(SyntaxHighlighter$1, { data: result, className: "p-4" }) })
11384
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full h-full overflow-x-scroll", children: /* @__PURE__ */ jsxRuntime.jsx(SyntaxHighlighter$2, { data: result, className: "p-4" }) })
11307
11385
  ] }) }) })
11308
11386
  ] });
11309
11387
  };
11310
- const CircleStopIcon = () => {
11311
- return /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 16 16", fill: "currentColor", width: "16", height: "16", children: /* @__PURE__ */ jsxRuntime.jsx("rect", { width: "10", height: "10", x: "3", y: "3", rx: "2" }) });
11312
- };
11313
11388
 
11314
11389
  const WorkflowRuns = ({ workflowId, runId, isLoading, runs, onPressRun }) => {
11315
11390
  if (isLoading) {