feat: add app configuration updates without JSON validation

pull/22128/head
baonudesifeizhai 7 months ago
parent 6f8c7a66c8
commit f666f76a02

@ -47,6 +47,7 @@ class BasicVariablesConfigManager:
VariableEntityType.PARAGRAPH,
VariableEntityType.NUMBER,
VariableEntityType.SELECT,
VariableEntityType.JSON,
}:
variable = variables[variable_type]
variable_entities.append(
@ -96,7 +97,7 @@ class BasicVariablesConfigManager:
variables = []
for item in config["user_input_form"]:
key = list(item.keys())[0]
if key not in {"text-input", "select", "paragraph", "number", "external_data_tool"}:
if key not in {"text-input", "select", "paragraph", "number", "external_data_tool", "json"}:
raise ValueError("Keys in user_input_form list can only be 'text-input', 'paragraph' or 'select'")
form_item = item[key]

@ -97,6 +97,7 @@ class VariableEntityType(StrEnum):
EXTERNAL_DATA_TOOL = "external_data_tool"
FILE = "file"
FILE_LIST = "file-list"
JSON = "json"
class VariableEntity(BaseModel):

@ -190,6 +190,7 @@ const ConfigModal: FC<IConfigModalProps> = ({
<SelectTypeItem type={InputVarType.paragraph} selected={type === InputVarType.paragraph} onClick={handleTypeChange(InputVarType.paragraph)} />
<SelectTypeItem type={InputVarType.select} selected={type === InputVarType.select} onClick={handleTypeChange(InputVarType.select)} />
<SelectTypeItem type={InputVarType.number} selected={type === InputVarType.number} onClick={handleTypeChange(InputVarType.number)} />
<SelectTypeItem type={InputVarType.json} selected={type === InputVarType.json} onClick={handleTypeChange(InputVarType.json)} />
{supportFile && <>
<SelectTypeItem type={InputVarType.singleFile} selected={type === InputVarType.singleFile} onClick={handleTypeChange(InputVarType.singleFile)} />
<SelectTypeItem type={InputVarType.multiFiles} selected={type === InputVarType.multiFiles} onClick={handleTypeChange(InputVarType.multiFiles)} />

@ -1,7 +1,7 @@
'use client'
import type { FC } from 'react'
import React from 'react'
import { RiAlignLeft, RiCheckboxMultipleLine, RiFileCopy2Line, RiFileList2Line, RiHashtag, RiTextSnippet } from '@remixicon/react'
import { RiAlignLeft, RiCheckboxMultipleLine, RiCodeBoxLine, RiFileCopy2Line, RiFileList2Line, RiHashtag, RiTextSnippet } from '@remixicon/react'
import { InputVarType } from '../../../types'
type Props = {
@ -17,6 +17,7 @@ const getIcon = (type: InputVarType) => {
[InputVarType.number]: RiHashtag,
[InputVarType.singleFile]: RiFileList2Line,
[InputVarType.multiFiles]: RiFileCopy2Line,
[InputVarType.json]: RiCodeBoxLine,
} as any)[type] || RiTextSnippet
}

@ -355,6 +355,7 @@ const translation = {
'paragraph': 'Paragraph',
'select': 'Select',
'number': 'Number',
'json': 'JSON Object',
'single-file': 'Single File',
'multi-files': 'File List',
'notSet': 'Not set, try typing {{input}} in the prefix prompt',

@ -349,6 +349,7 @@ const translation = {
'paragraph': '段落',
'select': '下拉选项',
'number': '数字',
'json': 'JSON 对象',
'single-file': '单文件',
'multi-files': '文件列表',
'notSet': '未设置,在 Prompt 中输入 {{input}} 试试',

Loading…
Cancel
Save