fix: remove _try_resolve_user_from_request (#31360)

This commit is contained in:
wangxiaolei 2026-01-21 21:19:11 +08:00 committed by GitHub
parent 524ce14a68
commit 211c57f7b6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 9 additions and 22 deletions

View File

@ -1,5 +1,6 @@
import contextlib import contextlib
import json import json
import logging
from collections.abc import Generator, Iterable from collections.abc import Generator, Iterable
from copy import deepcopy from copy import deepcopy
from datetime import UTC, datetime from datetime import UTC, datetime
@ -36,6 +37,8 @@ from extensions.ext_database import db
from models.enums import CreatorUserRole from models.enums import CreatorUserRole
from models.model import Message, MessageFile from models.model import Message, MessageFile
logger = logging.getLogger(__name__)
class ToolEngine: class ToolEngine:
""" """
@ -123,25 +126,31 @@ class ToolEngine:
# transform tool invoke message to get LLM friendly message # transform tool invoke message to get LLM friendly message
return plain_text, message_files, meta return plain_text, message_files, meta
except ToolProviderCredentialValidationError as e: except ToolProviderCredentialValidationError as e:
logger.error(e, exc_info=True)
error_response = "Please check your tool provider credentials" error_response = "Please check your tool provider credentials"
agent_tool_callback.on_tool_error(e) agent_tool_callback.on_tool_error(e)
except (ToolNotFoundError, ToolNotSupportedError, ToolProviderNotFoundError) as e: except (ToolNotFoundError, ToolNotSupportedError, ToolProviderNotFoundError) as e:
error_response = f"there is not a tool named {tool.entity.identity.name}" error_response = f"there is not a tool named {tool.entity.identity.name}"
logger.error(e, exc_info=True)
agent_tool_callback.on_tool_error(e) agent_tool_callback.on_tool_error(e)
except ToolParameterValidationError as e: except ToolParameterValidationError as e:
error_response = f"tool parameters validation error: {e}, please check your tool parameters" error_response = f"tool parameters validation error: {e}, please check your tool parameters"
agent_tool_callback.on_tool_error(e) agent_tool_callback.on_tool_error(e)
logger.error(e, exc_info=True)
except ToolInvokeError as e: except ToolInvokeError as e:
error_response = f"tool invoke error: {e}" error_response = f"tool invoke error: {e}"
agent_tool_callback.on_tool_error(e) agent_tool_callback.on_tool_error(e)
logger.error(e, exc_info=True)
except ToolEngineInvokeError as e: except ToolEngineInvokeError as e:
meta = e.meta meta = e.meta
error_response = f"tool invoke error: {meta.error}" error_response = f"tool invoke error: {meta.error}"
agent_tool_callback.on_tool_error(e) agent_tool_callback.on_tool_error(e)
logger.error(e, exc_info=True)
return error_response, [], meta return error_response, [], meta
except Exception as e: except Exception as e:
error_response = f"unknown error: {e}" error_response = f"unknown error: {e}"
agent_tool_callback.on_tool_error(e) agent_tool_callback.on_tool_error(e)
logger.error(e, exc_info=True)
return error_response, [], ToolInvokeMeta.error_instance(error_response) return error_response, [], ToolInvokeMeta.error_instance(error_response)

View File

@ -20,7 +20,6 @@ from core.tools.entities.tool_entities import (
) )
from core.tools.errors import ToolInvokeError from core.tools.errors import ToolInvokeError
from factories.file_factory import build_from_mapping from factories.file_factory import build_from_mapping
from libs.login import current_user
from models import Account, Tenant from models import Account, Tenant
from models.model import App, EndUser from models.model import App, EndUser
from models.workflow import Workflow from models.workflow import Workflow
@ -28,21 +27,6 @@ from models.workflow import Workflow
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def _try_resolve_user_from_request() -> Account | EndUser | None:
"""
Try to resolve user from Flask request context.
Returns None if not in a request context or if user is not available.
"""
# Note: `current_user` is a LocalProxy. Never compare it with None directly.
# Use _get_current_object() to dereference the proxy
user = getattr(current_user, "_get_current_object", lambda: current_user)()
# Check if we got a valid user object
if user is not None and hasattr(user, "id"):
return user
return None
class WorkflowTool(Tool): class WorkflowTool(Tool):
""" """
Workflow tool. Workflow tool.
@ -223,12 +207,6 @@ class WorkflowTool(Tool):
Returns: Returns:
Account | EndUser | None: The resolved user object, or None if resolution fails. Account | EndUser | None: The resolved user object, or None if resolution fails.
""" """
# Try to resolve user from request context first
user = _try_resolve_user_from_request()
if user is not None:
return user
# Fall back to database resolution
return self._resolve_user_from_database(user_id=user_id) return self._resolve_user_from_database(user_id=user_id)
def _resolve_user_from_database(self, user_id: str) -> Account | EndUser | None: def _resolve_user_from_database(self, user_id: str) -> Account | EndUser | None: