diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6fda98dd..71d0a1ea 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [20.11, 22] + node-version: [22.19, 24] timeout-minutes: 10 steps: - uses: actions/checkout@v4 diff --git a/CHANGELOG.md b/CHANGELOG.md index f20b1d88..a9d10c79 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,12 @@ each entry calls out what a host has to update. ### Changed +- **Breaking: Node.js 22.19 or newer is required (was 20.11).** Node 20 has + been end of life since April 2026, and newer dependencies such as `undici` + 8 need Node 22.19. Every package's `engines.node` is `>=22.19`, and CI runs + on Node 22.19 and 24. A host on an older Node upgrades Node; nothing else + changes. + - **Claude Code's in-process subagent is no longer refused.** `Task` leaves the `--disallowedTools` list of `CLAUDE_CODE_MCP_HARNESS`. A subagent runs in the same process under the same identity and MCP configuration, so its calls diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 59d3c464..4e0ea274 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -20,7 +20,7 @@ opening a public issue. Requirements: -- Node.js 20.11 or newer (22.5 or newer to run the reference host example); +- Node.js 22.19 or newer; - pnpm 9.15. ```bash diff --git a/README.md b/README.md index 569a01a0..d3d2432c 100644 --- a/README.md +++ b/README.md @@ -67,14 +67,14 @@ The longer argument, with a worked request, is in npm install @aicoo/sharedos ``` -Node.js 20.11 or newer; the packages are ESM-only. The +Node.js 22.19 or newer; the packages are ESM-only. The [quickstart](docs/quickstart.md) is two working programs, the kernel embedded in your process and the same kernel over HTTP, written against the published packages. ### Build from Source -Requirements: Node.js 20.11 or newer and pnpm 9.15. +Requirements: Node.js 22.19 or newer and pnpm 9.15. ```bash git clone https://github.com/systemind-team/SharedOS.git @@ -92,7 +92,7 @@ integration writes those before anything runs. The [reference host](examples/reference-host/README.md) is a working one: a filesystem `files` provider covering all twelve actions, SQLite stores for bounded uses, revocation, namespace settings and audit, and a driver over a live -model. It needs Node.js 22.5 or newer for `node:sqlite`. +model. ## How a turn runs diff --git a/docs/integrations/pact.md b/docs/integrations/pact.md index 0f4aa82d..a4e46484 100644 --- a/docs/integrations/pact.md +++ b/docs/integrations/pact.md @@ -114,7 +114,7 @@ Transport differences cannot alter grants or inject hidden authority. Each tick must include an explicit target-agent execution grant in its isolated world. PACT must also upgrade its runtime from Node 18 to the SharedOS minimum -of Node 20.11 before integration. +of Node 22.19 before integration. ## Failure handling diff --git a/docs/quickstart.md b/docs/quickstart.md index bbc764c0..436b4294 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -8,7 +8,7 @@ in this page requires a clone of this repository. npm install @aicoo/sharedos ``` -Node.js 20.11 or newer. The packages are ESM-only. Every SharedOS package is a +Node.js 22.19 or newer. The packages are ESM-only. Every SharedOS package is a `1.0.0` preview, so pin an exact version if you need reproducibility. ## What you have to bring @@ -25,8 +25,7 @@ three things, and only the first is required to see anything work: The examples below use an in-memory provider so they run immediately. [`examples/reference-host`](https://github.com/systemind-team/SharedOS/tree/main/examples/reference-host) -is the same shape backed by a real filesystem and SQLite; it needs Node.js 22.5 -or newer for `node:sqlite`, where the packages themselves need 20.11. +is the same shape backed by a real filesystem and SQLite. ## Embedded: authorize one file read @@ -322,7 +321,7 @@ const handler = createSharedOSHandler({ mounts anywhere the Fetch API is available: ```ts -// Node 20+, Bun, Deno +// Node 22.19+, Bun, Deno Deno.serve(handler); // Next.js app router: app/api/sharedos/[...path]/route.ts export const GET = handler; diff --git a/docs/release-readiness.md b/docs/release-readiness.md index 7856f4e5..73bdbb28 100644 --- a/docs/release-readiness.md +++ b/docs/release-readiness.md @@ -66,5 +66,5 @@ vulnerability-reporting contact. - A dependency-ordered, `next`-tagged release script with package lint, dry-run, registry collision checks, canonical-content recovery, and a tag-triggered trusted-publishing workflow. -- Apache-2.0 public prerelease metadata, Node 20/22 CI, type checks, tests, +- Apache-2.0 public prerelease metadata, Node 22/24 CI, type checks, tests, build, and executable sender-to-receiver quickstart. diff --git a/examples/network-studio/package.json b/examples/network-studio/package.json index 7d0200d6..8d2bde2c 100644 --- a/examples/network-studio/package.json +++ b/examples/network-studio/package.json @@ -8,6 +8,6 @@ "start": "node server.mjs" }, "engines": { - "node": ">=20.11" + "node": ">=22.19" } } diff --git a/examples/reference-host/README.md b/examples/reference-host/README.md index 62afbcb7..38a99577 100644 --- a/examples/reference-host/README.md +++ b/examples/reference-host/README.md @@ -12,7 +12,8 @@ pnpm example:reference-host Set `ANTHROPIC_API_KEY` to drive the same turn with a live model instead of the scripted driver; `ANTHROPIC_BASE_URL` overrides the endpoint. The example needs -Node.js 22.5 or newer, because the stores use `node:sqlite`. +Node.js 22.19 or newer, as SharedOS does; its stores use the built-in +`node:sqlite`. ## What it implements diff --git a/examples/reference-host/package.json b/examples/reference-host/package.json index 3fee3a29..7e21558d 100644 --- a/examples/reference-host/package.json +++ b/examples/reference-host/package.json @@ -14,6 +14,6 @@ "@aicoo/sharedos-runtime": "workspace:*" }, "engines": { - "node": ">=22.5" + "node": ">=22.19" } } diff --git a/package.json b/package.json index bc1f4663..c53f20b4 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "type": "module", "packageManager": "pnpm@9.15.0", "engines": { - "node": ">=20.11" + "node": ">=22.19" }, "scripts": { "build": "node scripts/clean-generated.mjs && tsc -b --force && node scripts/check-generated.mjs", diff --git a/packages/adapters/package.json b/packages/adapters/package.json index 38b8a864..c0afc3ab 100644 --- a/packages/adapters/package.json +++ b/packages/adapters/package.json @@ -29,7 +29,7 @@ "registry": "https://registry.npmjs.org" }, "engines": { - "node": ">=20.11" + "node": ">=22.19" }, "files": [ "dist/**/*.js", diff --git a/packages/client/package.json b/packages/client/package.json index 8f713ee8..fb4036e3 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -27,7 +27,7 @@ "registry": "https://registry.npmjs.org" }, "engines": { - "node": ">=20.11" + "node": ">=22.19" }, "files": [ "dist/**/*.js", diff --git a/packages/conformance/package.json b/packages/conformance/package.json index 6c559f5d..34a6fd14 100644 --- a/packages/conformance/package.json +++ b/packages/conformance/package.json @@ -27,7 +27,7 @@ "registry": "https://registry.npmjs.org" }, "engines": { - "node": ">=20.11" + "node": ">=22.19" }, "files": [ "dist/**/*.js", diff --git a/packages/contracts/package.json b/packages/contracts/package.json index d7a1b5a4..b85b8068 100644 --- a/packages/contracts/package.json +++ b/packages/contracts/package.json @@ -27,7 +27,7 @@ "registry": "https://registry.npmjs.org" }, "engines": { - "node": ">=20.11" + "node": ">=22.19" }, "files": [ "dist/**/*.js", diff --git a/packages/core/package.json b/packages/core/package.json index 0c647a9f..32828dc6 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -27,7 +27,7 @@ "registry": "https://registry.npmjs.org" }, "engines": { - "node": ">=20.11" + "node": ">=22.19" }, "files": [ "dist/**/*.js", diff --git a/packages/http/package.json b/packages/http/package.json index 02a7e052..dbf19999 100644 --- a/packages/http/package.json +++ b/packages/http/package.json @@ -27,7 +27,7 @@ "registry": "https://registry.npmjs.org" }, "engines": { - "node": ">=20.11" + "node": ">=22.19" }, "files": [ "dist/**/*.js", diff --git a/packages/mcp/package.json b/packages/mcp/package.json index 2b5726a5..38266a0b 100644 --- a/packages/mcp/package.json +++ b/packages/mcp/package.json @@ -27,7 +27,7 @@ "registry": "https://registry.npmjs.org" }, "engines": { - "node": ">=20.11" + "node": ">=22.19" }, "files": [ "dist/**/*.js", diff --git a/packages/os/package.json b/packages/os/package.json index 94896e7a..1a327c24 100644 --- a/packages/os/package.json +++ b/packages/os/package.json @@ -27,7 +27,7 @@ "registry": "https://registry.npmjs.org" }, "engines": { - "node": ">=20.11" + "node": ">=22.19" }, "files": [ "dist/**/*.js", diff --git a/packages/precedent/package.json b/packages/precedent/package.json index b020a518..18f425c1 100644 --- a/packages/precedent/package.json +++ b/packages/precedent/package.json @@ -27,7 +27,7 @@ "registry": "https://registry.npmjs.org" }, "engines": { - "node": ">=20.11" + "node": ">=22.19" }, "files": [ "dist/**/*.js", diff --git a/packages/runtime/package.json b/packages/runtime/package.json index e229bf2a..22a1db73 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -27,7 +27,7 @@ "registry": "https://registry.npmjs.org" }, "engines": { - "node": ">=20.11" + "node": ">=22.19" }, "files": [ "dist/**/*.js", diff --git a/packages/sdk/package.json b/packages/sdk/package.json index fded0bd1..07fc4b96 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -27,7 +27,7 @@ "directory": "packages/sdk" }, "engines": { - "node": ">=20.11" + "node": ">=22.19" }, "files": [ "dist/**/*.js", diff --git a/packages/testkit/package.json b/packages/testkit/package.json index b3463c4b..b21a4ed8 100644 --- a/packages/testkit/package.json +++ b/packages/testkit/package.json @@ -27,7 +27,7 @@ "registry": "https://registry.npmjs.org" }, "engines": { - "node": ">=20.11" + "node": ">=22.19" }, "files": [ "dist/**/*.js",