This commit is contained in:
Joan Xie 2025-11-01 15:07:43 -07:00
commit 98fc900d5a
No known key found for this signature in database
3 changed files with 30 additions and 11 deletions

View file

@ -5,11 +5,24 @@ import * as v0_2 from "./0.2.js";
import * as v0_3 from "./0.3.js";
/**
* Union schema that accepts any supported manifest version (0.1, 0.2, 0.3).
* Use this when you need to validate manifests of any version.
* Union schema that accepts any supported manifest version.
* Uses preprocessing to normalize dxt_version to manifest_version,
* then efficiently discriminates based on the now-required manifest_version field.
*/
export const McpbManifestSchema = z.union([
v0_1.McpbManifestSchema,
v0_2.McpbManifestSchema,
v0_3.McpbManifestSchema,
]);
export const McpbManifestSchema = z.preprocess(
(val) => {
// Normalize: if it has dxt_version, ensure manifest_version is also set
if (val && typeof val === "object" && "dxt_version" in val) {
const obj = val as Record<string, unknown>;
if (!obj.manifest_version && obj.dxt_version) {
return { ...obj, manifest_version: obj.dxt_version };
}
}
return val;
},
z.union([
v0_1.McpbManifestSchema,
v0_2.McpbManifestSchema,
v0_3.McpbManifestSchema,
]),
);

View file

@ -1,8 +1,8 @@
export * as v0_1 from "./0.1.js";
export * as v0_2 from "./0.2.js";
export * as v0_3 from "./0.3.js";
export * as any from "./any.js";
export * as latest from "./latest.js";
export * as vAny from "./any.js";
export * as vLatest from "./latest.js";
export {
MANIFEST_VERSION as LATEST_MANIFEST_VERSION,
McpbManifestSchema,

View file

@ -1,6 +1,6 @@
import type * as z from "zod";
import type { McpbManifestSchema as McpbManifestSchemaAny } from "./schemas/any.js";
import type { McpbManifestSchema as McpbManifestSchema_vAny } from "./schemas/any.js";
import type {
McpbManifestAuthorSchema,
McpbManifestCompatibilitySchema,
@ -51,7 +51,7 @@ export type McpbUserConfigValues = z.infer<typeof McpbUserConfigValuesSchema>;
* McpbManifest type that accepts any supported manifest version
* This is the default manifest type that should be used for maximum compatibility.
*/
export type McpbManifest = z.infer<typeof McpbManifestSchemaAny>;
export type McpbManifestAny = z.infer<typeof McpbManifestSchema_vAny>;
/**
* McpbManifest type for the latest manifest version only
@ -59,6 +59,12 @@ export type McpbManifest = z.infer<typeof McpbManifestSchemaAny>;
*/
export type McpbManifestLatest = z.infer<typeof McpbManifestSchema>;
/**
* @deprecated Use McpbManifestAny instead
* Default manifest type that accepts any supported version
*/
export type McpbManifest = McpbManifestAny;
/**
* Information about a MCPB package signature
*/