mirror of
https://github.com/langgenius/dify.git
synced 2026-04-20 18:57:19 +08:00
Keep trigger provider handling in the node
This commit is contained in:
@ -462,33 +462,31 @@ class WorkflowResponseConverter:
|
||||
agent_strategy=event.agent_strategy,
|
||||
),
|
||||
)
|
||||
response.data.extras.update(event.extras)
|
||||
provider_id = str(response.data.extras.get("provider_id") or event.provider_id)
|
||||
|
||||
try:
|
||||
if event.node_type == NodeType.TOOL:
|
||||
response.data.extras["icon"] = ToolManager.get_tool_icon(
|
||||
tenant_id=self._application_generate_entity.app_config.tenant_id,
|
||||
provider_type=ToolProviderType(event.provider_type),
|
||||
provider_id=provider_id,
|
||||
provider_id=event.provider_id,
|
||||
)
|
||||
elif event.node_type == NodeType.DATASOURCE:
|
||||
manager = PluginDatasourceManager()
|
||||
provider_entity = manager.fetch_datasource_provider(
|
||||
self._application_generate_entity.app_config.tenant_id,
|
||||
provider_id,
|
||||
event.provider_id,
|
||||
)
|
||||
response.data.extras["icon"] = provider_entity.declaration.identity.generate_datasource_icon_url(
|
||||
self._application_generate_entity.app_config.tenant_id
|
||||
)
|
||||
elif event.node_type == NodeType.TRIGGER_PLUGIN and provider_id:
|
||||
elif event.node_type == NodeType.TRIGGER_PLUGIN:
|
||||
response.data.extras["icon"] = TriggerManager.get_trigger_plugin_icon(
|
||||
self._application_generate_entity.app_config.tenant_id,
|
||||
provider_id,
|
||||
event.provider_id,
|
||||
)
|
||||
except Exception:
|
||||
# metadata fetch may fail, for example, the plugin daemon is down or plugin is uninstalled.
|
||||
logger.warning("failed to fetch icon for %s", provider_id)
|
||||
logger.warning("failed to fetch icon for %s", event.provider_id)
|
||||
|
||||
return response
|
||||
|
||||
@ -597,7 +595,6 @@ class WorkflowResponseConverter:
|
||||
iteration_id=event.in_iteration_id,
|
||||
loop_id=event.in_loop_id,
|
||||
retry_index=event.retry_index,
|
||||
extras=dict(event.extras),
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
@ -739,7 +739,7 @@ class TestWorkflowResponseConverterServiceApiTruncation:
|
||||
assert not response.data.outputs_truncated
|
||||
assert response.data.extras == {}
|
||||
|
||||
def test_trigger_plugin_start_event_uses_extras_provider_id_for_icon(self):
|
||||
def test_trigger_plugin_start_event_uses_provider_id_for_icon(self):
|
||||
converter = self.create_test_converter(InvokeFrom.WEB_APP)
|
||||
event = QueueNodeStartedEvent(
|
||||
node_execution_id=str(uuid.uuid4()),
|
||||
@ -750,8 +750,7 @@ class TestWorkflowResponseConverterServiceApiTruncation:
|
||||
in_iteration_id=None,
|
||||
in_loop_id=None,
|
||||
provider_type="",
|
||||
provider_id="",
|
||||
extras={"provider_id": "provider-1"},
|
||||
provider_id="provider-1",
|
||||
)
|
||||
|
||||
with patch(
|
||||
@ -761,7 +760,6 @@ class TestWorkflowResponseConverterServiceApiTruncation:
|
||||
response = converter.workflow_node_start_to_stream_response(event=event, task_id="task-1")
|
||||
|
||||
assert response is not None
|
||||
assert response.data.extras["provider_id"] == "provider-1"
|
||||
assert response.data.extras["icon"] == "https://example.com/icon.png"
|
||||
get_trigger_plugin_icon.assert_called_once_with("test_tenant", "provider-1")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user