From 0600a7d1a0d6d0cabe564f1ab2114bd0eca6a72b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Pedro=20de=20Faria?= Date: Wed, 14 Oct 2026 01:53:22 -0300 Subject: [PATCH 1/2] fix(docs): use relative POSIX package entry globs Normalize TypeDoc package entry-point separators on native Windows while letting TypeDoc escape special characters in the checkout directory. Keep native filesystem paths unchanged. --- typedoc.config.mjs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/typedoc.config.mjs b/typedoc.config.mjs index 99c74f4e65..4932484be4 100644 --- a/typedoc.config.mjs +++ b/typedoc.config.mjs @@ -1,7 +1,7 @@ import { OptionDefaults } from 'typedoc'; import fg from 'fast-glob'; import { readFileSync } from 'node:fs'; -import { join } from 'node:path'; +import { join, relative, sep } from 'node:path'; // Find all package.json files under packages/ and build package list. // Exclude node_modules and the codemod batch-test's cloned real-world repos, which are not part @@ -22,7 +22,8 @@ const packages = packageJsonPaths.map(p => { // (the schemas mirror the documented types 1:1) so monorepo-wide invalid-link validation can stay ON. const DOCS_EXCLUDED_PACKAGES = new Set(['@modelcontextprotocol/core']); const publicPackages = packages.filter(p => p.manifest.private !== true && !DOCS_EXCLUDED_PACKAGES.has(p.manifest.name)); -const entryPoints = publicPackages.map(p => p.rootDir); +// Relative POSIX globs let TypeDoc escape special characters in the checkout path. +const entryPoints = publicPackages.map(p => relative(process.cwd(), p.rootDir).split(sep).join('/')); console.log( 'Typedoc selected public packages:', From d286ced341243ba5ddcc0a63eac52b3a9e22055f Mon Sep 17 00:00:00 2001 From: Felix Weinberger <3823880+felixweinberger@users.noreply.github.com> Date: Fri, 23 Oct 2026 14:28:45 +0000 Subject: [PATCH 2/2] fix(docs): pass the relative paths fast-glob already returns --- typedoc.config.mjs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/typedoc.config.mjs b/typedoc.config.mjs index 4932484be4..d3ad881728 100644 --- a/typedoc.config.mjs +++ b/typedoc.config.mjs @@ -1,7 +1,7 @@ import { OptionDefaults } from 'typedoc'; import fg from 'fast-glob'; import { readFileSync } from 'node:fs'; -import { join, relative, sep } from 'node:path'; +import { join } from 'node:path'; // Find all package.json files under packages/ and build package list. // Exclude node_modules and the codemod batch-test's cloned real-world repos, which are not part @@ -11,9 +11,8 @@ const packageJsonPaths = await fg('packages/**/package.json', { ignore: ['**/node_modules/**', '**/batch-test/**'] }); const packages = packageJsonPaths.map(p => { - const rootDir = join(process.cwd(), p.replace('/package.json', '')); const manifest = JSON.parse(readFileSync(join(process.cwd(), p), 'utf8')); - return { rootDir, manifest }; + return { dir: p.replace('/package.json', ''), manifest }; }); // @modelcontextprotocol/core is published for direct schema imports (CallToolResultSchema.parse(...)), @@ -22,8 +21,8 @@ const packages = packageJsonPaths.map(p => { // (the schemas mirror the documented types 1:1) so monorepo-wide invalid-link validation can stay ON. const DOCS_EXCLUDED_PACKAGES = new Set(['@modelcontextprotocol/core']); const publicPackages = packages.filter(p => p.manifest.private !== true && !DOCS_EXCLUDED_PACKAGES.has(p.manifest.name)); -// Relative POSIX globs let TypeDoc escape special characters in the checkout path. -const entryPoints = publicPackages.map(p => relative(process.cwd(), p.rootDir).split(sep).join('/')); +// TypeDoc reads entry points as globs, where a Windows backslash is an escape. +const entryPoints = publicPackages.map(p => p.dir); console.log( 'Typedoc selected public packages:',