From 660e6c2fd9b7f0c539c2744e6369ed067041177b Mon Sep 17 00:00:00 2001 From: Olivier Chafik Date: Fri, 23 Jan 2026 22:50:55 +0000 Subject: [PATCH 1/5] fix(husky): load Node.js env for GUI apps + add update-lock:docker script Cherry-picked non-e2e changes from ochafik/fix-e2e-flaky-tests: - Load nvm/fnm/volta/homebrew paths in pre-commit for GitHub Desktop - Add update-lock:docker script to regenerate lockfile with public registry --- .husky/pre-commit | 9 +++++++++ package.json | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.husky/pre-commit b/.husky/pre-commit index 700039766..6fd6718f1 100644 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,3 +1,12 @@ +# Load Node.js environment for GUI apps (GitHub Desktop, etc.) +# that don't inherit shell PATH +export NVM_DIR="$HOME/.nvm" +[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # nvm +[ -s "$HOME/.fnm/fnm" ] && eval "$(~/.fnm/fnm env)" # fnm +[ -s "$HOME/.volta/bin/volta" ] && export PATH="$HOME/.volta/bin:$PATH" # volta +[ -d "/opt/homebrew/bin" ] && export PATH="/opt/homebrew/bin:$PATH" # homebrew (macOS ARM) +[ -d "/usr/local/bin" ] && export PATH="/usr/local/bin:$PATH" # homebrew (macOS Intel) + # Verify no private registry URLs in package-lock.json if grep -E '"resolved": "https?://' package-lock.json | grep -v registry.npmjs.org > /dev/null; then echo "ERROR: package-lock.json contains non-npmjs.org URLs" diff --git a/package.json b/package.json index cd2d6cf47..bf14e2dfe 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,8 @@ "generate:screenshots": "npm run build:all && docker run --rm -e EXAMPLE -v $(pwd):/work -w /work mcr.microsoft.com/playwright:v1.57.0-noble sh -c 'apt-get update -qq && apt-get install -qq -y python3-venv curl > /dev/null && curl -LsSf https://astral.sh/uv/install.sh | sh && export PATH=\"$HOME/.local/bin:$PATH\" && npm i -g bun && npm ci && npx playwright test tests/e2e/generate-grid-screenshots.spec.ts'", "prettier": "prettier -u \"**/*.{js,jsx,ts,tsx,mjs,json,md,yml,yaml}\" --check", "prettier:fix": "prettier -u \"**/*.{js,jsx,ts,tsx,mjs,json,md,yml,yaml}\" --write", - "check:versions": "node scripts/check-versions.mjs" + "check:versions": "node scripts/check-versions.mjs", + "update-lock:docker": "rm -rf node_modules package-lock.json && docker run --rm --platform linux/amd64 -v $(pwd):/work -w /work node:latest npm i --registry=https://registry.npmjs.org/ && rm -rf node_modules && npm i" }, "author": "Olivier Chafik", "devDependencies": { From 3acbb3d671705152b6ea8a8eeb7b20472f22a2b5 Mon Sep 17 00:00:00 2001 From: Olivier Chafik Date: Fri, 23 Jan 2026 23:09:12 +0000 Subject: [PATCH 2/5] pin package versions for dev compatibility - solid-js: 1.9.10 - caniuse-lite: 1.0.30001763 - cheerio: 1.1.2 - electron-to-chromium: 1.5.267 - @playwright/test: 1.57.0 - playwright: 1.57.0 - playwright-core: 1.57.0 --- examples/basic-server-solid/package.json | 2 +- package.json | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/examples/basic-server-solid/package.json b/examples/basic-server-solid/package.json index 25331c515..aa71017ae 100644 --- a/examples/basic-server-solid/package.json +++ b/examples/basic-server-solid/package.json @@ -26,7 +26,7 @@ "@modelcontextprotocol/sdk": "^1.24.0", "cors": "^2.8.5", "express": "^5.1.0", - "solid-js": "^1.9.0", + "solid-js": "1.9.10", "zod": "^4.1.13" }, "devDependencies": { diff --git a/package.json b/package.json index bf14e2dfe..356815d19 100644 --- a/package.json +++ b/package.json @@ -74,17 +74,22 @@ "author": "Olivier Chafik", "devDependencies": { "@modelcontextprotocol/sdk": "^1.24.0", - "@playwright/test": "^1.52.0", + "@playwright/test": "1.57.0", "@types/bun": "^1.3.2", "@types/react": "^19.2.2", "@types/react-dom": "^19.2.2", + "caniuse-lite": "1.0.30001763", + "cheerio": "1.1.2", "concurrently": "^9.2.1", "cors": "^2.8.5", "cross-env": "^10.1.0", + "electron-to-chromium": "1.5.267", "esbuild": "^0.25.12", "express": "^5.1.0", "husky": "^9.1.7", "nodemon": "^3.1.0", + "playwright": "1.57.0", + "playwright-core": "1.57.0", "prettier": "^3.6.2", "react": "^19.2.0", "react-dom": "^19.2.0", From 59f6b5f9a3b57eccaa81c7d327aba7a1006500cf Mon Sep 17 00:00:00 2001 From: Olivier Chafik Date: Sat, 24 Jan 2026 00:43:57 +0000 Subject: [PATCH 3/5] regen --- package-lock.json | 407 ++++++++++++++++++---------------------------- 1 file changed, 160 insertions(+), 247 deletions(-) diff --git a/package-lock.json b/package-lock.json index 003b83682..6d0997132 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,17 +14,22 @@ ], "devDependencies": { "@modelcontextprotocol/sdk": "^1.24.0", - "@playwright/test": "^1.52.0", + "@playwright/test": "1.57.0", "@types/bun": "^1.3.2", "@types/react": "^19.2.2", "@types/react-dom": "^19.2.2", + "caniuse-lite": "1.0.30001763", + "cheerio": "1.1.2", "concurrently": "^9.2.1", "cors": "^2.8.5", "cross-env": "^10.1.0", + "electron-to-chromium": "1.5.267", "esbuild": "^0.25.12", "express": "^5.1.0", "husky": "^9.1.7", "nodemon": "^3.1.0", + "playwright": "1.57.0", + "playwright-core": "1.57.0", "prettier": "^3.6.2", "react": "^19.2.0", "react-dom": "^19.2.0", @@ -97,18 +102,13 @@ } }, "examples/basic-host/node_modules/@types/node": { - "version": "22.19.7", + "version": "22.19.3", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, - "examples/basic-host/node_modules/undici-types": { - "version": "6.21.0", - "dev": true, - "license": "MIT" - }, "examples/basic-server-preact": { "name": "@modelcontextprotocol/server-basic-preact", "version": "0.4.1", @@ -137,18 +137,13 @@ } }, "examples/basic-server-preact/node_modules/@types/node": { - "version": "22.19.7", + "version": "22.19.3", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, - "examples/basic-server-preact/node_modules/undici-types": { - "version": "6.21.0", - "dev": true, - "license": "MIT" - }, "examples/basic-server-react": { "name": "@modelcontextprotocol/server-basic-react", "version": "0.4.1", @@ -180,18 +175,13 @@ } }, "examples/basic-server-react/node_modules/@types/node": { - "version": "22.19.7", + "version": "22.19.3", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, - "examples/basic-server-react/node_modules/undici-types": { - "version": "6.21.0", - "dev": true, - "license": "MIT" - }, "examples/basic-server-solid": { "name": "@modelcontextprotocol/server-basic-solid", "version": "0.4.1", @@ -201,7 +191,7 @@ "@modelcontextprotocol/sdk": "^1.24.0", "cors": "^2.8.5", "express": "^5.1.0", - "solid-js": "^1.9.0", + "solid-js": "1.9.10", "zod": "^4.1.13" }, "bin": { @@ -220,18 +210,13 @@ } }, "examples/basic-server-solid/node_modules/@types/node": { - "version": "22.19.7", + "version": "22.19.3", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, - "examples/basic-server-solid/node_modules/undici-types": { - "version": "6.21.0", - "dev": true, - "license": "MIT" - }, "examples/basic-server-svelte": { "name": "@modelcontextprotocol/server-basic-svelte", "version": "0.4.1", @@ -260,18 +245,13 @@ } }, "examples/basic-server-svelte/node_modules/@types/node": { - "version": "22.19.7", + "version": "22.19.3", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, - "examples/basic-server-svelte/node_modules/undici-types": { - "version": "6.21.0", - "dev": true, - "license": "MIT" - }, "examples/basic-server-vanillajs": { "name": "@modelcontextprotocol/server-basic-vanillajs", "version": "0.4.1", @@ -298,18 +278,13 @@ } }, "examples/basic-server-vanillajs/node_modules/@types/node": { - "version": "22.19.7", + "version": "22.19.3", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, - "examples/basic-server-vanillajs/node_modules/undici-types": { - "version": "6.21.0", - "dev": true, - "license": "MIT" - }, "examples/basic-server-vue": { "name": "@modelcontextprotocol/server-basic-vue", "version": "0.4.1", @@ -338,18 +313,13 @@ } }, "examples/basic-server-vue/node_modules/@types/node": { - "version": "22.19.7", + "version": "22.19.3", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, - "examples/basic-server-vue/node_modules/undici-types": { - "version": "6.21.0", - "dev": true, - "license": "MIT" - }, "examples/budget-allocator-server": { "name": "@modelcontextprotocol/server-budget-allocator", "version": "0.4.1", @@ -377,18 +347,13 @@ } }, "examples/budget-allocator-server/node_modules/@types/node": { - "version": "22.19.7", + "version": "22.19.3", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, - "examples/budget-allocator-server/node_modules/undici-types": { - "version": "6.21.0", - "dev": true, - "license": "MIT" - }, "examples/cohort-heatmap-server": { "name": "@modelcontextprotocol/server-cohort-heatmap", "version": "0.4.1", @@ -420,18 +385,13 @@ } }, "examples/cohort-heatmap-server/node_modules/@types/node": { - "version": "22.19.7", + "version": "22.19.3", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, - "examples/cohort-heatmap-server/node_modules/undici-types": { - "version": "6.21.0", - "dev": true, - "license": "MIT" - }, "examples/customer-segmentation-server": { "name": "@modelcontextprotocol/server-customer-segmentation", "version": "0.4.1", @@ -459,18 +419,13 @@ } }, "examples/customer-segmentation-server/node_modules/@types/node": { - "version": "22.19.7", + "version": "22.19.3", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, - "examples/customer-segmentation-server/node_modules/undici-types": { - "version": "6.21.0", - "dev": true, - "license": "MIT" - }, "examples/debug-server": { "name": "@modelcontextprotocol/server-debug", "version": "0.4.1", @@ -495,17 +450,14 @@ }, "examples/debug-server/node_modules/@types/node": { "version": "22.19.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.7.tgz", + "integrity": "sha512-MciR4AKGHWl7xwxkBa6xUGxQJ4VBOmPTF7sL+iGzuahOFaO0jHCsuEfS80pan1ef4gWId1oWOweIhrDEYLuaOw==", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, - "examples/debug-server/node_modules/undici-types": { - "version": "6.21.0", - "dev": true, - "license": "MIT" - }, "examples/integration-server": { "version": "1.0.0", "dependencies": { @@ -534,18 +486,13 @@ } }, "examples/integration-server/node_modules/@types/node": { - "version": "22.19.7", + "version": "22.19.3", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, - "examples/integration-server/node_modules/undici-types": { - "version": "6.21.0", - "dev": true, - "license": "MIT" - }, "examples/map-server": { "name": "@modelcontextprotocol/server-map", "version": "0.4.1", @@ -572,18 +519,13 @@ } }, "examples/map-server/node_modules/@types/node": { - "version": "22.19.7", + "version": "22.19.3", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, - "examples/map-server/node_modules/undici-types": { - "version": "6.21.0", - "dev": true, - "license": "MIT" - }, "examples/pdf-server": { "name": "@modelcontextprotocol/server-pdf", "version": "0.4.1", @@ -611,18 +553,13 @@ } }, "examples/pdf-server/node_modules/@types/node": { - "version": "22.19.7", + "version": "22.19.3", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, - "examples/pdf-server/node_modules/undici-types": { - "version": "6.21.0", - "dev": true, - "license": "MIT" - }, "examples/qr-server": { "name": "@modelcontextprotocol/server-qr", "version": "1.0.0", @@ -670,18 +607,13 @@ } }, "examples/scenario-modeler-server/node_modules/@types/node": { - "version": "22.19.7", + "version": "22.19.3", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, - "examples/scenario-modeler-server/node_modules/undici-types": { - "version": "6.21.0", - "dev": true, - "license": "MIT" - }, "examples/shadertoy-server": { "name": "@modelcontextprotocol/server-shadertoy", "version": "0.4.1", @@ -708,18 +640,13 @@ } }, "examples/shadertoy-server/node_modules/@types/node": { - "version": "22.19.7", + "version": "22.19.3", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, - "examples/shadertoy-server/node_modules/undici-types": { - "version": "6.21.0", - "dev": true, - "license": "MIT" - }, "examples/sheet-music-server": { "name": "@modelcontextprotocol/server-sheet-music", "version": "0.4.1", @@ -747,18 +674,13 @@ } }, "examples/sheet-music-server/node_modules/@types/node": { - "version": "22.19.7", + "version": "22.19.3", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, - "examples/sheet-music-server/node_modules/undici-types": { - "version": "6.21.0", - "dev": true, - "license": "MIT" - }, "examples/system-monitor-server": { "name": "@modelcontextprotocol/server-system-monitor", "version": "0.4.1", @@ -787,18 +709,13 @@ } }, "examples/system-monitor-server/node_modules/@types/node": { - "version": "22.19.7", + "version": "22.19.3", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, - "examples/system-monitor-server/node_modules/undici-types": { - "version": "6.21.0", - "dev": true, - "license": "MIT" - }, "examples/threejs-server": { "name": "@modelcontextprotocol/server-threejs", "version": "0.4.1", @@ -832,18 +749,13 @@ } }, "examples/threejs-server/node_modules/@types/node": { - "version": "22.19.7", + "version": "22.19.3", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, - "examples/threejs-server/node_modules/undici-types": { - "version": "6.21.0", - "dev": true, - "license": "MIT" - }, "examples/transcript-server": { "name": "@modelcontextprotocol/server-transcript", "version": "0.4.1", @@ -871,18 +783,13 @@ } }, "examples/transcript-server/node_modules/@types/node": { - "version": "22.19.7", + "version": "22.19.3", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, - "examples/transcript-server/node_modules/undici-types": { - "version": "6.21.0", - "dev": true, - "license": "MIT" - }, "examples/transcript-server/node_modules/zod": { "version": "3.25.76", "license": "MIT", @@ -916,18 +823,13 @@ } }, "examples/video-resource-server/node_modules/@types/node": { - "version": "22.19.7", + "version": "22.19.3", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, - "examples/video-resource-server/node_modules/undici-types": { - "version": "6.21.0", - "dev": true, - "license": "MIT" - }, "examples/wiki-explorer-server": { "name": "@modelcontextprotocol/server-wiki-explorer", "version": "0.4.1", @@ -956,18 +858,13 @@ } }, "examples/wiki-explorer-server/node_modules/@types/node": { - "version": "22.19.7", + "version": "22.19.3", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, - "examples/wiki-explorer-server/node_modules/undici-types": { - "version": "6.21.0", - "dev": true, - "license": "MIT" - }, "node_modules/@babel/code-frame": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", @@ -3111,19 +3008,6 @@ "node": ">= 8.0.0" } }, - "node_modules/@rollup/pluginutils/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.56.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.56.0.tgz", @@ -3742,6 +3626,13 @@ "undici-types": "~7.16.0" } }, + "node_modules/@types/node/node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/qs": { "version": "6.14.0", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", @@ -4273,19 +4164,6 @@ "node": ">= 8" } }, - "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -4452,6 +4330,22 @@ "url": "https://opencollective.com/express" } }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -4575,9 +4469,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001765", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001765.tgz", - "integrity": "sha512-LWcNtSyZrakjECqmpP4qdg0MMGdN368D7X8XvvAqOcqMv0RxnlqVKZl2V6/mBR68oYMxOZPLw/gO7DuisMHUvQ==", + "version": "1.0.30001763", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001763.tgz", + "integrity": "sha512-mh/dGtq56uN98LlNX9qdbKnzINhX0QzhiWBFEkFfsFO4QyCvL8YegrJAazCwXIeqkIob8BlZPGM3xdnY+sgmvQ==", "dev": true, "funding": [ { @@ -5448,9 +5342,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.277", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.277.tgz", - "integrity": "sha512-wKXFZw4erWmmOz5N/grBoJ2XrNJGDFMu2+W5ACHza5rHtvsqrK4gb6rnLC7XxKB9WlJ+RmyQatuEXmtm86xbnw==", + "version": "1.5.267", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", + "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", "dev": true, "license": "ISC" }, @@ -5483,18 +5377,6 @@ "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" } }, - "node_modules/encoding-sniffer/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -5776,24 +5658,6 @@ ], "license": "BSD-3-Clause" }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, "node_modules/fflate": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", @@ -6199,19 +6063,15 @@ } }, "node_modules/iconv-lite": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", - "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" } }, "node_modules/ignore-by-default": { @@ -6824,19 +6684,6 @@ "node": ">=8.6" } }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/mime-db": { "version": "1.54.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", @@ -7184,13 +7031,13 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=8.6" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -7375,6 +7222,22 @@ "node": ">= 0.10" } }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/react": { "version": "19.2.3", "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", @@ -7419,19 +7282,6 @@ "node": ">=8.10.0" } }, - "node_modules/readdirp/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -8383,6 +8233,37 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/tinypool": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", @@ -9170,9 +9051,9 @@ } }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "dev": true, "license": "MIT" }, @@ -9383,6 +9264,37 @@ "vite": "5.x || 6.x || 7.x" } }, + "node_modules/vite/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/vitefu": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.1.tgz", @@ -9476,6 +9388,19 @@ } } }, + "node_modules/vitest/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/vue": { "version": "3.5.27", "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.27.tgz", @@ -9510,18 +9435,6 @@ "node": ">=18" } }, - "node_modules/whatwg-encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/whatwg-mimetype": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", From 4473611215048a4da0ed5fee7c0bcc7bd2bb4c9f Mon Sep 17 00:00:00 2001 From: Olivier Chafik Date: Sat, 24 Jan 2026 01:31:37 +0000 Subject: [PATCH 4/5] fix: pin @types/node to existing version and regenerate lockfile - Fix @types/node 20.19.28 -> 20.19.27 (typo, version didn't exist) - Regenerate package-lock.json to resolve versions available on both public npm and Anthropic artifactory registries --- package-lock.json | 16 +++++----------- package.json | 1 + 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6d0997132..6c1e85ade 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,6 +16,7 @@ "@modelcontextprotocol/sdk": "^1.24.0", "@playwright/test": "1.57.0", "@types/bun": "^1.3.2", + "@types/node": "20.19.27", "@types/react": "^19.2.2", "@types/react-dom": "^19.2.2", "caniuse-lite": "1.0.30001763", @@ -3617,22 +3618,15 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.0.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.10.tgz", - "integrity": "sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg==", + "version": "20.19.27", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.27.tgz", + "integrity": "sha512-N2clP5pJhB2YnZJ3PIHFk5RkygRX5WO/5f0WC08tp0wd+sv0rsJk3MqWn3CbNmT2J505a5336jaQj4ph1AdMug==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~6.21.0" } }, - "node_modules/@types/node/node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/qs": { "version": "6.14.0", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", diff --git a/package.json b/package.json index 356815d19..298ecb669 100644 --- a/package.json +++ b/package.json @@ -78,6 +78,7 @@ "@types/bun": "^1.3.2", "@types/react": "^19.2.2", "@types/react-dom": "^19.2.2", + "@types/node": "20.19.27", "caniuse-lite": "1.0.30001763", "cheerio": "1.1.2", "concurrently": "^9.2.1", From 6e668f068e97dae9eb71a303d7bdd2c6f0ae8a04 Mon Sep 17 00:00:00 2001 From: Olivier Chafik Date: Sat, 24 Jan 2026 01:33:25 +0000 Subject: [PATCH 5/5] fix(basic-server-solid): bump solid-js 1.9.10 -> 1.9.11 to fix seroval vulnerabilities --- examples/basic-server-solid/package.json | 2 +- package-lock.json | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/examples/basic-server-solid/package.json b/examples/basic-server-solid/package.json index aa71017ae..67c208e49 100644 --- a/examples/basic-server-solid/package.json +++ b/examples/basic-server-solid/package.json @@ -26,7 +26,7 @@ "@modelcontextprotocol/sdk": "^1.24.0", "cors": "^2.8.5", "express": "^5.1.0", - "solid-js": "1.9.10", + "solid-js": "1.9.11", "zod": "^4.1.13" }, "devDependencies": { diff --git a/package-lock.json b/package-lock.json index 6c1e85ade..b3d949055 100644 --- a/package-lock.json +++ b/package-lock.json @@ -192,7 +192,7 @@ "@modelcontextprotocol/sdk": "^1.24.0", "cors": "^2.8.5", "express": "^5.1.0", - "solid-js": "1.9.10", + "solid-js": "1.9.11", "zod": "^4.1.13" }, "bin": { @@ -7452,18 +7452,18 @@ } }, "node_modules/seroval": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/seroval/-/seroval-1.3.2.tgz", - "integrity": "sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/seroval/-/seroval-1.5.0.tgz", + "integrity": "sha512-OE4cvmJ1uSPrKorFIH9/w/Qwuvi/IMcGbv5RKgcJ/zjA/IohDLU6SVaxFN9FwajbP7nsX0dQqMDes1whk3y+yw==", "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/seroval-plugins": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/seroval-plugins/-/seroval-plugins-1.3.3.tgz", - "integrity": "sha512-16OL3NnUBw8JG1jBLUoZJsLnQq0n5Ua6aHalhJK4fMQkz1lqR7Osz1sA30trBtd9VUDc2NgkuRCn8+/pBwqZ+w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/seroval-plugins/-/seroval-plugins-1.5.0.tgz", + "integrity": "sha512-EAHqADIQondwRZIdeW2I636zgsODzoBDwb3PT/+7TLDWyw1Dy/Xv7iGUIEXXav7usHDE9HVhOU61irI3EnyyHA==", "license": "MIT", "engines": { "node": ">=10" @@ -7742,14 +7742,14 @@ } }, "node_modules/solid-js": { - "version": "1.9.10", - "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.9.10.tgz", - "integrity": "sha512-Coz956cos/EPDlhs6+jsdTxKuJDPT7B5SVIWgABwROyxjY7Xbr8wkzD68Et+NxnV7DLJ3nJdAC2r9InuV/4Jew==", + "version": "1.9.11", + "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.9.11.tgz", + "integrity": "sha512-WEJtcc5mkh/BnHA6Yrg4whlF8g6QwpmXXRg4P2ztPmcKeHHlH4+djYecBLhSpecZY2RRECXYUwIc/C2r3yzQ4Q==", "license": "MIT", "dependencies": { "csstype": "^3.1.0", - "seroval": "~1.3.0", - "seroval-plugins": "~1.3.0" + "seroval": "~1.5.0", + "seroval-plugins": "~1.5.0" } }, "node_modules/solid-refresh": {