code: def run(self) -> None:
      self.react_ui.run()
      self.script_orchestrator.run()
  
      if (
          self.script_orchestrator.script_runner
          and self.script_orchestrator.script_runner.logger_metadatas
      ):
          if not getattr(self, "logger_component", None):
              # TODO: Hack with hasattr and setattr until
              #   https://linear.app/gridai/issue/LAI2-8970/work-getting-set-to-none-in-state-update-from-appstate
              #   is resolved
              logger_component = self._choose_logger_component()
              if logger_component is not None:
                  setattr(self, "logger_component", logger_component)
          else:
              self.logger_component.run()
  
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 Main obj's underlying member method code with example usage: obj.run() without return types