Keep trigger provider handling in the node

This commit is contained in:
-LAN-
2026-03-14 18:46:26 +08:00
parent 2fd4e9e259
commit 26fedca865
2 changed files with 7 additions and 12 deletions

View File

@ -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),
),
)

View File

@ -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")