Spaces:
Paused
Paused
| 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 | |
| } | |