From a87a255b7bde9f53924a7077e0d28aeb0363c4a0 Mon Sep 17 00:00:00 2001 From: Marc Kelechava Date: Thu, 30 Oct 2025 01:26:45 -0700 Subject: [PATCH] Update `Copy to cURL` buttons to reference the new Runs API spec (#3765) Co-authored-by: Shuchang Zheng --- .../routes/tasks/create/CreateNewTaskForm.tsx | 36 ++++++--- .../src/routes/tasks/create/SavedTaskForm.tsx | 48 +++++++---- .../src/routes/tasks/detail/TaskDetails.tsx | 29 +++++-- .../src/routes/workflows/RunWorkflowForm.tsx | 41 ++++++++-- .../src/routes/workflows/WorkflowRun.tsx | 42 ++++++---- skyvern-frontend/src/util/env.ts | 14 ++++ .../src/util/taskRunPayload.test.ts | 74 +++++++++++++++++ skyvern-frontend/src/util/taskRunPayload.ts | 79 +++++++++++++++++++ 8 files changed, 310 insertions(+), 53 deletions(-) create mode 100644 skyvern-frontend/src/util/taskRunPayload.test.ts create mode 100644 skyvern-frontend/src/util/taskRunPayload.ts diff --git a/skyvern-frontend/src/routes/tasks/create/CreateNewTaskForm.tsx b/skyvern-frontend/src/routes/tasks/create/CreateNewTaskForm.tsx index 534ed802..293c2af7 100644 --- a/skyvern-frontend/src/routes/tasks/create/CreateNewTaskForm.tsx +++ b/skyvern-frontend/src/routes/tasks/create/CreateNewTaskForm.tsx @@ -21,9 +21,10 @@ import { KeyValueInput } from "@/components/KeyValueInput"; import { useApiCredential } from "@/hooks/useApiCredential"; import { useCredentialGetter } from "@/hooks/useCredentialGetter"; import { CodeEditor } from "@/routes/workflows/components/CodeEditor"; -import { apiBaseUrl } from "@/util/env"; +import { runsApiBaseUrl } from "@/util/env"; import { CopyApiCommandDropdown } from "@/components/CopyApiCommandDropdown"; import { type ApiCommandOptions } from "@/util/apiCommands"; +import { buildTaskRunPayload } from "@/util/taskRunPayload"; import { zodResolver } from "@hookform/resolvers/zod"; import { PlayIcon, ReloadIcon } from "@radix-ui/react-icons"; import { ToastAction } from "@radix-ui/react-toast"; @@ -754,17 +755,30 @@ function CreateNewTaskForm({ initialValues }: Props) {
- ({ + getOptions={() => { + const formValues = form.getValues(); + const includeOverrideHeader = + formValues.maxStepsOverride !== null && + formValues.maxStepsOverride !== MAX_STEPS_DEFAULT; + + const headers: Record = { + "Content-Type": "application/json", + "x-api-key": apiCredential ?? "", + }; + + if (includeOverrideHeader) { + headers["x-max-steps-override"] = String( + formValues.maxStepsOverride, + ); + } + + return { method: "POST", - url: `${apiBaseUrl}/tasks`, - body: createTaskRequestObject(form.getValues()), - headers: { - "Content-Type": "application/json", - "x-api-key": apiCredential ?? "", - }, - }) satisfies ApiCommandOptions - } + url: `${runsApiBaseUrl}/run/tasks`, + body: buildTaskRunPayload(createTaskRequestObject(formValues)), + headers, + } satisfies ApiCommandOptions; + }} />