emit engine events when user attempts to terminate pipeline run. one weirdness here is if you're using the default run launcher, that attempts to terminate via cli api run launcher and then falls back to grpc run launcher which creates confusing events
added some checks to bk.
can_terminate should return False since the terminate function is:
def terminate(self, run_id): check.str_param(run_id, "run_id") check.not_implemented("Termination not yet implemented")