From 0f92db6a5ad55b2cfb46e71ed7da04889a31fc35 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Fri, 7 Aug 2026 10:39:43 +0800 Subject: [PATCH] test(channels): align prerelease fallback catalog spec (#120092) --- .../channel-catalog.contract.test.ts | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/channels/plugins/contracts/channel-catalog.contract.test.ts b/src/channels/plugins/contracts/channel-catalog.contract.test.ts index b34feb5814c5..61a8b6cc068f 100644 --- a/src/channels/plugins/contracts/channel-catalog.contract.test.ts +++ b/src/channels/plugins/contracts/channel-catalog.contract.test.ts @@ -1,4 +1,7 @@ // Channel catalog contract tests cover bundled and registry-backed channel catalog invariants. +import fs from "node:fs"; +import path from "node:path"; +import { isPrereleaseSemverVersion } from "../../../infra/npm-registry-spec.js"; import { describeBundledMetadataOnlyChannelCatalogContract, describeChannelCatalogEntryContract, @@ -20,6 +23,22 @@ const whatsappMeta = { blurb: "works with your own number; recommend a separate phone + eSIM.", }; +const whatsappPackageJson = JSON.parse( + fs.readFileSync(path.join(process.cwd(), "extensions", "whatsapp", "package.json"), "utf8"), +) as { + name?: string; + version?: string; + openclaw?: { install?: { npmSpec?: string } }; +}; +const whatsappNpmSpec = whatsappPackageJson.openclaw?.install?.npmSpec ?? whatsappPackageJson.name; +const whatsappVersion = whatsappPackageJson.version; +if (!whatsappNpmSpec || !whatsappVersion) { + throw new Error("missing package metadata for whatsapp"); +} +const whatsappOfficialFallbackNpmSpec = isPrereleaseSemverVersion(whatsappVersion) + ? `${whatsappNpmSpec}@${whatsappVersion}` + : whatsappNpmSpec; + describeBundledMetadataOnlyChannelCatalogContract({ pluginId: "whatsapp", packageName: "@openclaw/whatsapp", @@ -30,7 +49,7 @@ describeBundledMetadataOnlyChannelCatalogContract({ describeOfficialFallbackChannelCatalogContract({ channelId: "whatsapp", - npmSpec: "@openclaw/whatsapp", + npmSpec: whatsappOfficialFallbackNpmSpec, meta: whatsappMeta, packageName: "@openclaw/whatsapp", pluginId: "whatsapp",