|
@@ -7,6 +7,7 @@ from sqlalchemy.orm import Session
|
|
|
|
|
|
from core.callback_handler.workflow_tool_callback_handler import DifyWorkflowCallbackHandler
|
|
|
from core.file import File, FileTransferMethod, FileType
|
|
|
+from core.plugin.manager.exc import PluginInvokeError
|
|
|
from core.tools.entities.tool_entities import ToolInvokeMessage, ToolParameter
|
|
|
from core.tools.tool_engine import ToolEngine
|
|
|
from core.tools.tool_manager import ToolManager
|
|
@@ -101,8 +102,18 @@ class ToolNode(BaseNode[ToolNodeData]):
|
|
|
)
|
|
|
)
|
|
|
|
|
|
- # convert tool messages
|
|
|
- yield from self._transform_message(message_stream, tool_info, parameters_for_log)
|
|
|
+ try:
|
|
|
+ # convert tool messages
|
|
|
+ yield from self._transform_message(message_stream, tool_info, parameters_for_log)
|
|
|
+ except PluginInvokeError as e:
|
|
|
+ yield RunCompletedEvent(
|
|
|
+ run_result=NodeRunResult(
|
|
|
+ status=WorkflowNodeExecutionStatus.FAILED,
|
|
|
+ inputs=parameters_for_log,
|
|
|
+ metadata={NodeRunMetadataKey.TOOL_INFO: tool_info},
|
|
|
+ error=f"Failed to transform tool message: {str(e)}",
|
|
|
+ )
|
|
|
+ )
|
|
|
|
|
|
def _generate_parameters(
|
|
|
self,
|