refactor(plugins): rename clawhub storepack metadata to clawpack

This commit is contained in:
Vincent Koc
2026-05-01 17:12:56 -07:00
parent a7bdf56870
commit 0aa8022e88
13 changed files with 121 additions and 123 deletions

View File

@@ -6,7 +6,7 @@ Docs: https://docs.openclaw.ai
### Changes
- Plugins/ClawHub: persist StorePack digest metadata on ClawHub plugin install and update records so registry refreshes and download verification can reuse stored artifact facts. Thanks @vincentkoc.
- Plugins/ClawHub: persist ClawPack digest metadata on ClawHub plugin install and update records so registry refreshes and download verification can reuse stored artifact facts. Thanks @vincentkoc.
- Providers/OpenAI: add `extraBody`/`extra_body` passthrough for OpenAI-compatible TTS endpoints, so custom speech servers can receive fields such as `lang` in `/audio/speech` requests. Fixes #39900. Thanks @R3NK0R.
- Dependencies: refresh workspace dependency pins, including TypeBox 1.1.37, AWS SDK 3.1041.0, Microsoft Teams 2.0.9, and Marked 18.0.3. Thanks @mariozechner, @aws, and @microsoft.
- Discord/channels: add reusable message-channel access groups plus Discord channel-audience DM authorization, so allowlists can reference `accessGroup:<name>` across channel auth paths. (#75813)

View File

@@ -84,10 +84,10 @@ function createClawHubInstallResult(params: {
version: params.version,
integrity: "sha256-abc",
resolvedAt: "2026-03-22T00:00:00.000Z",
storepackSha256: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
storepackSpecVersion: 1,
storepackManifestSha256: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
storepackSize: 4096,
clawpackSha256: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
clawpackSpecVersion: 1,
clawpackManifestSha256: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
clawpackSize: 4096,
},
};
}
@@ -471,10 +471,10 @@ describe("plugins cli install", () => {
clawhubPackage: "demo",
clawhubFamily: "code-plugin",
clawhubChannel: "official",
storepackSha256: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
storepackSpecVersion: 1,
storepackManifestSha256: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
storepackSize: 4096,
clawpackSha256: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
clawpackSpecVersion: 1,
clawpackManifestSha256: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
clawpackSize: 4096,
}),
});
expect(writeConfigFile).toHaveBeenCalledWith(enabledCfg);
@@ -644,10 +644,10 @@ describe("plugins cli install", () => {
installPath: cliInstallPath("demo"),
version: "1.2.3",
clawhubPackage: "demo",
storepackSha256: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
storepackSpecVersion: 1,
storepackManifestSha256: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
storepackSize: 4096,
clawpackSha256: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
clawpackSpecVersion: 1,
clawpackManifestSha256: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
clawpackSize: 4096,
}),
});
});

View File

@@ -757,10 +757,10 @@ export async function runPluginInstallCommand(params: {
clawhubPackage: result.clawhub.clawhubPackage,
clawhubFamily: result.clawhub.clawhubFamily,
clawhubChannel: result.clawhub.clawhubChannel,
storepackSha256: result.clawhub.storepackSha256,
storepackSpecVersion: result.clawhub.storepackSpecVersion,
storepackManifestSha256: result.clawhub.storepackManifestSha256,
storepackSize: result.clawhub.storepackSize,
clawpackSha256: result.clawhub.clawpackSha256,
clawpackSpecVersion: result.clawhub.clawpackSpecVersion,
clawpackManifestSha256: result.clawhub.clawpackManifestSha256,
clawpackSize: result.clawhub.clawpackSize,
},
});
return;
@@ -790,10 +790,10 @@ export async function runPluginInstallCommand(params: {
clawhubPackage: clawhubResult.clawhub.clawhubPackage,
clawhubFamily: clawhubResult.clawhub.clawhubFamily,
clawhubChannel: clawhubResult.clawhub.clawhubChannel,
storepackSha256: clawhubResult.clawhub.storepackSha256,
storepackSpecVersion: clawhubResult.clawhub.storepackSpecVersion,
storepackManifestSha256: clawhubResult.clawhub.storepackManifestSha256,
storepackSize: clawhubResult.clawhub.storepackSize,
clawpackSha256: clawhubResult.clawhub.clawpackSha256,
clawpackSpecVersion: clawhubResult.clawhub.clawpackSpecVersion,
clawpackManifestSha256: clawhubResult.clawhub.clawpackManifestSha256,
clawpackSize: clawhubResult.clawhub.clawpackSize,
},
});
return;

View File

@@ -15,10 +15,10 @@ export type InstallRecordBase = {
clawhubPackage?: string;
clawhubFamily?: "code-plugin" | "bundle-plugin";
clawhubChannel?: "official" | "community" | "private";
storepackSha256?: string;
storepackSpecVersion?: number;
storepackManifestSha256?: string;
storepackSize?: number;
clawpackSha256?: string;
clawpackSpecVersion?: number;
clawpackManifestSha256?: string;
clawpackSize?: number;
gitUrl?: string;
gitRef?: string;
gitCommit?: string;

View File

@@ -29,10 +29,10 @@ export const InstallRecordShape = {
clawhubChannel: z
.union([z.literal("official"), z.literal("community"), z.literal("private")])
.optional(),
storepackSha256: z.string().optional(),
storepackSpecVersion: z.number().int().nonnegative().optional(),
storepackManifestSha256: z.string().optional(),
storepackSize: z.number().int().nonnegative().optional(),
clawpackSha256: z.string().optional(),
clawpackSpecVersion: z.number().int().nonnegative().optional(),
clawpackManifestSha256: z.string().optional(),
clawpackSize: z.number().int().nonnegative().optional(),
gitUrl: z.string().optional(),
gitRef: z.string().optional(),
gitCommit: z.string().optional(),

View File

@@ -39,7 +39,7 @@ export type ClawHubPackageEnvironmentSummary = {
supportsRemoteHost?: boolean;
knownUnsupported?: string[];
};
export type ClawHubPackageStorePackSummary = {
export type ClawHubPackageClawPackSummary = {
available: boolean;
specVersion?: number | null;
format?: string | null;
@@ -68,10 +68,10 @@ export type ClawHubPackageListItem = {
capabilityTags?: string[];
executesCode?: boolean;
verificationTier?: string | null;
storepackAvailable?: boolean;
clawpackAvailable?: boolean;
hostTargetKeys?: string[];
environmentFlags?: string[];
storepack?: ClawHubPackageStorePackSummary;
clawpack?: ClawHubPackageClawPackSummary;
};
export type ClawHubPackageDetail = {
package:
@@ -99,7 +99,7 @@ export type ClawHubPackageDetail = {
hasProvenance?: boolean;
scanStatus?: string;
} | null;
storepack?: ClawHubPackageStorePackSummary;
clawpack?: ClawHubPackageClawPackSummary;
})
| null;
owner?: {
@@ -138,7 +138,7 @@ export type ClawHubPackageVersion = {
? C
: never
: never;
storepack?: ClawHubPackageStorePackSummary;
clawpack?: ClawHubPackageClawPackSummary;
} | null;
};

View File

@@ -53,8 +53,8 @@ const { CLAWHUB_INSTALL_ERROR_CODE, formatClawHubSpecifier, installPluginFromCla
await import("./clawhub.js");
const DEMO_ARCHIVE_INTEGRITY = "sha256-qerEjGEpvES2+Tyan0j2xwDRkbcnmh4ZFfKN9vWbsa8=";
const DEMO_STOREPACK_SHA256 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
const DEMO_STOREPACK_MANIFEST_SHA256 =
const DEMO_CLAWPACK_SHA256 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
const DEMO_CLAWPACK_MANIFEST_SHA256 =
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb";
const tempDirs: string[] = [];
@@ -293,7 +293,7 @@ describe("installPluginFromClawHub", () => {
);
});
it("returns StorePack metadata from compatible ClawHub package versions", async () => {
it("returns ClawPack metadata from compatible ClawHub package versions", async () => {
fetchClawHubPackageVersionMock.mockResolvedValueOnce({
version: {
version: "2026.3.22",
@@ -304,14 +304,14 @@ describe("installPluginFromClawHub", () => {
pluginApiRange: ">=2026.3.22",
minGatewayVersion: "2026.3.0",
},
storepack: {
clawpack: {
available: true,
specVersion: 1,
format: "storepack.zip",
sha256: DEMO_STOREPACK_SHA256,
format: "clawpack.zip",
sha256: DEMO_CLAWPACK_SHA256,
size: 4096,
fileCount: 7,
manifestSha256: DEMO_STOREPACK_MANIFEST_SHA256,
manifestSha256: DEMO_CLAWPACK_MANIFEST_SHA256,
builtAt: 1774200000000,
buildVersion: "2026.3.22",
hostTargets: [],
@@ -329,15 +329,15 @@ describe("installPluginFromClawHub", () => {
expect(result).toMatchObject({
ok: true,
clawhub: {
storepackSha256: DEMO_STOREPACK_SHA256,
storepackSpecVersion: 1,
storepackManifestSha256: DEMO_STOREPACK_MANIFEST_SHA256,
storepackSize: 4096,
clawpackSha256: DEMO_CLAWPACK_SHA256,
clawpackSpecVersion: 1,
clawpackManifestSha256: DEMO_CLAWPACK_MANIFEST_SHA256,
clawpackSize: 4096,
},
});
});
it("does not persist package-level StorePack metadata for version records without StorePack facts", async () => {
it("does not persist package-level ClawPack metadata for version records without ClawPack facts", async () => {
parseClawHubPluginSpecMock.mockReturnValueOnce({ name: "demo", version: "2026.3.21" });
fetchClawHubPackageDetailMock.mockResolvedValueOnce({
package: {
@@ -352,14 +352,14 @@ describe("installPluginFromClawHub", () => {
pluginApiRange: ">=2026.3.22",
minGatewayVersion: "2026.3.0",
},
storepack: {
clawpack: {
available: true,
specVersion: 1,
format: "storepack.zip",
sha256: DEMO_STOREPACK_SHA256,
format: "clawpack.zip",
sha256: DEMO_CLAWPACK_SHA256,
size: 4096,
fileCount: 7,
manifestSha256: DEMO_STOREPACK_MANIFEST_SHA256,
manifestSha256: DEMO_CLAWPACK_MANIFEST_SHA256,
builtAt: 1774200000000,
buildVersion: "2026.3.22",
hostTargets: [],
@@ -395,10 +395,10 @@ describe("installPluginFromClawHub", () => {
if (!result.ok) {
throw new Error(result.error);
}
expect(result.clawhub.storepackSha256).toBeUndefined();
expect(result.clawhub.storepackSpecVersion).toBeUndefined();
expect(result.clawhub.storepackManifestSha256).toBeUndefined();
expect(result.clawhub.storepackSize).toBeUndefined();
expect(result.clawhub.clawpackSha256).toBeUndefined();
expect(result.clawhub.clawpackSpecVersion).toBeUndefined();
expect(result.clawhub.clawpackManifestSha256).toBeUndefined();
expect(result.clawhub.clawpackSize).toBeUndefined();
});
it("installs when ClawHub advertises a wildcard plugin API range", async () => {

View File

@@ -25,7 +25,7 @@ import {
type ClawHubPackageCompatibility,
type ClawHubPackageDetail,
type ClawHubPackageFamily,
type ClawHubPackageStorePackSummary,
type ClawHubPackageClawPackSummary,
type ClawHubPackageVersion,
} from "../infra/clawhub.js";
import { formatErrorMessage } from "../infra/errors.js";
@@ -66,10 +66,10 @@ export type ClawHubPluginInstallRecordFields = {
integrity?: string;
resolvedAt?: string;
installedAt?: string;
storepackSha256?: string;
storepackSpecVersion?: number;
storepackManifestSha256?: string;
storepackSize?: number;
clawpackSha256?: string;
clawpackSpecVersion?: number;
clawpackManifestSha256?: string;
clawpackSize?: number;
};
type ClawHubInstallFailure = {
@@ -127,38 +127,36 @@ type ClawHubArchiveEntryLimits = {
addArchiveBytes: (bytes: number) => boolean;
};
function normalizeClawHubStorePackInstallFields(
storepack: ClawHubPackageStorePackSummary | null | undefined,
function normalizeClawHubClawPackInstallFields(
clawpack: ClawHubPackageClawPackSummary | null | undefined,
): Pick<
ClawHubPluginInstallRecordFields,
"storepackSha256" | "storepackSpecVersion" | "storepackManifestSha256" | "storepackSize"
"clawpackSha256" | "clawpackSpecVersion" | "clawpackManifestSha256" | "clawpackSize"
> {
if (storepack?.available !== true) {
if (clawpack?.available !== true) {
return {};
}
const storepackSha256 =
typeof storepack.sha256 === "string" ? normalizeClawHubSha256Hex(storepack.sha256) : null;
const storepackManifestSha256 =
typeof storepack.manifestSha256 === "string"
? normalizeClawHubSha256Hex(storepack.manifestSha256)
const clawpackSha256 =
typeof clawpack.sha256 === "string" ? normalizeClawHubSha256Hex(clawpack.sha256) : null;
const clawpackManifestSha256 =
typeof clawpack.manifestSha256 === "string"
? normalizeClawHubSha256Hex(clawpack.manifestSha256)
: null;
const storepackSpecVersion =
typeof storepack.specVersion === "number" &&
Number.isSafeInteger(storepack.specVersion) &&
storepack.specVersion >= 0
? storepack.specVersion
const clawpackSpecVersion =
typeof clawpack.specVersion === "number" &&
Number.isSafeInteger(clawpack.specVersion) &&
clawpack.specVersion >= 0
? clawpack.specVersion
: undefined;
const storepackSize =
typeof storepack.size === "number" &&
Number.isSafeInteger(storepack.size) &&
storepack.size >= 0
? storepack.size
const clawpackSize =
typeof clawpack.size === "number" && Number.isSafeInteger(clawpack.size) && clawpack.size >= 0
? clawpack.size
: undefined;
return {
...(storepackSha256 ? { storepackSha256 } : {}),
...(storepackSpecVersion !== undefined ? { storepackSpecVersion } : {}),
...(storepackManifestSha256 ? { storepackManifestSha256 } : {}),
...(storepackSize !== undefined ? { storepackSize } : {}),
...(clawpackSha256 ? { clawpackSha256 } : {}),
...(clawpackSpecVersion !== undefined ? { clawpackSpecVersion } : {}),
...(clawpackManifestSha256 ? { clawpackManifestSha256 } : {}),
...(clawpackSize !== undefined ? { clawpackSize } : {}),
};
}
@@ -641,7 +639,7 @@ async function resolveCompatiblePackageVersion(params: {
version: string;
compatibility?: ClawHubPackageCompatibility | null;
verification: ClawHubArchiveVerification | null;
storepack?: ClawHubPackageStorePackSummary | null;
clawpack?: ClawHubPackageClawPackSummary | null;
}
| ClawHubInstallFailure
> {
@@ -676,7 +674,7 @@ async function resolveCompatiblePackageVersion(params: {
compatibility:
versionDetail.version?.compatibility ?? params.detail.package?.compatibility ?? null,
verification: null,
storepack: versionDetail.version?.storepack ?? null,
clawpack: versionDetail.version?.clawpack ?? null,
};
}
const verificationState = resolveClawHubArchiveVerification(
@@ -693,7 +691,7 @@ async function resolveCompatiblePackageVersion(params: {
compatibility:
versionDetail.version?.compatibility ?? params.detail.package?.compatibility ?? null,
verification: verificationState.verification,
storepack: versionDetail.version?.storepack ?? null,
clawpack: versionDetail.version?.clawpack ?? null,
};
}
@@ -922,7 +920,7 @@ export async function installPluginFromClawHub(
}
const pkg = detail.package!;
const storepackFields = normalizeClawHubStorePackInstallFields(versionState.storepack);
const clawpackFields = normalizeClawHubClawPackInstallFields(versionState.clawpack);
const clawhubFamily =
pkg.family === "code-plugin" || pkg.family === "bundle-plugin" ? pkg.family : null;
if (!clawhubFamily) {
@@ -948,7 +946,7 @@ export async function installPluginFromClawHub(
// server-attested sha256hash from ClawHub version metadata.
integrity: archive.integrity,
resolvedAt: new Date().toISOString(),
...storepackFields,
...clawpackFields,
},
};
} finally {

View File

@@ -52,10 +52,10 @@ function normalizeInstallRecord(
setInstallStringField(normalized, "clawhubPackage", record.clawhubPackage);
setInstallStringField(normalized, "clawhubFamily", record.clawhubFamily);
setInstallStringField(normalized, "clawhubChannel", record.clawhubChannel);
setInstallStringField(normalized, "storepackSha256", record.storepackSha256);
setInstallNumberField(normalized, "storepackSpecVersion", record.storepackSpecVersion);
setInstallStringField(normalized, "storepackManifestSha256", record.storepackManifestSha256);
setInstallNumberField(normalized, "storepackSize", record.storepackSize);
setInstallStringField(normalized, "clawpackSha256", record.clawpackSha256);
setInstallNumberField(normalized, "clawpackSpecVersion", record.clawpackSpecVersion);
setInstallStringField(normalized, "clawpackManifestSha256", record.clawpackManifestSha256);
setInstallNumberField(normalized, "clawpackSize", record.clawpackSize);
setInstallStringField(normalized, "gitUrl", record.gitUrl);
setInstallStringField(normalized, "gitRef", record.gitRef);
setInstallStringField(normalized, "gitCommit", record.gitCommit);

View File

@@ -192,37 +192,37 @@ describe("plugin index install records store", () => {
});
});
it("preserves ClawHub StorePack install metadata in persisted records", async () => {
it("preserves ClawHub ClawPack install metadata in persisted records", async () => {
const stateDir = makeStateDir();
const candidate = createPluginCandidate(stateDir, "storepack-demo");
const candidate = createPluginCandidate(stateDir, "clawpack-demo");
await writePersistedInstalledPluginIndexInstallRecords(
{
"storepack-demo": {
"clawpack-demo": {
source: "clawhub",
spec: "clawhub:storepack-demo",
installPath: path.join(stateDir, "plugins", "storepack-demo"),
spec: "clawhub:clawpack-demo",
installPath: path.join(stateDir, "plugins", "clawpack-demo"),
clawhubUrl: "https://clawhub.ai",
clawhubPackage: "storepack-demo",
clawhubPackage: "clawpack-demo",
clawhubFamily: "code-plugin",
clawhubChannel: "official",
storepackSha256: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
storepackSpecVersion: 1,
storepackManifestSha256:
clawpackSha256: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
clawpackSpecVersion: 1,
clawpackManifestSha256:
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
storepackSize: 4096,
clawpackSize: 4096,
},
},
{ stateDir, candidates: [candidate] },
);
await expect(loadInstalledPluginIndexInstallRecords({ stateDir })).resolves.toMatchObject({
"storepack-demo": {
"clawpack-demo": {
source: "clawhub",
spec: "clawhub:storepack-demo",
storepackSha256: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
storepackSpecVersion: 1,
storepackManifestSha256: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
storepackSize: 4096,
spec: "clawhub:clawpack-demo",
clawpackSha256: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
clawpackSpecVersion: 1,
clawpackManifestSha256: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
clawpackSize: 4096,
},
});
});

View File

@@ -48,10 +48,10 @@ export type InstalledPluginInstallRecordInfo = Pick<
| "clawhubPackage"
| "clawhubFamily"
| "clawhubChannel"
| "storepackSha256"
| "storepackSpecVersion"
| "storepackManifestSha256"
| "storepackSize"
| "clawpackSha256"
| "clawpackSpecVersion"
| "clawpackManifestSha256"
| "clawpackSize"
| "gitUrl"
| "gitRef"
| "gitCommit"

View File

@@ -1003,10 +1003,10 @@ describe("updateNpmInstalledPlugins", () => {
clawhubChannel: "official",
integrity: "sha256-next",
resolvedAt: "2026-03-22T00:00:00.000Z",
storepackSha256: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
storepackSpecVersion: 1,
storepackManifestSha256: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
storepackSize: 4096,
clawpackSha256: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
clawpackSpecVersion: 1,
clawpackManifestSha256: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
clawpackSize: 4096,
},
});
@@ -1041,10 +1041,10 @@ describe("updateNpmInstalledPlugins", () => {
clawhubFamily: "code-plugin",
clawhubChannel: "official",
integrity: "sha256-next",
storepackSha256: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
storepackSpecVersion: 1,
storepackManifestSha256: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
storepackSize: 4096,
clawpackSha256: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
clawpackSpecVersion: 1,
clawpackManifestSha256: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
clawpackSize: 4096,
});
});

View File

@@ -938,10 +938,10 @@ export async function updateNpmInstalledPlugins(params: {
clawhubPackage: clawhubResult.clawhub.clawhubPackage,
clawhubFamily: clawhubResult.clawhub.clawhubFamily,
clawhubChannel: clawhubResult.clawhub.clawhubChannel,
storepackSha256: clawhubResult.clawhub.storepackSha256,
storepackSpecVersion: clawhubResult.clawhub.storepackSpecVersion,
storepackManifestSha256: clawhubResult.clawhub.storepackManifestSha256,
storepackSize: clawhubResult.clawhub.storepackSize,
clawpackSha256: clawhubResult.clawhub.clawpackSha256,
clawpackSpecVersion: clawhubResult.clawhub.clawpackSpecVersion,
clawpackManifestSha256: clawhubResult.clawhub.clawpackManifestSha256,
clawpackSize: clawhubResult.clawhub.clawpackSize,
});
} else if (record.source === "git") {
const gitResult = result as Extract<