|  | 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 | 
					
						
						|  | } | 
					
						
						|  |  |