openclaw-channel-dmwork 0.5.20-dev.c2f67f45 → 0.5.20-dev.e09dddd5

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.
@@ -4,7 +4,7 @@
4
4
  * argument arrays to avoid shell-quoting issues.
5
5
  */
6
6
  import { execFileSync, execSync } from "node:child_process";
7
- import { readFileSync, writeFileSync, copyFileSync, existsSync } from "node:fs";
7
+ import { readFileSync, writeFileSync, copyFileSync, existsSync, rmSync, readdirSync, statSync, renameSync } from "node:fs";
8
8
  import { homedir } from "node:os";
9
9
  import { resolve } from "node:path";
10
10
  /**
@@ -16,6 +16,7 @@ import { resolve } from "node:path";
16
16
  */
17
17
  function findGlobalOpenclaw() {
18
18
  // Strategy 1: use "which -a" (Unix) or "where" (Windows) to find all openclaw paths
19
+ // Skip: _npx (npx cache), npx-cache, node_modules (project-local devDependency)
19
20
  for (const cmd of ["which -a openclaw", "where openclaw"]) {
20
21
  try {
21
22
  const output = execSync(cmd, {
@@ -25,7 +26,10 @@ function findGlobalOpenclaw() {
25
26
  const paths = output
26
27
  .split(/\r?\n/)
27
28
  .map((p) => p.trim())
28
- .filter((p) => p.length > 0 && !p.includes("_npx") && !p.includes("npx-cache"));
29
+ .filter((p) => p.length > 0 &&
30
+ !p.includes("_npx") &&
31
+ !p.includes("npx-cache") &&
32
+ !p.includes("node_modules"));
29
33
  if (paths.length > 0)
30
34
  return paths[0];
31
35
  }
@@ -58,7 +62,12 @@ function expandHome(p) {
58
62
  // Config helpers
59
63
  // ---------------------------------------------------------------------------
60
64
  export function getConfigFilePath() {
61
- return execFileSync(OPENCLAW, ["config", "file"], { encoding: "utf-8" }).trim();
65
+ const out = execFileSync(OPENCLAW, ["config", "file"], { encoding: "utf-8" });
66
+ // openclaw may prepend warnings/box-drawing to stdout; extract the actual path
67
+ // The path is typically the last non-empty line containing openclaw.json
68
+ const lines = out.split(/\r?\n/).map((l) => l.trim()).filter((l) => l.length > 0);
69
+ const pathLine = lines.find((l) => l.endsWith("openclaw.json")) ?? lines[lines.length - 1];
70
+ return pathLine ?? out.trim();
62
71
  }
63
72
  export function configGet(path) {
64
73
  try {
@@ -115,13 +124,50 @@ export function configUnset(path) {
115
124
  // ---------------------------------------------------------------------------
116
125
  // Plugin helpers
117
126
  // ---------------------------------------------------------------------------
127
+ /**
128
+ * Check if an error indicates an unsupported CLI option.
129
+ * Checks stderr/stdout/message across different Node versions and shells.
130
+ */
131
+ function isUnsupportedOptionError(err) {
132
+ const sources = [
133
+ err?.stderr?.toString?.(),
134
+ err?.stdout?.toString?.(),
135
+ err?.message,
136
+ String(err),
137
+ ];
138
+ return sources.some((s) => s && (/unknown option|unrecognized option/i.test(s)));
139
+ }
118
140
  export function pluginsInstall(spec, quiet, force) {
119
- const args = ["plugins", "install", spec, "--dangerously-force-unsafe-install"];
120
- if (force)
121
- args.push("--force");
122
- execFileSync(OPENCLAW, args, {
123
- stdio: quiet ? ["pipe", "pipe", "pipe"] : "inherit",
124
- });
141
+ const baseArgs = ["plugins", "install", spec];
142
+ const stdioOpt = quiet
143
+ ? ["pipe", "pipe", "pipe"]
144
+ : "inherit";
145
+ // 3-layer degradation for old openclaw versions:
146
+ // 1. --force --dangerously-force-unsafe-install (newest openclaw)
147
+ // 2. --force (mid-age openclaw)
148
+ // 3. bare install (oldest openclaw)
149
+ const attempts = force
150
+ ? [
151
+ [...baseArgs, "--force", "--dangerously-force-unsafe-install"],
152
+ [...baseArgs, "--force"],
153
+ baseArgs,
154
+ ]
155
+ : [
156
+ [...baseArgs, "--dangerously-force-unsafe-install"],
157
+ baseArgs,
158
+ ];
159
+ for (let i = 0; i < attempts.length; i++) {
160
+ try {
161
+ execFileSync(OPENCLAW, attempts[i], { stdio: stdioOpt });
162
+ return;
163
+ }
164
+ catch (err) {
165
+ if (isUnsupportedOptionError(err) && i < attempts.length - 1) {
166
+ continue; // try next degradation level
167
+ }
168
+ throw err;
169
+ }
170
+ }
125
171
  }
126
172
  export function pluginsUpdate(id, quiet) {
127
173
  execFileSync(OPENCLAW, ["plugins", "update", id], {
@@ -214,7 +260,7 @@ export function getOpenClawVersion() {
214
260
  */
215
261
  export function saveChannelConfigFromFile() {
216
262
  try {
217
- const configPath = expandHome(getConfigFilePath());
263
+ const configPath = getConfigFilePathSafe();
218
264
  const raw = readFileSync(configPath, "utf-8");
219
265
  const cfg = JSON.parse(raw);
220
266
  return cfg?.channels?.dmwork ?? null;
@@ -229,7 +275,7 @@ export function saveChannelConfigFromFile() {
229
275
  * Creates a .bak backup before writing.
230
276
  */
231
277
  export function restoreChannelConfigToFile(dmworkConfig) {
232
- const configPath = expandHome(getConfigFilePath());
278
+ const configPath = getConfigFilePathSafe();
233
279
  // Backup
234
280
  copyFileSync(configPath, configPath + ".bak");
235
281
  // Read, merge, write
@@ -238,7 +284,7 @@ export function restoreChannelConfigToFile(dmworkConfig) {
238
284
  if (!cfg.channels)
239
285
  cfg.channels = {};
240
286
  cfg.channels.dmwork = dmworkConfig;
241
- writeFileSync(configPath, JSON.stringify(cfg, null, 2), "utf-8");
287
+ writeConfigAtomic(cfg);
242
288
  }
243
289
  /**
244
290
  * Remove channels.dmwork directly from the JSON file.
@@ -250,7 +296,7 @@ export function restoreChannelConfigToFile(dmworkConfig) {
250
296
  * Falls back to the standard default when CLI is unavailable
251
297
  * (e.g. during uninstall when config validation fails).
252
298
  */
253
- function getConfigFilePathSafe() {
299
+ export function getConfigFilePathSafe() {
254
300
  try {
255
301
  return expandHome(getConfigFilePath());
256
302
  }
@@ -262,11 +308,10 @@ export function removeChannelConfigFromFile() {
262
308
  try {
263
309
  const configPath = getConfigFilePathSafe();
264
310
  copyFileSync(configPath, configPath + ".bak");
265
- const raw = readFileSync(configPath, "utf-8");
266
- const cfg = JSON.parse(raw);
267
- if (cfg.channels?.dmwork) {
311
+ const cfg = readConfigFromFile();
312
+ if (cfg?.channels?.dmwork) {
268
313
  delete cfg.channels.dmwork;
269
- writeFileSync(configPath, JSON.stringify(cfg, null, 2), "utf-8");
314
+ writeConfigAtomic(cfg);
270
315
  }
271
316
  }
272
317
  catch {
@@ -307,10 +352,369 @@ export function removeOrphanedBindingsFromFile(channel, validAccountIds) {
307
352
  // Keep only if accountId is in valid list (or no accountId specified)
308
353
  return !b.match.accountId || validAccountIds.includes(b.match.accountId);
309
354
  });
310
- writeFileSync(configPath, JSON.stringify(cfg, null, 2), "utf-8");
355
+ writeConfigAtomic(cfg);
311
356
  }
312
357
  catch {
313
358
  // best effort
314
359
  }
315
360
  }
361
+ // ---------------------------------------------------------------------------
362
+ // Legacy plugin cleanup
363
+ // ---------------------------------------------------------------------------
364
+ const LEGACY_PLUGIN_ID = "dmwork";
365
+ /**
366
+ * Detect and clean up legacy DMWork plugin installations that conflict
367
+ * with the current openclaw-channel-dmwork plugin.
368
+ *
369
+ * Known legacy artifacts:
370
+ * - ~/.openclaw/extensions/dmwork/ (old plugin directory, id="dmwork")
371
+ * - plugins.entries.dmwork in openclaw.json
372
+ *
373
+ * Returns a list of actions taken (for logging).
374
+ */
375
+ export function cleanupLegacyPlugin() {
376
+ const actions = [];
377
+ // 1. Check if legacy plugin directory exists
378
+ const legacyDir = resolve(getConfigFilePathSafe().replace(/openclaw\.json$/, ""), "extensions", LEGACY_PLUGIN_ID);
379
+ if (existsSync(legacyDir)) {
380
+ // Try to uninstall via openclaw CLI first (removes entries/installs/allow)
381
+ try {
382
+ execFileSync(OPENCLAW, ["plugins", "uninstall", LEGACY_PLUGIN_ID, "--force", "--keep-files"], {
383
+ stdio: ["pipe", "pipe", "pipe"],
384
+ });
385
+ actions.push(`Unregistered legacy plugin "${LEGACY_PLUGIN_ID}"`);
386
+ }
387
+ catch {
388
+ // May fail if plugin not in registry, clean up config manually
389
+ }
390
+ // Remove legacy directory
391
+ try {
392
+ rmSync(legacyDir, { recursive: true, force: true });
393
+ actions.push(`Removed legacy directory: ${legacyDir}`);
394
+ }
395
+ catch {
396
+ actions.push(`Warning: could not remove ${legacyDir}`);
397
+ }
398
+ }
399
+ // 2. Check for stale config entries (in case uninstall didn't clean them)
400
+ try {
401
+ const cfg = readConfigFromFile();
402
+ if (cfg?.plugins?.entries?.[LEGACY_PLUGIN_ID]) {
403
+ const configPath = getConfigFilePathSafe();
404
+ copyFileSync(configPath, configPath + ".bak");
405
+ delete cfg.plugins.entries[LEGACY_PLUGIN_ID];
406
+ // Also clean installs and allow
407
+ if (cfg.plugins?.installs?.[LEGACY_PLUGIN_ID]) {
408
+ delete cfg.plugins.installs[LEGACY_PLUGIN_ID];
409
+ }
410
+ if (Array.isArray(cfg.plugins?.allow)) {
411
+ cfg.plugins.allow = cfg.plugins.allow.filter((id) => id !== LEGACY_PLUGIN_ID);
412
+ }
413
+ writeConfigAtomic(cfg);
414
+ actions.push(`Cleaned legacy entries from openclaw.json`);
415
+ }
416
+ }
417
+ catch {
418
+ // best effort
419
+ }
420
+ return actions;
421
+ }
422
+ /**
423
+ * Clean up stale openclaw-channel-dmwork directory that is not registered
424
+ * in plugins.installs (orphaned from a failed previous install).
425
+ *
426
+ * Only removes the directory if ALL of these are true:
427
+ * 1. The directory exists
428
+ * 2. pluginsInspect returns null (openclaw doesn't recognize it)
429
+ * 3. plugins.installs has no record for openclaw-channel-dmwork
430
+ */
431
+ export function cleanupStalePluginDir() {
432
+ const actions = [];
433
+ const extensionsDir = getConfigFilePathSafe().replace(/openclaw\.json$/, "extensions");
434
+ const pluginDir = resolve(extensionsDir, "openclaw-channel-dmwork");
435
+ if (!existsSync(pluginDir))
436
+ return actions;
437
+ // Check if openclaw recognizes it
438
+ const inspect = pluginsInspect("openclaw-channel-dmwork");
439
+ if (inspect?.plugin)
440
+ return actions; // recognized, don't touch
441
+ // Check if it's in installs registry
442
+ try {
443
+ const cfg = readConfigFromFile();
444
+ if (cfg?.plugins?.installs?.["openclaw-channel-dmwork"]) {
445
+ return actions; // has install record, might just be inspect anomaly
446
+ }
447
+ }
448
+ catch { /* proceed with cleanup */ }
449
+ // All three conditions met: exists + not recognized + not in registry → stale
450
+ try {
451
+ rmSync(pluginDir, { recursive: true, force: true });
452
+ actions.push(`Removed stale plugin directory: ${pluginDir}`);
453
+ }
454
+ catch {
455
+ actions.push(`Warning: could not remove stale directory: ${pluginDir}`);
456
+ }
457
+ return actions;
458
+ }
459
+ /**
460
+ * Clean up stale openclaw-install-stage directories that belong to DMWork.
461
+ * Only removes directories that:
462
+ * 1. Match .openclaw-install-stage-* pattern
463
+ * 2. Are older than 10 minutes (not a current installation)
464
+ * 3. Contain a package.json with name "openclaw-channel-dmwork"
465
+ */
466
+ export function cleanupStaleStageDirectories() {
467
+ const actions = [];
468
+ const extensionsDir = getConfigFilePathSafe().replace(/openclaw\.json$/, "extensions");
469
+ try {
470
+ const entries = readdirSync(extensionsDir);
471
+ const now = Date.now();
472
+ const TEN_MINUTES = 10 * 60 * 1000;
473
+ for (const entry of entries) {
474
+ if (!entry.startsWith(".openclaw-install-stage-"))
475
+ continue;
476
+ const stagePath = resolve(extensionsDir, entry);
477
+ try {
478
+ const stat = statSync(stagePath);
479
+ if (!stat.isDirectory())
480
+ continue;
481
+ if (now - stat.mtimeMs < TEN_MINUTES)
482
+ continue; // too recent, skip
483
+ // Check if it's DMWork's stage directory
484
+ const pkgPath = resolve(stagePath, "package", "package.json");
485
+ const altPkgPath = resolve(stagePath, "package.json");
486
+ let isDmwork = false;
487
+ for (const p of [pkgPath, altPkgPath]) {
488
+ try {
489
+ const pkg = JSON.parse(readFileSync(p, "utf-8"));
490
+ if (pkg.name === "openclaw-channel-dmwork") {
491
+ isDmwork = true;
492
+ break;
493
+ }
494
+ }
495
+ catch { /* try next */ }
496
+ }
497
+ if (!isDmwork)
498
+ continue; // not ours, don't touch
499
+ rmSync(stagePath, { recursive: true, force: true });
500
+ actions.push(`Removed stale stage directory: ${entry}`);
501
+ }
502
+ catch { /* skip this entry */ }
503
+ }
504
+ }
505
+ catch { /* best effort */ }
506
+ return actions;
507
+ }
508
+ // ---------------------------------------------------------------------------
509
+ // Atomic config write
510
+ // ---------------------------------------------------------------------------
511
+ /**
512
+ * Write openclaw.json atomically: write to .tmp then rename.
513
+ * Prevents gateway watcher from reading half-written/truncated JSON.
514
+ */
515
+ export function writeConfigAtomic(cfg) {
516
+ const configPath = getConfigFilePathSafe();
517
+ const tmpPath = configPath + ".tmp";
518
+ writeFileSync(tmpPath, JSON.stringify(cfg, null, 2), "utf-8");
519
+ renameSync(tmpPath, configPath);
520
+ }
521
+ export function detectScenario() {
522
+ const cfg = readConfigFromFile();
523
+ const extDir = getConfigFilePathSafe().replace(/openclaw\.json$/, "extensions");
524
+ const hasLegacyDir = existsSync(resolve(extDir, "dmwork"));
525
+ const hasLegacyEntries = Boolean(cfg?.plugins?.entries?.["dmwork"]);
526
+ const hasLegacyInstalls = Boolean(cfg?.plugins?.installs?.["dmwork"]);
527
+ const hasLegacy = hasLegacyDir || hasLegacyEntries || hasLegacyInstalls;
528
+ const hasNewDir = existsSync(resolve(extDir, "openclaw-channel-dmwork"));
529
+ const hasNewEntries = Boolean(cfg?.plugins?.entries?.["openclaw-channel-dmwork"]);
530
+ const hasNewInstalls = Boolean(cfg?.plugins?.installs?.["openclaw-channel-dmwork"]);
531
+ const inspectOk = Boolean(pluginsInspect("openclaw-channel-dmwork")?.plugin);
532
+ const isHealthy = inspectOk || (hasNewDir && hasNewEntries && hasNewInstalls);
533
+ const hasNewPartial = (hasNewDir || hasNewEntries || hasNewInstalls) && !isHealthy;
534
+ const hasDmworkChannel = Boolean(cfg?.channels?.dmwork);
535
+ if (hasLegacy)
536
+ return "legacy";
537
+ if (isHealthy)
538
+ return "update";
539
+ if (hasNewPartial)
540
+ return "broken";
541
+ if (hasDmworkChannel)
542
+ return "deadlock";
543
+ return "fresh";
544
+ }
545
+ export function isHealthyInstall() {
546
+ const cfg = readConfigFromFile();
547
+ const extDir = getConfigFilePathSafe().replace(/openclaw\.json$/, "extensions");
548
+ const hasNewDir = existsSync(resolve(extDir, "openclaw-channel-dmwork"));
549
+ const hasNewEntries = Boolean(cfg?.plugins?.entries?.["openclaw-channel-dmwork"]);
550
+ const hasNewInstalls = Boolean(cfg?.plugins?.installs?.["openclaw-channel-dmwork"]);
551
+ const inspectOk = Boolean(pluginsInspect("openclaw-channel-dmwork")?.plugin);
552
+ return inspectOk || (hasNewDir && hasNewEntries && hasNewInstalls);
553
+ }
554
+ export function ensurePluginsAllow() {
555
+ try {
556
+ const cfg = readConfigFromFile();
557
+ if (!cfg?.plugins?.allow || !Array.isArray(cfg.plugins.allow))
558
+ return;
559
+ if (cfg.plugins.allow.includes("openclaw-channel-dmwork"))
560
+ return;
561
+ cfg.plugins.allow.push("openclaw-channel-dmwork");
562
+ writeConfigAtomic(cfg);
563
+ }
564
+ catch { /* best effort */ }
565
+ }
566
+ // ---------------------------------------------------------------------------
567
+ // pluginsUpdateCompat
568
+ // ---------------------------------------------------------------------------
569
+ export function pluginsUpdateCompat(id, tag, quiet) {
570
+ const stdioOpt = quiet
571
+ ? ["pipe", "pipe", "pipe"]
572
+ : "inherit";
573
+ try {
574
+ execFileSync(OPENCLAW, ["plugins", "update", id], { stdio: stdioOpt });
575
+ }
576
+ catch {
577
+ pluginsInstall(`${id}@${tag}`, quiet, true);
578
+ }
579
+ }
580
+ // ---------------------------------------------------------------------------
581
+ // Legacy migration helpers
582
+ // ---------------------------------------------------------------------------
583
+ export function renameLegacyDir() {
584
+ const extDir = getConfigFilePathSafe().replace(/openclaw\.json$/, "extensions");
585
+ const legacyDir = resolve(extDir, "dmwork");
586
+ const backupDir = resolve(extDir, ".dmwork-backup");
587
+ if (!existsSync(legacyDir))
588
+ return false;
589
+ try {
590
+ if (existsSync(backupDir))
591
+ rmSync(backupDir, { recursive: true, force: true });
592
+ renameSync(legacyDir, backupDir);
593
+ return true;
594
+ }
595
+ catch {
596
+ return false;
597
+ }
598
+ }
599
+ export function restoreLegacyDir() {
600
+ const extDir = getConfigFilePathSafe().replace(/openclaw\.json$/, "extensions");
601
+ const legacyDir = resolve(extDir, "dmwork");
602
+ const backupDir = resolve(extDir, ".dmwork-backup");
603
+ if (!existsSync(backupDir))
604
+ return;
605
+ try {
606
+ if (existsSync(legacyDir))
607
+ rmSync(legacyDir, { recursive: true, force: true });
608
+ renameSync(backupDir, legacyDir);
609
+ }
610
+ catch { /* best effort */ }
611
+ }
612
+ export function deleteLegacyBackup() {
613
+ const extDir = getConfigFilePathSafe().replace(/openclaw\.json$/, "extensions");
614
+ const backupDir = resolve(extDir, ".dmwork-backup");
615
+ if (existsSync(backupDir)) {
616
+ try {
617
+ rmSync(backupDir, { recursive: true, force: true });
618
+ }
619
+ catch { /* best effort */ }
620
+ }
621
+ }
622
+ export function removeLegacyFromConfig() {
623
+ try {
624
+ const cfg = readConfigFromFile();
625
+ if (!cfg)
626
+ return;
627
+ if (cfg.plugins?.entries?.["dmwork"])
628
+ delete cfg.plugins.entries["dmwork"];
629
+ if (cfg.plugins?.installs?.["dmwork"])
630
+ delete cfg.plugins.installs["dmwork"];
631
+ if (Array.isArray(cfg.plugins?.allow)) {
632
+ cfg.plugins.allow = cfg.plugins.allow.filter((id) => id !== "dmwork");
633
+ }
634
+ if (cfg.channels?.dmwork)
635
+ delete cfg.channels.dmwork;
636
+ writeConfigAtomic(cfg);
637
+ }
638
+ catch { /* best effort */ }
639
+ }
640
+ export function saveChannelConfigToDisk() {
641
+ try {
642
+ const backupPath = getConfigFilePathSafe().replace(/openclaw\.json$/, "channels-dmwork-backup.json");
643
+ const cfg = readConfigFromFile();
644
+ const dmwork = cfg?.channels?.dmwork;
645
+ if (dmwork) {
646
+ writeFileSync(backupPath, JSON.stringify(dmwork, null, 2), "utf-8");
647
+ }
648
+ else {
649
+ // No channels.dmwork — remove stale backup to prevent wrong restore
650
+ if (existsSync(backupPath))
651
+ rmSync(backupPath, { force: true });
652
+ }
653
+ }
654
+ catch { /* best effort */ }
655
+ }
656
+ export function restoreChannelConfigFromDisk() {
657
+ try {
658
+ const backupPath = getConfigFilePathSafe().replace(/openclaw\.json$/, "channels-dmwork-backup.json");
659
+ if (!existsSync(backupPath))
660
+ return;
661
+ let dmwork = JSON.parse(readFileSync(backupPath, "utf-8"));
662
+ // Migrate flat config → accounts.default
663
+ if (dmwork.botToken && !dmwork.accounts) {
664
+ dmwork = {
665
+ ...dmwork,
666
+ accounts: { default: { botToken: dmwork.botToken, apiUrl: dmwork.apiUrl } },
667
+ };
668
+ delete dmwork.botToken;
669
+ }
670
+ const cfg = readConfigFromFile();
671
+ if (!cfg)
672
+ return;
673
+ if (!cfg.channels)
674
+ cfg.channels = {};
675
+ cfg.channels.dmwork = dmwork;
676
+ writeConfigAtomic(cfg);
677
+ rmSync(backupPath, { force: true });
678
+ }
679
+ catch { /* best effort */ }
680
+ }
681
+ export function cleanupBrokenInstall() {
682
+ const actions = [];
683
+ const cfg = readConfigFromFile();
684
+ const extDir = getConfigFilePathSafe().replace(/openclaw\.json$/, "extensions");
685
+ const pluginDir = resolve(extDir, "openclaw-channel-dmwork");
686
+ const hasDir = existsSync(pluginDir);
687
+ const hasEntries = Boolean(cfg?.plugins?.entries?.["openclaw-channel-dmwork"]);
688
+ const hasInstalls = Boolean(cfg?.plugins?.installs?.["openclaw-channel-dmwork"]);
689
+ // Use same healthy definition as detectScenario(): inspect OK OR all 3 artifacts present
690
+ const inspectOk = Boolean(pluginsInspect("openclaw-channel-dmwork")?.plugin);
691
+ const isHealthy = inspectOk || (hasDir && hasEntries && hasInstalls);
692
+ if (isHealthy)
693
+ return actions; // Actually healthy, nothing to clean
694
+ // Remove directory if it exists (orphan or partial)
695
+ if (hasDir) {
696
+ try {
697
+ rmSync(pluginDir, { recursive: true, force: true });
698
+ actions.push("Removed broken/orphan plugin directory");
699
+ }
700
+ catch { /* best effort */ }
701
+ }
702
+ // Remove stale config entries
703
+ if (cfg && (hasEntries || hasInstalls)) {
704
+ let changed = false;
705
+ if (hasEntries) {
706
+ delete cfg.plugins.entries["openclaw-channel-dmwork"];
707
+ changed = true;
708
+ }
709
+ if (hasInstalls) {
710
+ delete cfg.plugins.installs["openclaw-channel-dmwork"];
711
+ changed = true;
712
+ }
713
+ if (changed) {
714
+ writeConfigAtomic(cfg);
715
+ actions.push("Cleaned stale config entries");
716
+ }
717
+ }
718
+ return actions;
719
+ }
316
720
  //# sourceMappingURL=openclaw-cli.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openclaw-cli.js","sourceRoot":"","sources":["../../cli/openclaw-cli.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;;GAMG;AACH,SAAS,kBAAkB;IACzB,oFAAoF;IACpF,KAAK,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,EAAE,CAAC;QAC1D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE;gBAC3B,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;aAChC,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,MAAM;iBACjB,KAAK,CAAC,OAAO,CAAC;iBACd,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;YAClF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,yCAAyC;QAC3C,CAAC;IACH,CAAC;IAED,gDAAgD;IAChD,MAAM,UAAU,GAAG;QACjB,4BAA4B;QAC5B,yBAAyB;QACzB,mBAAmB;QACnB,OAAO,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,CAAC;KACrD,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,mDAAmD;IACnD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;AAEtC,iCAAiC;AACjC,SAAS,UAAU,CAAC,CAAS;IAC3B,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,CAAC;AACX,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,UAAU,iBAAiB;IAC/B,OAAO,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;YAC1D,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE;YACpE,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,SAAS,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC;YAC3C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC;YAC/B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAClC,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,KAAa;IACnD,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE;QACrD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KAChC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,UAAmD;IAEnD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAC9B,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAC7D,CAAC;IACF,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE;QACnE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KAChC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,KAAc;IACxD,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC,EAAE;QACtF,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KAChC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;QAChD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;KAChC,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,KAAe,EAAE,KAAe;IAC3E,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,oCAAoC,CAAC,CAAC;IAChF,IAAI,KAAK;QAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChC,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE;QAC3B,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;KACpD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAU,EAAE,KAAe;IACvD,YAAY,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE;QAChD,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;KACpD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAU,EAAE,GAAa;IACxD,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,GAAG;QAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9B,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AACrD,CAAC;AAeD,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE;YACvE,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QACH,yEAAyE;QACzE,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,SAAS,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE;YAClE,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,SAAS,GAAG,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9C,8EAA8E;QAC9E,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,SAAS,CAAC;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QAC9C,OAAO,EAAE,OAAO,EAAE,cAAc,IAAI,OAAO,EAAE,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAe;IAC5C,IAAI,CAAC;QACH,YAAY,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE;YAC7C,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;SACpD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,MAAM,UAAU,kBAAkB;IAChC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE;YAChD,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC7C,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,uEAAuE;AACvE,EAAE;AACF,2EAA2E;AAC3E,6EAA6E;AAC7E,6EAA6E;AAC7E,uDAAuD;AACvD,uEAAuE;AACvE,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,yBAAyB;IACvC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,GAAG,EAAE,QAAQ,EAAE,MAAM,IAAI,IAAI,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CACxC,YAAqC;IAErC,MAAM,UAAU,GAAG,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACnD,SAAS;IACT,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC;IAC9C,qBAAqB;IACrB,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,GAAG,CAAC,QAAQ;QAAE,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAC;IACnC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH;;;;GAIG;AACH,SAAS,qBAAqB;IAC5B,IAAI,CAAC;QACH,OAAO,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B;IACzC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;QAC3C,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YACzB,OAAO,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC3B,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,cAAc;IAChB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAC5C,OAAe,EACf,eAA0B;IAE1B,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;QAC3C,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO;QACzC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE;YAC5C,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO;gBAAE,OAAO,IAAI,CAAC,CAAC,kBAAkB;YACjE,IAAI,CAAC,eAAe;gBAAE,OAAO,KAAK,CAAC,CAAC,6BAA6B;YACjE,sEAAsE;YACtE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QACH,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,cAAc;IAChB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"openclaw-cli.js","sourceRoot":"","sources":["../../cli/openclaw-cli.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * update command:
3
- * - Without --dev: always target latest (stable) version
4
- * - With --dev: always target @dev tag version
5
- * - Skip if the target version is already installed
3
+ * - Detects scenario and routes accordingly
4
+ * - For healthy installs: compare versions, update if different
5
+ * - For legacy/broken/deadlock: delegate to install's safe paths
6
6
  */
7
7
  export interface UpdateOptions {
8
8
  json?: boolean;