diff --git a/web/app/components/base/form/form-scenarios/input-field/utils.ts b/web/app/components/base/form/form-scenarios/input-field/utils.ts index 2b5e988f5a..06300d31b8 100644 --- a/web/app/components/base/form/form-scenarios/input-field/utils.ts +++ b/web/app/components/base/form/form-scenarios/input-field/utils.ts @@ -1,6 +1,7 @@ import type { ZodSchema, ZodString } from 'zod' import { z } from 'zod' import { type InputFieldConfiguration, InputFieldType } from './types' +import { SupportedFileTypes, TransferMethod } from '@/app/components/rag-pipeline/components/input-field/editor/form/schema' export const generateZodSchema = (fields: InputFieldConfiguration[]) => { const shape: Record = {} @@ -28,13 +29,16 @@ export const generateZodSchema = (fields: InputFieldConfiguration[]) => { zodType = z.string() break case InputFieldType.fileTypes: - zodType = z.array(z.string()) + zodType = z.object({ + allowedFileExtensions: z.string().optional(), + allowedFileTypes: z.array(SupportedFileTypes), + }) break case InputFieldType.inputTypeSelect: zodType = z.string() break case InputFieldType.uploadMethod: - zodType = z.array(z.string()) + zodType = z.array(TransferMethod) break default: zodType = z.any() diff --git a/web/app/components/rag-pipeline/components/input-field/editor/form/schema.ts b/web/app/components/rag-pipeline/components/input-field/editor/form/schema.ts index 1238712457..217134c42b 100644 --- a/web/app/components/rag-pipeline/components/input-field/editor/form/schema.ts +++ b/web/app/components/rag-pipeline/components/input-field/editor/form/schema.ts @@ -16,13 +16,13 @@ export const InputType = z.enum([ 'file-list', ]) -const TransferMethod = z.enum([ +export const TransferMethod = z.enum([ 'all', 'local_file', 'remote_url', ]) -const SupportedFileTypes = z.enum([ +export const SupportedFileTypes = z.enum([ 'image', 'document', 'video', @@ -77,19 +77,19 @@ export const createInputFieldSchema = (type: InputVarType, t: TFunction, options } if (type === InputVarType.singleFile) { return z.object({ - allowedFileTypes: z.array(SupportedFileTypes), + allowedFileUploadMethods: z.array(TransferMethod), allowedTypesAndExtensions: z.object({ - allowedFileExtensions: z.string().optional(), - allowedFileUploadMethods: z.array(TransferMethod), + allowedFileExtensions: z.array(z.string()).optional(), + allowedFileTypes: z.array(SupportedFileTypes), }), }).merge(commonSchema).passthrough() } if (type === InputVarType.multiFiles) { return z.object({ - allowedFileTypes: z.array(SupportedFileTypes), + allowedFileUploadMethods: z.array(TransferMethod), allowedTypesAndExtensions: z.object({ - allowedFileExtensions: z.string().optional(), - allowedFileUploadMethods: z.array(TransferMethod), + allowedFileExtensions: z.array(z.string()).optional(), + allowedFileTypes: z.array(SupportedFileTypes), }), maxLength: z.number().min(1).max(maxFileUploadLimit), }).merge(commonSchema).passthrough()