From ccbe42eb5f6fb0aec004f199b5a7252ce70c78a5 Mon Sep 17 00:00:00 2001 From: Yeuoly Date: Thu, 17 Oct 2024 20:46:29 +0800 Subject: [PATCH] feat: add plugin id into tool api entities --- api/core/tools/entities/api_entities.py | 2 ++ api/core/tools/plugin_tool/provider.py | 4 +++- api/core/tools/tool_manager.py | 2 ++ api/services/tools/tools_transform_service.py | 6 ++++++ 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/api/core/tools/entities/api_entities.py b/api/core/tools/entities/api_entities.py index 3758820694..504f7e012d 100644 --- a/api/core/tools/entities/api_entities.py +++ b/api/core/tools/entities/api_entities.py @@ -33,6 +33,7 @@ class ToolProviderApiEntity(BaseModel): original_credentials: Optional[dict] = None is_team_authorization: bool = False allow_delete: bool = True + plugin_id: Optional[str] = Field(default="", description="The plugin id of the tool") tools: list[ToolApiEntity] = Field(default_factory=list) labels: list[str] = Field(default_factory=list) @@ -51,6 +52,7 @@ class ToolProviderApiEntity(BaseModel): "id": self.id, "author": self.author, "name": self.name, + "plugin_id": self.plugin_id, "description": self.description.to_dict(), "icon": self.icon, "label": self.label.to_dict(), diff --git a/api/core/tools/plugin_tool/provider.py b/api/core/tools/plugin_tool/provider.py index b6758df2bb..d285576996 100644 --- a/api/core/tools/plugin_tool/provider.py +++ b/api/core/tools/plugin_tool/provider.py @@ -11,10 +11,12 @@ from core.tools.plugin_tool.tool import PluginTool class PluginToolProviderController(BuiltinToolProviderController): entity: ToolProviderEntityWithPlugin tenant_id: str + plugin_id: str - def __init__(self, entity: ToolProviderEntityWithPlugin, tenant_id: str) -> None: + def __init__(self, entity: ToolProviderEntityWithPlugin, plugin_id: str, tenant_id: str) -> None: self.entity = entity self.tenant_id = tenant_id + self.plugin_id = plugin_id @property def provider_type(self) -> ToolProviderType: diff --git a/api/core/tools/tool_manager.py b/api/core/tools/tool_manager.py index 4d8ee1399b..1d83934130 100644 --- a/api/core/tools/tool_manager.py +++ b/api/core/tools/tool_manager.py @@ -91,6 +91,7 @@ class ToolManager: return PluginToolProviderController( entity=provider_entity.declaration, + plugin_id=provider_entity.plugin_id, tenant_id=tenant_id, ) @@ -454,6 +455,7 @@ class ToolManager: return [ PluginToolProviderController( entity=provider.declaration, + plugin_id=provider.plugin_id, tenant_id=tenant_id, ) for provider in provider_entities diff --git a/api/services/tools/tools_transform_service.py b/api/services/tools/tools_transform_service.py index 6f07fa6dd5..b817cecb34 100644 --- a/api/services/tools/tools_transform_service.py +++ b/api/services/tools/tools_transform_service.py @@ -80,10 +80,14 @@ class ToolTransformService: type=ToolProviderType.BUILT_IN, masked_credentials={}, is_team_authorization=False, + plugin_id=None, tools=[], labels=provider_controller.tool_labels, ) + if isinstance(provider_controller, PluginToolProviderController): + result.plugin_id = provider_controller.plugin_id + # get credentials schema schema = {x.to_basic_provider_config().name: x for x in provider_controller.get_credentials_schema()} @@ -158,6 +162,7 @@ class ToolTransformService: type=ToolProviderType.WORKFLOW, masked_credentials={}, is_team_authorization=True, + plugin_id=None, tools=[], labels=labels or [], ) @@ -199,6 +204,7 @@ class ToolTransformService: zh_Hans=db_provider.name, ), type=ToolProviderType.API, + plugin_id=None, masked_credentials={}, is_team_authorization=True, tools=[],