|
|
|
@ -4,6 +4,7 @@ import mimetypes
|
|
|
|
from collections.abc import Generator
|
|
|
|
from collections.abc import Generator
|
|
|
|
from os import listdir, path
|
|
|
|
from os import listdir, path
|
|
|
|
from threading import Lock
|
|
|
|
from threading import Lock
|
|
|
|
|
|
|
|
from typing import TYPE_CHECKING, Any, Optional, Union, cast
|
|
|
|
from typing import TYPE_CHECKING, Any, Literal, Optional, Union, cast
|
|
|
|
from typing import TYPE_CHECKING, Any, Literal, Optional, Union, cast
|
|
|
|
|
|
|
|
|
|
|
|
from yarl import URL
|
|
|
|
from yarl import URL
|
|
|
|
@ -51,7 +52,7 @@ from core.tools.tool_label_manager import ToolLabelManager
|
|
|
|
from core.tools.utils.configuration import (
|
|
|
|
from core.tools.utils.configuration import (
|
|
|
|
ToolParameterConfigurationManager,
|
|
|
|
ToolParameterConfigurationManager,
|
|
|
|
)
|
|
|
|
)
|
|
|
|
from core.tools.utils.encryption import create_encrypter, create_generic_encrypter
|
|
|
|
from core.tools.utils.encryption import create_provider_encrypter, create_tool_provider_encrypter
|
|
|
|
from core.tools.workflow_as_tool.tool import WorkflowTool
|
|
|
|
from core.tools.workflow_as_tool.tool import WorkflowTool
|
|
|
|
from extensions.ext_database import db
|
|
|
|
from extensions.ext_database import db
|
|
|
|
from models.tools import ApiToolProvider, BuiltinToolProvider, MCPToolProvider, WorkflowToolProvider
|
|
|
|
from models.tools import ApiToolProvider, BuiltinToolProvider, MCPToolProvider, WorkflowToolProvider
|
|
|
|
@ -226,7 +227,7 @@ class ToolManager:
|
|
|
|
if builtin_provider is None:
|
|
|
|
if builtin_provider is None:
|
|
|
|
raise ToolProviderNotFoundError(f"builtin provider {provider_id} not found")
|
|
|
|
raise ToolProviderNotFoundError(f"builtin provider {provider_id} not found")
|
|
|
|
|
|
|
|
|
|
|
|
encrypter, _ = create_encrypter(
|
|
|
|
encrypter, _ = create_provider_encrypter(
|
|
|
|
tenant_id=tenant_id,
|
|
|
|
tenant_id=tenant_id,
|
|
|
|
config=[
|
|
|
|
config=[
|
|
|
|
x.to_basic_provider_config()
|
|
|
|
x.to_basic_provider_config()
|
|
|
|
@ -252,11 +253,9 @@ class ToolManager:
|
|
|
|
|
|
|
|
|
|
|
|
elif provider_type == ToolProviderType.API:
|
|
|
|
elif provider_type == ToolProviderType.API:
|
|
|
|
api_provider, credentials = cls.get_api_provider_controller(tenant_id, provider_id)
|
|
|
|
api_provider, credentials = cls.get_api_provider_controller(tenant_id, provider_id)
|
|
|
|
encrypter, _ = create_generic_encrypter(
|
|
|
|
encrypter, _ = create_tool_provider_encrypter(
|
|
|
|
tenant_id=tenant_id,
|
|
|
|
tenant_id=tenant_id,
|
|
|
|
config=[x.to_basic_provider_config() for x in api_provider.get_credentials_schema()],
|
|
|
|
controller=api_provider,
|
|
|
|
provider_type=api_provider.provider_type.value,
|
|
|
|
|
|
|
|
provider_identity=api_provider.entity.identity.name,
|
|
|
|
|
|
|
|
)
|
|
|
|
)
|
|
|
|
return cast(
|
|
|
|
return cast(
|
|
|
|
ApiTool,
|
|
|
|
ApiTool,
|
|
|
|
@ -760,12 +759,9 @@ class ToolManager:
|
|
|
|
ApiProviderAuthType.API_KEY if credentials["auth_type"] == "api_key" else ApiProviderAuthType.NONE,
|
|
|
|
ApiProviderAuthType.API_KEY if credentials["auth_type"] == "api_key" else ApiProviderAuthType.NONE,
|
|
|
|
)
|
|
|
|
)
|
|
|
|
# init tool configuration
|
|
|
|
# init tool configuration
|
|
|
|
encrypter, _ = create_encrypter(
|
|
|
|
encrypter, _ = create_tool_provider_encrypter(
|
|
|
|
tenant_id=tenant_id,
|
|
|
|
tenant_id=tenant_id,
|
|
|
|
config=[x.to_basic_provider_config() for x in controller.get_credentials_schema()],
|
|
|
|
controller=controller,
|
|
|
|
cache=ToolProviderCredentialsCache(
|
|
|
|
|
|
|
|
tenant_id=tenant_id, provider=provider, credential_id=provider_obj.id
|
|
|
|
|
|
|
|
),
|
|
|
|
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
masked_credentials = encrypter.mask_tool_credentials(encrypter.decrypt(credentials))
|
|
|
|
masked_credentials = encrypter.mask_tool_credentials(encrypter.decrypt(credentials))
|
|
|
|
|