diff --git a/biome.json b/biome.json index 0bdb72c..199ceab 100644 --- a/biome.json +++ b/biome.json @@ -7,7 +7,7 @@ }, "files": { "ignoreUnknown": false, - "includes": ["**", "!public"] + "includes": ["**", "!public", "!packages/mcp-server/src/preview"] }, "formatter": { "enabled": true, diff --git a/packages/mcp-server/scripts/check-package.mjs b/packages/mcp-server/scripts/check-package.mjs index df37bf1..133cbdf 100644 --- a/packages/mcp-server/scripts/check-package.mjs +++ b/packages/mcp-server/scripts/check-package.mjs @@ -3,7 +3,13 @@ // Run after `npm run build`. import { execSync } from "node:child_process" -const REQUIRED = ["dist/index.js", "dist/shape-libraries/aws4.md"] +const REQUIRED = [ + "dist/index.js", + "dist/shape-libraries/aws4.md", + "dist/preview/index.html", + "dist/preview/preview.css", + "dist/preview/preview.js", +] const [pack] = JSON.parse( execSync("npm pack --dry-run --json", { encoding: "utf8" }), diff --git a/packages/mcp-server/scripts/copy-assets.mjs b/packages/mcp-server/scripts/copy-assets.mjs index 65664cc..67f8e0e 100644 --- a/packages/mcp-server/scripts/copy-assets.mjs +++ b/packages/mcp-server/scripts/copy-assets.mjs @@ -15,3 +15,8 @@ for (const file of readdirSync(libSrc)) { cpSync(join(libSrc, file), join(libDest, file)) } } + +// Browser preview page (HTML, CSS and script) +cpSync(join(pkg, "src/preview"), join(pkg, "dist/preview"), { + recursive: true, +}) diff --git a/packages/mcp-server/src/http-server.ts b/packages/mcp-server/src/http-server.ts index 38bc811..3d5a00d 100644 --- a/packages/mcp-server/src/http-server.ts +++ b/packages/mcp-server/src/http-server.ts @@ -3,7 +3,10 @@ * Serves draw.io embed with state sync and history UI */ +import { readFileSync } from "node:fs" import http from "node:http" +import { dirname, join } from "node:path" +import { fileURLToPath } from "node:url" const MAX_BODY_BYTES = 10 * 1024 * 1024 // 10 MiB @@ -586,624 +589,34 @@ function handleHistorySvgApi( }) } -function getHtmlPage(sessionId: string): string { - return ` - -
- - -