From fd65ccb671040dfcf9508c8627161c257d6e587d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 24 Oct 2026 19:27:19 +0000 Subject: [PATCH 1/2] chore(deps): update pnpm to v12 --- .github/workflows/ci.yml | 14 +- .github/workflows/release-sdk-typescript.yml | 2 +- sdk/typescript/package.json | 2 +- sdk/typescript/pnpm-lock.yaml | 158 +++++++++++++++++++ 4 files changed, 167 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c218caf265..7404caa610 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -207,7 +207,7 @@ jobs: # present or enabled on the runner. - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 with: - version: 11.25.0 + version: 12.15.0 run_install: false - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0 @@ -316,7 +316,7 @@ jobs: - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 with: - version: 11.25.0 + version: 12.15.0 run_install: false - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0 @@ -392,7 +392,7 @@ jobs: - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 with: - version: 11.25.0 + version: 12.15.0 run_install: false - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0 @@ -455,7 +455,7 @@ jobs: - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 with: - version: 11.25.0 + version: 12.15.0 run_install: false - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0 @@ -509,7 +509,7 @@ jobs: - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 with: - version: 11.25.0 + version: 12.15.0 run_install: false # setup-node and setup-go include runner OS and architecture in their cache @@ -574,7 +574,7 @@ jobs: # present or enabled on the runner. - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 with: - version: 11.25.0 + version: 12.15.0 run_install: false - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0 @@ -1805,7 +1805,7 @@ jobs: - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 with: - version: 11.25.0 + version: 12.15.0 run_install: false - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0 diff --git a/.github/workflows/release-sdk-typescript.yml b/.github/workflows/release-sdk-typescript.yml index f8c0e75e04..a29bdb1bdb 100644 --- a/.github/workflows/release-sdk-typescript.yml +++ b/.github/workflows/release-sdk-typescript.yml @@ -38,7 +38,7 @@ jobs: - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 with: - version: 11.25.0 + version: 12.15.0 run_install: false - uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0 diff --git a/sdk/typescript/package.json b/sdk/typescript/package.json index fe8e7eb4bf..da6c662322 100644 --- a/sdk/typescript/package.json +++ b/sdk/typescript/package.json @@ -22,7 +22,7 @@ "deno": ">=2.9.3 <3", "node": ">=22" }, - "packageManager": "pnpm@11.25.0", + "packageManager": "pnpm@12.15.0", "files": [ "dist", "LICENSE" diff --git a/sdk/typescript/pnpm-lock.yaml b/sdk/typescript/pnpm-lock.yaml index 70773f14f5..1a8db74d74 100644 --- a/sdk/typescript/pnpm-lock.yaml +++ b/sdk/typescript/pnpm-lock.yaml @@ -1,3 +1,161 @@ +--- +lockfileVersion: '9.0' + +importers: + + .: + configDependencies: {} + packageManagerDependencies: + pnpm: + specifier: 12.15.0 + version: 12.15.0 + +packages: + + '@pnpm/exe.android-arm64@12.15.0': + resolution: {integrity: sha512-eVCqmscY70LGvgRzu3mi8IBWBFGix+a6mNZoWmXxESsBdeiKEF9xQSuaeel10yn+zI7TXy2jlI63vFLzETk+aQ==} + cpu: [arm64] + os: [android] + + '@pnpm/exe.android-x64@12.15.0': + resolution: {integrity: sha512-Gx/WbkFcdUFUg8g8AShezcS9EiQxfYvdAm2hfKLO8sfJmJvKOCt5fzlgHWDzmGhoclibgW+tUGZ/KF4F4wOTCA==} + cpu: [x64] + os: [android] + + '@pnpm/exe.darwin-arm64@12.15.0': + resolution: {integrity: sha512-N0ZykiDWCvqSBJvt71j7cSoBR993FqvYZFtmpCtqvW3pguiI+NAgraLPA5OTwu5mV+/d8hYpVcPktJA3xFDLtA==} + cpu: [arm64] + os: [darwin] + + '@pnpm/exe.darwin-x64@12.15.0': + resolution: {integrity: sha512-7Ntr2HlBUxzwWOg7NwDxCbRW/3vXuqKO+hcXm+w3SBi9rrHY53li1wLqWVT7Gjxd+lVEHM1QJZo6WJEGFU8C6A==} + cpu: [x64] + os: [darwin] + + '@pnpm/exe.freebsd-x64@12.15.0': + resolution: {integrity: sha512-btOiyL7fL7W4uQGH0aqFai2TNC3IoKcZ7gNHBVbEFZt2dWrnrD0SufL3iGs3fLlmb4OtuU35uf4Zpr9V9Jh9mA==} + cpu: [x64] + os: [freebsd] + + '@pnpm/exe.linux-arm64-musl@12.15.0': + resolution: {integrity: sha512-pNC38k+O+90FOjbPNSnw0E7apq1PKTmz3fFe1amn+lys/U5kL++uzir8bRiho8ONcyA3d9EU7wdqcY0DKkj+JA==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@pnpm/exe.linux-arm64@12.15.0': + resolution: {integrity: sha512-qML/8aCXslh8td/w4U+HJNqUcZ2+m6EfTbWScIzZRmyPsRFN+xB4LP1U/hymxc1iSJiKtG56HJx2fvUErWFIGw==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-ppc64@12.15.0': + resolution: {integrity: sha512-tjRDUUl7RCJ6T/6eoNPxOqkwU4Mzi5RtTXmSAxujyz37OTwwsMU7Ps087Zk4gHcUvRSeyF40ZFsew3vtE+nmUA==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-riscv64@12.15.0': + resolution: {integrity: sha512-bF1uBWEfbwaeryz6lIiaJ8AWD082otZfvzGX5l+6LZRpRwUEpJHUsJrORaYP5/cNMv5ZR2p6TvvcJcQzwtDzmw==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-s390x@12.15.0': + resolution: {integrity: sha512-zKMhIzsexYMToeLmqV5jPsvV/f9vwsJb2kUH2NFYzalbxImeBrlA4kL7GwF8gD4pagV6jYYcJb8RjbZIdjHptg==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-x64-musl@12.15.0': + resolution: {integrity: sha512-A9J0Jg0Rdx+qQU4qXtwyST5tto9IOu1zi4fDk35nbc6DWahggbcKtFvZPKFwL2qgUXGXOX//hXv6z/sp6emO8A==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@pnpm/exe.linux-x64@12.15.0': + resolution: {integrity: sha512-yc+QlZR+9+nr29J4fRzhMoapgxTBDndq/+peyoq1XUufnQFnfbXUMFudDIKzHi545linGqmOmXfn0NoufNgcOg==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.win32-arm64@12.15.0': + resolution: {integrity: sha512-fPXZxuY1VclkOga9bc53qNCXcegfeoBR8+Ue+AospDwKzuGGSHll0oDxkLfkmpjyRqpe7bH5DyQPYp/xSMaIVA==} + cpu: [arm64] + os: [win32] + + '@pnpm/exe.win32-x64@12.15.0': + resolution: {integrity: sha512-nrd+Tp1We1DGj4DGG5Bea9lZNh9y1PjlLBdEwdInS4D0h0UIDtM7JaGGGDJhNzIwcHASyihWI7HLV+dtG+fhYg==} + cpu: [x64] + os: [win32] + + pnpm@12.15.0: + resolution: {integrity: sha512-s5UdbW/0qfE9x89WzSjSuOs328ycaOUuHhGRhz6p+CoBcoerULqtxczElPA2xnwOR+sTYIwvo29HcRth6hKOYQ==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@pnpm/exe.android-arm64@12.15.0': + optional: true + + '@pnpm/exe.android-x64@12.15.0': + optional: true + + '@pnpm/exe.darwin-arm64@12.15.0': + optional: true + + '@pnpm/exe.darwin-x64@12.15.0': + optional: true + + '@pnpm/exe.freebsd-x64@12.15.0': + optional: true + + '@pnpm/exe.linux-arm64-musl@12.15.0': + optional: true + + '@pnpm/exe.linux-arm64@12.15.0': + optional: true + + '@pnpm/exe.linux-ppc64@12.15.0': + optional: true + + '@pnpm/exe.linux-riscv64@12.15.0': + optional: true + + '@pnpm/exe.linux-s390x@12.15.0': + optional: true + + '@pnpm/exe.linux-x64-musl@12.15.0': + optional: true + + '@pnpm/exe.linux-x64@12.15.0': + optional: true + + '@pnpm/exe.win32-arm64@12.15.0': + optional: true + + '@pnpm/exe.win32-x64@12.15.0': + optional: true + + pnpm@12.15.0: + optionalDependencies: + '@pnpm/exe.android-arm64': 12.15.0 + '@pnpm/exe.android-x64': 12.15.0 + '@pnpm/exe.darwin-arm64': 12.15.0 + '@pnpm/exe.darwin-x64': 12.15.0 + '@pnpm/exe.freebsd-x64': 12.15.0 + '@pnpm/exe.linux-arm64': 12.15.0 + '@pnpm/exe.linux-arm64-musl': 12.15.0 + '@pnpm/exe.linux-ppc64': 12.15.0 + '@pnpm/exe.linux-riscv64': 12.15.0 + '@pnpm/exe.linux-s390x': 12.15.0 + '@pnpm/exe.linux-x64': 12.15.0 + '@pnpm/exe.linux-x64-musl': 12.15.0 + '@pnpm/exe.win32-arm64': 12.15.0 + '@pnpm/exe.win32-x64': 12.15.0 + +--- lockfileVersion: '9.0' settings: From b9c2801257015492dfd50526b2017c8892e3f4ec Mon Sep 17 00:00:00 2001 From: Radoslav Dimitrov Date: Sat, 24 Oct 2026 23:25:11 +0300 Subject: [PATCH 2/2] fix(deps): move the Slack bot and SDK pnpm pins to 12.15.0 together Renovate bumped the SDK packageManager field and the pnpm/action-setup inputs to pnpm 12.15.0 but cannot see the Slack bot example manifest or the corepack calls in its Dockerfile, so the image build ran pnpm 11.25.0 against a project pinned to 12.15.0 and failed the version check. Move the Slack bot packageManager field and Dockerfile corepack pins to 12.15.0 and regenerate its lockfile with pnpm 12, which adds the packageManagerDependencies document frozen installs now require. Replace the SDK package test's hard-coded pnpm 11.25.0 expectation with a lockstep check: the SDK pin must be exact and must equal the Slack bot manifest, every Dockerfile corepack pin, and every explicit pnpm/action-setup version input in the SDK workflows. A future bump that misses one of them now fails sdk:test instead of the image build. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/ci.yml | 4 +- .../examples/slack-bot/docker/bot.Dockerfile | 12 +- .../examples/slack-bot/package.json | 2 +- .../examples/slack-bot/pnpm-lock.yaml | 158 ++++++++++++++++++ sdk/typescript/test/package.test.ts | 34 +++- 5 files changed, 200 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7404caa610..9969fee319 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -709,7 +709,7 @@ jobs: - run: chmod +x bin/mecated # Install the packageManager pin explicitly (read from apps/package.json — - # pnpm 12.x, deliberately NOT the SDK's pnpm 11 pin: the workspace is + # deliberately independent of the SDK's pnpm pin: the workspace is # self-contained). Do not rely on corepack being present or enabled on the # runner. - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 @@ -878,7 +878,7 @@ jobs: - run: chmod +x bin/mecated # Install the packageManager pin explicitly (read from apps/package.json — - # pnpm 12.x, deliberately NOT the SDK's pnpm 11 pin: the workspace is + # deliberately independent of the SDK's pnpm pin: the workspace is # self-contained). Do not rely on corepack being present or enabled on the # runner. - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 diff --git a/sdk/typescript/examples/slack-bot/docker/bot.Dockerfile b/sdk/typescript/examples/slack-bot/docker/bot.Dockerfile index 8f4cc9d584..2cebb6499e 100644 --- a/sdk/typescript/examples/slack-bot/docker/bot.Dockerfile +++ b/sdk/typescript/examples/slack-bot/docker/bot.Dockerfile @@ -13,15 +13,15 @@ FROM cgr.dev/chainguard/node:latest-dev@sha256:13afe2c05d49286578b74c4a14b8e4bbe WORKDIR /home/node/src COPY --chown=65532:65532 . . -RUN corepack pnpm@11.25.0 install --frozen-lockfile \ - && corepack pnpm@11.25.0 run build +RUN corepack pnpm@12.15.0 install --frozen-lockfile \ + && corepack pnpm@12.15.0 run build RUN cd examples/slack-bot \ - && corepack pnpm@11.25.0 install --frozen-lockfile \ - && corepack pnpm@11.25.0 run build + && corepack pnpm@12.15.0 install --frozen-lockfile \ + && corepack pnpm@12.15.0 run build FROM builder AS production-dependencies -RUN cd examples/slack-bot && corepack pnpm@11.25.0 prune --prod -RUN corepack pnpm@11.25.0 prune --prod +RUN cd examples/slack-bot && corepack pnpm@12.15.0 prune --prod +RUN corepack pnpm@12.15.0 prune --prod FROM cgr.dev/chainguard/node:latest@sha256:88c4f6e6941bdd4fb9039d98ad05384e1bfe5693dd31ccc8eb2f0c8522bdb40e diff --git a/sdk/typescript/examples/slack-bot/package.json b/sdk/typescript/examples/slack-bot/package.json index e5319997cb..dc1586a989 100644 --- a/sdk/typescript/examples/slack-bot/package.json +++ b/sdk/typescript/examples/slack-bot/package.json @@ -8,7 +8,7 @@ "engines": { "node": ">=24" }, - "packageManager": "pnpm@11.25.0", + "packageManager": "pnpm@12.15.0", "scripts": { "lint": "biome check .", "format": "biome check --write .", diff --git a/sdk/typescript/examples/slack-bot/pnpm-lock.yaml b/sdk/typescript/examples/slack-bot/pnpm-lock.yaml index f85632b741..00529e493b 100644 --- a/sdk/typescript/examples/slack-bot/pnpm-lock.yaml +++ b/sdk/typescript/examples/slack-bot/pnpm-lock.yaml @@ -1,3 +1,161 @@ +--- +lockfileVersion: '9.0' + +importers: + + .: + configDependencies: {} + packageManagerDependencies: + pnpm: + specifier: 12.15.0 + version: 12.15.0 + +packages: + + '@pnpm/exe.android-arm64@12.15.0': + resolution: {integrity: sha512-eVCqmscY70LGvgRzu3mi8IBWBFGix+a6mNZoWmXxESsBdeiKEF9xQSuaeel10yn+zI7TXy2jlI63vFLzETk+aQ==} + cpu: [arm64] + os: [android] + + '@pnpm/exe.android-x64@12.15.0': + resolution: {integrity: sha512-Gx/WbkFcdUFUg8g8AShezcS9EiQxfYvdAm2hfKLO8sfJmJvKOCt5fzlgHWDzmGhoclibgW+tUGZ/KF4F4wOTCA==} + cpu: [x64] + os: [android] + + '@pnpm/exe.darwin-arm64@12.15.0': + resolution: {integrity: sha512-N0ZykiDWCvqSBJvt71j7cSoBR993FqvYZFtmpCtqvW3pguiI+NAgraLPA5OTwu5mV+/d8hYpVcPktJA3xFDLtA==} + cpu: [arm64] + os: [darwin] + + '@pnpm/exe.darwin-x64@12.15.0': + resolution: {integrity: sha512-7Ntr2HlBUxzwWOg7NwDxCbRW/3vXuqKO+hcXm+w3SBi9rrHY53li1wLqWVT7Gjxd+lVEHM1QJZo6WJEGFU8C6A==} + cpu: [x64] + os: [darwin] + + '@pnpm/exe.freebsd-x64@12.15.0': + resolution: {integrity: sha512-btOiyL7fL7W4uQGH0aqFai2TNC3IoKcZ7gNHBVbEFZt2dWrnrD0SufL3iGs3fLlmb4OtuU35uf4Zpr9V9Jh9mA==} + cpu: [x64] + os: [freebsd] + + '@pnpm/exe.linux-arm64-musl@12.15.0': + resolution: {integrity: sha512-pNC38k+O+90FOjbPNSnw0E7apq1PKTmz3fFe1amn+lys/U5kL++uzir8bRiho8ONcyA3d9EU7wdqcY0DKkj+JA==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@pnpm/exe.linux-arm64@12.15.0': + resolution: {integrity: sha512-qML/8aCXslh8td/w4U+HJNqUcZ2+m6EfTbWScIzZRmyPsRFN+xB4LP1U/hymxc1iSJiKtG56HJx2fvUErWFIGw==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-ppc64@12.15.0': + resolution: {integrity: sha512-tjRDUUl7RCJ6T/6eoNPxOqkwU4Mzi5RtTXmSAxujyz37OTwwsMU7Ps087Zk4gHcUvRSeyF40ZFsew3vtE+nmUA==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-riscv64@12.15.0': + resolution: {integrity: sha512-bF1uBWEfbwaeryz6lIiaJ8AWD082otZfvzGX5l+6LZRpRwUEpJHUsJrORaYP5/cNMv5ZR2p6TvvcJcQzwtDzmw==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-s390x@12.15.0': + resolution: {integrity: sha512-zKMhIzsexYMToeLmqV5jPsvV/f9vwsJb2kUH2NFYzalbxImeBrlA4kL7GwF8gD4pagV6jYYcJb8RjbZIdjHptg==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-x64-musl@12.15.0': + resolution: {integrity: sha512-A9J0Jg0Rdx+qQU4qXtwyST5tto9IOu1zi4fDk35nbc6DWahggbcKtFvZPKFwL2qgUXGXOX//hXv6z/sp6emO8A==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@pnpm/exe.linux-x64@12.15.0': + resolution: {integrity: sha512-yc+QlZR+9+nr29J4fRzhMoapgxTBDndq/+peyoq1XUufnQFnfbXUMFudDIKzHi545linGqmOmXfn0NoufNgcOg==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.win32-arm64@12.15.0': + resolution: {integrity: sha512-fPXZxuY1VclkOga9bc53qNCXcegfeoBR8+Ue+AospDwKzuGGSHll0oDxkLfkmpjyRqpe7bH5DyQPYp/xSMaIVA==} + cpu: [arm64] + os: [win32] + + '@pnpm/exe.win32-x64@12.15.0': + resolution: {integrity: sha512-nrd+Tp1We1DGj4DGG5Bea9lZNh9y1PjlLBdEwdInS4D0h0UIDtM7JaGGGDJhNzIwcHASyihWI7HLV+dtG+fhYg==} + cpu: [x64] + os: [win32] + + pnpm@12.15.0: + resolution: {integrity: sha512-s5UdbW/0qfE9x89WzSjSuOs328ycaOUuHhGRhz6p+CoBcoerULqtxczElPA2xnwOR+sTYIwvo29HcRth6hKOYQ==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@pnpm/exe.android-arm64@12.15.0': + optional: true + + '@pnpm/exe.android-x64@12.15.0': + optional: true + + '@pnpm/exe.darwin-arm64@12.15.0': + optional: true + + '@pnpm/exe.darwin-x64@12.15.0': + optional: true + + '@pnpm/exe.freebsd-x64@12.15.0': + optional: true + + '@pnpm/exe.linux-arm64-musl@12.15.0': + optional: true + + '@pnpm/exe.linux-arm64@12.15.0': + optional: true + + '@pnpm/exe.linux-ppc64@12.15.0': + optional: true + + '@pnpm/exe.linux-riscv64@12.15.0': + optional: true + + '@pnpm/exe.linux-s390x@12.15.0': + optional: true + + '@pnpm/exe.linux-x64-musl@12.15.0': + optional: true + + '@pnpm/exe.linux-x64@12.15.0': + optional: true + + '@pnpm/exe.win32-arm64@12.15.0': + optional: true + + '@pnpm/exe.win32-x64@12.15.0': + optional: true + + pnpm@12.15.0: + optionalDependencies: + '@pnpm/exe.android-arm64': 12.15.0 + '@pnpm/exe.android-x64': 12.15.0 + '@pnpm/exe.darwin-arm64': 12.15.0 + '@pnpm/exe.darwin-x64': 12.15.0 + '@pnpm/exe.freebsd-x64': 12.15.0 + '@pnpm/exe.linux-arm64': 12.15.0 + '@pnpm/exe.linux-arm64-musl': 12.15.0 + '@pnpm/exe.linux-ppc64': 12.15.0 + '@pnpm/exe.linux-riscv64': 12.15.0 + '@pnpm/exe.linux-s390x': 12.15.0 + '@pnpm/exe.linux-x64': 12.15.0 + '@pnpm/exe.linux-x64-musl': 12.15.0 + '@pnpm/exe.win32-arm64': 12.15.0 + '@pnpm/exe.win32-x64': 12.15.0 + +--- lockfileVersion: '9.0' settings: diff --git a/sdk/typescript/test/package.test.ts b/sdk/typescript/test/package.test.ts index 136f713300..bca6afdadc 100644 --- a/sdk/typescript/test/package.test.ts +++ b/sdk/typescript/test/package.test.ts @@ -177,9 +177,41 @@ test("exports map exposes exactly ., ./node, ./deno, ./gen", () => { expect(privateImport.stderr).toContain("ERR_PACKAGE_PATH_NOT_EXPORTED"); }); +test("the SDK pnpm pin moves in lockstep with the Slack bot and SDK CI pins", () => { + // Renovate updates the SDK packageManager field and the workflow inputs, but + // not the Slack bot example manifest or its Dockerfile's corepack calls. + const pin = packageJson.packageManager; + const version = pin.replace(/^pnpm@/u, ""); + const repositoryRoot = join(packageRoot, "..", ".."); + const slackBotRoot = join(packageRoot, "examples", "slack-bot"); + + const slackBot = JSON.parse(readFileSync(join(slackBotRoot, "package.json"), "utf8")) as { + packageManager: string; + }; + expect(slackBot.packageManager).toBe(pin); + + const dockerfile = readFileSync(join(slackBotRoot, "docker", "bot.Dockerfile"), "utf8"); + const corepackPins = [...dockerfile.matchAll(/corepack (pnpm@\S+)/gu)].map((match) => match[1]); + expect(corepackPins.length).toBeGreaterThan(0); + expect(new Set(corepackPins)).toEqual(new Set([pin])); + + // Studio (apps/) is a self-contained workspace that reads its own pin through + // package_json_file, so only explicit version inputs must match the SDK. + for (const workflow of ["ci.yml", "release-sdk-typescript.yml"]) { + const source = readFileSync(join(repositoryRoot, ".github", "workflows", workflow), "utf8"); + const inputs = [ + ...source.matchAll(/uses: pnpm\/action-setup@[^\n]*\n\s+with:\n\s+version: (\S+)/gu), + ].map((match) => match[1]); + expect(inputs.length, `${workflow} pnpm/action-setup version inputs`).toBeGreaterThan(0); + expect(new Set(inputs), `${workflow} pnpm/action-setup version inputs`).toEqual( + new Set([version]), + ); + } +}); + test("packed tarball carries dist and license only", () => { expect(packageJson.engines).toEqual({ deno: ">=2.9.3 <3", node: ">=22" }); - expect(packageJson.packageManager).toBe("pnpm@11.25.0"); + expect(packageJson.packageManager).toMatch(/^pnpm@\d+\.\d+\.\d+$/u); const expectedFiles = [ "package/LICENSE",