diff --git a/api/core/entities/parameter_entities.py b/api/core/entities/parameter_entities.py index 0afb51edce..b61c4ad4bb 100644 --- a/api/core/entities/parameter_entities.py +++ b/api/core/entities/parameter_entities.py @@ -14,6 +14,7 @@ class CommonParameterType(StrEnum): APP_SELECTOR = "app-selector" MODEL_SELECTOR = "model-selector" TOOLS_SELECTOR = "array[tools]" + CHECKBOX = "checkbox" ANY = auto() # Dynamic select parameter diff --git a/api/core/plugin/entities/parameters.py b/api/core/plugin/entities/parameters.py index 68b5c1084a..51d74ef186 100644 --- a/api/core/plugin/entities/parameters.py +++ b/api/core/plugin/entities/parameters.py @@ -39,7 +39,7 @@ class PluginParameterType(StrEnum): TOOLS_SELECTOR = CommonParameterType.TOOLS_SELECTOR ANY = CommonParameterType.ANY DYNAMIC_SELECT = CommonParameterType.DYNAMIC_SELECT - + CHECKBOX = CommonParameterType.CHECKBOX # deprecated, should not use. SYSTEM_FILES = CommonParameterType.SYSTEM_FILES @@ -94,6 +94,7 @@ def as_normal_type(typ: StrEnum): if typ.value in { PluginParameterType.SECRET_INPUT, PluginParameterType.SELECT, + PluginParameterType.CHECKBOX, }: return "string" return typ.value @@ -102,7 +103,13 @@ def as_normal_type(typ: StrEnum): def cast_parameter_value(typ: StrEnum, value: Any, /): try: match typ.value: - case PluginParameterType.STRING | PluginParameterType.SECRET_INPUT | PluginParameterType.SELECT: + case ( + PluginParameterType.STRING + | PluginParameterType.SECRET_INPUT + | PluginParameterType.SELECT + | PluginParameterType.CHECKBOX + | PluginParameterType.DYNAMIC_SELECT + ): if value is None: return "" else: diff --git a/api/core/tools/entities/tool_entities.py b/api/core/tools/entities/tool_entities.py index 3921ba5c16..40ad5e4a13 100644 --- a/api/core/tools/entities/tool_entities.py +++ b/api/core/tools/entities/tool_entities.py @@ -262,6 +262,7 @@ class ToolParameter(PluginParameter): SECRET_INPUT = PluginParameterType.SECRET_INPUT FILE = PluginParameterType.FILE FILES = PluginParameterType.FILES + CHECKBOX = PluginParameterType.CHECKBOX APP_SELECTOR = PluginParameterType.APP_SELECTOR MODEL_SELECTOR = PluginParameterType.MODEL_SELECTOR ANY = PluginParameterType.ANY diff --git a/api/core/trigger/entities/entities.py b/api/core/trigger/entities/entities.py index cd92f1a3d5..26e548b83c 100644 --- a/api/core/trigger/entities/entities.py +++ b/api/core/trigger/entities/entities.py @@ -6,7 +6,13 @@ from typing import Any, Optional, Union from pydantic import BaseModel, ConfigDict, Field from core.entities.provider_entities import ProviderConfig -from core.plugin.entities.parameters import PluginParameterAutoGenerate, PluginParameterOption, PluginParameterTemplate +from core.plugin.entities.parameters import ( + PluginParameterAutoGenerate, + PluginParameterOption, + PluginParameterTemplate, + as_normal_type, + cast_parameter_value, +) from core.tools.entities.common_entities import I18nObject @@ -24,6 +30,13 @@ class TriggerParameterType(StrEnum): OBJECT = "object" ARRAY = "array" DYNAMIC_SELECT = "dynamic-select" + CHECKBOX = "checkbox" + + def as_normal_type(self): + return as_normal_type(self) + + def cast_value(self, value: Any): + return cast_parameter_value(self, value) class TriggerParameter(BaseModel):