| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 | 
							- import { MAX_VAR_KEY_LENGHT, VAR_ITEM_TEMPLATE, VAR_ITEM_TEMPLATE_IN_WORKFLOW, getMaxVarNameLength } from '@/config'
 
- import { CONTEXT_PLACEHOLDER_TEXT, HISTORY_PLACEHOLDER_TEXT, PRE_PROMPT_PLACEHOLDER_TEXT, QUERY_PLACEHOLDER_TEXT } from '@/app/components/base/prompt-editor/constants'
 
- import { InputVarType } from '@/app/components/workflow/types'
 
- const otherAllowedRegex = /^[a-zA-Z0-9_]+$/
 
- export const getNewVar = (key: string, type: string) => {
 
-   const { max_length, ...rest } = VAR_ITEM_TEMPLATE
 
-   if (type !== 'string') {
 
-     return {
 
-       ...rest,
 
-       type: type || 'string',
 
-       key,
 
-       name: key.slice(0, getMaxVarNameLength(key)),
 
-     }
 
-   }
 
-   return {
 
-     ...VAR_ITEM_TEMPLATE,
 
-     type: type || 'string',
 
-     key,
 
-     name: key.slice(0, getMaxVarNameLength(key)),
 
-   }
 
- }
 
- export const getNewVarInWorkflow = (key: string, type = InputVarType.textInput) => {
 
-   const { max_length, ...rest } = VAR_ITEM_TEMPLATE_IN_WORKFLOW
 
-   if (type !== InputVarType.textInput) {
 
-     return {
 
-       ...rest,
 
-       type,
 
-       variable: key,
 
-       label: key.slice(0, getMaxVarNameLength(key)),
 
-     }
 
-   }
 
-   return {
 
-     ...VAR_ITEM_TEMPLATE_IN_WORKFLOW,
 
-     type,
 
-     variable: key,
 
-     label: key.slice(0, getMaxVarNameLength(key)),
 
-   }
 
- }
 
- export const checkKey = (key: string, canBeEmpty?: boolean) => {
 
-   if (key.length === 0 && !canBeEmpty)
 
-     return 'canNoBeEmpty'
 
-   if (canBeEmpty && key === '')
 
-     return true
 
-   if (key.length > MAX_VAR_KEY_LENGHT)
 
-     return 'tooLong'
 
-   if (otherAllowedRegex.test(key)) {
 
-     if (/[0-9]/.test(key[0]))
 
-       return 'notStartWithNumber'
 
-     return true
 
-   }
 
-   return 'notValid'
 
- }
 
- export const checkKeys = (keys: string[], canBeEmpty?: boolean) => {
 
-   let isValid = true
 
-   let errorKey = ''
 
-   let errorMessageKey = ''
 
-   keys.forEach((key) => {
 
-     if (!isValid)
 
-       return
 
-     const res = checkKey(key, canBeEmpty)
 
-     if (res !== true) {
 
-       isValid = false
 
-       errorKey = key
 
-       errorMessageKey = res
 
-     }
 
-   })
 
-   return { isValid, errorKey, errorMessageKey }
 
- }
 
- const varRegex = /\{\{([a-zA-Z_][a-zA-Z0-9_]*)\}\}/g
 
- export const getVars = (value: string) => {
 
-   if (!value)
 
-     return []
 
-   const keys = value.match(varRegex)?.filter((item) => {
 
-     return ![CONTEXT_PLACEHOLDER_TEXT, HISTORY_PLACEHOLDER_TEXT, QUERY_PLACEHOLDER_TEXT, PRE_PROMPT_PLACEHOLDER_TEXT].includes(item)
 
-   }).map((item) => {
 
-     return item.replace('{{', '').replace('}}', '')
 
-   }).filter(key => key.length <= MAX_VAR_KEY_LENGHT) || []
 
-   const keyObj: Record<string, boolean> = {}
 
-   // remove duplicate keys
 
-   const res: string[] = []
 
-   keys.forEach((key) => {
 
-     if (keyObj[key])
 
-       return
 
-     keyObj[key] = true
 
-     res.push(key)
 
-   })
 
-   return res
 
- }
 
 
  |