Files
Harry d75f734b7d feat: add checkbox parameter type to provider configuration
- Introduced a new CHECKBOX type in CommonParameterType to enhance parameter options.
- Updated ToolParameter and TriggerParameter classes to include the new CHECKBOX type.
- Modified the GitHub trigger manifest version to 1.1.0 and changed parameter type from select to checkbox in issues.yaml.

These changes improve the flexibility of parameter types available in the plugin, allowing for more diverse user interactions.
2025-09-29 14:29:38 +08:00

129 lines
3.3 KiB
Python

from enum import Enum
from typing import Union
from pydantic import BaseModel, Field
from dify_plugin.core.documentation.schema_doc import docs
from dify_plugin.entities import I18nObject
class LogMetadata(str, Enum):
STARTED_AT = "started_at"
FINISHED_AT = "finished_at"
ELAPSED_TIME = "elapsed_time"
TOTAL_PRICE = "total_price"
TOTAL_TOKENS = "total_tokens"
PROVIDER = "provider"
CURRENCY = "currency"
@docs(
description="The type of the parameter",
)
class CommonParameterType(Enum):
SECRET_INPUT = "secret-input"
TEXT_INPUT = "text-input"
SELECT = "select"
STRING = "string"
NUMBER = "number"
FILE = "file"
FILES = "files"
BOOLEAN = "boolean"
CHECKBOX = "checkbox"
APP_SELECTOR = "app-selector"
MODEL_SELECTOR = "model-selector"
# TOOL_SELECTOR = "tool-selector"
TOOLS_SELECTOR = "array[tools]"
ANY = "any"
# MCP object and array type parameters
OBJECT = "object"
ARRAY = "array"
DYNAMIC_SELECT = "dynamic-select"
@docs(
description="The scope of the app selector",
)
class AppSelectorScope(Enum):
ALL = "all"
CHAT = "chat"
WORKFLOW = "workflow"
COMPLETION = "completion"
@docs(
description="The scope of the model config",
)
class ModelConfigScope(Enum):
LLM = "llm"
TEXT_EMBEDDING = "text-embedding"
RERANK = "rerank"
TTS = "tts"
SPEECH2TEXT = "speech2text"
MODERATION = "moderation"
VISION = "vision"
@docs(
description="The scope of the tool selector",
)
class ToolSelectorScope(Enum):
ALL = "all"
PLUGIN = "plugin"
API = "api"
WORKFLOW = "workflow"
@docs(
description="The option of the credentials",
)
class ConfigOption(BaseModel):
value: str = Field(..., description="The value of the option")
label: I18nObject = Field(..., description="The label of the option")
@docs(
description="A common config schema",
)
class ProviderConfig(BaseModel):
class Config(Enum):
SECRET_INPUT = CommonParameterType.SECRET_INPUT.value
TEXT_INPUT = CommonParameterType.TEXT_INPUT.value
SELECT = CommonParameterType.SELECT.value
BOOLEAN = CommonParameterType.BOOLEAN.value
MODEL_SELECTOR = CommonParameterType.MODEL_SELECTOR.value
APP_SELECTOR = CommonParameterType.APP_SELECTOR.value
# TOOL_SELECTOR = CommonParameterType.TOOL_SELECTOR.value
TOOLS_SELECTOR = CommonParameterType.TOOLS_SELECTOR.value
@classmethod
def value_of(cls, value: str) -> "ProviderConfig.Config":
"""
Get value of given mode.
:param value: mode value
:return: mode
"""
for mode in cls:
if mode.value == value:
return mode
raise ValueError(f"invalid mode value {value}")
name: str = Field(..., description="The name of the credentials")
type: Config = Field(..., description="The type of the credentials")
scope: str | None = None
required: bool = False
default: Union[int, float, str, bool, list] | None = None
options: list[ConfigOption] | None = None
multiple: bool | None = False
label: I18nObject
help: I18nObject | None = None
url: str | None = None
placeholder: I18nObject | None = None
class CredentialType(Enum):
API_KEY = "api-key"
OAUTH = "oauth2"
UNAUTHORIZED = "unauthorized"