From 2400ae23b802da255c47883e96f7fffd835ca65d Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Sat, 2 May 2026 11:00:53 -0700 Subject: [PATCH] test(plugins): accept legacy clawhub artifacts --- .../lib/kitchen-sink-plugin/assertions.mjs | 33 +++++++++++++------ 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/scripts/e2e/lib/kitchen-sink-plugin/assertions.mjs b/scripts/e2e/lib/kitchen-sink-plugin/assertions.mjs index 02f9a487852..41f541a76b4 100644 --- a/scripts/e2e/lib/kitchen-sink-plugin/assertions.mjs +++ b/scripts/e2e/lib/kitchen-sink-plugin/assertions.mjs @@ -213,6 +213,27 @@ function assertClawHubExternalInstallContract(installPath) { } } +function assertClawHubArtifactMetadata(record) { + if (record.artifactKind === "legacy-zip") { + if (record.artifactFormat !== "zip") { + throw new Error( + `missing kitchen-sink legacy ZIP artifact metadata: ${JSON.stringify(record)}`, + ); + } + return; + } + + if (record.artifactKind !== "npm-pack" || record.artifactFormat !== "tgz") { + throw new Error(`missing kitchen-sink ClawHub artifact metadata: ${JSON.stringify(record)}`); + } + if (!record.clawpackSha256 || typeof record.clawpackSize !== "number") { + throw new Error(`missing kitchen-sink ClawPack metadata: ${JSON.stringify(record)}`); + } + if (!record.npmIntegrity || !record.npmShasum || !record.npmTarballName) { + throw new Error(`missing kitchen-sink npm artifact metadata: ${JSON.stringify(record)}`); + } +} + function inferInstallSource(spec) { if (spec?.startsWith("npm:")) { return "npm"; @@ -389,15 +410,7 @@ function assertInstalled() { if (!record.version || !record.integrity || !record.resolvedAt) { throw new Error(`missing ClawHub resolution metadata: ${JSON.stringify(record)}`); } - if (!record.clawpackSha256 || typeof record.clawpackSize !== "number") { - throw new Error(`missing kitchen-sink ClawPack metadata: ${JSON.stringify(record)}`); - } - if (record.artifactKind !== "npm-pack" || record.artifactFormat !== "tgz") { - throw new Error(`missing kitchen-sink ClawHub artifact metadata: ${JSON.stringify(record)}`); - } - if (!record.npmIntegrity || !record.npmShasum || !record.npmTarballName) { - throw new Error(`missing kitchen-sink npm artifact metadata: ${JSON.stringify(record)}`); - } + assertClawHubArtifactMetadata(record); } if (typeof record.installPath !== "string" || record.installPath.length === 0) { throw new Error("missing kitchen-sink install path"); @@ -406,7 +419,7 @@ function assertInstalled() { if (!fs.existsSync(installPath)) { throw new Error(`kitchen-sink install path missing: ${record.installPath}`); } - if (source === "clawhub") { + if (source === "clawhub" && record.artifactKind === "npm-pack") { assertClawHubExternalInstallContract(installPath); } fs.writeFileSync(`/tmp/kitchen-sink-${label}-install-path.txt`, installPath, "utf8");