|
@@ -654,6 +654,15 @@ void ExecutionController::receiveExecutionEvent(const httplib::Request& req, htt
|
|
|
channel = "executions." + execution_id + ".failed";
|
|
channel = "executions." + execution_id + ".failed";
|
|
|
} else if (event_type == "execution.cancelled") {
|
|
} else if (event_type == "execution.cancelled") {
|
|
|
channel = "executions." + execution_id + ".cancelled";
|
|
channel = "executions." + execution_id + ".cancelled";
|
|
|
|
|
+ } else if (event_type.starts_with("execution.")) {
|
|
|
|
|
+ // Every other execution-level event, by the same rule as the four
|
|
|
|
|
+ // above rather than falling to the generic branch at the bottom.
|
|
|
|
|
+ //
|
|
|
|
|
+ // That branch does not strip the prefix, so "execution.waiting"
|
|
|
|
|
+ // went out as "executions.<id>.execution.waiting" while the webhook
|
|
|
|
|
+ // path broadcast "executions.<id>.waiting" for the same thing. One
|
|
|
|
|
+ // event, two names, and a subscriber could only match one of them.
|
|
|
|
|
+ channel = "executions." + execution_id + "." + event_type.substr(10);
|
|
|
} else if (event_type.starts_with("loop.node.")) {
|
|
} else if (event_type.starts_with("loop.node.")) {
|
|
|
// Loop node events: loop.node.running, loop.node.completed, loop.node.failed
|
|
// Loop node events: loop.node.running, loop.node.completed, loop.node.failed
|
|
|
std::string node_status = event_type.substr(10); // Remove "loop.node." prefix
|
|
std::string node_status = event_type.substr(10); // Remove "loop.node." prefix
|