|
|
|
|
@ -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)
|
|
|
|
|
|
|
|
|
|
|