|
import type { Var } from './types' |
|
import { BlockEnum, VarType } from './types' |
|
import StartNodeDefault from './nodes/start/default' |
|
import AnswerDefault from './nodes/answer/default' |
|
import LLMDefault from './nodes/llm/default' |
|
import KnowledgeRetrievalDefault from './nodes/knowledge-retrieval/default' |
|
import QuestionClassifierDefault from './nodes/question-classifier/default' |
|
import IfElseDefault from './nodes/if-else/default' |
|
import CodeDefault from './nodes/code/default' |
|
import TemplateTransformDefault from './nodes/template-transform/default' |
|
import HttpRequestDefault from './nodes/http/default' |
|
import ParameterExtractorDefault from './nodes/parameter-extractor/default' |
|
import ToolDefault from './nodes/tool/default' |
|
import VariableAssignerDefault from './nodes/variable-assigner/default' |
|
import AssignerDefault from './nodes/assigner/default' |
|
import EndNodeDefault from './nodes/end/default' |
|
import IterationDefault from './nodes/iteration/default' |
|
import DocExtractorDefault from './nodes/document-extractor/default' |
|
import ListFilterDefault from './nodes/list-operator/default' |
|
import IterationStartDefault from './nodes/iteration-start/default' |
|
|
|
type NodesExtraData = { |
|
author: string |
|
about: string |
|
availablePrevNodes: BlockEnum[] |
|
availableNextNodes: BlockEnum[] |
|
getAvailablePrevNodes: (isChatMode: boolean) => BlockEnum[] |
|
getAvailableNextNodes: (isChatMode: boolean) => BlockEnum[] |
|
checkValid: any |
|
} |
|
export const NODES_EXTRA_DATA: Record<BlockEnum, NodesExtraData> = { |
|
[BlockEnum.Start]: { |
|
author: 'Dify', |
|
about: '', |
|
availablePrevNodes: [], |
|
availableNextNodes: [], |
|
getAvailablePrevNodes: StartNodeDefault.getAvailablePrevNodes, |
|
getAvailableNextNodes: StartNodeDefault.getAvailableNextNodes, |
|
checkValid: StartNodeDefault.checkValid, |
|
}, |
|
[BlockEnum.End]: { |
|
author: 'Dify', |
|
about: '', |
|
availablePrevNodes: [], |
|
availableNextNodes: [], |
|
getAvailablePrevNodes: EndNodeDefault.getAvailablePrevNodes, |
|
getAvailableNextNodes: EndNodeDefault.getAvailableNextNodes, |
|
checkValid: EndNodeDefault.checkValid, |
|
}, |
|
[BlockEnum.Answer]: { |
|
author: 'Dify', |
|
about: '', |
|
availablePrevNodes: [], |
|
availableNextNodes: [], |
|
getAvailablePrevNodes: AnswerDefault.getAvailablePrevNodes, |
|
getAvailableNextNodes: AnswerDefault.getAvailableNextNodes, |
|
checkValid: AnswerDefault.checkValid, |
|
}, |
|
[BlockEnum.LLM]: { |
|
author: 'Dify', |
|
about: '', |
|
availablePrevNodes: [], |
|
availableNextNodes: [], |
|
getAvailablePrevNodes: LLMDefault.getAvailablePrevNodes, |
|
getAvailableNextNodes: LLMDefault.getAvailableNextNodes, |
|
checkValid: LLMDefault.checkValid, |
|
}, |
|
[BlockEnum.KnowledgeRetrieval]: { |
|
author: 'Dify', |
|
about: '', |
|
availablePrevNodes: [], |
|
availableNextNodes: [], |
|
getAvailablePrevNodes: KnowledgeRetrievalDefault.getAvailablePrevNodes, |
|
getAvailableNextNodes: KnowledgeRetrievalDefault.getAvailableNextNodes, |
|
checkValid: KnowledgeRetrievalDefault.checkValid, |
|
}, |
|
[BlockEnum.IfElse]: { |
|
author: 'Dify', |
|
about: '', |
|
availablePrevNodes: [], |
|
availableNextNodes: [], |
|
getAvailablePrevNodes: IfElseDefault.getAvailablePrevNodes, |
|
getAvailableNextNodes: IfElseDefault.getAvailableNextNodes, |
|
checkValid: IfElseDefault.checkValid, |
|
}, |
|
[BlockEnum.Iteration]: { |
|
author: 'Dify', |
|
about: '', |
|
availablePrevNodes: [], |
|
availableNextNodes: [], |
|
getAvailablePrevNodes: IterationDefault.getAvailablePrevNodes, |
|
getAvailableNextNodes: IterationDefault.getAvailableNextNodes, |
|
checkValid: IterationDefault.checkValid, |
|
}, |
|
[BlockEnum.IterationStart]: { |
|
author: 'Dify', |
|
about: '', |
|
availablePrevNodes: [], |
|
availableNextNodes: [], |
|
getAvailablePrevNodes: IterationStartDefault.getAvailablePrevNodes, |
|
getAvailableNextNodes: IterationStartDefault.getAvailableNextNodes, |
|
checkValid: IterationStartDefault.checkValid, |
|
}, |
|
[BlockEnum.Code]: { |
|
author: 'Dify', |
|
about: '', |
|
availablePrevNodes: [], |
|
availableNextNodes: [], |
|
getAvailablePrevNodes: CodeDefault.getAvailablePrevNodes, |
|
getAvailableNextNodes: CodeDefault.getAvailableNextNodes, |
|
checkValid: CodeDefault.checkValid, |
|
}, |
|
[BlockEnum.TemplateTransform]: { |
|
author: 'Dify', |
|
about: '', |
|
availablePrevNodes: [], |
|
availableNextNodes: [], |
|
getAvailablePrevNodes: TemplateTransformDefault.getAvailablePrevNodes, |
|
getAvailableNextNodes: TemplateTransformDefault.getAvailableNextNodes, |
|
checkValid: TemplateTransformDefault.checkValid, |
|
}, |
|
[BlockEnum.QuestionClassifier]: { |
|
author: 'Dify', |
|
about: '', |
|
availablePrevNodes: [], |
|
availableNextNodes: [], |
|
getAvailablePrevNodes: QuestionClassifierDefault.getAvailablePrevNodes, |
|
getAvailableNextNodes: QuestionClassifierDefault.getAvailableNextNodes, |
|
checkValid: QuestionClassifierDefault.checkValid, |
|
}, |
|
[BlockEnum.HttpRequest]: { |
|
author: 'Dify', |
|
about: '', |
|
availablePrevNodes: [], |
|
availableNextNodes: [], |
|
getAvailablePrevNodes: HttpRequestDefault.getAvailablePrevNodes, |
|
getAvailableNextNodes: HttpRequestDefault.getAvailableNextNodes, |
|
checkValid: HttpRequestDefault.checkValid, |
|
}, |
|
[BlockEnum.VariableAssigner]: { |
|
author: 'Dify', |
|
about: '', |
|
availablePrevNodes: [], |
|
availableNextNodes: [], |
|
getAvailablePrevNodes: VariableAssignerDefault.getAvailablePrevNodes, |
|
getAvailableNextNodes: VariableAssignerDefault.getAvailableNextNodes, |
|
checkValid: VariableAssignerDefault.checkValid, |
|
}, |
|
[BlockEnum.Assigner]: { |
|
author: 'Dify', |
|
about: '', |
|
availablePrevNodes: [], |
|
availableNextNodes: [], |
|
getAvailablePrevNodes: AssignerDefault.getAvailablePrevNodes, |
|
getAvailableNextNodes: AssignerDefault.getAvailableNextNodes, |
|
checkValid: AssignerDefault.checkValid, |
|
}, |
|
[BlockEnum.VariableAggregator]: { |
|
author: 'Dify', |
|
about: '', |
|
availablePrevNodes: [], |
|
availableNextNodes: [], |
|
getAvailablePrevNodes: VariableAssignerDefault.getAvailablePrevNodes, |
|
getAvailableNextNodes: VariableAssignerDefault.getAvailableNextNodes, |
|
checkValid: VariableAssignerDefault.checkValid, |
|
}, |
|
[BlockEnum.ParameterExtractor]: { |
|
author: 'Dify', |
|
about: '', |
|
availablePrevNodes: [], |
|
availableNextNodes: [], |
|
getAvailablePrevNodes: ParameterExtractorDefault.getAvailablePrevNodes, |
|
getAvailableNextNodes: ParameterExtractorDefault.getAvailableNextNodes, |
|
checkValid: ParameterExtractorDefault.checkValid, |
|
}, |
|
[BlockEnum.Tool]: { |
|
author: 'Dify', |
|
about: '', |
|
availablePrevNodes: [], |
|
availableNextNodes: [], |
|
getAvailablePrevNodes: ToolDefault.getAvailablePrevNodes, |
|
getAvailableNextNodes: ToolDefault.getAvailableNextNodes, |
|
checkValid: ToolDefault.checkValid, |
|
}, |
|
[BlockEnum.DocExtractor]: { |
|
author: 'Dify', |
|
about: '', |
|
availablePrevNodes: [], |
|
availableNextNodes: [], |
|
getAvailablePrevNodes: DocExtractorDefault.getAvailablePrevNodes, |
|
getAvailableNextNodes: DocExtractorDefault.getAvailableNextNodes, |
|
checkValid: DocExtractorDefault.checkValid, |
|
}, |
|
[BlockEnum.ListFilter]: { |
|
author: 'Dify', |
|
about: '', |
|
availablePrevNodes: [], |
|
availableNextNodes: [], |
|
getAvailablePrevNodes: ListFilterDefault.getAvailablePrevNodes, |
|
getAvailableNextNodes: ListFilterDefault.getAvailableNextNodes, |
|
checkValid: ListFilterDefault.checkValid, |
|
}, |
|
|
|
} |
|
|
|
export const ALL_CHAT_AVAILABLE_BLOCKS = Object.keys(NODES_EXTRA_DATA).filter(key => key !== BlockEnum.End && key !== BlockEnum.Start) as BlockEnum[] |
|
export const ALL_COMPLETION_AVAILABLE_BLOCKS = Object.keys(NODES_EXTRA_DATA).filter(key => key !== BlockEnum.Answer && key !== BlockEnum.Start) as BlockEnum[] |
|
|
|
export const NODES_INITIAL_DATA = { |
|
[BlockEnum.Start]: { |
|
type: BlockEnum.Start, |
|
title: '', |
|
desc: '', |
|
...StartNodeDefault.defaultValue, |
|
}, |
|
[BlockEnum.End]: { |
|
type: BlockEnum.End, |
|
title: '', |
|
desc: '', |
|
...EndNodeDefault.defaultValue, |
|
}, |
|
[BlockEnum.Answer]: { |
|
type: BlockEnum.Answer, |
|
title: '', |
|
desc: '', |
|
...AnswerDefault.defaultValue, |
|
}, |
|
[BlockEnum.LLM]: { |
|
type: BlockEnum.LLM, |
|
title: '', |
|
desc: '', |
|
variables: [], |
|
...LLMDefault.defaultValue, |
|
}, |
|
[BlockEnum.KnowledgeRetrieval]: { |
|
type: BlockEnum.KnowledgeRetrieval, |
|
title: '', |
|
desc: '', |
|
query_variable_selector: [], |
|
dataset_ids: [], |
|
retrieval_mode: 'single', |
|
...KnowledgeRetrievalDefault.defaultValue, |
|
}, |
|
[BlockEnum.IfElse]: { |
|
type: BlockEnum.IfElse, |
|
title: '', |
|
desc: '', |
|
...IfElseDefault.defaultValue, |
|
}, |
|
[BlockEnum.Iteration]: { |
|
type: BlockEnum.Iteration, |
|
title: '', |
|
desc: '', |
|
...IterationDefault.defaultValue, |
|
}, |
|
[BlockEnum.IterationStart]: { |
|
type: BlockEnum.IterationStart, |
|
title: '', |
|
desc: '', |
|
...IterationStartDefault.defaultValue, |
|
}, |
|
[BlockEnum.Code]: { |
|
type: BlockEnum.Code, |
|
title: '', |
|
desc: '', |
|
variables: [], |
|
code_language: 'python3', |
|
code: '', |
|
outputs: [], |
|
...CodeDefault.defaultValue, |
|
}, |
|
[BlockEnum.TemplateTransform]: { |
|
type: BlockEnum.TemplateTransform, |
|
title: '', |
|
desc: '', |
|
variables: [], |
|
template: '', |
|
...TemplateTransformDefault.defaultValue, |
|
}, |
|
[BlockEnum.QuestionClassifier]: { |
|
type: BlockEnum.QuestionClassifier, |
|
title: '', |
|
desc: '', |
|
query_variable_selector: [], |
|
topics: [], |
|
...QuestionClassifierDefault.defaultValue, |
|
}, |
|
[BlockEnum.HttpRequest]: { |
|
type: BlockEnum.HttpRequest, |
|
title: '', |
|
desc: '', |
|
variables: [], |
|
...HttpRequestDefault.defaultValue, |
|
}, |
|
[BlockEnum.ParameterExtractor]: { |
|
type: BlockEnum.ParameterExtractor, |
|
title: '', |
|
desc: '', |
|
variables: [], |
|
...ParameterExtractorDefault.defaultValue, |
|
}, |
|
[BlockEnum.VariableAssigner]: { |
|
type: BlockEnum.VariableAssigner, |
|
title: '', |
|
desc: '', |
|
variables: [], |
|
output_type: '', |
|
...VariableAssignerDefault.defaultValue, |
|
}, |
|
[BlockEnum.VariableAggregator]: { |
|
type: BlockEnum.VariableAggregator, |
|
title: '', |
|
desc: '', |
|
variables: [], |
|
output_type: '', |
|
...VariableAssignerDefault.defaultValue, |
|
}, |
|
[BlockEnum.Assigner]: { |
|
type: BlockEnum.Assigner, |
|
title: '', |
|
desc: '', |
|
...AssignerDefault.defaultValue, |
|
}, |
|
[BlockEnum.Tool]: { |
|
type: BlockEnum.Tool, |
|
title: '', |
|
desc: '', |
|
...ToolDefault.defaultValue, |
|
}, |
|
[BlockEnum.DocExtractor]: { |
|
type: BlockEnum.DocExtractor, |
|
title: '', |
|
desc: '', |
|
...DocExtractorDefault.defaultValue, |
|
}, |
|
[BlockEnum.ListFilter]: { |
|
type: BlockEnum.ListFilter, |
|
title: '', |
|
desc: '', |
|
...ListFilterDefault.defaultValue, |
|
}, |
|
} |
|
export const MAX_ITERATION_PARALLEL_NUM = 10 |
|
export const MIN_ITERATION_PARALLEL_NUM = 1 |
|
export const DEFAULT_ITER_TIMES = 1 |
|
export const NODE_WIDTH = 240 |
|
export const X_OFFSET = 60 |
|
export const NODE_WIDTH_X_OFFSET = NODE_WIDTH + X_OFFSET |
|
export const Y_OFFSET = 39 |
|
export const MAX_TREE_DEPTH = 50 |
|
export const START_INITIAL_POSITION = { x: 80, y: 282 } |
|
export const AUTO_LAYOUT_OFFSET = { |
|
x: -42, |
|
y: 243, |
|
} |
|
export const ITERATION_NODE_Z_INDEX = 1 |
|
export const ITERATION_CHILDREN_Z_INDEX = 1002 |
|
export const ITERATION_PADDING = { |
|
top: 65, |
|
right: 16, |
|
bottom: 20, |
|
left: 16, |
|
} |
|
export const PARALLEL_LIMIT = 10 |
|
export const PARALLEL_DEPTH_LIMIT = 3 |
|
|
|
export const RETRIEVAL_OUTPUT_STRUCT = `{ |
|
"content": "", |
|
"title": "", |
|
"url": "", |
|
"icon": "", |
|
"metadata": { |
|
"dataset_id": "", |
|
"dataset_name": "", |
|
"document_id": [], |
|
"document_name": "", |
|
"document_data_source_type": "", |
|
"segment_id": "", |
|
"segment_position": "", |
|
"segment_word_count": "", |
|
"segment_hit_count": "", |
|
"segment_index_node_hash": "", |
|
"score": "" |
|
} |
|
}` |
|
|
|
export const SUPPORT_OUTPUT_VARS_NODE = [ |
|
BlockEnum.Start, BlockEnum.LLM, BlockEnum.KnowledgeRetrieval, BlockEnum.Code, BlockEnum.TemplateTransform, |
|
BlockEnum.HttpRequest, BlockEnum.Tool, BlockEnum.VariableAssigner, BlockEnum.VariableAggregator, BlockEnum.QuestionClassifier, |
|
BlockEnum.ParameterExtractor, BlockEnum.Iteration, |
|
BlockEnum.DocExtractor, BlockEnum.ListFilter, |
|
] |
|
|
|
export const LLM_OUTPUT_STRUCT: Var[] = [ |
|
{ |
|
variable: 'text', |
|
type: VarType.string, |
|
}, |
|
] |
|
|
|
export const KNOWLEDGE_RETRIEVAL_OUTPUT_STRUCT: Var[] = [ |
|
{ |
|
variable: 'result', |
|
type: VarType.arrayObject, |
|
}, |
|
] |
|
|
|
export const TEMPLATE_TRANSFORM_OUTPUT_STRUCT: Var[] = [ |
|
{ |
|
variable: 'output', |
|
type: VarType.string, |
|
}, |
|
] |
|
|
|
export const QUESTION_CLASSIFIER_OUTPUT_STRUCT = [ |
|
{ |
|
variable: 'class_name', |
|
type: VarType.string, |
|
}, |
|
] |
|
|
|
export const HTTP_REQUEST_OUTPUT_STRUCT: Var[] = [ |
|
{ |
|
variable: 'body', |
|
type: VarType.string, |
|
}, |
|
{ |
|
variable: 'status_code', |
|
type: VarType.number, |
|
}, |
|
{ |
|
variable: 'headers', |
|
type: VarType.object, |
|
}, |
|
{ |
|
variable: 'files', |
|
type: VarType.arrayFile, |
|
}, |
|
] |
|
|
|
export const TOOL_OUTPUT_STRUCT: Var[] = [ |
|
{ |
|
variable: 'text', |
|
type: VarType.string, |
|
}, |
|
{ |
|
variable: 'files', |
|
type: VarType.arrayFile, |
|
}, |
|
{ |
|
variable: 'json', |
|
type: VarType.arrayObject, |
|
}, |
|
] |
|
|
|
export const PARAMETER_EXTRACTOR_COMMON_STRUCT: Var[] = [ |
|
{ |
|
variable: '__is_success', |
|
type: VarType.number, |
|
}, |
|
{ |
|
variable: '__reason', |
|
type: VarType.string, |
|
}, |
|
] |
|
|
|
export const FILE_STRUCT: Var[] = [ |
|
{ |
|
variable: 'name', |
|
type: VarType.string, |
|
}, |
|
{ |
|
variable: 'size', |
|
type: VarType.number, |
|
}, |
|
{ |
|
variable: 'type', |
|
type: VarType.string, |
|
}, |
|
{ |
|
variable: 'extension', |
|
type: VarType.string, |
|
}, |
|
{ |
|
variable: 'mime_type', |
|
type: VarType.string, |
|
}, |
|
{ |
|
variable: 'transfer_method', |
|
type: VarType.string, |
|
}, |
|
{ |
|
variable: 'url', |
|
type: VarType.string, |
|
}, |
|
] |
|
|
|
export const DEFAULT_FILE_UPLOAD_SETTING = { |
|
allowed_file_upload_methods: ['local_file', 'remote_url'], |
|
max_length: 5, |
|
allowed_file_types: ['image'], |
|
allowed_file_extensions: [], |
|
} |
|
|
|
export const WORKFLOW_DATA_UPDATE = 'WORKFLOW_DATA_UPDATE' |
|
export const CUSTOM_NODE = 'custom' |
|
export const CUSTOM_EDGE = 'custom' |
|
export const DSL_EXPORT_CHECK = 'DSL_EXPORT_CHECK' |
|
|