diff --git a/api/core/plugin/impl/datasource.py b/api/core/plugin/impl/datasource.py index 97c9428bde..6dc5ebca6b 100644 --- a/api/core/plugin/impl/datasource.py +++ b/api/core/plugin/impl/datasource.py @@ -16,6 +16,7 @@ from core.plugin.entities.plugin_daemon import ( PluginDatasourceProviderEntity, ) from core.plugin.impl.base import BasePluginClient +from services.tools.tools_transform_service import ToolTransformService class PluginDatasourceManager(BasePluginClient): @@ -43,6 +44,8 @@ class PluginDatasourceManager(BasePluginClient): ) local_file_datasource_provider = PluginDatasourceProviderEntity(**self._get_local_file_datasource_provider()) + for provider in response: + ToolTransformService.repack_provider(tenant_id=tenant_id, provider=provider) all_response = [local_file_datasource_provider] + response for provider in all_response: diff --git a/api/services/tools/tools_transform_service.py b/api/services/tools/tools_transform_service.py index 367121125b..8a73c73a1b 100644 --- a/api/services/tools/tools_transform_service.py +++ b/api/services/tools/tools_transform_service.py @@ -5,6 +5,7 @@ from typing import Optional, Union, cast from yarl import URL from configs import dify_config +from core.plugin.entities.plugin_daemon import PluginDatasourceProviderEntity from core.tools.__base.tool import Tool from core.tools.__base.tool_runtime import ToolRuntime from core.tools.builtin_tool.provider import BuiltinToolProviderController @@ -56,7 +57,7 @@ class ToolTransformService: return "" @staticmethod - def repack_provider(tenant_id: str, provider: Union[dict, ToolProviderApiEntity]): + def repack_provider(tenant_id: str, provider: Union[dict, ToolProviderApiEntity, PluginDatasourceProviderEntity]): """ repack provider @@ -77,6 +78,17 @@ class ToolTransformService: provider.icon = ToolTransformService.get_tool_provider_icon_url( provider_type=provider.type.value, provider_name=provider.name, icon=provider.icon ) + elif isinstance(provider, PluginDatasourceProviderEntity): + if provider.plugin_id: + if isinstance(provider.declaration.identity.icon, str): + provider.declaration.identity.icon = ToolTransformService.get_plugin_icon_url( + tenant_id=tenant_id, filename=provider.declaration.identity.icon + ) + else: + provider.declaration.identity.icon = ToolTransformService.get_tool_provider_icon_url( + provider_type=provider.type.value, provider_name=provider.name, + icon=provider.declaration.identity.icon + ) @classmethod def builtin_provider_to_user_provider(