Spaces:
Build error
Build error
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' | |