






















@@ -249,6 +249,21 @@ function readArtifactResolverVersion(
249249return { version: requestedVersion };
250250}
251251252+function isClawHubPackageFamily(
253+value: unknown,
254+): value is NonNullable<ClawHubPackageVersion["package"]>["family"] {
255+return value === "code-plugin" || value === "bundle-plugin" || value === "skill";
256+}
257+258+function normalizeArtifactResolverFiles(
259+files: ClawHubArtifactResolverVersion["files"],
260+): NonNullable<ClawHubPackageVersion["version"]>["files"] {
261+if (!Array.isArray(files)) {
262+return undefined;
263+}
264+return files as NonNullable<ClawHubPackageVersion["version"]>["files"];
265+}
266+252267function resolveTopLevelNpmPackArtifact(
253268artifact: ClawHubResolvedArtifact | null | undefined,
254269): ClawHubPackageArtifactSummary | null {
@@ -784,34 +799,35 @@ async function resolveCompatiblePackageVersion(params: {
784799artifactVersion.clawpack ?? resolveTopLevelNpmPackArtifact(artifactResponse.artifact),
785800};
786801}
802+const artifactFamily = artifactResponse.package?.family;
803+const resolvedFamily: NonNullable<ClawHubPackageVersion["package"]>["family"] =
804+isClawHubPackageFamily(artifactFamily)
805+ ? artifactFamily
806+ : (params.detail.package?.family ?? "code-plugin");
807+const versionRecord: NonNullable<ClawHubPackageVersion["version"]> = {
808+version: resolvedVersion,
809+createdAt: typeof artifactVersion.createdAt === "number" ? artifactVersion.createdAt : 0,
810+changelog: typeof artifactVersion.changelog === "string" ? artifactVersion.changelog : "",
811+distTags: artifactVersion.distTags,
812+files: normalizeArtifactResolverFiles(artifactVersion.files),
813+sha256hash: artifactVersion.sha256hash,
814+compatibility: artifactVersion.compatibility,
815+artifact: artifactVersion.artifact,
816+clawpack: artifactVersion.clawpack ?? undefined,
817+};
787818const versionDetail: ClawHubPackageVersion = {
788819package: artifactResponse.package
789820 ? {
790821name: artifactResponse.package.name ?? params.detail.package?.name ?? "",
791822displayName:
792823artifactResponse.package.displayName ?? params.detail.package?.displayName ?? "",
793-family:
794-artifactResponse.package.family === "code-plugin" ||
795-artifactResponse.package.family === "bundle-plugin" ||
796-artifactResponse.package.family === "skill"
797- ? artifactResponse.package.family
798- : (params.detail.package?.family ?? "code-plugin"),
824+family: resolvedFamily,
799825}
800826 : null,
801-version: {
802-version: resolvedVersion,
803-createdAt: typeof artifactVersion.createdAt === "number" ? artifactVersion.createdAt : 0,
804-changelog: typeof artifactVersion.changelog === "string" ? artifactVersion.changelog : "",
805-distTags: artifactVersion.distTags,
806-files: artifactVersion.files,
807-sha256hash: artifactVersion.sha256hash,
808-compatibility: artifactVersion.compatibility,
809-artifact: artifactVersion.artifact,
810-clawpack: artifactVersion.clawpack ?? undefined,
811-},
827+version: versionRecord,
812828};
813829const clawpack =
814-resolveClawHubNpmPackArtifact(versionDetail.version) ??
830+resolveClawHubNpmPackArtifact(versionRecord) ??
815831resolveTopLevelNpmPackArtifact(artifactResponse.artifact);
816832const verificationState = resolveClawHubArchiveVerification(
817833versionDetail,
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。