From e41d31c29e7c1a3ab549e822ab21d5909982cf7b Mon Sep 17 00:00:00 2001 From: Steve Sewell Date: Wed, 9 Sep 2026 10:16:28 -0700 Subject: [PATCH 1/2] chore: publish branch work in .changeset/fix-cli-node-minimum.md, packages/core (2 files) --- .changeset/fix-cli-node-minimum.md | 5 +++++ packages/core/src/cli/index.ts | 19 +++++++++++-------- 2 files changed, 16 insertions(+), 8 deletions(-) create mode 100644 .changeset/fix-cli-node-minimum.md diff --git a/.changeset/fix-cli-node-minimum.md b/.changeset/fix-cli-node-minimum.md new file mode 100644 index 00000000000..0069bbada05 --- /dev/null +++ b/.changeset/fix-cli-node-minimum.md @@ -0,0 +1,5 @@ +--- +"@agent-native/core": patch +--- + +Enforce the package's Node.js 22.22.0 minimum in the CLI before scaffolding. diff --git a/packages/core/src/cli/index.ts b/packages/core/src/cli/index.ts index 29e3442a678..e3b719c85b8 100644 --- a/packages/core/src/cli/index.ts +++ b/packages/core/src/cli/index.ts @@ -28,16 +28,19 @@ try { _version = pkg.version; } catch {} -// Fail fast on unsupported Node versions. `engines.node: ">=22"` is only -// advisory — npx/pnpm merely warn — so without this an older Node (18/20) -// first fails deep inside a scaffold dynamic import with a cryptic -// ERR_MODULE / syntax error that `handleScaffoldImportError` misreports as a -// corrupt npx cache. A clear up-front message saves that whole detour. +// Fail fast on unsupported Node versions. The package engine is only +// advisory — npx/pnpm merely warn — so without this an older Node first fails +// deep inside a scaffold dynamic import with a cryptic ERR_MODULE / syntax +// error that `handleScaffoldImportError` misreports as a corrupt npx cache. const REQUIRED_NODE_MAJOR = 22; -const _nodeMajor = Number(process.versions.node.split(".")[0]); -if (Number.isFinite(_nodeMajor) && _nodeMajor < REQUIRED_NODE_MAJOR) { +const REQUIRED_NODE_MINOR = 22; +const [_nodeMajor, _nodeMinor] = process.versions.node.split(".").map(Number); +const _unsupportedNode = + _nodeMajor < REQUIRED_NODE_MAJOR || + (_nodeMajor === REQUIRED_NODE_MAJOR && _nodeMinor < REQUIRED_NODE_MINOR); +if (_unsupportedNode) { console.error( - `agent-native requires Node.js ${REQUIRED_NODE_MAJOR} or newer, but you're on Node ${process.versions.node}.\n` + + `agent-native requires Node.js ${REQUIRED_NODE_MAJOR}.${REQUIRED_NODE_MINOR}.0 or newer, but you're on Node ${process.versions.node}.\n` + `Upgrade Node (https://nodejs.org) and re-run. With nvm: \`nvm install ${REQUIRED_NODE_MAJOR}\`.`, ); process.exit(1); From 59ff9acc7602bed69ac80c9e9455078b17e5e3e4 Mon Sep 17 00:00:00 2001 From: Steve Sewell Date: Wed, 9 Sep 2026 10:22:57 -0700 Subject: [PATCH 2/2] chore: publish branch work in packages/core (1 files) --- packages/core/src/cli/index.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/core/src/cli/index.ts b/packages/core/src/cli/index.ts index e3b719c85b8..35691eaf7cf 100644 --- a/packages/core/src/cli/index.ts +++ b/packages/core/src/cli/index.ts @@ -34,8 +34,11 @@ try { // error that `handleScaffoldImportError` misreports as a corrupt npx cache. const REQUIRED_NODE_MAJOR = 22; const REQUIRED_NODE_MINOR = 22; -const [_nodeMajor, _nodeMinor] = process.versions.node.split(".").map(Number); +const _nodeVersion = process.versions.node; +const _nodeIsStable = /^\d+\.\d+\.\d+$/.test(_nodeVersion); +const [_nodeMajor, _nodeMinor] = _nodeVersion.split(".").map(Number); const _unsupportedNode = + !_nodeIsStable || _nodeMajor < REQUIRED_NODE_MAJOR || (_nodeMajor === REQUIRED_NODE_MAJOR && _nodeMinor < REQUIRED_NODE_MINOR); if (_unsupportedNode) {