traderclaw-cli 1.0.70 → 1.0.71

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.
@@ -442,12 +442,29 @@ function runCommandWithEvents(cmd, args = [], opts = {}) {
442
442
  });
443
443
  }
444
444
 
445
+ /**
446
+ * Install or upgrade the global OpenClaw CLI. We always run npm even when `openclaw` is already
447
+ * on PATH: bundled plugin manifests track a minimum OpenClaw version (e.g. >=2026.4.8). A stale
448
+ * global from an older install causes `openclaw plugins install` to fail config validation with
449
+ * "plugin requires OpenClaw >=… but this host is …".
450
+ */
445
451
  async function installOpenClawPlatform() {
446
- if (commandExists("openclaw")) {
447
- return { alreadyInstalled: true, version: getCommandOutput("openclaw --version") };
452
+ const hadOpenclaw = commandExists("openclaw");
453
+ const previousVersion = hadOpenclaw ? getCommandOutput("openclaw --version") : null;
454
+ await runCommandWithEvents("npm", ["install", "-g", "--registry", "https://registry.npmjs.org/", "openclaw@latest"]);
455
+ const available = commandExists("openclaw");
456
+ const version = available ? getCommandOutput("openclaw --version") : null;
457
+ if (!available) {
458
+ throw new Error("npm install -g openclaw@latest finished but `openclaw` is not available on PATH");
448
459
  }
449
- await runCommandWithEvents("npm", ["install", "-g", "openclaw"]);
450
- return { alreadyInstalled: false, installed: true, available: commandExists("openclaw") };
460
+ return {
461
+ alreadyInstalled: hadOpenclaw,
462
+ installed: true,
463
+ upgraded: hadOpenclaw,
464
+ previousVersion,
465
+ version,
466
+ available: true,
467
+ };
451
468
  }
452
469
 
453
470
  function isNpmGlobalBinConflict(err, cliName) {
@@ -1961,7 +1978,7 @@ export class InstallerStepEngine {
1961
1978
  }
1962
1979
 
1963
1980
  if (!this.options.skipInstallOpenClaw) {
1964
- await this.runStep("install_openclaw", "Installing OpenClaw platform", async () => installOpenClawPlatform());
1981
+ await this.runStep("install_openclaw", "Installing or upgrading OpenClaw platform", async () => installOpenClawPlatform());
1965
1982
  }
1966
1983
  await this.runStep("configure_llm", "Configuring required OpenClaw LLM provider", async () => this.configureLlmStep());
1967
1984
  if (!this.options.skipInstallPlugin) {
@@ -1807,7 +1807,7 @@ async function cmdPrecheck(args) {
1807
1807
  } else if (opts.mode === "allow-install") {
1808
1808
  log.info("Installing openclaw (allow-install mode)");
1809
1809
  try {
1810
- execSync("npm install -g openclaw", { stdio: "ignore" });
1810
+ execSync("npm install -g --registry https://registry.npmjs.org/ openclaw@latest", { stdio: "ignore" });
1811
1811
  if (commandExists("openclaw")) log.pass("openclaw installed successfully");
1812
1812
  else log.fail("openclaw install completed but command is still missing");
1813
1813
  } catch {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "traderclaw-cli",
3
- "version": "1.0.70",
3
+ "version": "1.0.71",
4
4
  "description": "Global TraderClaw CLI (install --wizard, setup, precheck). Installs solana-traderclaw as a dependency for OpenClaw plugin files.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -17,7 +17,7 @@
17
17
  "node": ">=22"
18
18
  },
19
19
  "dependencies": {
20
- "solana-traderclaw": "^1.0.70"
20
+ "solana-traderclaw": "^1.0.71"
21
21
  },
22
22
  "keywords": [
23
23
  "traderclaw",