| 
									
										
										
										
											2025-05-15 22:39:35 +08:00
										 |  |  | import type { NodeDefault } from '../../types' | 
					
						
							| 
									
										
										
										
											2024-05-27 21:57:08 +08:00
										 |  |  | import { type ParameterExtractorNodeType, ReasoningModeType } from './types' | 
					
						
							| 
									
										
										
										
											2025-04-24 16:29:58 +08:00
										 |  |  | import { genNodeMetaData } from '@/app/components/workflow/utils' | 
					
						
							|  |  |  | import { BlockEnum } from '@/app/components/workflow/types' | 
					
						
							|  |  |  | import { BlockClassificationEnum } from '@/app/components/workflow/block-selector/types' | 
					
						
							| 
									
										
										
										
											2024-05-27 21:57:08 +08:00
										 |  |  | const i18nPrefix = 'workflow' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-29 16:11:54 +08:00
										 |  |  | const metaData = genNodeMetaData({ | 
					
						
							|  |  |  |   classification: BlockClassificationEnum.Transform, | 
					
						
							|  |  |  |   sort: 6, | 
					
						
							|  |  |  |   type: BlockEnum.ParameterExtractor, | 
					
						
							|  |  |  | }) | 
					
						
							| 
									
										
										
										
											2024-05-27 21:57:08 +08:00
										 |  |  | const nodeDefault: NodeDefault<ParameterExtractorNodeType> = { | 
					
						
							| 
									
										
										
										
											2025-04-29 16:11:54 +08:00
										 |  |  |   metaData, | 
					
						
							| 
									
										
										
										
											2024-05-27 21:57:08 +08:00
										 |  |  |   defaultValue: { | 
					
						
							|  |  |  |     query: [], | 
					
						
							|  |  |  |     model: { | 
					
						
							|  |  |  |       provider: '', | 
					
						
							|  |  |  |       name: '', | 
					
						
							|  |  |  |       mode: 'chat', | 
					
						
							|  |  |  |       completion_params: { | 
					
						
							|  |  |  |         temperature: 0.7, | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     reasoning_mode: ReasoningModeType.prompt, | 
					
						
							| 
									
										
										
										
											2024-10-21 10:32:37 +08:00
										 |  |  |     vision: { | 
					
						
							|  |  |  |       enabled: false, | 
					
						
							|  |  |  |     }, | 
					
						
							| 
									
										
										
										
											2024-05-27 21:57:08 +08:00
										 |  |  |   }, | 
					
						
							|  |  |  |   checkValid(payload: ParameterExtractorNodeType, t: any) { | 
					
						
							|  |  |  |     let errorMessages = '' | 
					
						
							|  |  |  |     if (!errorMessages && (!payload.query || payload.query.length === 0)) | 
					
						
							|  |  |  |       errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.parameterExtractor.inputVar`) }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (!errorMessages && !payload.model.provider) | 
					
						
							|  |  |  |       errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.parameterExtractor.model`) }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (!errorMessages && (!payload.parameters || payload.parameters.length === 0)) | 
					
						
							|  |  |  |       errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.parameterExtractor.extractParameters`) }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (!errorMessages) { | 
					
						
							|  |  |  |       payload.parameters.forEach((param) => { | 
					
						
							|  |  |  |         if (errorMessages) | 
					
						
							|  |  |  |           return | 
					
						
							|  |  |  |         if (!param.name) { | 
					
						
							|  |  |  |           errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.parameterExtractor.addExtractParameterContent.namePlaceholder`) }) | 
					
						
							|  |  |  |           return | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         if (!param.type) { | 
					
						
							|  |  |  |           errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.parameterExtractor.addExtractParameterContent.typePlaceholder`) }) | 
					
						
							|  |  |  |           return | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         if (!param.description) | 
					
						
							|  |  |  |           errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.parameterExtractor.addExtractParameterContent.descriptionPlaceholder`) }) | 
					
						
							|  |  |  |       }) | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2024-10-21 10:32:37 +08:00
										 |  |  |     if (!errorMessages && payload.vision?.enabled && !payload.vision.configs?.variable_selector?.length) | 
					
						
							|  |  |  |       errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.errorMsg.fields.visionVariable`) }) | 
					
						
							| 
									
										
										
										
											2024-05-27 21:57:08 +08:00
										 |  |  |     return { | 
					
						
							|  |  |  |       isValid: !errorMessages, | 
					
						
							|  |  |  |       errorMessage: errorMessages, | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export default nodeDefault |