start method

Last updated: 2026-03-05T10:53:28.864Z

Metrics

LOC: 40 Complexity: 6 Params: 2

Signature

start(inputFlow, configOverride)

Source Code

    start(inputFlow, configOverride) {
      if (status === "running" || status === "preparing") {
        log.warn("Replay already in progress");
        return;
      }

      flow = inputFlow;
      stepIndex = 0;
      stepResults = [];
      startedAt = Date.now();

      // Merge config
      config = { ...DEFAULT_REPLAY_CONFIG, ...inputFlow.replayConfig };
      if (configOverride) {
        Object.assign(config, configOverride);
        if (configOverride.speed && !configOverride.typingDelay) {
          const preset = SPEED_PRESETS[configOverride.speed];
          Object.assign(config, preset);
        }
      }

      rng = createSeededRng(inputFlow.metadata.seed);
      abortController = new AbortController();

      setStatus("preparing");
      log.info(
        `Starting replay: "${inputFlow.metadata.name}" (${inputFlow.steps.length} steps)`,
      );

      // Run async loop (don't await — the orchestrator is non-blocking)
      setStatus("running");
      runLoop(abortController.signal).catch((err) => {
        log.error("Replay loop error:", err);
        setStatus("failed");
        chrome.tabs
          .sendMessage(tabId, { type: "DEMO_CURSOR_DESTROY" })
          .catch(() => {});
        callbacks.onComplete?.(buildResult());
      });
    },

Dependencies (Outgoing)

graph LR start["start"] createSeededRng["createSeededRng"] setStatus["setStatus"] runLoop["runLoop"] buildResult["buildResult"] start -->|calls| createSeededRng start -->|calls| setStatus start -->|calls| runLoop start -->|calls| buildResult style start fill:#dbeafe,stroke:#2563eb,stroke-width:2px click start "56469c2f243a2128.html" click createSeededRng "71a63e2b315abc34.html" click setStatus "811d4f691e446460.html" click runLoop "c94a70bb97b4ccad.html" click buildResult "647e3b02375c2aa7.html"
TargetType
createSeededRng calls
setStatus calls
runLoop calls
buildResult calls

No incoming dependencies.