mirror of
https://github.com/langgenius/dify.git
synced 2026-11-12 22:31:24 +08:00
# Conflicts: # api/.importlinter # api/controllers/console/__init__.py # api/controllers/console/workspace/account.py # api/core/app/apps/message_based_app_generator.py # api/core/app/entities/app_invoke_entities.py # api/core/tools/tool_manager.py # api/extensions/application_services/installed_app.py # api/extensions/ext_application_services.py # api/models/__init__.py # api/models/workflow.py # api/openapi/markdown/console-openapi.md # api/openapi/markdown/web-openapi.md # api/repositories/account/repository.py # api/repositories/api_workflow_run_repository.py # api/repositories/app/console_repository.py # api/repositories/app_definition_query_repository.py # api/services/app_definition_query_service.py # api/services/app_generate_service.py # api/services/conversation_service.py # api/services/message_service.py # api/services/web_conversation_service.py # api/tasks/app_generate/workflow_execute_task.py # api/tests/unit_tests/controllers/console/auth/test_login.py # api/tests/unit_tests/controllers/web/test_app.py # api/tests/unit_tests/core/app/apps/advanced_chat/test_app_generator.py # api/tests/unit_tests/repositories/app/test_console_repository.py # api/tests/unit_tests/services/test_app_definition_query_service.py # api/tests/unit_tests/services/test_app_generate_service.py # api/tests/unit_tests/services/test_message_service.py # docker/envs/core-services/api.env.example # packages/contracts/generated/api/console/account/types.gen.ts # packages/contracts/generated/api/console/account/zod.gen.ts # packages/contracts/generated/api/console/apps/errors.gen.ts # packages/contracts/generated/api/console/apps/orpc.gen.ts # packages/contracts/generated/api/console/errors.gen.ts # packages/contracts/generated/api/console/workspaces/errors.gen.ts # packages/contracts/generated/api/console/workspaces/orpc.gen.ts # packages/contracts/generated/api/web/errors.gen.ts # packages/contracts/generated/api/web/orpc.gen.ts # packages/contracts/generated/api/web/types.gen.ts # packages/contracts/generated/api/web/zod.gen.ts
36 lines
1.7 KiB
Python
36 lines
1.7 KiB
Python
"""Compose provider-scoped tool credential resolution for workflow execution."""
|
|
|
|
from collections.abc import Mapping
|
|
|
|
from configs import dify_config
|
|
from core.db.session_factory import get_session_maker
|
|
from core.plugin.entities.plugin_daemon import CredentialType
|
|
from core.tools.builtin_tool.provider import BuiltinToolProviderController
|
|
from core.tools.plugin_tool.provider import PluginToolProviderController
|
|
from extensions.ext_redis import redis_client
|
|
from models.provider_ids import ToolProviderID
|
|
from repositories.credentials.query_repository import CredentialQueryRepository
|
|
from services.credentials.redis_refresh_lock import RedisCredentialRefreshLock
|
|
from services.credentials.tool_runtime import ToolCredentialService
|
|
from services.credentials.tool_runtime_adapters import ProviderToolCredentialRuntime
|
|
|
|
|
|
def resolve_tool_credentials(
|
|
*, controller: BuiltinToolProviderController, provider_id: str, workspace_id: str, credential_id: str | None
|
|
) -> tuple[Mapping[str, object], CredentialType, str]:
|
|
if isinstance(controller, PluginToolProviderController):
|
|
provider = ToolProviderID(provider_id)
|
|
providers = (str(provider), provider.provider_name)
|
|
else:
|
|
providers = (provider_id,)
|
|
runtime = ProviderToolCredentialRuntime(
|
|
controller=controller, provider_id=provider_id, console_api_url=dify_config.CONSOLE_API_URL
|
|
)
|
|
service = ToolCredentialService(
|
|
credentials=CredentialQueryRepository(session_factory=get_session_maker()),
|
|
runtime=runtime,
|
|
refresh_lock=RedisCredentialRefreshLock(client=redis_client),
|
|
providers=providers,
|
|
)
|
|
return runtime.resolve(service=service, workspace_id=workspace_id, credential_id=credential_id)
|