From 31f181ab6a9937ffa11a5a0da831aae701ee96df Mon Sep 17 00:00:00 2001 From: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com> Date: Tue, 28 Jul 2026 19:58:38 +0800 Subject: [PATCH] =?UTF-8?q?feat!:=20require=20Node.js=2022=20=E2=80=94=20p?= =?UTF-8?q?romise=20the=20runtime=20we=20actually=20test=20(#3825)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Every published package declared engines.node ">=18.0.0". Node 18 reached end-of-life on 2025-04-30 and Node 20 on 2026-04-30, so the compatibility promise covered two runtimes nobody patches -- and, after #3830 moved CI to Node 22, two runtimes nothing in this repo verifies. That left the promise and the evidence with no overlap at all: CI validates every PR on ......................... 22 release.yml publishes from ....................... 22 every shipped Docker image runs ................... 22 engines.node promised users ...................... >=18 engines.node is now ">=22.0.0" across all 50 manifests -- the only runtime the packages are built, tested and shipped on. Node 24 (Active LTS since 2025-10-28) and Node 26 both satisfy the new range, so anyone on 22+ is unaffected. npm/pnpm surface an unsatisfied engines as an EBADENGINE warning rather than a hard failure, so existing installs on 18/20 do not break the moment this lands -- but those runtimes are no longer tested, and the failures are the kind that do not announce themselves (#3812: a native dependency whose engines required a newer Node loaded anyway on the older one, then killed the test worker at the process level with no JS error and a summary that still said "passed"). The "Node 18+" prerequisite was restated in ten user-facing places (README, CONTRIBUTING, the getting-started and deployment docs, the todo example, and the objectstack-platform skill's compatibility field); all now say 22. A half-done rename is worse than none. Changelogs and ADRs are historical records and were left alone. Shipped as a changesets `major`. The repo is in pre-release (rc) mode, where the no-major guard stands aside by design -- accumulating breaking changes is what the RC window is for -- so this does not block other PRs. Four other majors are already pending in the same window. Verified on Node 22: full build 71/71 and full test suite 129/129, both with zero cache hits, 16921 tests declared and all 16921 accounted for. Co-Authored-By: Claude --- .changeset/engines-node-22.md | 54 +++++++++++++++++++ CONTRIBUTING.md | 2 +- README.md | 2 +- apps/docs/package.json | 2 +- content/docs/deployment/backup-restore.mdx | 2 +- content/docs/deployment/self-hosting.mdx | 2 +- content/docs/deployment/troubleshooting.mdx | 2 +- .../build-with-claude-code.mdx | 2 +- content/docs/getting-started/index.mdx | 2 +- .../getting-started/your-first-project.mdx | 2 +- examples/app-todo/README.md | 2 +- package.json | 2 +- packages/adapters/hono/package.json | 2 +- packages/apps/account/package.json | 2 +- packages/apps/setup/package.json | 2 +- packages/apps/studio/package.json | 2 +- packages/cli/package.json | 2 +- packages/client-react/package.json | 2 +- packages/client/package.json | 2 +- packages/cloud-connection/package.json | 2 +- packages/core/package.json | 2 +- packages/create-objectstack/package.json | 2 +- packages/lint/package.json | 2 +- packages/mcp/package.json | 2 +- packages/metadata-core/package.json | 2 +- packages/metadata-fs/package.json | 2 +- packages/metadata-protocol/package.json | 2 +- packages/metadata/package.json | 2 +- packages/objectql/package.json | 2 +- packages/observability/package.json | 2 +- packages/platform-objects/package.json | 2 +- packages/plugins/driver-memory/package.json | 2 +- packages/plugins/driver-mongodb/package.json | 2 +- packages/plugins/driver-sql/package.json | 2 +- .../plugins/driver-sqlite-wasm/package.json | 2 +- packages/plugins/plugin-audit/package.json | 2 +- packages/plugins/plugin-auth/package.json | 2 +- packages/plugins/plugin-dev/package.json | 2 +- .../plugins/plugin-hono-server/package.json | 2 +- packages/plugins/plugin-security/package.json | 2 +- packages/rest/package.json | 2 +- packages/runtime/package.json | 2 +- .../services/service-analytics/package.json | 2 +- .../services/service-automation/package.json | 2 +- packages/services/service-cache/package.json | 2 +- packages/services/service-i18n/package.json | 2 +- packages/services/service-job/package.json | 2 +- .../services/service-knowledge/package.json | 2 +- .../services/service-messaging/package.json | 2 +- .../services/service-package/package.json | 2 +- packages/services/service-queue/package.json | 2 +- .../services/service-realtime/package.json | 2 +- .../services/service-settings/package.json | 2 +- .../services/service-storage/package.json | 2 +- packages/spec/package.json | 2 +- .../trigger-record-change/package.json | 2 +- .../triggers/trigger-schedule/package.json | 2 +- packages/types/package.json | 2 +- packages/verify/package.json | 2 +- packages/vscode-objectstack/package.json | 2 +- skills/objectstack-platform/SKILL.md | 2 +- 61 files changed, 114 insertions(+), 60 deletions(-) create mode 100644 .changeset/engines-node-22.md diff --git a/.changeset/engines-node-22.md b/.changeset/engines-node-22.md new file mode 100644 index 0000000000..8492e69c96 --- /dev/null +++ b/.changeset/engines-node-22.md @@ -0,0 +1,54 @@ +--- +"create-objectstack": major +"@objectstack/spec": major +"@objectstack/cli": major +--- + +feat!: require Node.js 22 — promise the runtime we actually test (#3825) + +Every published package declared `engines.node: ">=18.0.0"`. **Node 18 reached +end-of-life on 2025-04-30 and Node 20 on 2026-04-30**, so the compatibility +promise covered two runtimes nobody patches — and, after #3830 moved CI to Node +22, two runtimes nothing in this repo verifies. + +That left the promise and the evidence with **no overlap at all**: + +| | Node version | +|---|---| +| What CI validates every PR on | **22** | +| What `release.yml` publishes from | **22** | +| What every shipped Docker image runs (`docker/Dockerfile`, `blank` template, self-hosting docs) | **22** | +| What `engines.node` promised users | **>=18** | + +`engines.node` is now `>=22.0.0` across all 50 manifests. This is the honest +floor: it is the only runtime the packages are built, tested and shipped on. + +## Migration + +**If you are on Node 22 or newer, nothing changes.** Node 24 (Active LTS since +2025-10-28) and Node 26 both satisfy the new range. + +If you are on Node 18 or 20, upgrade to Node 22+. Both are past end-of-life and +receive no security patches: + +```bash +nvm install 22 && nvm use 22 +``` + +npm and pnpm surface an unsatisfied `engines` as an **`EBADENGINE` warning**, not +a hard failure, so an existing install will not break the moment you upgrade — +but the package is no longer tested on that runtime, and the failures are the +kind that do not announce themselves. #3812 is the worked example: a native +dependency whose `engines` required a newer Node loaded anyway on the older one +and then killed the test worker at the process level, with no JS error and a +summary that still said "passed". + +If your CI pins Node, pin it to 22 as well — running your gates on a runtime +your dependencies no longer support is exactly the split this change closes. + +## Also updated + +The "Node 18+" prerequisite was restated in ten user-facing places +(`README.md`, `CONTRIBUTING.md`, the getting-started and deployment docs, the +todo example, and the `objectstack-platform` skill's `compatibility` field). +All now say 22. Changelogs and ADRs are historical records and were left alone. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5dfb8fe565..117ad6aeb8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -22,7 +22,7 @@ We are committed to providing a welcoming and inclusive environment. Please be r ### Prerequisites -- **Node.js** >= 18.0.0 +- **Node.js** >= 22.0.0 - **PNPM** >= 8.0.0 - **Git** >= 2.0.0 diff --git a/README.md b/README.md index 6cb409dfc1..9bd786f11f 100644 --- a/README.md +++ b/README.md @@ -204,7 +204,7 @@ See [Self-Hosted Deployment](https://objectstack.ai/docs/deployment/self-hosting ```bash git clone https://github.com/objectstack-ai/objectstack.git cd objectstack -pnpm install # Node 18+, pnpm 8+ (corepack enable) +pnpm install # Node 22+, pnpm 8+ (corepack enable) pnpm build # build all packages pnpm dev # run the showcase example (REST + Console on :3000) ``` diff --git a/apps/docs/package.json b/apps/docs/package.json index d225c296b6..2ace0268aa 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -40,6 +40,6 @@ "zod": "4.4.3" }, "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/content/docs/deployment/backup-restore.mdx b/content/docs/deployment/backup-restore.mdx index 4ef19779d6..3ebf00e39a 100644 --- a/content/docs/deployment/backup-restore.mdx +++ b/content/docs/deployment/backup-restore.mdx @@ -81,7 +81,7 @@ storage change. A backup you haven't restored is a hope, not a backup. ### Provision a clean host -Fresh container or VM. Install Node 18+ and `@objectstack/cli`. +Fresh container or VM. Install Node 22+ and `@objectstack/cli`. ### Restore the database diff --git a/content/docs/deployment/self-hosting.mdx b/content/docs/deployment/self-hosting.mdx index 695f987bd4..46109d8c9f 100644 --- a/content/docs/deployment/self-hosting.mdx +++ b/content/docs/deployment/self-hosting.mdx @@ -49,7 +49,7 @@ The full catalog is in ## Option 1 — Bare Node.js (systemd) -The simplest deployment: Node 18+ and the CLI on a Linux host. +The simplest deployment: Node 22+ and the CLI on a Linux host. ```bash # On the host — no repo clone, just the CLI and your artifact diff --git a/content/docs/deployment/troubleshooting.mdx b/content/docs/deployment/troubleshooting.mdx index 96ff139993..5a7de8228c 100644 --- a/content/docs/deployment/troubleshooting.mdx +++ b/content/docs/deployment/troubleshooting.mdx @@ -317,7 +317,7 @@ Available subpaths: `data`, `api`, `ui`, `system`, `kernel`, `ai`, `automation`, ### What Node.js version is required? -Node.js 18.0.0 or later. The `engines` field in `package.json` enforces this. +Node.js 22.0.0 or later. The `engines` field in `package.json` enforces this. ### What TypeScript version is recommended? diff --git a/content/docs/getting-started/build-with-claude-code.mdx b/content/docs/getting-started/build-with-claude-code.mdx index d479139ebe..96b27abf7e 100644 --- a/content/docs/getting-started/build-with-claude-code.mdx +++ b/content/docs/getting-started/build-with-claude-code.mdx @@ -41,7 +41,7 @@ hand-edits generated glue, and no metadata mistake reaches the browser unchecked | You need | Why | |:---|:---| -| **Node.js 18+** and npm (pnpm / yarn / bun also work) | Runs the scaffolder and the dev server (see [prerequisites](/docs/getting-started#prerequisites)). | +| **Node.js 22+** and npm (pnpm / yarn / bun also work) | Runs the scaffolder and the dev server (see [prerequisites](/docs/getting-started#prerequisites)). | | **[Claude Code](https://claude.com/claude-code)** (or Cursor / Copilot) | Your agent reads `AGENTS.md` + the ObjectStack skills and authors the metadata. | ## 1. Scaffold the project diff --git a/content/docs/getting-started/index.mdx b/content/docs/getting-started/index.mdx index bc8b6b36db..6c5b3dc396 100644 --- a/content/docs/getting-started/index.mdx +++ b/content/docs/getting-started/index.mdx @@ -156,7 +156,7 @@ Before you start, make sure you have the following installed: | Tool | Minimum Version | Check Command | |:---|:---|:---| -| **Node.js** | 18.0.0+ | `node --version` | +| **Node.js** | 22.0.0+ | `node --version` | That's everything the standard path needs — `npx create-objectstack my-app` scaffolds a project with its own TypeScript toolchain and npm scripts. diff --git a/content/docs/getting-started/your-first-project.mdx b/content/docs/getting-started/your-first-project.mdx index af3d89a1d0..889b07c592 100644 --- a/content/docs/getting-started/your-first-project.mdx +++ b/content/docs/getting-started/your-first-project.mdx @@ -22,7 +22,7 @@ without an agent. The two paths produce identical projects. | Tool | Minimum | Check | |:---|:---|:---| -| **Node.js** | 18+ | `node --version` | +| **Node.js** | 22+ | `node --version` | | A package manager | npm 9+ / pnpm 8+ / yarn / bun | `npm --version` | That's all. A standalone project does **not** need pnpm, TypeScript pre-installed, diff --git a/examples/app-todo/README.md b/examples/app-todo/README.md index f20a744af1..16c82b7de4 100644 --- a/examples/app-todo/README.md +++ b/examples/app-todo/README.md @@ -97,7 +97,7 @@ examples/app-todo/ ## 💡 How to Run ### Prerequisites -- Node.js 18+ and pnpm 8+ +- Node.js 22+ and pnpm 8+ - Install from monorepo root: `corepack enable && pnpm install` ### Type Check diff --git a/package.json b/package.json index 6167fe0ddc..cb012b41ed 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "typescript": "^6.0.3" }, "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" }, "packageManager": "pnpm@10.31.0+sha512.e3927388bfaa8078ceb79b748ffc1e8274e84d75163e67bc22e06c0d3aed43dd153151cbf11d7f8301ff4acb98c68bdc5cadf6989532801ffafe3b3e4a63c268", "pnpm": { diff --git a/packages/adapters/hono/package.json b/packages/adapters/hono/package.json index 72f4e5401f..d7c9e275e1 100644 --- a/packages/adapters/hono/package.json +++ b/packages/adapters/hono/package.json @@ -54,6 +54,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/apps/account/package.json b/packages/apps/account/package.json index a77dc47acc..d1e80064b9 100644 --- a/packages/apps/account/package.json +++ b/packages/apps/account/package.json @@ -46,6 +46,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/apps/setup/package.json b/packages/apps/setup/package.json index f8cae83eb1..2ab95b4c61 100644 --- a/packages/apps/setup/package.json +++ b/packages/apps/setup/package.json @@ -46,6 +46,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/apps/studio/package.json b/packages/apps/studio/package.json index 516004f58f..45fea0e7ce 100644 --- a/packages/apps/studio/package.json +++ b/packages/apps/studio/package.json @@ -46,6 +46,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/cli/package.json b/packages/cli/package.json index 2de23d57cf..cb8572dc2a 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -123,6 +123,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/client-react/package.json b/packages/client-react/package.json index 3c8f99dbb5..a29e609ef5 100644 --- a/packages/client-react/package.json +++ b/packages/client-react/package.json @@ -50,6 +50,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/client/package.json b/packages/client/package.json index a7a11340ee..0981901b1e 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -54,6 +54,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/cloud-connection/package.json b/packages/cloud-connection/package.json index 0ddf650c51..c964df8e49 100644 --- a/packages/cloud-connection/package.json +++ b/packages/cloud-connection/package.json @@ -52,6 +52,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/core/package.json b/packages/core/package.json index 1415c8261a..ed1e15a74c 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -57,6 +57,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/create-objectstack/package.json b/packages/create-objectstack/package.json index 9676ab51e2..a825f7bc43 100644 --- a/packages/create-objectstack/package.json +++ b/packages/create-objectstack/package.json @@ -45,6 +45,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/lint/package.json b/packages/lint/package.json index fb6f5fbc00..9054c10058 100644 --- a/packages/lint/package.json +++ b/packages/lint/package.json @@ -53,6 +53,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 53e012ce14..7e9cd91791 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -54,6 +54,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/metadata-core/package.json b/packages/metadata-core/package.json index d22ebea1ae..51ea7a532c 100644 --- a/packages/metadata-core/package.json +++ b/packages/metadata-core/package.json @@ -66,6 +66,6 @@ "access": "public" }, "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/metadata-fs/package.json b/packages/metadata-fs/package.json index f533bf07b2..7873e1aa3a 100644 --- a/packages/metadata-fs/package.json +++ b/packages/metadata-fs/package.json @@ -52,6 +52,6 @@ "access": "public" }, "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/metadata-protocol/package.json b/packages/metadata-protocol/package.json index 9ccaad222f..37d961d44a 100644 --- a/packages/metadata-protocol/package.json +++ b/packages/metadata-protocol/package.json @@ -56,6 +56,6 @@ "access": "public" }, "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/metadata/package.json b/packages/metadata/package.json index 592d882abc..411cd3402f 100644 --- a/packages/metadata/package.json +++ b/packages/metadata/package.json @@ -72,6 +72,6 @@ "access": "public" }, "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/objectql/package.json b/packages/objectql/package.json index 412741fa04..49cf538d43 100644 --- a/packages/objectql/package.json +++ b/packages/objectql/package.json @@ -58,6 +58,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/observability/package.json b/packages/observability/package.json index 5d6c8e1a7f..13023adb78 100644 --- a/packages/observability/package.json +++ b/packages/observability/package.json @@ -50,6 +50,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/platform-objects/package.json b/packages/platform-objects/package.json index 7502b10758..2672bdedd9 100644 --- a/packages/platform-objects/package.json +++ b/packages/platform-objects/package.json @@ -100,6 +100,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/plugins/driver-memory/package.json b/packages/plugins/driver-memory/package.json index 24696a313d..f01d51e085 100644 --- a/packages/plugins/driver-memory/package.json +++ b/packages/plugins/driver-memory/package.json @@ -50,6 +50,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/plugins/driver-mongodb/package.json b/packages/plugins/driver-mongodb/package.json index 409123d743..6125ceda93 100644 --- a/packages/plugins/driver-mongodb/package.json +++ b/packages/plugins/driver-mongodb/package.json @@ -53,6 +53,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/plugins/driver-sql/package.json b/packages/plugins/driver-sql/package.json index e6626c008f..36e80b1dc6 100644 --- a/packages/plugins/driver-sql/package.json +++ b/packages/plugins/driver-sql/package.json @@ -74,6 +74,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/plugins/driver-sqlite-wasm/package.json b/packages/plugins/driver-sqlite-wasm/package.json index 0d408cfca2..1e919bffe9 100644 --- a/packages/plugins/driver-sqlite-wasm/package.json +++ b/packages/plugins/driver-sqlite-wasm/package.json @@ -57,6 +57,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/plugins/plugin-audit/package.json b/packages/plugins/plugin-audit/package.json index b8433c287e..80b904a7bb 100644 --- a/packages/plugins/plugin-audit/package.json +++ b/packages/plugins/plugin-audit/package.json @@ -49,6 +49,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/plugins/plugin-auth/package.json b/packages/plugins/plugin-auth/package.json index f707b859c5..fa51ff4c00 100644 --- a/packages/plugins/plugin-auth/package.json +++ b/packages/plugins/plugin-auth/package.json @@ -59,6 +59,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/plugins/plugin-dev/package.json b/packages/plugins/plugin-dev/package.json index 74f91bf246..541613a86a 100644 --- a/packages/plugins/plugin-dev/package.json +++ b/packages/plugins/plugin-dev/package.json @@ -59,6 +59,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/plugins/plugin-hono-server/package.json b/packages/plugins/plugin-hono-server/package.json index 6d1455abac..da293c9e31 100644 --- a/packages/plugins/plugin-hono-server/package.json +++ b/packages/plugins/plugin-hono-server/package.json @@ -45,6 +45,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/plugins/plugin-security/package.json b/packages/plugins/plugin-security/package.json index 7b8522d0dc..939595e858 100644 --- a/packages/plugins/plugin-security/package.json +++ b/packages/plugins/plugin-security/package.json @@ -51,6 +51,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/rest/package.json b/packages/rest/package.json index 5e15315640..c518d9d951 100644 --- a/packages/rest/package.json +++ b/packages/rest/package.json @@ -58,6 +58,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/runtime/package.json b/packages/runtime/package.json index 56b7e62a6e..7d4461449c 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -73,6 +73,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/services/service-analytics/package.json b/packages/services/service-analytics/package.json index 62fbb1f20e..cc77d0f169 100644 --- a/packages/services/service-analytics/package.json +++ b/packages/services/service-analytics/package.json @@ -51,6 +51,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/services/service-automation/package.json b/packages/services/service-automation/package.json index 4c8360399e..bbb26b831d 100644 --- a/packages/services/service-automation/package.json +++ b/packages/services/service-automation/package.json @@ -50,6 +50,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/services/service-cache/package.json b/packages/services/service-cache/package.json index df78436465..f103b9cb7d 100644 --- a/packages/services/service-cache/package.json +++ b/packages/services/service-cache/package.json @@ -49,6 +49,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/services/service-i18n/package.json b/packages/services/service-i18n/package.json index c875ee0c80..62d6a9f1cb 100644 --- a/packages/services/service-i18n/package.json +++ b/packages/services/service-i18n/package.json @@ -49,6 +49,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/services/service-job/package.json b/packages/services/service-job/package.json index 1db773e0dc..1725857b28 100644 --- a/packages/services/service-job/package.json +++ b/packages/services/service-job/package.json @@ -51,6 +51,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/services/service-knowledge/package.json b/packages/services/service-knowledge/package.json index bc69828290..26e6fdb7a8 100644 --- a/packages/services/service-knowledge/package.json +++ b/packages/services/service-knowledge/package.json @@ -50,6 +50,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/services/service-messaging/package.json b/packages/services/service-messaging/package.json index e273c33d80..12a04261c1 100644 --- a/packages/services/service-messaging/package.json +++ b/packages/services/service-messaging/package.json @@ -49,6 +49,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/services/service-package/package.json b/packages/services/service-package/package.json index 3522d1e649..37d7973f6e 100644 --- a/packages/services/service-package/package.json +++ b/packages/services/service-package/package.json @@ -50,6 +50,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/services/service-queue/package.json b/packages/services/service-queue/package.json index 53b5b28809..965dd1799f 100644 --- a/packages/services/service-queue/package.json +++ b/packages/services/service-queue/package.json @@ -50,6 +50,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/services/service-realtime/package.json b/packages/services/service-realtime/package.json index f9f6cee0c1..c6a2eee59f 100644 --- a/packages/services/service-realtime/package.json +++ b/packages/services/service-realtime/package.json @@ -50,6 +50,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/services/service-settings/package.json b/packages/services/service-settings/package.json index 2f1a6369b3..3e66ea660f 100644 --- a/packages/services/service-settings/package.json +++ b/packages/services/service-settings/package.json @@ -49,6 +49,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/services/service-storage/package.json b/packages/services/service-storage/package.json index c11de60036..3e8e713ab5 100644 --- a/packages/services/service-storage/package.json +++ b/packages/services/service-storage/package.json @@ -63,6 +63,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/spec/package.json b/packages/spec/package.json index b633345d6c..290d986ab9 100644 --- a/packages/spec/package.json +++ b/packages/spec/package.json @@ -238,7 +238,7 @@ } }, "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" }, "publishConfig": { "access": "public" diff --git a/packages/triggers/trigger-record-change/package.json b/packages/triggers/trigger-record-change/package.json index bfc7cf5e55..ca0c8f460b 100644 --- a/packages/triggers/trigger-record-change/package.json +++ b/packages/triggers/trigger-record-change/package.json @@ -51,6 +51,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/triggers/trigger-schedule/package.json b/packages/triggers/trigger-schedule/package.json index ae7fbfe05e..733f6e643a 100644 --- a/packages/triggers/trigger-schedule/package.json +++ b/packages/triggers/trigger-schedule/package.json @@ -51,6 +51,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/types/package.json b/packages/types/package.json index 47e2d59871..0c2c46704f 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -45,6 +45,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/verify/package.json b/packages/verify/package.json index 6d7306c196..c15843d390 100644 --- a/packages/verify/package.json +++ b/packages/verify/package.json @@ -63,6 +63,6 @@ "README.md" ], "engines": { - "node": ">=18.0.0" + "node": ">=22.0.0" } } diff --git a/packages/vscode-objectstack/package.json b/packages/vscode-objectstack/package.json index 50c147208d..00619f1c7e 100644 --- a/packages/vscode-objectstack/package.json +++ b/packages/vscode-objectstack/package.json @@ -12,7 +12,7 @@ }, "engines": { "vscode": "^1.85.0", - "node": ">=18.0.0" + "node": ">=22.0.0" }, "categories": [ "Programming Languages", diff --git a/skills/objectstack-platform/SKILL.md b/skills/objectstack-platform/SKILL.md index 7f9b18b624..9a1afb1441 100644 --- a/skills/objectstack-platform/SKILL.md +++ b/skills/objectstack-platform/SKILL.md @@ -12,7 +12,7 @@ description: > objectstack-query); data lifecycle hooks (beforeInsert / afterUpdate) belong in objectstack-data — only kernel / service-level events live here. license: Apache-2.0 -compatibility: Requires @objectstack/spec 16.x and @objectstack/core 16.x (Zod v4 schemas), Node 18+ +compatibility: Requires @objectstack/spec 16.x and @objectstack/core 16.x (Zod v4 schemas), Node 22+ metadata: author: objectstack-ai version: "1.2"