code: func (rt *Runtime) StartREPL(ctx context.Context) {
  
  	if err := rt.Manager.Start(ctx); err != nil {
  		fmt.Fprintln(rt.Params.Output, "error starting plugins:", err)
  		os.Exit(1)
  	}
  
  	defer rt.Manager.Stop(ctx)
  
  	banner := rt.getBanner()
  	repl := repl.New(rt.Store, rt.Params.HistoryPath, rt.Params.Output, rt.Params.OutputFormat, rt.Params.ErrorLimit, banner).WithRuntime(rt.info)
  
  	if rt.Params.Watch {
  		if err := rt.startWatcher(ctx, rt.Params.Paths, onReloadPrinter(rt.Params.Output)); err != nil {
  			fmt.Fprintln(rt.Params.Output, "error opening watch:", err)
  			os.Exit(1)
  		}
  	}
  
  	repl.Loop(ctx)
  }
docs: // StartREPL starts the runtime in REPL mode. This function will block the calling goroutine.