diff --git a/skyvern-frontend/src/routes/tasks/create/CreateNewTaskFormPage.tsx b/skyvern-frontend/src/routes/tasks/create/CreateNewTaskFormPage.tsx index 6546310c..f6d3d114 100644 --- a/skyvern-frontend/src/routes/tasks/create/CreateNewTaskFormPage.tsx +++ b/skyvern-frontend/src/routes/tasks/create/CreateNewTaskFormPage.tsx @@ -46,6 +46,8 @@ function CreateNewTaskFormPage() { (parameter: WorkflowParameter) => parameter.key === "navigation_payload", ).default_value; + const dataSchema = data.workflow_definition.blocks[0].data_schema; + return ( diff --git a/skyvern-frontend/src/routes/tasks/create/SavedTaskForm.tsx b/skyvern-frontend/src/routes/tasks/create/SavedTaskForm.tsx index 2d25bb9e..3189abf6 100644 --- a/skyvern-frontend/src/routes/tasks/create/SavedTaskForm.tsx +++ b/skyvern-frontend/src/routes/tasks/create/SavedTaskForm.tsx @@ -61,23 +61,39 @@ const savedTaskFormSchema = z navigationPayload: z.string().or(z.null()).optional(), extractedInformationSchema: z.string().or(z.null()).optional(), }) - .superRefine(({ navigationGoal, dataExtractionGoal }, ctx) => { - if (!navigationGoal && !dataExtractionGoal) { - ctx.addIssue({ - code: z.ZodIssueCode.custom, - message: - "At least one of navigation goal or data extraction goal must be provided", - path: ["navigationGoal"], - }); - ctx.addIssue({ - code: z.ZodIssueCode.custom, - message: - "At least one of navigation goal or data extraction goal must be provided", - path: ["dataExtractionGoal"], - }); - return z.NEVER; - } - }); + .superRefine( + ( + { navigationGoal, dataExtractionGoal, extractedInformationSchema }, + ctx, + ) => { + if (!navigationGoal && !dataExtractionGoal) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: + "At least one of navigation goal or data extraction goal must be provided", + path: ["navigationGoal"], + }); + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: + "At least one of navigation goal or data extraction goal must be provided", + path: ["dataExtractionGoal"], + }); + return z.NEVER; + } + if (extractedInformationSchema) { + try { + JSON.parse(extractedInformationSchema); + } catch (e) { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: "Invalid JSON", + path: ["extractedInformationSchema"], + }); + } + } + }, + ); export type SavedTaskFormValues = z.infer; @@ -105,6 +121,17 @@ function createTaskRequestObject(formValues: SavedTaskFormValues) { } function createTaskTemplateRequestObject(values: SavedTaskFormValues) { + let extractedInformationSchema = null; + if (values.extractedInformationSchema) { + try { + extractedInformationSchema = JSON.parse( + values.extractedInformationSchema, + ); + } catch (e) { + extractedInformationSchema = values.extractedInformationSchema; + } + } + return { title: values.title, description: values.description, @@ -126,7 +153,7 @@ function createTaskTemplateRequestObject(values: SavedTaskFormValues) { url: values.url, navigation_goal: values.navigationGoal, data_extraction_goal: values.dataExtractionGoal, - data_schema: values.extractedInformationSchema, + data_schema: extractedInformationSchema, }, ], },