diff --git a/package.json b/package.json index 5f523f2627..fb3fe4d048 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ }, "packageManager": "pnpm@10.23.0+sha512.21c4e5698002ade97e4efe8b8b4a89a8de3c85a37919f957e7a0f30f38fbc5bbdd05980ffe29179b2fb6e6e691242e098d945d1601772cad0fef5fb6411e2a4b", "scripts": { + "preinstall": "node scripts/enforce-pnpm.mjs", "setup": "bash apps/code/bin/setup", "prepare": "husky", "dev": "pnpm build:deps && bash scripts/ensure-phrocs.sh && bin/phrocs --config mprocs.yaml", diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index bb9c29cf6d..1f1cb387bd 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -6,7 +6,7 @@ ignoredBuiltDependencies: - msw - protobufjs -minimumReleaseAge: 1440 +minimumReleaseAge: 10080 minimumReleaseAgeExclude: - '@agentclientprotocol/sdk' diff --git a/scripts/enforce-pnpm.mjs b/scripts/enforce-pnpm.mjs new file mode 100644 index 0000000000..21d54a40cd --- /dev/null +++ b/scripts/enforce-pnpm.mjs @@ -0,0 +1,14 @@ +const userAgent = process.env.npm_config_user_agent ?? ""; + +if (userAgent.startsWith("pnpm/")) { + process.exit(0); +} + +console.error( + [ + "This repository must be installed with pnpm.", + "Use `pnpm install` so the workspace minimumReleaseAge policy and exclusions are applied consistently.", + ].join("\n"), +); + +process.exit(1);