Spaces:
Paused
Paused
| from typing import Literal, Optional | |
| from pydantic import BaseModel | |
| from core.model_runtime.utils.encoders import jsonable_encoder | |
| from core.tools.entities.common_entities import I18nObject | |
| from core.tools.entities.tool_entities import ToolProviderCredentials, ToolProviderType | |
| from core.tools.tool.tool import ToolParameter | |
| class UserTool(BaseModel): | |
| author: str | |
| name: str # identifier | |
| label: I18nObject # label | |
| description: I18nObject | |
| parameters: Optional[list[ToolParameter]] = None | |
| labels: list[str] = None | |
| UserToolProviderTypeLiteral = Optional[Literal["builtin", "api", "workflow"]] | |
| class UserToolProvider(BaseModel): | |
| id: str | |
| author: str | |
| name: str # identifier | |
| description: I18nObject | |
| icon: str | |
| label: I18nObject # label | |
| type: ToolProviderType | |
| masked_credentials: Optional[dict] = None | |
| original_credentials: Optional[dict] = None | |
| is_team_authorization: bool = False | |
| allow_delete: bool = True | |
| tools: list[UserTool] | None = None | |
| labels: list[str] | None = None | |
| def to_dict(self) -> dict: | |
| # ------------- | |
| # overwrite tool parameter types for temp fix | |
| tools = jsonable_encoder(self.tools) | |
| for tool in tools: | |
| if tool.get("parameters"): | |
| for parameter in tool.get("parameters"): | |
| if parameter.get("type") == ToolParameter.ToolParameterType.SYSTEM_FILES.value: | |
| parameter["type"] = "files" | |
| # ------------- | |
| return { | |
| "id": self.id, | |
| "author": self.author, | |
| "name": self.name, | |
| "description": self.description.to_dict(), | |
| "icon": self.icon, | |
| "label": self.label.to_dict(), | |
| "type": self.type.value, | |
| "team_credentials": self.masked_credentials, | |
| "is_team_authorization": self.is_team_authorization, | |
| "allow_delete": self.allow_delete, | |
| "tools": tools, | |
| "labels": self.labels, | |
| } | |
| class UserToolProviderCredentials(BaseModel): | |
| credentials: dict[str, ToolProviderCredentials] | |