chore(security): pin patched Node 24.22.1 and override undici

Merged
MI
9d ago
+129-78

why

Node's Oct 21 security release fixes 10 CVEs (4 high: Brotli OOB write, DNS truncation, two TLS hostname bypasses), patched in 22.23.4 / 24.22.1 / 26.12.1. Node 20 is EOL and unpatched. undici 7.30.0 / 8.10.2 in our lockfile are affected by GHSA-qrxm-fqhp-jwvm and GHSA-2m5v-pch6-74hx.

what changed

  • GH Actions setup-node pinned to 24.22.1 (was floating "24", which resolves from the runner's possibly stale tool cache)
  • workspace devEngines.runtime floor ^24.22.1
  • packages/cli/Dockerfile: node:20-slim → node:24.22.1-slim
  • workspace overrides undici@7 → 7.30.1, undici@8 → 8.12.3 (covers the extension via ai → @ai-sdk/provider-utils, plus pi/eve/openai)

Consumer engines range bumps will follow in a separate PR.

test plan

  • pnpm install --frozen-lockfile resolves Node v24.22.1 runtime, undici 7.30.1 / 8.12.3 only
  • extension build + test:unit (1054 passed)
  • CI

Summary by cubic

Pins patched Node 24.22.1 and overrides the vulnerable undici versions to close security holes across the repo.

  • Node 24.22.1 fixes 10 CVEs including 4 high severity (Brotli OOB write, DNS truncation, two TLS hostname bypasses); Node 20 is EOL and unpatched.
  • CI setup-node and the CLI Dockerfile now use 24.22.1 instead of floating "24" and EOL node:20-slim.
  • Workspace overrides bump undici@7 to 7.30.1 and undici@8 to 8.12.3, fixing GHSA-qrxm-fqhp-jwvm and GHSA-2m5v-pch6-74hx.
  • The standalone cookbook workspaces (ai-sdk-research-agent, approve-form-submission) get their own undici@7 override since the root one doesn't reach them.
  • devEngines.runtime floor raised to ^24.22.1; consumer engines bumps follow later.