





























@@ -213,6 +213,27 @@ function assertClawHubExternalInstallContract(installPath) {
213213}
214214}
215215216+function assertClawHubArtifactMetadata(record) {
217+if (record.artifactKind === "legacy-zip") {
218+if (record.artifactFormat !== "zip") {
219+throw new Error(
220+`missing kitchen-sink legacy ZIP artifact metadata: ${JSON.stringify(record)}`,
221+);
222+}
223+return;
224+}
225+226+if (record.artifactKind !== "npm-pack" || record.artifactFormat !== "tgz") {
227+throw new Error(`missing kitchen-sink ClawHub artifact metadata: ${JSON.stringify(record)}`);
228+}
229+if (!record.clawpackSha256 || typeof record.clawpackSize !== "number") {
230+throw new Error(`missing kitchen-sink ClawPack metadata: ${JSON.stringify(record)}`);
231+}
232+if (!record.npmIntegrity || !record.npmShasum || !record.npmTarballName) {
233+throw new Error(`missing kitchen-sink npm artifact metadata: ${JSON.stringify(record)}`);
234+}
235+}
236+216237function inferInstallSource(spec) {
217238if (spec?.startsWith("npm:")) {
218239return "npm";
@@ -389,15 +410,7 @@ function assertInstalled() {
389410if (!record.version || !record.integrity || !record.resolvedAt) {
390411throw new Error(`missing ClawHub resolution metadata: ${JSON.stringify(record)}`);
391412}
392-if (!record.clawpackSha256 || typeof record.clawpackSize !== "number") {
393-throw new Error(`missing kitchen-sink ClawPack metadata: ${JSON.stringify(record)}`);
394-}
395-if (record.artifactKind !== "npm-pack" || record.artifactFormat !== "tgz") {
396-throw new Error(`missing kitchen-sink ClawHub artifact metadata: ${JSON.stringify(record)}`);
397-}
398-if (!record.npmIntegrity || !record.npmShasum || !record.npmTarballName) {
399-throw new Error(`missing kitchen-sink npm artifact metadata: ${JSON.stringify(record)}`);
400-}
413+assertClawHubArtifactMetadata(record);
401414}
402415if (typeof record.installPath !== "string" || record.installPath.length === 0) {
403416throw new Error("missing kitchen-sink install path");
@@ -406,7 +419,7 @@ function assertInstalled() {
406419if (!fs.existsSync(installPath)) {
407420throw new Error(`kitchen-sink install path missing: ${record.installPath}`);
408421}
409-if (source === "clawhub") {
422+if (source === "clawhub" && record.artifactKind === "npm-pack") {
410423assertClawHubExternalInstallContract(installPath);
411424}
412425fs.writeFileSync(`/tmp/kitchen-sink-${label}-install-path.txt`, installPath, "utf8");
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。