badgerclaw 0.1.8 → 0.1.10

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.
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare const setupCommand: Command;
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.setupCommand = void 0;
7
+ const commander_1 = require("commander");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const child_process_1 = require("child_process");
10
+ const fs_1 = __importDefault(require("fs"));
11
+ const os_1 = __importDefault(require("os"));
12
+ const path_1 = __importDefault(require("path"));
13
+ const OPENCLAW_CONFIG = path_1.default.join(os_1.default.homedir(), '.openclaw', 'openclaw.json');
14
+ const STASH_PATH = OPENCLAW_CONFIG + '.badgerclaw-stash';
15
+ function stashBadgerclawConfig() {
16
+ if (!fs_1.default.existsSync(OPENCLAW_CONFIG))
17
+ return null;
18
+ try {
19
+ const config = JSON.parse(fs_1.default.readFileSync(OPENCLAW_CONFIG, 'utf-8'));
20
+ const bc = config.channels?.badgerclaw;
21
+ if (!bc)
22
+ return null;
23
+ // Remove from config temporarily
24
+ delete config.channels.badgerclaw;
25
+ // Also remove stale plugins entry
26
+ if (config.plugins?.entries?.badgerclaw)
27
+ delete config.plugins.entries.badgerclaw;
28
+ fs_1.default.writeFileSync(OPENCLAW_CONFIG, JSON.stringify(config, null, 2));
29
+ fs_1.default.writeFileSync(STASH_PATH, JSON.stringify(bc, null, 2));
30
+ return bc;
31
+ }
32
+ catch {
33
+ return null;
34
+ }
35
+ }
36
+ function restoreBadgerclawConfig() {
37
+ if (!fs_1.default.existsSync(STASH_PATH))
38
+ return;
39
+ try {
40
+ const stashed = JSON.parse(fs_1.default.readFileSync(STASH_PATH, 'utf-8'));
41
+ const config = JSON.parse(fs_1.default.readFileSync(OPENCLAW_CONFIG, 'utf-8'));
42
+ config.channels = config.channels || {};
43
+ config.channels.badgerclaw = stashed;
44
+ fs_1.default.writeFileSync(OPENCLAW_CONFIG, JSON.stringify(config, null, 2));
45
+ fs_1.default.unlinkSync(STASH_PATH);
46
+ }
47
+ catch (e) {
48
+ console.log(chalk_1.default.yellow(` ⚠️ Could not restore config: ${e.message}`));
49
+ console.log(chalk_1.default.yellow(` Your bot credentials are backed up at: ${STASH_PATH}`));
50
+ }
51
+ }
52
+ exports.setupCommand = new commander_1.Command('setup')
53
+ .description('Install or update the OpenClaw BadgerClaw plugin safely (handles config automatically)')
54
+ .action(async () => {
55
+ console.log(chalk_1.default.green('\n🦡 BadgerClaw Setup\n'));
56
+ // Step 1: Stash existing badgerclaw config if present
57
+ const stashed = stashBadgerclawConfig();
58
+ if (stashed) {
59
+ console.log(chalk_1.default.dim(' Existing bot config stashed temporarily...'));
60
+ }
61
+ // Step 2: Install plugin
62
+ console.log(chalk_1.default.dim(' Installing @badgerclaw/connect plugin...'));
63
+ const result = (0, child_process_1.spawnSync)('openclaw', ['plugins', 'install', '@badgerclaw/connect'], { stdio: 'inherit', shell: true });
64
+ // Step 3: Always restore config, even if install failed
65
+ if (stashed) {
66
+ restoreBadgerclawConfig();
67
+ console.log(chalk_1.default.dim(' Bot config restored.'));
68
+ }
69
+ if (result.status !== 0) {
70
+ console.log(chalk_1.default.red('\n❌ Plugin install failed. Your bot config has been restored.'));
71
+ process.exit(1);
72
+ }
73
+ console.log(chalk_1.default.green('\n✅ BadgerClaw plugin installed successfully!'));
74
+ // Restart gateway to load the new plugin code
75
+ console.log(chalk_1.default.dim('\n Restarting OpenClaw gateway to load plugin...'));
76
+ const restart = (0, child_process_1.spawnSync)('openclaw', ['gateway', 'restart'], { stdio: 'inherit', shell: true });
77
+ if (restart.status === 0) {
78
+ console.log(chalk_1.default.green(' Gateway restarted.'));
79
+ }
80
+ else {
81
+ console.log(chalk_1.default.yellow(' Gateway restart failed or not running — start it manually: openclaw gateway start'));
82
+ }
83
+ console.log(chalk_1.default.dim('\nNext: run `badgerclaw login` to authenticate.'));
84
+ });
85
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -8,6 +8,7 @@ const status_1 = require("./commands/status");
8
8
  const bot_1 = require("./commands/bot");
9
9
  const autopair_1 = require("./commands/autopair");
10
10
  const watch_1 = require("./commands/watch");
11
+ const setup_1 = require("./commands/setup");
11
12
  const program = new commander_1.Command();
12
13
  program
13
14
  .name('badgerclaw')
@@ -19,5 +20,6 @@ program.addCommand(status_1.statusCommand);
19
20
  program.addCommand(bot_1.botCommand);
20
21
  program.addCommand(autopair_1.autopairCommand);
21
22
  program.addCommand(watch_1.watchCommand);
23
+ program.addCommand(setup_1.setupCommand);
22
24
  program.parse(process.argv);
23
25
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,4CAAgD;AAChD,8CAAkD;AAClD,8CAAkD;AAClD,wCAA4C;AAC5C,kDAAsD;AACtD,4CAAgD;AAEhD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,6CAA6C,CAAC;KAC1D,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC;AAE/C,OAAO,CAAC,UAAU,CAAC,oBAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,gBAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,0BAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,oBAAY,CAAC,CAAC;AAEjC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,4CAAgD;AAChD,8CAAkD;AAClD,8CAAkD;AAClD,wCAA4C;AAC5C,kDAAsD;AACtD,4CAAgD;AAChD,4CAAgD;AAEhD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,6CAA6C,CAAC;KAC1D,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC;AAE/C,OAAO,CAAC,UAAU,CAAC,oBAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,sBAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,gBAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,0BAAe,CAAC,CAAC;AACpC,OAAO,CAAC,UAAU,CAAC,oBAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,oBAAY,CAAC,CAAC;AAEjC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "badgerclaw",
3
- "version": "0.1.8",
3
+ "version": "0.1.10",
4
4
  "description": "BadgerClaw CLI \u2014 one-click bot provisioning",
5
5
  "main": "dist/index.js",
6
6
  "bin": {