code: def start_or_update_helper_process(self, agent_metadata: AgentMetadata):
          
  
          helper_req = agent_metadata.helper_process_request
  
          if helper_req is not None:
              if helper_req.key not in self.helper_process_map:
                  metadata_queue = mp.Queue()
                  if helper_req.python_file_path is not None:
                      process = mp.Process(target=run_helper_process,
                                           args=(helper_req.python_file_path, metadata_queue, self.quit_event,
                                                 helper_req.options))
                      process.daemon = True
                      process.start()
                      agent_metadata.pids.add(process.pid)
  
                      self.helper_process_map[helper_req.key] = metadata_queue
  
                  if helper_req.executable is not None:
                      # TODO: find a nice way to pass the options dict as arguments
                      process = subprocess.Popen([helper_req.executable])
  
                      agent_metadata.pids.add(process.pid)
  
                      self.helper_process_map[helper_req.key] = metadata_queue
  
              metadata_queue = self.helper_process_map[helper_req.key]
              metadata_queue.put(agent_metadata)
docs: Examines the agent metadata to see if the agent needs a helper process. If the process is not running yet,
          create the process. Once the process is running, feed the agent metadata to it.
  
          If a process is created here, the pid will be added to the agent metadata.