| | 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, |
| | 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: '', |
| | }, |
| | } as any) |
| | } |
| | else if (item.type === 'select') { |
| | userInputs.push({ |
| | select: { |
| | label: item.name, |
| | variable: item.key, |
| | required: item.required !== false, |
| | 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 |
| | } |
| |
|