/** * The target the harness is actually pointed at, resolved with I/O. * * `resolveCdpTarget` in endpoint.ts is deliberately pure, so every caller that * needs the *effective* target has to read the stored choice first. This wraps * that pair so callers outside the CDP layer — profile selection in * particular — can ask "am I driving a browser on this machine?" without * duplicating the precedence rules. */ import { type CdpTarget, resolveCdpTarget } from "./endpoint"; import { readTarget } from "./target-store"; /** The effective target: BU_CDP_HTTP, else /browser-target, else the default. */ export const currentCdpTarget = async (): Promise => resolveCdpTarget(process.env, await readTarget()); /** * True when the harness is driving a browser on another host. * * Profile selection is meaningless in that case: it works by launching the * browser binary with --profile-directory and letting ProcessSingleton hand * the argv to the running browser (see profile/launch.ts), which only reaches * a browser on this machine. */ export const drivingRemoteBrowser = async (): Promise => (await currentCdpTarget()).kind === "remote";