feat: emit json schema in npm package

This commit is contained in:
Alex Yang 2025-07-03 15:45:39 -07:00 • committed by GitHub
commit 9849e046a9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 30 additions and 7 deletions

View file

@ -1,4 +1,5 @@
{
"$schema": "../../dist/dxt-manifest.schema.json",
"dxt_version": "0.1",
"name": "chrome-applescript",
"display_name": "Control Chrome with AppleScript",

View file

@ -1,4 +1,5 @@
{
"$schema": "../../dist/dxt-manifest.schema.json",
"dxt_version": "0.1",
"name": "file-manager-python",
"display_name": "Python File Manager MCP",

View file

@ -1,4 +1,5 @@
{
"$schema": "../../dist/dxt-manifest.schema.json",
"dxt_version": "0.1",
"name": "hello-world-node",
"display_name": "Hello World MCP Server (Reference Extension)",

View file

@ -35,7 +35,9 @@
"dist"
],
"scripts": {
"build": "tsc",
"build": "yarn run build:code && yarn run build:schema",
"build:code": "tsc",
"build:schema": "node --experimental-strip-types ./scripts/build-dxt-schema.js",
"dev": "tsc --watch",
"test": "jest",
"test:watch": "jest --watch",
@ -68,7 +70,7 @@
"commander": "^13.1.0",
"fflate": "^0.8.2",
"node-forge": "^1.3.1",
"zod": "^3.24.4"
"zod": "^3.25.67"
},
"resolutions": {
"@babel/helpers": "7.27.1",

View file

@ -0,0 +1,14 @@
import { DxtManifestSchema } from "../src/schemas.ts";
import * as z from "zod/v4";
import fs from "node:fs/promises";
import path from "node:path";
const schema = z.toJSONSchema(DxtManifestSchema);
await fs.mkdir(path.join(import.meta.dirname, "../dist"), { recursive: true });
await fs.writeFile(
path.join(import.meta.dirname, "../dist", "dxt-manifest.schema.json"),
JSON.stringify(schema, null, 2),
{
encoding: "utf8",
},
);

View file

@ -1,9 +1,9 @@
import { z } from "zod";
import * as z from "zod/v4";
export const McpServerConfigSchema = z.object({
command: z.string(),
args: z.array(z.string()).optional(),
env: z.record(z.string()).optional(),
env: z.record(z.string(), z.string()).optional(),
});
export const DxtManifestAuthorSchema = z.object({
@ -72,10 +72,12 @@ export const DxtUserConfigurationOptionSchema = z.object({
});
export const DxtUserConfigValuesSchema = z.record(
z.string(),
z.union([z.string(), z.number(), z.boolean(), z.array(z.string())]),
);
export const DxtManifestSchema = z.object({
$schema: z.string().optional(),
dxt_version: z.string(),
name: z.string(),
display_name: z.string().optional(),
@ -97,5 +99,7 @@ export const DxtManifestSchema = z.object({
keywords: z.array(z.string()).optional(),
license: z.string().optional(),
compatibility: DxtManifestCompatibilitySchema.optional(),
user_config: z.record(DxtUserConfigurationOptionSchema).optional(),
user_config: z
.record(z.string(), DxtUserConfigurationOptionSchema)
.optional(),
});

View file

@ -1,4 +1,4 @@
import type { z } from "zod";
import type * as z from "zod/v4";
import type {
DxtManifestAuthorSchema,

View file

@ -4277,7 +4277,7 @@ yoctocolors-cjs@^2.1.2:
resolved "https://registry.yarnpkg.com/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz#f4b905a840a37506813a7acaa28febe97767a242"
integrity sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==
zod@^3.24.4:
zod@^3.25.67:
version "3.25.67"
resolved "https://registry.yarnpkg.com/zod/-/zod-3.25.67.tgz#62987e4078e2ab0f63b491ef0c4f33df24236da8"
integrity sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==