create-openclaw-bot 5.6.12 → 5.6.14

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
@@ -3,7 +3,7 @@
3
3
  # 🦞 OpenClaw Setup
4
4
 
5
5
  <p align="center">
6
- <a href="https://github.com/tuanminhhole/openclaw-setup/releases"><img src="https://img.shields.io/badge/RELEASE-v5.6.12-0EA5E9?style=for-the-badge" alt="Version 5.6.9" /></a>
6
+ <a href="https://github.com/tuanminhhole/openclaw-setup/releases"><img src="https://img.shields.io/badge/RELEASE-v5.6.14-0EA5E9?style=for-the-badge" alt="Version 5.6.14" /></a>
7
7
  <a href="https://github.com/tuanminhhole/openclaw-setup?tab=MIT-1-ov-file"><img src="https://img.shields.io/badge/LICENSE-MIT-success?style=for-the-badge" alt="MIT License" /></a>
8
8
  <a href="https://www.npmjs.com/package/create-openclaw-bot"><img src="https://img.shields.io/npm/v/create-openclaw-bot?style=for-the-badge&label=CLI&color=2563EB&logo=npm&logoColor=white" alt="NPM Version" /></a>
9
9
  <a href="https://github.com/tuanminhhole/openclaw-setup/stargazers"><img src="https://img.shields.io/github/stars/tuanminhhole/openclaw-setup?style=for-the-badge&color=eab308&logo=github&logoColor=white" alt="GitHub Stars" /></a>
@@ -24,7 +24,7 @@ An interactive **CLI tool** and **Setup Wizard** to deploy your own free AI Bot
24
24
 
25
25
  ---
26
26
 
27
- ## 🆕 What's new in v5.6.12
27
+ ## 🆕 What's new in v5.6.14
28
28
 
29
29
  - 🔧 **OpenAI Codex provider fix** — Updated Codex model registry to match OpenAI's current API. Removed 6 deprecated models, retained 4 active ones: `gpt-5.4`, `gpt-5.3-codex`, `gpt-5.2`, `gpt-5.4-mini`.
30
30
  - 🔀 **9Router API mode switch** — Switched from `openai-completions` to `openai-responses` to align with OpenAI's Responses API.
package/README.vi.md CHANGED
@@ -3,7 +3,7 @@
3
3
  # 🦞 OpenClaw Setup
4
4
 
5
5
  <p align="center">
6
- <a href="https://github.com/tuanminhhole/openclaw-setup/releases"><img src="https://img.shields.io/badge/RELEASE-v5.6.12-0EA5E9?style=for-the-badge" alt="Version 5.6.9" /></a>
6
+ <a href="https://github.com/tuanminhhole/openclaw-setup/releases"><img src="https://img.shields.io/badge/RELEASE-v5.6.14-0EA5E9?style=for-the-badge" alt="Version 5.6.14" /></a>
7
7
  <a href="https://github.com/tuanminhhole/openclaw-setup?tab=MIT-1-ov-file"><img src="https://img.shields.io/badge/LICENSE-MIT-success?style=for-the-badge" alt="MIT License" /></a>
8
8
  <a href="https://www.npmjs.com/package/create-openclaw-bot"><img src="https://img.shields.io/npm/v/create-openclaw-bot?style=for-the-badge&label=CLI&color=2563EB&logo=npm&logoColor=white" alt="NPM Version" /></a>
9
9
  <a href="https://github.com/tuanminhhole/openclaw-setup/stargazers"><img src="https://img.shields.io/github/stars/tuanminhhole/openclaw-setup?style=for-the-badge&color=eab308&logo=github&logoColor=white" alt="GitHub Stars" /></a>
@@ -24,7 +24,7 @@ Công cụ **CLI tương tác** và **Setup Wizard** để tự triển khai Bot
24
24
 
25
25
  ---
26
26
 
27
- ## 🆕 Có gì mới trong v5.6.12
27
+ ## 🆕 Có gì mới trong v5.6.14
28
28
 
29
29
  - 🔧 **Sửa provider OpenAI Codex** — Cập nhật registry model Codex phù hợp API hiện tại của OpenAI. Loại 6 model đã dừng, giữ 4 model đang hoạt động: `gpt-5.4`, `gpt-5.3-codex`, `gpt-5.2`, `gpt-5.4-mini`.
30
30
  - 🔀 **Chuyển chế độ API 9Router** — Đổi từ `openai-completions` sang `openai-responses` cho khớp với Responses API mới của OpenAI.
package/dist/cli.js CHANGED
@@ -2580,12 +2580,6 @@ async function main() {
2580
2580
  groupPolicy: 'allowlist',
2581
2581
  groupAllowFrom: ['*'],
2582
2582
  historyLimit: 50,
2583
- groups: {
2584
- '*': {
2585
- enabled: true,
2586
- requireMention: false,
2587
- },
2588
- },
2589
2583
  autoReply: true,
2590
2584
  };
2591
2585
  } else if (channelKey === 'zalo-bot') {
@@ -79,12 +79,6 @@
79
79
  groupPolicy: 'allowlist',
80
80
  groupAllowFrom: ['*'],
81
81
  historyLimit: 50,
82
- groups: {
83
- '*': {
84
- enabled: true,
85
- requireMention: false,
86
- },
87
- },
88
82
  },
89
83
  },
90
84
  pluginInstall: '@openclaw/zalouser',
@@ -268,7 +268,7 @@ If setup reported a plugin install error, run this after the bot is running:
268
268
  };
269
269
  }
270
270
 
271
- function buildGatewayConfig(port = 18791, deployMode = 'native', allowedOrigins = []) {
271
+ function buildGatewayConfig(port = 18791, deployMode = 'native', allowedOrigins = [], osChoice = '') {
272
272
  const normalizedPort = Number(port) || 18791;
273
273
  const cfg = {
274
274
  port: normalizedPort,
@@ -276,7 +276,7 @@ If setup reported a plugin install error, run this after the bot is running:
276
276
  controlUi: { allowedOrigins },
277
277
  auth: { mode: 'token', token: crypto.randomUUID().replace(/-/g, '') },
278
278
  };
279
- if (deployMode === 'docker') {
279
+ if (deployMode === 'docker' || osChoice === 'vps') {
280
280
  cfg.bind = 'custom';
281
281
  cfg.customBindHost = '0.0.0.0';
282
282
  } else {
@@ -283,7 +283,11 @@ fi
283
283
  } else {
284
284
  L.push(isVi ? 'echo "[2] Khoi dong lai OpenClaw gateway qua PM2..."' : 'echo "[2] Restarting OpenClaw gateway via PM2..."');
285
285
  L.push('pm2 delete "$APP_NAME" >/dev/null 2>&1 || true');
286
- L.push('OPENCLAW_HOME="$PROJECT_DIR/.openclaw" OPENCLAW_STATE_DIR="$PROJECT_DIR/.openclaw" pm2 start --name "$APP_NAME" --cwd "$PROJECT_DIR" -- sh -c "export OPENCLAW_HOME=$PROJECT_DIR/.openclaw OPENCLAW_STATE_DIR=$PROJECT_DIR/.openclaw && openclaw gateway run"');
286
+ L.push('if [ -f "$PROJECT_DIR/.openclaw/start-gateway.sh" ]; then');
287
+ L.push(' pm2 start "$PROJECT_DIR/.openclaw/start-gateway.sh" --name "$APP_NAME" --interpreter bash');
288
+ L.push('else');
289
+ L.push(' OPENCLAW_HOME="$PROJECT_DIR/.openclaw" OPENCLAW_STATE_DIR="$PROJECT_DIR/.openclaw" pm2 start "$(command -v openclaw)" --name "$APP_NAME" --interpreter "$(command -v node)" -- gateway run');
290
+ L.push('fi');
287
291
  }
288
292
  L.push('pm2 save >/dev/null 2>&1 || true');
289
293
  L.push('echo ""');
package/dist/setup.js CHANGED
@@ -271,6 +271,7 @@
271
271
  // 'telegram+zalo-personal' — Combo mode tạm ngưng, nghiên cứu thêm.
272
272
  'zalo-personal': {
273
273
  name: 'Zalo Personal',
274
+ hasZaloPersonal: true,
274
275
  envKeys: [],
275
276
  envExtra: '',
276
277
  credSteps: [
@@ -294,12 +295,6 @@
294
295
  groupPolicy: 'allowlist',
295
296
  groupAllowFrom: ['*'],
296
297
  historyLimit: 50,
297
- groups: {
298
- '*': {
299
- enabled: true,
300
- requireMention: false,
301
- },
302
- },
303
298
  },
304
299
  },
305
300
  pluginInstall: '@openclaw/zalouser',
@@ -892,7 +887,7 @@
892
887
  };
893
888
  }
894
889
 
895
- function buildGatewayConfig(port = 18791, deployMode = 'native', allowedOrigins = []) {
890
+ function buildGatewayConfig(port = 18791, deployMode = 'native', allowedOrigins = [], osChoice = '') {
896
891
  const normalizedPort = Number(port) || 18791;
897
892
  const cfg = {
898
893
  port: normalizedPort,
@@ -900,7 +895,7 @@
900
895
  controlUi: { allowedOrigins },
901
896
  auth: { mode: 'token', token: crypto.randomUUID().replace(/-/g, '') },
902
897
  };
903
- if (deployMode === 'docker') {
898
+ if (deployMode === 'docker' || osChoice === 'vps') {
904
899
  cfg.bind = 'custom';
905
900
  cfg.customBindHost = '0.0.0.0';
906
901
  } else {
@@ -1586,7 +1581,11 @@
1586
1581
  } else {
1587
1582
  L.push(isVi ? 'echo "[2] Khoi dong lai OpenClaw gateway qua PM2..."' : 'echo "[2] Restarting OpenClaw gateway via PM2..."');
1588
1583
  L.push('pm2 delete "$APP_NAME" >/dev/null 2>&1 || true');
1589
- L.push('OPENCLAW_HOME="$PROJECT_DIR/.openclaw" OPENCLAW_STATE_DIR="$PROJECT_DIR/.openclaw" pm2 start --name "$APP_NAME" --cwd "$PROJECT_DIR" -- sh -c "export OPENCLAW_HOME=$PROJECT_DIR/.openclaw OPENCLAW_STATE_DIR=$PROJECT_DIR/.openclaw && openclaw gateway run"');
1584
+ L.push('if [ -f "$PROJECT_DIR/.openclaw/start-gateway.sh" ]; then');
1585
+ L.push(' pm2 start "$PROJECT_DIR/.openclaw/start-gateway.sh" --name "$APP_NAME" --interpreter bash');
1586
+ L.push('else');
1587
+ L.push(' OPENCLAW_HOME="$PROJECT_DIR/.openclaw" OPENCLAW_STATE_DIR="$PROJECT_DIR/.openclaw" pm2 start "$(command -v openclaw)" --name "$APP_NAME" --interpreter "$(command -v node)" -- gateway run');
1588
+ L.push('fi');
1590
1589
  }
1591
1590
  L.push('pm2 save >/dev/null 2>&1 || true');
1592
1591
  L.push('echo ""');
@@ -2034,6 +2033,7 @@
2034
2033
  multiOllamaNumParallel = 1,
2035
2034
  singleOllamaNumParallel = 1,
2036
2035
  emitBrowserInstall = true,
2036
+
2037
2037
  } = options;
2038
2038
 
2039
2039
  const browserAptExtra = hasBrowser ? ' xvfb socat' : '';
@@ -2568,7 +2568,8 @@
2568
2568
  gateway: {
2569
2569
  port: 18791,
2570
2570
  mode: 'local',
2571
- bind: 'loopback',
2571
+ bind: state.nativeOs === 'vps' ? 'custom' : 'loopback',
2572
+ ...(state.nativeOs === 'vps' ? { customBindHost: '0.0.0.0' } : {}),
2572
2573
  controlUi: {
2573
2574
  allowedOrigins: getGatewayAllowedOrigins(18791),
2574
2575
  },
@@ -2741,7 +2742,7 @@
2741
2742
  commands: { native: 'auto', nativeSkills: 'auto', restart: true, ownerDisplay: 'raw' },
2742
2743
  channels: {},
2743
2744
  tools: { profile: 'full', exec: { host: 'gateway', security: 'full', ask: 'off' } },
2744
- gateway: common.buildGatewayConfig(basePort, state.deployMode, getGatewayAllowedOrigins(basePort)),
2745
+ gateway: common.buildGatewayConfig(basePort, state.deployMode, getGatewayAllowedOrigins(basePort), state.nativeOs || ''),
2745
2746
  };
2746
2747
 
2747
2748
  if (hasBrowser) {
@@ -2813,18 +2814,13 @@
2813
2814
  groupPolicy: 'allowlist',
2814
2815
  groupAllowFrom: ['*'],
2815
2816
  historyLimit: 50,
2816
- groups: {
2817
- '*': {
2818
- enabled: true,
2819
- requireMention: false,
2820
- },
2821
- },
2822
2817
  autoReply: true,
2823
2818
  };
2824
- // plugins.entries.zalouser is REQUIRED for gateway to load the Zalo channel provider
2819
+ // zalo-mod plugin - pre-integrated for Zalo Personal moderation
2820
+ // User configures groupName, botName, watchGroupIds etc. after setup
2825
2821
  cfg.plugins = cfg.plugins || {};
2826
2822
  cfg.plugins.entries = cfg.plugins.entries || {};
2827
- cfg.plugins.entries.zalouser = { enabled: true };
2823
+ cfg.plugins.entries['zalo-mod'] = { enabled: true, config: {} };
2828
2824
  } else if (state.channel === 'zalo-bot') {
2829
2825
  cfg.channels.zalo = { enabled: true, provider: 'official_account' };
2830
2826
  }
@@ -3618,6 +3614,7 @@
3618
3614
  let scriptContent;
3619
3615
 
3620
3616
  const scriptName = 'setup-openclaw-vps.sh';
3617
+ const appName = isMultiBot ? 'openclaw-multibot' : 'openclaw';
3621
3618
  const vps = [
3622
3619
  '#!/usr/bin/env bash', 'set -e',
3623
3620
  `echo "=== OpenClaw Setup — Ubuntu/VPS${isMultiBot ? ` Multi-Bot (${state.botCount} bots)` : ''} ==="`,
@@ -3643,37 +3640,79 @@
3643
3640
  if (pluginCmd) vps.push(pluginCmd);
3644
3641
  vps.push('if [ -f ".env" ]; then set -a; . ./.env; set +a; fi');
3645
3642
 
3643
+ // ── Write bot runtime files ──────────────────────────────────────────────
3646
3644
  if (isMultiBot) {
3647
3645
  vps.push('echo "--- Creating shared multi-agent runtime ---"');
3648
3646
  appendShWriteCommands(vps, sharedNativeFileMap());
3649
3647
  const _uninstallVpsMulti = generateUninstallScript();
3650
3648
  if (_uninstallVpsMulti) appendShWriteCommands(vps, { [_uninstallVpsMulti.name]: _uninstallVpsMulti.content });
3651
- vps.push('echo "--- Starting shared gateway via PM2 ---"');
3652
- if (is9Router) {
3653
- vps.push(`NINE_ROUTER_ENTRY="$(${native9RouterServerEntryLookup()})"`);
3654
- vps.push('PORT=20128 HOSTNAME=0.0.0.0 pm2 start "$NINE_ROUTER_ENTRY" --name openclaw-multibot-9router --interpreter "$(command -v node)"');
3655
- vps.push('pm2 start --name openclaw-multibot-9router-sync -- sh -c "node ./.9router/9router-smart-route-sync.js"');
3656
- }
3657
- vps.push('OPENCLAW_HOME="$OPENCLAW_HOME" OPENCLAW_STATE_DIR="$OPENCLAW_STATE_DIR" pm2 start --name openclaw-multibot -- sh -c "export OPENCLAW_HOME=$OPENCLAW_HOME OPENCLAW_STATE_DIR=$OPENCLAW_STATE_DIR && openclaw gateway run"');
3658
- vps.push('pm2 save && pm2 startup');
3659
- vps.push(`echo ""`);
3660
- vps.push(`echo "=== ✅ Shared multi-bot gateway running via PM2 ==="`);
3661
- vps.push(`echo "Commands:"`);
3662
- vps.push(`echo " pm2 status # Status gateway"`);
3663
- vps.push(`echo " pm2 logs openclaw-multibot"`);
3664
3649
  } else {
3665
3650
  appendShWriteCommands(vps, botFiles(0));
3666
3651
  const _uninstallVps = generateUninstallScript();
3667
3652
  if (_uninstallVps) appendShWriteCommands(vps, { [_uninstallVps.name]: _uninstallVps.content });
3668
- if (is9Router) {
3669
- vps.push(`NINE_ROUTER_ENTRY="$(${native9RouterServerEntryLookup()})"`);
3670
- vps.push('PORT=20128 HOSTNAME=0.0.0.0 pm2 start "$NINE_ROUTER_ENTRY" --name openclaw-9router --interpreter "$(command -v node)"');
3671
- vps.push('pm2 start --name openclaw-9router-sync -- sh -c "node ./.9router/9router-smart-route-sync.js"');
3672
- }
3673
- vps.push('OPENCLAW_HOME="$OPENCLAW_HOME" OPENCLAW_STATE_DIR="$OPENCLAW_STATE_DIR" pm2 start --name openclaw -- sh -c "export OPENCLAW_HOME=$OPENCLAW_HOME OPENCLAW_STATE_DIR=$OPENCLAW_STATE_DIR && openclaw gateway run"');
3674
- vps.push('pm2 save && pm2 startup');
3675
- vps.push('echo "Bot dang chay! Xem log: pm2 logs openclaw"');
3676
3653
  }
3654
+
3655
+ // ── Create start-bot.sh restart script ─────────────────────────────────
3656
+ const startScript = globalThis.__openclawInstall.buildStartBotSh({
3657
+ projectDir,
3658
+ is9Router,
3659
+ isVi,
3660
+ osChoice: 'vps',
3661
+ isMultiBot,
3662
+ appName,
3663
+ });
3664
+ appendShWriteCommands(vps, { 'start-bot.sh': startScript });
3665
+ vps.push('chmod +x start-bot.sh');
3666
+
3667
+ // ── Create PM2 entrypoint wrapper ──────────────────────────────────────
3668
+ // PM2 needs a proper script file with env setup to survive restarts.
3669
+ // Inline `-- sh -c` loses env vars on pm2 restart/reboot.
3670
+ vps.push('echo "--- Creating PM2 entrypoint wrapper ---"');
3671
+ vps.push(`cat > "$PROJECT_DIR/.openclaw/start-gateway.sh" << 'GWEOF'
3672
+ #!/bin/bash
3673
+ set -e
3674
+ cd "${projectDir.replace(/"/g, '\\"')}"
3675
+ export OPENCLAW_HOME="$PWD/.openclaw"
3676
+ export OPENCLAW_STATE_DIR="$PWD/.openclaw"
3677
+ export DATA_DIR="$PWD/.9router"
3678
+ export PATH="$HOME/.local/bin:$PATH"
3679
+ if [ -f ".env" ]; then set -a; . ./.env; set +a; fi
3680
+ exec openclaw gateway run
3681
+ GWEOF`);
3682
+ vps.push('chmod +x "$PROJECT_DIR/.openclaw/start-gateway.sh"');
3683
+
3684
+ // ── Start services via PM2 ─────────────────────────────────────────────
3685
+ vps.push('echo "--- Starting services via PM2 ---"');
3686
+ vps.push('NODE_BIN="$(command -v node)"');
3687
+
3688
+ if (is9Router) {
3689
+ vps.push(`NINE_ROUTER_ENTRY="$(${native9RouterServerEntryLookup()})"`);
3690
+ vps.push(`PORT=20128 HOSTNAME=0.0.0.0 DATA_DIR="$DATA_DIR" pm2 start "$NINE_ROUTER_ENTRY" --name ${appName}-9router --interpreter "$NODE_BIN"`);
3691
+ // 9Router sync: start the actual JS file directly with node interpreter
3692
+ vps.push(`pm2 start "$PROJECT_DIR/.9router/9router-smart-route-sync.js" --name ${appName}-9router-sync --interpreter "$NODE_BIN" --env DATA_DIR="$DATA_DIR"`);
3693
+ }
3694
+
3695
+ // Gateway: start the bash wrapper script (has all env setup baked in)
3696
+ vps.push(`pm2 start "$PROJECT_DIR/.openclaw/start-gateway.sh" --name ${appName} --interpreter bash`);
3697
+ vps.push('pm2 save && pm2 startup');
3698
+
3699
+ if (isMultiBot) {
3700
+ vps.push('echo ""');
3701
+ vps.push(`echo "=== ✅ Shared multi-bot gateway running via PM2 ==="`);
3702
+ vps.push('echo "Commands:"');
3703
+ vps.push(`echo " pm2 status # Status gateway"`);
3704
+ vps.push(`echo " pm2 logs ${appName}"`);
3705
+ } else {
3706
+ vps.push(`echo "Bot dang chay! Xem log: pm2 logs ${appName}"`);
3707
+ }
3708
+
3709
+ vps.push('echo ""');
3710
+ vps.push('echo "Dashboard: http://127.0.0.1:18791"');
3711
+ if (is9Router) vps.push('echo "9Router: http://127.0.0.1:20128/dashboard"');
3712
+ vps.push('echo ""');
3713
+ vps.push(`echo "Restart: bash start-bot.sh"`);
3714
+ vps.push(`echo "Logs: pm2 logs ${appName}"`);
3715
+
3677
3716
  scriptContent = vps.filter(Boolean).join('\n');
3678
3717
 
3679
3718
  return { scriptName, scriptContent };
@@ -5197,7 +5236,7 @@
5197
5236
  };
5198
5237
  clawConfig.plugins = {
5199
5238
  entries: {
5200
- ...(ch.hasZaloPersonal ? { zalouser: { enabled: true } } : {}),
5239
+ ...(ch.hasZaloPersonal ? { 'zalo-mod': { enabled: true, config: {} } } : {}),
5201
5240
  'memory-core': {
5202
5241
  config: { dreaming: { enabled: state.config.skills.includes('memory') } },
5203
5242
  },
@@ -5212,7 +5251,7 @@
5212
5251
  pluginEntries[plugin.package || pid] = { enabled: true };
5213
5252
  });
5214
5253
  if (ch.hasZaloPersonal) {
5215
- pluginEntries['zalouser'] = { enabled: true };
5254
+ pluginEntries['zalo-mod'] = { enabled: true, config: {} };
5216
5255
  }
5217
5256
  pluginEntries['memory-core'] = {
5218
5257
  config: { dreaming: { enabled: state.config.skills.includes('memory') } },
@@ -5289,6 +5328,7 @@
5289
5328
  plainSingleExtraHosts: true,
5290
5329
  multiOllamaNumParallel: 1,
5291
5330
  singleOllamaNumParallel: 1,
5331
+
5292
5332
  });
5293
5333
  const dockerfile = dockerArtifacts.dockerfile;
5294
5334
  const compose = dockerArtifacts.compose;
package/package.json CHANGED
@@ -1,39 +1,39 @@
1
- {
2
- "name": "create-openclaw-bot",
3
- "version": "5.6.12",
4
- "description": "Interactive CLI installer for OpenClaw Bot",
5
- "main": "dist/cli.js",
6
- "bin": {
7
- "create-openclaw-bot": "./dist/cli.js"
8
- },
9
- "files": [
10
- "dist"
11
- ],
12
- "scripts": {
13
- "build": "node src/build.mjs --deploy",
14
- "dev": "node src/build.mjs --deploy --watch",
15
- "test": "node src/tests/smoke-cli-logic.mjs",
16
- "bump": "node src/bump-version.mjs"
17
- },
18
- "keywords": [
19
- "openclaw",
20
- "cli",
21
- "bot",
22
- "zalo",
23
- "telegram",
24
- "ai"
25
- ],
26
- "author": "tuanminhhole",
27
- "license": "MIT",
28
- "dependencies": {
29
- "@inquirer/prompts": "^4.3.1",
30
- "chalk": "^5.3.0",
31
- "fs-extra": "^11.2.0"
32
- },
33
- "bundleDependencies": [
34
- "@inquirer/prompts",
35
- "chalk",
36
- "fs-extra"
37
- ],
38
- "type": "module"
39
- }
1
+ {
2
+ "name": "create-openclaw-bot",
3
+ "version": "5.6.14",
4
+ "description": "Interactive CLI installer for OpenClaw Bot",
5
+ "main": "dist/cli.js",
6
+ "bin": {
7
+ "create-openclaw-bot": "./dist/cli.js"
8
+ },
9
+ "files": [
10
+ "dist"
11
+ ],
12
+ "scripts": {
13
+ "build": "node src/build.mjs --deploy",
14
+ "dev": "node src/build.mjs --deploy --watch",
15
+ "test": "node src/tests/smoke-cli-logic.mjs",
16
+ "bump": "node src/bump-version.mjs"
17
+ },
18
+ "keywords": [
19
+ "openclaw",
20
+ "cli",
21
+ "bot",
22
+ "zalo",
23
+ "telegram",
24
+ "ai"
25
+ ],
26
+ "author": "tuanminhhole",
27
+ "license": "MIT",
28
+ "dependencies": {
29
+ "@inquirer/prompts": "^4.3.1",
30
+ "chalk": "^5.3.0",
31
+ "fs-extra": "^11.2.0"
32
+ },
33
+ "bundleDependencies": [
34
+ "@inquirer/prompts",
35
+ "chalk",
36
+ "fs-extra"
37
+ ],
38
+ "type": "module"
39
+ }