選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

constants.ts 17KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613
  1. import type { Var } from './types'
  2. import { BlockEnum, VarType } from './types'
  3. import StartNodeDefault from './nodes/start/default'
  4. import AnswerDefault from './nodes/answer/default'
  5. import LLMDefault from './nodes/llm/default'
  6. import KnowledgeRetrievalDefault from './nodes/knowledge-retrieval/default'
  7. import QuestionClassifierDefault from './nodes/question-classifier/default'
  8. import IfElseDefault from './nodes/if-else/default'
  9. import CodeDefault from './nodes/code/default'
  10. import TemplateTransformDefault from './nodes/template-transform/default'
  11. import HttpRequestDefault from './nodes/http/default'
  12. import ParameterExtractorDefault from './nodes/parameter-extractor/default'
  13. import ToolDefault from './nodes/tool/default'
  14. import VariableAssignerDefault from './nodes/variable-assigner/default'
  15. import AssignerDefault from './nodes/assigner/default'
  16. import EndNodeDefault from './nodes/end/default'
  17. import IterationDefault from './nodes/iteration/default'
  18. import LoopDefault from './nodes/loop/default'
  19. import DocExtractorDefault from './nodes/document-extractor/default'
  20. import ListFilterDefault from './nodes/list-operator/default'
  21. import IterationStartDefault from './nodes/iteration-start/default'
  22. import AgentDefault from './nodes/agent/default'
  23. import LoopStartDefault from './nodes/loop-start/default'
  24. import LoopEndDefault from './nodes/loop-end/default'
  25. type NodesExtraData = {
  26. author: string
  27. about: string
  28. availablePrevNodes: BlockEnum[]
  29. availableNextNodes: BlockEnum[]
  30. getAvailablePrevNodes: (isChatMode: boolean) => BlockEnum[]
  31. getAvailableNextNodes: (isChatMode: boolean) => BlockEnum[]
  32. checkValid: any
  33. checkVarValid?: any
  34. }
  35. export const NODES_EXTRA_DATA: Record<BlockEnum, NodesExtraData> = {
  36. [BlockEnum.Start]: {
  37. author: 'Dify',
  38. about: '',
  39. availablePrevNodes: [],
  40. availableNextNodes: [],
  41. getAvailablePrevNodes: StartNodeDefault.getAvailablePrevNodes,
  42. getAvailableNextNodes: StartNodeDefault.getAvailableNextNodes,
  43. checkValid: StartNodeDefault.checkValid,
  44. },
  45. [BlockEnum.End]: {
  46. author: 'Dify',
  47. about: '',
  48. availablePrevNodes: [],
  49. availableNextNodes: [],
  50. getAvailablePrevNodes: EndNodeDefault.getAvailablePrevNodes,
  51. getAvailableNextNodes: EndNodeDefault.getAvailableNextNodes,
  52. checkValid: EndNodeDefault.checkValid,
  53. },
  54. [BlockEnum.Answer]: {
  55. author: 'Dify',
  56. about: '',
  57. availablePrevNodes: [],
  58. availableNextNodes: [],
  59. getAvailablePrevNodes: AnswerDefault.getAvailablePrevNodes,
  60. getAvailableNextNodes: AnswerDefault.getAvailableNextNodes,
  61. checkValid: AnswerDefault.checkValid,
  62. checkVarValid: AnswerDefault.checkVarValid,
  63. },
  64. [BlockEnum.LLM]: {
  65. author: 'Dify',
  66. about: '',
  67. availablePrevNodes: [],
  68. availableNextNodes: [],
  69. getAvailablePrevNodes: LLMDefault.getAvailablePrevNodes,
  70. getAvailableNextNodes: LLMDefault.getAvailableNextNodes,
  71. checkValid: LLMDefault.checkValid,
  72. checkVarValid: LLMDefault.checkVarValid,
  73. },
  74. [BlockEnum.KnowledgeRetrieval]: {
  75. author: 'Dify',
  76. about: '',
  77. availablePrevNodes: [],
  78. availableNextNodes: [],
  79. getAvailablePrevNodes: KnowledgeRetrievalDefault.getAvailablePrevNodes,
  80. getAvailableNextNodes: KnowledgeRetrievalDefault.getAvailableNextNodes,
  81. checkValid: KnowledgeRetrievalDefault.checkValid,
  82. checkVarValid: KnowledgeRetrievalDefault.checkVarValid,
  83. },
  84. [BlockEnum.IfElse]: {
  85. author: 'Dify',
  86. about: '',
  87. availablePrevNodes: [],
  88. availableNextNodes: [],
  89. getAvailablePrevNodes: IfElseDefault.getAvailablePrevNodes,
  90. getAvailableNextNodes: IfElseDefault.getAvailableNextNodes,
  91. checkValid: IfElseDefault.checkValid,
  92. checkVarValid: IfElseDefault.checkVarValid,
  93. },
  94. [BlockEnum.Iteration]: {
  95. author: 'Dify',
  96. about: '',
  97. availablePrevNodes: [],
  98. availableNextNodes: [],
  99. getAvailablePrevNodes: IterationDefault.getAvailablePrevNodes,
  100. getAvailableNextNodes: IterationDefault.getAvailableNextNodes,
  101. checkValid: IterationDefault.checkValid,
  102. checkVarValid: IterationDefault.checkVarValid,
  103. },
  104. [BlockEnum.IterationStart]: {
  105. author: 'Dify',
  106. about: '',
  107. availablePrevNodes: [],
  108. availableNextNodes: [],
  109. getAvailablePrevNodes: IterationStartDefault.getAvailablePrevNodes,
  110. getAvailableNextNodes: IterationStartDefault.getAvailableNextNodes,
  111. checkValid: IterationStartDefault.checkValid,
  112. },
  113. [BlockEnum.Loop]: {
  114. author: 'AICT-Team',
  115. about: '',
  116. availablePrevNodes: [],
  117. availableNextNodes: [],
  118. getAvailablePrevNodes: LoopDefault.getAvailablePrevNodes,
  119. getAvailableNextNodes: LoopDefault.getAvailableNextNodes,
  120. checkValid: LoopDefault.checkValid,
  121. },
  122. [BlockEnum.LoopStart]: {
  123. author: 'AICT-Team',
  124. about: '',
  125. availablePrevNodes: [],
  126. availableNextNodes: [],
  127. getAvailablePrevNodes: LoopStartDefault.getAvailablePrevNodes,
  128. getAvailableNextNodes: LoopStartDefault.getAvailableNextNodes,
  129. checkValid: LoopStartDefault.checkValid,
  130. },
  131. [BlockEnum.LoopEnd]: {
  132. author: 'Dify',
  133. about: '',
  134. availablePrevNodes: [],
  135. availableNextNodes: [],
  136. getAvailablePrevNodes: LoopEndDefault.getAvailablePrevNodes,
  137. getAvailableNextNodes: LoopEndDefault.getAvailableNextNodes,
  138. checkValid: LoopEndDefault.checkValid,
  139. },
  140. [BlockEnum.Code]: {
  141. author: 'Dify',
  142. about: '',
  143. availablePrevNodes: [],
  144. availableNextNodes: [],
  145. getAvailablePrevNodes: CodeDefault.getAvailablePrevNodes,
  146. getAvailableNextNodes: CodeDefault.getAvailableNextNodes,
  147. checkValid: CodeDefault.checkValid,
  148. checkVarValid: CodeDefault.checkVarValid,
  149. },
  150. [BlockEnum.TemplateTransform]: {
  151. author: 'Dify',
  152. about: '',
  153. availablePrevNodes: [],
  154. availableNextNodes: [],
  155. getAvailablePrevNodes: TemplateTransformDefault.getAvailablePrevNodes,
  156. getAvailableNextNodes: TemplateTransformDefault.getAvailableNextNodes,
  157. checkValid: TemplateTransformDefault.checkValid,
  158. checkVarValid: TemplateTransformDefault.checkVarValid,
  159. },
  160. [BlockEnum.QuestionClassifier]: {
  161. author: 'Dify',
  162. about: '',
  163. availablePrevNodes: [],
  164. availableNextNodes: [],
  165. getAvailablePrevNodes: QuestionClassifierDefault.getAvailablePrevNodes,
  166. getAvailableNextNodes: QuestionClassifierDefault.getAvailableNextNodes,
  167. checkValid: QuestionClassifierDefault.checkValid,
  168. checkVarValid: QuestionClassifierDefault.checkVarValid,
  169. },
  170. [BlockEnum.HttpRequest]: {
  171. author: 'Dify',
  172. about: '',
  173. availablePrevNodes: [],
  174. availableNextNodes: [],
  175. getAvailablePrevNodes: HttpRequestDefault.getAvailablePrevNodes,
  176. getAvailableNextNodes: HttpRequestDefault.getAvailableNextNodes,
  177. checkValid: HttpRequestDefault.checkValid,
  178. checkVarValid: HttpRequestDefault.checkVarValid,
  179. },
  180. [BlockEnum.VariableAssigner]: {
  181. author: 'Dify',
  182. about: '',
  183. availablePrevNodes: [],
  184. availableNextNodes: [],
  185. getAvailablePrevNodes: VariableAssignerDefault.getAvailablePrevNodes,
  186. getAvailableNextNodes: VariableAssignerDefault.getAvailableNextNodes,
  187. checkValid: VariableAssignerDefault.checkValid,
  188. },
  189. [BlockEnum.Assigner]: {
  190. author: 'Dify',
  191. about: '',
  192. availablePrevNodes: [],
  193. availableNextNodes: [],
  194. getAvailablePrevNodes: AssignerDefault.getAvailablePrevNodes,
  195. getAvailableNextNodes: AssignerDefault.getAvailableNextNodes,
  196. checkValid: AssignerDefault.checkValid,
  197. checkVarValid: AssignerDefault.checkVarValid,
  198. },
  199. [BlockEnum.VariableAggregator]: {
  200. author: 'Dify',
  201. about: '',
  202. availablePrevNodes: [],
  203. availableNextNodes: [],
  204. getAvailablePrevNodes: VariableAssignerDefault.getAvailablePrevNodes,
  205. getAvailableNextNodes: VariableAssignerDefault.getAvailableNextNodes,
  206. checkValid: VariableAssignerDefault.checkValid,
  207. checkVarValid: VariableAssignerDefault.checkVarValid,
  208. },
  209. [BlockEnum.ParameterExtractor]: {
  210. author: 'Dify',
  211. about: '',
  212. availablePrevNodes: [],
  213. availableNextNodes: [],
  214. getAvailablePrevNodes: ParameterExtractorDefault.getAvailablePrevNodes,
  215. getAvailableNextNodes: ParameterExtractorDefault.getAvailableNextNodes,
  216. checkValid: ParameterExtractorDefault.checkValid,
  217. checkVarValid: ParameterExtractorDefault.checkVarValid,
  218. },
  219. [BlockEnum.Tool]: {
  220. author: 'Dify',
  221. about: '',
  222. availablePrevNodes: [],
  223. availableNextNodes: [],
  224. getAvailablePrevNodes: ToolDefault.getAvailablePrevNodes,
  225. getAvailableNextNodes: ToolDefault.getAvailableNextNodes,
  226. checkValid: ToolDefault.checkValid,
  227. checkVarValid: ToolDefault.checkVarValid,
  228. },
  229. [BlockEnum.DocExtractor]: {
  230. author: 'Dify',
  231. about: '',
  232. availablePrevNodes: [],
  233. availableNextNodes: [],
  234. getAvailablePrevNodes: DocExtractorDefault.getAvailablePrevNodes,
  235. getAvailableNextNodes: DocExtractorDefault.getAvailableNextNodes,
  236. checkValid: DocExtractorDefault.checkValid,
  237. checkVarValid: DocExtractorDefault.checkVarValid,
  238. },
  239. [BlockEnum.ListFilter]: {
  240. author: 'Dify',
  241. about: '',
  242. availablePrevNodes: [],
  243. availableNextNodes: [],
  244. getAvailablePrevNodes: ListFilterDefault.getAvailablePrevNodes,
  245. getAvailableNextNodes: ListFilterDefault.getAvailableNextNodes,
  246. checkValid: ListFilterDefault.checkValid,
  247. checkVarValid: ListFilterDefault.checkVarValid,
  248. },
  249. [BlockEnum.Agent]: {
  250. author: 'Dify',
  251. about: '',
  252. availablePrevNodes: [],
  253. availableNextNodes: [],
  254. getAvailablePrevNodes: ListFilterDefault.getAvailablePrevNodes,
  255. getAvailableNextNodes: ListFilterDefault.getAvailableNextNodes,
  256. checkValid: AgentDefault.checkValid,
  257. },
  258. }
  259. export const NODES_INITIAL_DATA = {
  260. [BlockEnum.Start]: {
  261. type: BlockEnum.Start,
  262. title: '',
  263. desc: '',
  264. ...StartNodeDefault.defaultValue,
  265. },
  266. [BlockEnum.End]: {
  267. type: BlockEnum.End,
  268. title: '',
  269. desc: '',
  270. ...EndNodeDefault.defaultValue,
  271. },
  272. [BlockEnum.Answer]: {
  273. type: BlockEnum.Answer,
  274. title: '',
  275. desc: '',
  276. ...AnswerDefault.defaultValue,
  277. },
  278. [BlockEnum.LLM]: {
  279. type: BlockEnum.LLM,
  280. title: '',
  281. desc: '',
  282. variables: [],
  283. ...LLMDefault.defaultValue,
  284. },
  285. [BlockEnum.KnowledgeRetrieval]: {
  286. type: BlockEnum.KnowledgeRetrieval,
  287. title: '',
  288. desc: '',
  289. query_variable_selector: [],
  290. dataset_ids: [],
  291. retrieval_mode: 'single',
  292. ...KnowledgeRetrievalDefault.defaultValue,
  293. },
  294. [BlockEnum.IfElse]: {
  295. type: BlockEnum.IfElse,
  296. title: '',
  297. desc: '',
  298. ...IfElseDefault.defaultValue,
  299. },
  300. [BlockEnum.Iteration]: {
  301. type: BlockEnum.Iteration,
  302. title: '',
  303. desc: '',
  304. ...IterationDefault.defaultValue,
  305. },
  306. [BlockEnum.IterationStart]: {
  307. type: BlockEnum.IterationStart,
  308. title: '',
  309. desc: '',
  310. ...IterationStartDefault.defaultValue,
  311. },
  312. [BlockEnum.Loop]: {
  313. type: BlockEnum.Loop,
  314. title: '',
  315. desc: '',
  316. ...LoopDefault.defaultValue,
  317. },
  318. [BlockEnum.LoopStart]: {
  319. type: BlockEnum.LoopStart,
  320. title: '',
  321. desc: '',
  322. ...LoopStartDefault.defaultValue,
  323. },
  324. [BlockEnum.LoopEnd]: {
  325. type: BlockEnum.LoopEnd,
  326. title: '',
  327. desc: '',
  328. ...LoopEndDefault.defaultValue,
  329. },
  330. [BlockEnum.Code]: {
  331. type: BlockEnum.Code,
  332. title: '',
  333. desc: '',
  334. variables: [],
  335. code_language: 'python3',
  336. code: '',
  337. outputs: [],
  338. ...CodeDefault.defaultValue,
  339. },
  340. [BlockEnum.TemplateTransform]: {
  341. type: BlockEnum.TemplateTransform,
  342. title: '',
  343. desc: '',
  344. variables: [],
  345. template: '',
  346. ...TemplateTransformDefault.defaultValue,
  347. },
  348. [BlockEnum.QuestionClassifier]: {
  349. type: BlockEnum.QuestionClassifier,
  350. title: '',
  351. desc: '',
  352. query_variable_selector: [],
  353. topics: [],
  354. ...QuestionClassifierDefault.defaultValue,
  355. },
  356. [BlockEnum.HttpRequest]: {
  357. type: BlockEnum.HttpRequest,
  358. title: '',
  359. desc: '',
  360. variables: [],
  361. ...HttpRequestDefault.defaultValue,
  362. },
  363. [BlockEnum.ParameterExtractor]: {
  364. type: BlockEnum.ParameterExtractor,
  365. title: '',
  366. desc: '',
  367. variables: [],
  368. ...ParameterExtractorDefault.defaultValue,
  369. },
  370. [BlockEnum.VariableAssigner]: {
  371. type: BlockEnum.VariableAssigner,
  372. title: '',
  373. desc: '',
  374. variables: [],
  375. output_type: '',
  376. ...VariableAssignerDefault.defaultValue,
  377. },
  378. [BlockEnum.VariableAggregator]: {
  379. type: BlockEnum.VariableAggregator,
  380. title: '',
  381. desc: '',
  382. variables: [],
  383. output_type: '',
  384. ...VariableAssignerDefault.defaultValue,
  385. },
  386. [BlockEnum.Assigner]: {
  387. type: BlockEnum.Assigner,
  388. title: '',
  389. desc: '',
  390. ...AssignerDefault.defaultValue,
  391. },
  392. [BlockEnum.Tool]: {
  393. type: BlockEnum.Tool,
  394. title: '',
  395. desc: '',
  396. ...ToolDefault.defaultValue,
  397. },
  398. [BlockEnum.DocExtractor]: {
  399. type: BlockEnum.DocExtractor,
  400. title: '',
  401. desc: '',
  402. ...DocExtractorDefault.defaultValue,
  403. },
  404. [BlockEnum.ListFilter]: {
  405. type: BlockEnum.ListFilter,
  406. title: '',
  407. desc: '',
  408. ...ListFilterDefault.defaultValue,
  409. },
  410. [BlockEnum.Agent]: {
  411. type: BlockEnum.Agent,
  412. title: '',
  413. desc: '',
  414. ...AgentDefault.defaultValue,
  415. },
  416. }
  417. export const MAX_ITERATION_PARALLEL_NUM = 10
  418. export const MIN_ITERATION_PARALLEL_NUM = 1
  419. export const DEFAULT_ITER_TIMES = 1
  420. export const DEFAULT_LOOP_TIMES = 1
  421. export const NODE_WIDTH = 240
  422. export const X_OFFSET = 60
  423. export const NODE_WIDTH_X_OFFSET = NODE_WIDTH + X_OFFSET
  424. export const Y_OFFSET = 39
  425. export const MAX_TREE_DEPTH = 50
  426. export const START_INITIAL_POSITION = { x: 80, y: 282 }
  427. export const AUTO_LAYOUT_OFFSET = {
  428. x: -42,
  429. y: 243,
  430. }
  431. export const ITERATION_NODE_Z_INDEX = 1
  432. export const ITERATION_CHILDREN_Z_INDEX = 1002
  433. export const ITERATION_PADDING = {
  434. top: 65,
  435. right: 16,
  436. bottom: 20,
  437. left: 16,
  438. }
  439. export const LOOP_NODE_Z_INDEX = 1
  440. export const LOOP_CHILDREN_Z_INDEX = 1002
  441. export const LOOP_PADDING = {
  442. top: 65,
  443. right: 16,
  444. bottom: 20,
  445. left: 16,
  446. }
  447. export const NODE_LAYOUT_HORIZONTAL_PADDING = 60
  448. export const NODE_LAYOUT_VERTICAL_PADDING = 60
  449. export const NODE_LAYOUT_MIN_DISTANCE = 100
  450. let maxParallelLimit = 10
  451. if (process.env.NEXT_PUBLIC_MAX_PARALLEL_LIMIT && process.env.NEXT_PUBLIC_MAX_PARALLEL_LIMIT !== '')
  452. maxParallelLimit = Number.parseInt(process.env.NEXT_PUBLIC_MAX_PARALLEL_LIMIT)
  453. else if (globalThis.document?.body?.getAttribute('data-public-max-parallel-limit') && globalThis.document.body.getAttribute('data-public-max-parallel-limit') !== '')
  454. maxParallelLimit = Number.parseInt(globalThis.document.body.getAttribute('data-public-max-parallel-limit') as string)
  455. export const PARALLEL_LIMIT = maxParallelLimit
  456. export const PARALLEL_DEPTH_LIMIT = 3
  457. export const RETRIEVAL_OUTPUT_STRUCT = `{
  458. "content": "",
  459. "title": "",
  460. "url": "",
  461. "icon": "",
  462. "metadata": {
  463. "dataset_id": "",
  464. "dataset_name": "",
  465. "document_id": [],
  466. "document_name": "",
  467. "document_data_source_type": "",
  468. "segment_id": "",
  469. "segment_position": "",
  470. "segment_word_count": "",
  471. "segment_hit_count": "",
  472. "segment_index_node_hash": "",
  473. "score": ""
  474. }
  475. }`
  476. export const SUPPORT_OUTPUT_VARS_NODE = [
  477. BlockEnum.Start, BlockEnum.LLM, BlockEnum.KnowledgeRetrieval, BlockEnum.Code, BlockEnum.TemplateTransform,
  478. BlockEnum.HttpRequest, BlockEnum.Tool, BlockEnum.VariableAssigner, BlockEnum.VariableAggregator, BlockEnum.QuestionClassifier,
  479. BlockEnum.ParameterExtractor, BlockEnum.Iteration, BlockEnum.Loop,
  480. BlockEnum.DocExtractor, BlockEnum.ListFilter,
  481. BlockEnum.Agent,
  482. ]
  483. export const LLM_OUTPUT_STRUCT: Var[] = [
  484. {
  485. variable: 'text',
  486. type: VarType.string,
  487. },
  488. ]
  489. export const KNOWLEDGE_RETRIEVAL_OUTPUT_STRUCT: Var[] = [
  490. {
  491. variable: 'result',
  492. type: VarType.arrayObject,
  493. },
  494. ]
  495. export const TEMPLATE_TRANSFORM_OUTPUT_STRUCT: Var[] = [
  496. {
  497. variable: 'output',
  498. type: VarType.string,
  499. },
  500. ]
  501. export const QUESTION_CLASSIFIER_OUTPUT_STRUCT = [
  502. {
  503. variable: 'class_name',
  504. type: VarType.string,
  505. },
  506. ]
  507. export const HTTP_REQUEST_OUTPUT_STRUCT: Var[] = [
  508. {
  509. variable: 'body',
  510. type: VarType.string,
  511. },
  512. {
  513. variable: 'status_code',
  514. type: VarType.number,
  515. },
  516. {
  517. variable: 'headers',
  518. type: VarType.object,
  519. },
  520. {
  521. variable: 'files',
  522. type: VarType.arrayFile,
  523. },
  524. ]
  525. export const TOOL_OUTPUT_STRUCT: Var[] = [
  526. {
  527. variable: 'text',
  528. type: VarType.string,
  529. },
  530. {
  531. variable: 'files',
  532. type: VarType.arrayFile,
  533. },
  534. {
  535. variable: 'json',
  536. type: VarType.arrayObject,
  537. },
  538. ]
  539. export const PARAMETER_EXTRACTOR_COMMON_STRUCT: Var[] = [
  540. {
  541. variable: '__is_success',
  542. type: VarType.number,
  543. },
  544. {
  545. variable: '__reason',
  546. type: VarType.string,
  547. },
  548. ]
  549. export const FILE_STRUCT: Var[] = [
  550. {
  551. variable: 'name',
  552. type: VarType.string,
  553. },
  554. {
  555. variable: 'size',
  556. type: VarType.number,
  557. },
  558. {
  559. variable: 'type',
  560. type: VarType.string,
  561. },
  562. {
  563. variable: 'extension',
  564. type: VarType.string,
  565. },
  566. {
  567. variable: 'mime_type',
  568. type: VarType.string,
  569. },
  570. {
  571. variable: 'transfer_method',
  572. type: VarType.string,
  573. },
  574. {
  575. variable: 'url',
  576. type: VarType.string,
  577. },
  578. {
  579. variable: 'related_id',
  580. type: VarType.string,
  581. },
  582. ]
  583. export const DEFAULT_FILE_UPLOAD_SETTING = {
  584. allowed_file_upload_methods: ['local_file', 'remote_url'],
  585. max_length: 5,
  586. allowed_file_types: ['image'],
  587. allowed_file_extensions: [],
  588. }
  589. export const WORKFLOW_DATA_UPDATE = 'WORKFLOW_DATA_UPDATE'
  590. export const CUSTOM_NODE = 'custom'
  591. export const CUSTOM_EDGE = 'custom'
  592. export const DSL_EXPORT_CHECK = 'DSL_EXPORT_CHECK'
  593. export const DEFAULT_RETRY_MAX = 3
  594. export const DEFAULT_RETRY_INTERVAL = 100