feat: start onboarding for fresh CLI installs

This commit is contained in:
clawsweeper
2026-05-22 21:47:38 +00:00
parent 1a518d4146
commit f4b2572f2e

View File

@@ -20,6 +20,9 @@ const livePackageBackedLanes = new Set([
"openai-chat-tools",
"openwebui",
]);
// These lanes intentionally build a focused source-checkout image instead of
// consuming the shared package E2E images.
const sourceCheckoutImageLanes = new Set(["plugin-binding-command-escape"]);
function readText(relativePath) {
return fs.readFileSync(path.join(ROOT_DIR, relativePath), "utf8");
@@ -67,6 +70,7 @@ function validateUniqueLanes(label, lanes) {
function validateLane(label, lane) {
const resources = laneResources(lane);
const sourceCheckoutImageLane = sourceCheckoutImageLanes.has(lane.name);
if (!lane.name || typeof lane.name !== "string") {
errors.push(`${label}: Docker E2E lane is missing a string name`);
}
@@ -82,9 +86,14 @@ function validateLane(label, lane) {
if (lane.live && lane.e2eImageKind && !livePackageBackedLanes.has(lane.name)) {
errors.push(`${label}: live Docker E2E lane '${lane.name}' must not require a package image`);
}
if (!lane.live && !lane.e2eImageKind) {
if (!lane.live && !lane.e2eImageKind && !sourceCheckoutImageLane) {
errors.push(`${label}: package Docker E2E lane '${lane.name}' must declare an e2e image kind`);
}
if (sourceCheckoutImageLane && !/\bOPENCLAW_SKIP_DOCKER_BUILD=0\b/u.test(lane.command)) {
errors.push(
`${label}: source-checkout Docker E2E lane '${lane.name}' must force a local image build`,
);
}
if (laneWeight(lane) < 1) {
errors.push(`${label}: Docker E2E lane '${lane.name}' must have positive weight`);
}