


















@@ -287,6 +287,78 @@ export function describeChannelPluginCatalogEntriesContract() {
287287};
288288},
289289},
290+{
291+name: "accepts external manifest entries with ClawHub-only install metadata",
292+setup: () => {
293+const dir = fs.mkdtempSync(
294+path.join(resolvePreferredOpenClawTmpDir(), "openclaw-catalog-clawhub-"),
295+);
296+const catalogPath = path.join(dir, "catalog.json");
297+fs.writeFileSync(
298+catalogPath,
299+JSON.stringify({
300+$schema: "./manifest.schema.json",
301+schemaVersion: 1,
302+description:
303+"Extension manifest. Declares plugin packages that OpenClaw can discover during onboarding and install on demand via `openclaw plugins install`.",
304+entries: [
305+{
306+source: "external",
307+kind: "channel",
308+openclaw: {
309+channel: {
310+id: "clawhub-chat",
311+label: "ClawHub Chat",
312+selectionLabel: "ClawHub Chat",
313+detailLabel: "ClawHub",
314+docsPath: "/channels/clawhub-chat",
315+docsLabel: "clawhub chat",
316+blurb: "ClawHub-backed chat channel.",
317+aliases: ["chchat"],
318+order: 47,
319+},
320+install: {
321+clawhubSpec: "clawhub:openclaw/clawhub-chat@2026.5.2",
322+defaultChoice: "clawhub",
323+minHostVersion: ">=2026.5.1",
324+},
325+},
326+},
327+],
328+}),
329+);
330+return {
331+channelId: "clawhub-chat",
332+catalogPaths: [catalogPath],
333+expected: {
334+id: "clawhub-chat",
335+meta: {
336+label: "ClawHub Chat",
337+selectionLabel: "ClawHub Chat",
338+detailLabel: "ClawHub",
339+docsPath: "/channels/clawhub-chat",
340+docsLabel: "clawhub chat",
341+blurb: "ClawHub-backed chat channel.",
342+},
343+install: {
344+clawhubSpec: "clawhub:openclaw/clawhub-chat@2026.5.2",
345+defaultChoice: "clawhub",
346+minHostVersion: ">=2026.5.1",
347+},
348+installSource: {
349+defaultChoice: "clawhub",
350+clawhub: {
351+spec: "clawhub:openclaw/clawhub-chat@2026.5.2",
352+packageName: "openclaw/clawhub-chat",
353+version: "2026.5.2",
354+exactVersion: true,
355+},
356+warnings: [],
357+},
358+},
359+};
360+},
361+},
290362{
291363name: "accepts rich external manifest entries for yuanbao with pinned npm metadata",
292364setup: () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。