fix(plugins): persist clawhub artifact metadata

This commit is contained in:
Vincent Koc
2026-05-02 10:08:05 -07:00
parent aafdc5945a
commit 7fae11b3b1
25 changed files with 268 additions and 93 deletions

View File

@@ -130,6 +130,11 @@ describe("plugins cli list", () => {
version: "2026.5.1",
clawhubPackage: "openclaw-mem0",
clawhubChannel: "official",
artifactKind: "npm-pack",
artifactFormat: "tgz",
npmIntegrity: "sha512-clawpack",
npmShasum: "1".repeat(40),
npmTarballName: "openclaw-mem0-2026.5.1.tgz",
clawpackSha256: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
clawpackSpecVersion: 1,
clawpackManifestSha256: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
@@ -175,6 +180,8 @@ describe("plugins cli list", () => {
expect(runtimeLogs.join("\n")).toContain("Policy");
expect(runtimeLogs.join("\n")).toContain("allowConversationAccess: true");
expect(runtimeLogs.join("\n")).toContain("ClawHub package: openclaw-mem0");
expect(runtimeLogs.join("\n")).toContain("Artifact kind: npm-pack");
expect(runtimeLogs.join("\n")).toContain("Npm integrity: sha512-clawpack");
expect(runtimeLogs.join("\n")).toContain(
"ClawPack sha256: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
);

View File

@@ -77,6 +77,21 @@ function formatInstallLines(install: PluginInstallRecord | undefined): string[]
if (install.clawhubChannel) {
lines.push(`ClawHub channel: ${install.clawhubChannel}`);
}
if (install.artifactKind) {
lines.push(`Artifact kind: ${install.artifactKind}`);
}
if (install.artifactFormat) {
lines.push(`Artifact format: ${install.artifactFormat}`);
}
if (install.npmIntegrity) {
lines.push(`Npm integrity: ${install.npmIntegrity}`);
}
if (install.npmShasum) {
lines.push(`Npm shasum: ${install.npmShasum}`);
}
if (install.npmTarballName) {
lines.push(`Npm tarball: ${install.npmTarballName}`);
}
if (install.clawpackSha256) {
lines.push(`ClawPack sha256: ${install.clawpackSha256}`);
}

View File

@@ -7,6 +7,7 @@ import { resolveArchiveKind } from "../infra/archive.js";
import { parseClawHubPluginSpec } from "../infra/clawhub.js";
import { formatErrorMessage } from "../infra/errors.js";
import { type BundledPluginSource, findBundledPluginSource } from "../plugins/bundled-sources.js";
import { buildClawHubPluginInstallRecordFields } from "../plugins/clawhub-install-records.js";
import { installPluginFromClawHub } from "../plugins/clawhub.js";
import { installPluginFromGitSpec, parseGitPluginSpec } from "../plugins/git-install.js";
import { resolveDefaultPluginExtensionsDir } from "../plugins/install-paths.js";
@@ -766,20 +767,9 @@ export async function runPluginInstallCommand(params: {
snapshot,
pluginId: result.pluginId,
install: {
source: "clawhub",
...buildClawHubPluginInstallRecordFields(result.clawhub),
spec: raw,
installPath: result.targetDir,
version: result.version,
integrity: result.clawhub.integrity,
resolvedAt: result.clawhub.resolvedAt,
clawhubUrl: result.clawhub.clawhubUrl,
clawhubPackage: result.clawhub.clawhubPackage,
clawhubFamily: result.clawhub.clawhubFamily,
clawhubChannel: result.clawhub.clawhubChannel,
clawpackSha256: result.clawhub.clawpackSha256,
clawpackSpecVersion: result.clawhub.clawpackSpecVersion,
clawpackManifestSha256: result.clawhub.clawpackManifestSha256,
clawpackSize: result.clawhub.clawpackSize,
},
runtime,
});
@@ -800,20 +790,9 @@ export async function runPluginInstallCommand(params: {
snapshot,
pluginId: clawhubResult.pluginId,
install: {
source: "clawhub",
...buildClawHubPluginInstallRecordFields(clawhubResult.clawhub),
spec: preferredClawHubSpec,
installPath: clawhubResult.targetDir,
version: clawhubResult.version,
integrity: clawhubResult.clawhub.integrity,
resolvedAt: clawhubResult.clawhub.resolvedAt,
clawhubUrl: clawhubResult.clawhub.clawhubUrl,
clawhubPackage: clawhubResult.clawhub.clawhubPackage,
clawhubFamily: clawhubResult.clawhub.clawhubFamily,
clawhubChannel: clawhubResult.clawhub.clawhubChannel,
clawpackSha256: clawhubResult.clawhub.clawpackSha256,
clawpackSpecVersion: clawhubResult.clawhub.clawpackSpecVersion,
clawpackManifestSha256: clawhubResult.clawhub.clawpackManifestSha256,
clawpackSize: clawhubResult.clawhub.clawpackSize,
},
runtime,
});