pub trait ExecutionObserver: Send + Sync {
// Required methods
fn on_node_start(&self, event: &NodeEvent<'_>);
fn on_node_end(&self, event: &NodeEvent<'_>, output: &Value);
fn on_node_error(&self, event: &NodeEvent<'_>, error: &dyn Error);
}