|
@@ -233,56 +233,57 @@ class BuiltinToolManageService:
|
|
|
# get all builtin providers
|
|
|
provider_controllers = ToolManager.list_builtin_providers(tenant_id)
|
|
|
|
|
|
- # get all user added providers
|
|
|
- db_providers: list[BuiltinToolProvider] = (
|
|
|
- db.session.query(BuiltinToolProvider).filter(BuiltinToolProvider.tenant_id == tenant_id).all() or []
|
|
|
- )
|
|
|
+ with db.session.no_autoflush:
|
|
|
+ # get all user added providers
|
|
|
+ db_providers: list[BuiltinToolProvider] = (
|
|
|
+ db.session.query(BuiltinToolProvider).filter(BuiltinToolProvider.tenant_id == tenant_id).all() or []
|
|
|
+ )
|
|
|
|
|
|
- # rewrite db_providers
|
|
|
- for db_provider in db_providers:
|
|
|
- db_provider.provider = str(ToolProviderID(db_provider.provider))
|
|
|
-
|
|
|
- # find provider
|
|
|
- def find_provider(provider):
|
|
|
- return next(filter(lambda db_provider: db_provider.provider == provider, db_providers), None)
|
|
|
-
|
|
|
- result: list[ToolProviderApiEntity] = []
|
|
|
-
|
|
|
- for provider_controller in provider_controllers:
|
|
|
- try:
|
|
|
- # handle include, exclude
|
|
|
- if is_filtered(
|
|
|
- include_set=dify_config.POSITION_TOOL_INCLUDES_SET, # type: ignore
|
|
|
- exclude_set=dify_config.POSITION_TOOL_EXCLUDES_SET, # type: ignore
|
|
|
- data=provider_controller,
|
|
|
- name_func=lambda x: x.identity.name,
|
|
|
- ):
|
|
|
- continue
|
|
|
-
|
|
|
- # convert provider controller to user provider
|
|
|
- user_builtin_provider = ToolTransformService.builtin_provider_to_user_provider(
|
|
|
- provider_controller=provider_controller,
|
|
|
- db_provider=find_provider(provider_controller.entity.identity.name),
|
|
|
- decrypt_credentials=True,
|
|
|
- )
|
|
|
+ # rewrite db_providers
|
|
|
+ for db_provider in db_providers:
|
|
|
+ db_provider.provider = str(ToolProviderID(db_provider.provider))
|
|
|
+
|
|
|
+ # find provider
|
|
|
+ def find_provider(provider):
|
|
|
+ return next(filter(lambda db_provider: db_provider.provider == provider, db_providers), None)
|
|
|
+
|
|
|
+ result: list[ToolProviderApiEntity] = []
|
|
|
+
|
|
|
+ for provider_controller in provider_controllers:
|
|
|
+ try:
|
|
|
+ # handle include, exclude
|
|
|
+ if is_filtered(
|
|
|
+ include_set=dify_config.POSITION_TOOL_INCLUDES_SET, # type: ignore
|
|
|
+ exclude_set=dify_config.POSITION_TOOL_EXCLUDES_SET, # type: ignore
|
|
|
+ data=provider_controller,
|
|
|
+ name_func=lambda x: x.identity.name,
|
|
|
+ ):
|
|
|
+ continue
|
|
|
+
|
|
|
+ # convert provider controller to user provider
|
|
|
+ user_builtin_provider = ToolTransformService.builtin_provider_to_user_provider(
|
|
|
+ provider_controller=provider_controller,
|
|
|
+ db_provider=find_provider(provider_controller.entity.identity.name),
|
|
|
+ decrypt_credentials=True,
|
|
|
+ )
|
|
|
|
|
|
- # add icon
|
|
|
- ToolTransformService.repack_provider(tenant_id=tenant_id, provider=user_builtin_provider)
|
|
|
-
|
|
|
- tools = provider_controller.get_tools()
|
|
|
- for tool in tools or []:
|
|
|
- user_builtin_provider.tools.append(
|
|
|
- ToolTransformService.convert_tool_entity_to_api_entity(
|
|
|
- tenant_id=tenant_id,
|
|
|
- tool=tool,
|
|
|
- credentials=user_builtin_provider.original_credentials,
|
|
|
- labels=ToolLabelManager.get_tool_labels(provider_controller),
|
|
|
+ # add icon
|
|
|
+ ToolTransformService.repack_provider(tenant_id=tenant_id, provider=user_builtin_provider)
|
|
|
+
|
|
|
+ tools = provider_controller.get_tools()
|
|
|
+ for tool in tools or []:
|
|
|
+ user_builtin_provider.tools.append(
|
|
|
+ ToolTransformService.convert_tool_entity_to_api_entity(
|
|
|
+ tenant_id=tenant_id,
|
|
|
+ tool=tool,
|
|
|
+ credentials=user_builtin_provider.original_credentials,
|
|
|
+ labels=ToolLabelManager.get_tool_labels(provider_controller),
|
|
|
+ )
|
|
|
)
|
|
|
- )
|
|
|
|
|
|
- result.append(user_builtin_provider)
|
|
|
- except Exception as e:
|
|
|
- raise e
|
|
|
+ result.append(user_builtin_provider)
|
|
|
+ except Exception as e:
|
|
|
+ raise e
|
|
|
|
|
|
return BuiltinToolProviderSort.sort(result)
|
|
|
|