chore: require at least Node.js version v20 and pnpm v9.

The project is set up to target Node v20, as indicated by the Node types
we use. Thus, this commit:

- Sets the minimum Node.js version to v20.
- Sets the minimum pnpm version to v9.
- Requires Node v20 instead of v22 in the CI.

Change-Id: Icf9cb245fc4632baff8a2db9f2e85049cb4af010
diff --git a/package.json b/package.json
index 3ac51d1..6b83f8a 100644
--- a/package.json
+++ b/package.json
@@ -26,6 +26,10 @@
     "forums",
     "google"
   ],
+  "engines": {
+    "node": ">=20",
+    "pnpm": ">=9"
+  },
   "devDependencies": {
     "@babel/plugin-transform-modules-commonjs": "7.24.8",
     "@jest/globals": "29.7.0",
diff --git a/playbooks/lint/pre.yaml b/playbooks/lint/pre.yaml
index 4b81e72..dbc45d2 100644
--- a/playbooks/lint/pre.yaml
+++ b/playbooks/lint/pre.yaml
@@ -5,4 +5,4 @@
     - role: ensure-genmanifest
     - role: ensure-nodejs-fork
       vars:
-        node_version: 22
+        node_version: 20
diff --git a/playbooks/nightly-build/pre.yaml b/playbooks/nightly-build/pre.yaml
index 8af7bb2..4557d37 100644
--- a/playbooks/nightly-build/pre.yaml
+++ b/playbooks/nightly-build/pre.yaml
@@ -5,6 +5,6 @@
     - role: ensure-genmanifest
     - role: ensure-nodejs-fork
       vars:
-        node_version: 22
+        node_version: 20
     - role: ensure-cws-upload
       version: "2.1.0"