let profileConfig: BrowserProfileConfig; if (normalizedUserDataDir && driver !== "existing-session") { thrownew BrowserValidationError( "driver=existing-session is required when userDataDir is provided",
);
} if (normalizedUserDataDir && !fs.existsSync(normalizedUserDataDir)) { thrownew BrowserValidationError(
`browser user data directory not found: ${normalizedUserDataDir}`,
);
}
if (rawCdpUrl) { if (driver === "existing-session") { thrownew BrowserValidationError( "driver=existing-session does not accept cdpUrl; it attaches via the Chrome MCP auto-connect flow",
);
}
let parsed: ReturnType<typeof parseHttpUrl>; try {
parsed = parseHttpUrl(rawCdpUrl, "browser.profiles.cdpUrl");
await assertCdpEndpointAllowed(parsed.normalized, state.resolved.ssrfPolicy);
} catch (err) { thrownew BrowserValidationError(formatErrorMessage(err));
}
profileConfig = {
cdpUrl: parsed.normalized,
...(driver ? { driver } : {}),
color: profileColor,
};
} else { if (driver === "existing-session") { // existing-session uses Chrome MCP auto-connect; no CDP port needed
profileConfig = {
driver,
attachOnly: true,
...(normalizedUserDataDir ? { userDataDir: normalizedUserDataDir } : {}),
color: profileColor,
};
} else { const usedPorts = getUsedPorts(resolvedProfiles); const range = cdpPortRange(state.resolved); const cdpPort = allocateCdpPort(usedPorts, range); if (cdpPort === null) { thrownew BrowserResourceExhaustedError("no available CDP ports in range");
}
profileConfig = {
cdpPort,
...(driver ? { driver } : {}),
color: profileColor,
};
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.