code: def run(self) -> None:
      if not self.triggered:
          return
  
      if self.script_runner is None:
          self.script_runner = ScriptRunner(
              root_path=str(Path(__file__).parent / "source"),
              script_path=str(
                  Path(__file__).parent / "source" / self.script_path
              ),
              script_args=self.script_args,
              env=self._prepare_environment(),
              parallel=True,
              cloud_compute=CloudCompute(**self.cloud_compute_args),
              raise_exception=False,
          )
          self.script_runner.run()
  
      self.running = (
          self.script_runner is not None
          and self.script_runner.has_started
      )
      self.succeeded = (
          self.script_runner is not None
          and self.script_runner.has_succeeded
      )
      self.failed = (
          self.script_runner is not None
          and self.script_runner.has_failed
      )
  
      if self.succeeded or self.failed:
          self.triggered = False
  
imports: import os
  from typing import Dict, List, Optional, Union
  from core.components import TensorBoard, WeightsAndBiases
  from core.components.script_runner import ScriptRunner
  from lightning.app import LightningApp, LightningFlow
  from lightning.app.frontend import StaticWebFrontend
  from lightning.app.storage.path import Path
  from lightning.app.utilities.packaging.cloud_compute import CloudCompute
label_desc: Use image node_id 2 for calling the ScriptOrchestrator obj's underlying member method code with example usage: obj.run() without return types