traderclaw-cli 1.0.82 → 1.0.84

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.
@@ -1082,7 +1082,7 @@ function configureGatewayScheduling(modeConfig, configPath = CONFIG_FILE) {
1082
1082
  if (typeof console !== "undefined") {
1083
1083
  console.warn(
1084
1084
  "[traderclaw] QMD binary not found. Memory engine will fall back to SQLite (no vector search, no temporal decay, no MMR).\n" +
1085
- "Install QMD: bun install -g @tobilu/qmd\n" +
1085
+ "Install QMD: npm install -g @tobilu/qmd\n" +
1086
1086
  "Then restart the gateway: openclaw gateway restart"
1087
1087
  );
1088
1088
  }
@@ -1791,6 +1791,11 @@ function verifyInstallation(modeConfig, apiKey) {
1791
1791
  ok: heartbeatInWorkspace,
1792
1792
  note: heartbeatInWorkspace ? workspaceRoot : `expected ${join(workspaceRoot, "HEARTBEAT.md")}`,
1793
1793
  },
1794
+ {
1795
+ label: "QMD memory engine (vector search)",
1796
+ ok: commandExists("qmd"),
1797
+ note: "not installed — memory uses keyword search only. Install: npm install -g @tobilu/qmd",
1798
+ },
1794
1799
  ];
1795
1800
  }
1796
1801
 
@@ -2264,6 +2269,32 @@ export class InstallerStepEngine {
2264
2269
  await this.runStep("openclaw_global_deps", "Ensuring OpenClaw global package dependencies", async () =>
2265
2270
  ensureOpenClawGlobalPackageDependencies(),
2266
2271
  );
2272
+ await this.runStep("install_qmd", "Installing QMD memory engine (vector search)", async () => {
2273
+ if (commandExists("qmd")) {
2274
+ const ver = getCommandOutput("qmd --version");
2275
+ this.emitLog("install_qmd", "info", `QMD already installed: ${ver}`);
2276
+ return { alreadyInstalled: true, version: ver };
2277
+ }
2278
+ this.emitLog("install_qmd", "info", "Installing @tobilu/qmd globally for vector search memory...");
2279
+ try {
2280
+ await runCommandWithEvents("npm", ["install", "-g", "--ignore-scripts", "--registry", "https://registry.npmjs.org/", "@tobilu/qmd"], {
2281
+ onEvent: (evt) => this.emitLog("install_qmd", evt.type === "stderr" ? "warn" : "info", evt.text, evt.urls || []),
2282
+ });
2283
+ } catch (err) {
2284
+ this.emitLog(
2285
+ "install_qmd",
2286
+ "warn",
2287
+ `QMD install failed (non-fatal): ${err?.message || err}. Memory will use keyword search only. You can install manually later: npm install -g @tobilu/qmd`,
2288
+ );
2289
+ return { installed: false, error: err?.message || String(err) };
2290
+ }
2291
+ const available = commandExists("qmd");
2292
+ const ver = available ? getCommandOutput("qmd --version") : null;
2293
+ if (!available) {
2294
+ this.emitLog("install_qmd", "warn", "QMD installed but not on PATH. Memory will use keyword search only.");
2295
+ }
2296
+ return { installed: available, version: ver };
2297
+ });
2267
2298
  await this.runStep(
2268
2299
  "activate_openclaw_plugin",
2269
2300
  "Installing and enabling TraderClaw inside OpenClaw",
@@ -2371,6 +2402,17 @@ export class InstallerStepEngine {
2371
2402
  this.emitLog("gateway_scheduling", "warn", "Removed legacy 'cron.jobs' from openclaw.json to keep config validation compatible.");
2372
2403
  }
2373
2404
  this.emitLog("gateway_scheduling", "info", `Webhook hooks: ${result.hooksConfigured}`);
2405
+ if (!result.qmdAvailable) {
2406
+ this.emitLog(
2407
+ "gateway_scheduling",
2408
+ "warn",
2409
+ "QMD binary not found — memory will use SQLite keyword search only (no vector search, no temporal decay, no MMR). " +
2410
+ "Vector search makes the agent's memory significantly more effective. " +
2411
+ "Install: npm install -g @tobilu/qmd — then restart the gateway: openclaw gateway restart",
2412
+ );
2413
+ } else {
2414
+ this.emitLog("gateway_scheduling", "info", `QMD memory engine: ${result.qmdVersion || "installed"}`);
2415
+ }
2374
2416
  const restart = await restartGateway();
2375
2417
  return { ...result, restart };
2376
2418
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "traderclaw-cli",
3
- "version": "1.0.82",
3
+ "version": "1.0.84",
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.82"
20
+ "solana-traderclaw": "^1.0.84"
21
21
  },
22
22
  "keywords": [
23
23
  "traderclaw",