| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 | from enum import Enumfrom typing import Optionalfrom pydantic import BaseModelfrom core.tools.entities.common_entities import I18nObjectfrom core.tools.entities.tool_entities import ToolProviderCredentialsfrom core.tools.tool.tool import ToolParameterclass UserTool(BaseModel):    author: str    name: str # identifier    label: I18nObject # label    description: I18nObject    parameters: Optional[list[ToolParameter]]class UserToolProvider(BaseModel):    class ProviderType(Enum):        BUILTIN = "builtin"        APP = "app"        API = "api"        MODEL = "model"    id: str    author: str    name: str # identifier    description: I18nObject    icon: str    label: I18nObject # label    type: ProviderType    masked_credentials: dict = None    original_credentials: dict = None    is_team_authorization: bool = False    allow_delete: bool = True    tools: list[UserTool] = None    def to_dict(self) -> dict:        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': self.tools        }class UserToolProviderCredentials(BaseModel):    credentials: dict[str, ToolProviderCredentials]
 |