| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 | import type { UserInputFormItem } from '@/types/app'import type { PromptVariable } from '@/models/debug'export const userInputsFormToPromptVariables = (useInputs: UserInputFormItem[] | null, dataset_query_variable?: string) => {  if (!useInputs)    return []  const promptVariables: PromptVariable[] = []  useInputs.forEach((item: any) => {    const isParagraph = !!item.paragraph    const [type, content] = (() => {      if (isParagraph)        return ['paragraph', item.paragraph]      if (item['text-input'])        return ['string', item['text-input']]      if (item.number)        return ['number', item.number]      if (item.file)        return ['file', item.file]      if (item['file-list'])        return ['file-list', item['file-list']]      if (item.external_data_tool)        return [item.external_data_tool.type, item.external_data_tool]      return ['select', item.select || {}]    })()    const is_context_var = dataset_query_variable === content?.variable    if (type === 'string' || type === 'paragraph') {      promptVariables.push({        key: content.variable,        name: content.label,        required: content.required,        type,        max_length: content.max_length,        options: [],        is_context_var,      })    }    else if (type === 'number') {      promptVariables.push({        key: content.variable,        name: content.label,        required: content.required,        type,        options: [],      })    }    else if (type === 'select') {      promptVariables.push({        key: content.variable,        name: content.label,        required: content.required,        type: 'select',        options: content.options,        is_context_var,      })    }    else if (type === 'file') {      promptVariables.push({        key: content.variable,        name: content.label,        required: content.required,        type,        config: {          allowed_file_types: content.allowed_file_types,          allowed_file_extensions: content.allowed_file_extensions,          allowed_file_upload_methods: content.allowed_file_upload_methods,          number_limits: 1,        },      })    }    else if (type === 'file-list') {      promptVariables.push({        key: content.variable,        name: content.label,        required: content.required,        type,        config: {          allowed_file_types: content.allowed_file_types,          allowed_file_extensions: content.allowed_file_extensions,          allowed_file_upload_methods: content.allowed_file_upload_methods,          number_limits: content.max_length,        },      })    }    else {      promptVariables.push({        key: content.variable,        name: content.label,        required: content.required,        type: content.type,        enabled: content.enabled,        config: content.config,        icon: content.icon,        icon_background: content.icon_background,        is_context_var,      })    }  })  return promptVariables}export const promptVariablesToUserInputsForm = (promptVariables: PromptVariable[]) => {  const userInputs: UserInputFormItem[] = []  promptVariables.filter(({ key, name }) => {    if (key && key.trim() && name && name.trim())      return true    return false  }).forEach((item: any) => {    if (item.type === 'string' || item.type === 'paragraph') {      userInputs.push({        [item.type === 'string' ? 'text-input' : 'paragraph']: {          label: item.name,          variable: item.key,          required: item.required !== false, // default true          max_length: item.max_length,          default: '',        },      } as any)      return    }    if (item.type === 'number') {      userInputs.push({        number: {          label: item.name,          variable: item.key,          required: item.required !== false, // default true          default: '',        },      } as any)    }    else if (item.type === 'select') {      userInputs.push({        select: {          label: item.name,          variable: item.key,          required: item.required !== false, // default true          options: item.options,          default: '',        },      } as any)    }    else {      userInputs.push({        external_data_tool: {          label: item.name,          variable: item.key,          enabled: item.enabled,          type: item.type,          config: item.config,          required: item.required,          icon: item.icon,          icon_background: item.icon_background,        },      } as any)    }  })  return userInputs}
 |