overlord-cli 3.20.0 → 3.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -12,6 +12,8 @@ Install it globally so the `ovld` and `overlord` commands are available on your
12
12
  npm install -g overlord-cli
13
13
  ```
14
14
 
15
+ Use Node.js 20 or newer for every CLI install or update.
16
+
15
17
  ## Usage
16
18
 
17
19
  ```bash
@@ -38,7 +40,7 @@ ovld doctor
38
40
 
39
41
  ## Requirements
40
42
 
41
- - Node.js 24 or newer
43
+ - Node.js 20 or newer
42
44
  - Access to an Overlord instance when using authenticated commands
43
45
 
44
46
  ## Commands
@@ -9,6 +9,18 @@ import { runTicketCommand } from './ticket.mjs';
9
9
  import { runTicketsCommand } from './tickets.mjs';
10
10
  import { runVersionCommand } from './version.mjs';
11
11
 
12
+ const MIN_NODE_MAJOR = 20;
13
+
14
+ function assertSupportedNodeVersion() {
15
+ const major = Number.parseInt(process.versions.node.split('.')[0] ?? '', 10);
16
+ if (Number.isNaN(major) || major < MIN_NODE_MAJOR) {
17
+ throw new Error(
18
+ `Overlord CLI requires Node.js ${MIN_NODE_MAJOR} or newer. Found ${process.version}.\n` +
19
+ `Update Node before running \`ovld\`. If you installed the desktop wrapper, you can also point it at a newer runtime with \`OVLD_NODE_BIN=/path/to/node\`.`
20
+ );
21
+ }
22
+ }
23
+
12
24
  function printHelp(primaryCommand) {
13
25
  console.log(`Overlord CLI
14
26
 
@@ -52,6 +64,7 @@ Run a subcommand with --help for more detail.
52
64
  }
53
65
 
54
66
  export async function runCli({ primaryCommand }) {
67
+ assertSupportedNodeVersion();
55
68
  const [command, ...rest] = process.argv.slice(2);
56
69
 
57
70
  if (!command || command === 'help' || command === '--help' || command === '-h') {
@@ -32,6 +32,7 @@ const CODEX_TARGET_RULES = path.join(os.homedir(), '.codex', 'rules', 'default.r
32
32
  const CODEX_LEGACY_AGENTS = path.join(os.homedir(), '.codex', 'AGENTS.md');
33
33
  const CODEX_RULES_START = '# overlord:permissions:start';
34
34
  const CODEX_RULES_END = '# overlord:permissions:end';
35
+ const REQUIRED_NODE_MAJOR = 20;
35
36
 
36
37
  const supportedAgents = ['claude', 'codex', 'cursor', 'gemini', 'opencode'];
37
38
 
@@ -971,6 +972,10 @@ function doctorAgent(agent) {
971
972
  return true;
972
973
  }
973
974
 
975
+ function currentNodeMajor() {
976
+ return Number.parseInt(process.versions.node.split('.')[0] ?? '', 10);
977
+ }
978
+
974
979
  // ---------------------------------------------------------------------------
975
980
  // Public API
976
981
  // ---------------------------------------------------------------------------
@@ -1033,6 +1038,16 @@ export async function runSetupCommand(args) {
1033
1038
  export async function runDoctorCommand() {
1034
1039
  console.log('Overlord agent bundle status:\n');
1035
1040
  let allOk = true;
1041
+ const nodeMajor = currentNodeMajor();
1042
+ if (Number.isNaN(nodeMajor) || nodeMajor < REQUIRED_NODE_MAJOR) {
1043
+ console.log(
1044
+ ` ✗ node: unsupported runtime (${process.version}; requires Node.js ${REQUIRED_NODE_MAJOR}+)`
1045
+ );
1046
+ allOk = false;
1047
+ } else {
1048
+ console.log(` ✓ node: ${process.version}`);
1049
+ }
1050
+ console.log();
1036
1051
  for (const agent of supportedAgents) {
1037
1052
  if (!doctorAgent(agent)) allOk = false;
1038
1053
  }
@@ -1046,6 +1061,8 @@ export async function runDoctorCommand() {
1046
1061
  if (latestCliVersion) {
1047
1062
  console.log();
1048
1063
  console.log(`CLI update available: ${latestCliVersion}`);
1049
- console.log('Run `npm install -g overlord-cli@latest` to update.');
1064
+ console.log(
1065
+ `Update with Node.js ${REQUIRED_NODE_MAJOR}+ and reinstall the installed CLI wrapper if needed.`
1066
+ );
1050
1067
  }
1051
1068
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overlord-cli",
3
- "version": "3.20.0",
3
+ "version": "3.21.0",
4
4
  "description": "Overlord CLI — launch AI agents on tickets from anywhere",
5
5
  "type": "module",
6
6
  "bin": {
@@ -15,7 +15,7 @@
15
15
  "plugins/"
16
16
  ],
17
17
  "engines": {
18
- "node": ">=24"
18
+ "node": ">=20"
19
19
  },
20
20
  "keywords": [
21
21
  "overlord",