create-openclaw-bot 4.1.3 → 4.1.4
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/CHANGELOG.md +15 -0
- package/CHANGELOG.vi.md +15 -0
- package/README.md +2 -2
- package/README.vi.md +2 -2
- package/cli.js +18 -6
- package/package.json +29 -29
- package/setup.js +20 -9
- package/tele_docs.md +0 -0
- package/tele_docs_utf8.md +987 -0
- package/zalo_doc_tmp.md +0 -0
- package/zalo_docs.md +0 -0
- package/zalo_docs_utf8.md +243 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Changelog (English)
|
|
2
2
|
|
|
3
|
+
|
|
4
|
+
## [4.1.4] — 2026-04-03
|
|
5
|
+
|
|
6
|
+
### ✨ Improvements
|
|
7
|
+
|
|
8
|
+
- CLI/Wizard parity: synchronized all skills (Browser Automation, Memory, RAG, Code Interpreter, etc.)
|
|
9
|
+
- Browser Automation: added Desktop (Host Chrome) vs Server (Headless Chromium) mode selection for Linux/Ubuntu
|
|
10
|
+
- Fixed Dockerfile WORKDIR issue causing build failures on Linux
|
|
11
|
+
- Skills now install at container **runtime** (not build-time) to avoid ClawHub auth issues
|
|
12
|
+
- Dynamic TOOLS.md: auto-generated listing all installed skills with hints
|
|
13
|
+
- Added `browser-tool.js` (Desktop mode) and `BROWSER.md` for both modes
|
|
14
|
+
- Skills registration in `openclaw.json → skills.entries` at setup time
|
|
15
|
+
- Email SMTP config prompts and `.env` injection
|
|
16
|
+
- Single-source versioning via `bump-version.mjs` — one command to update all files
|
|
17
|
+
|
|
3
18
|
## [4.1.3] — 2026-04-02
|
|
4
19
|
|
|
5
20
|
### ✨ Improvements
|
package/CHANGELOG.vi.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Changelog (Tiếng Việt)
|
|
2
2
|
|
|
3
|
+
|
|
4
|
+
## [4.1.4] — 2026-04-03
|
|
5
|
+
|
|
6
|
+
### ✨ Cải tiến
|
|
7
|
+
|
|
8
|
+
- CLI/Wizard đồng bộ đầy đủ skills (Browser Automation, Memory, RAG, Code Interpreter, v.v.)
|
|
9
|
+
- Browser Automation: chọn chế độ Desktop (Host Chrome) hoặc Server (Headless Chromium) cho Linux/Ubuntu
|
|
10
|
+
- Sửa lỗi Dockerfile WORKDIR gây lỗi build trên Linux
|
|
11
|
+
- Skills install tại **runtime** container (không phải lúc build) để tránh lỗi ClawHub auth
|
|
12
|
+
- TOOLS.md động: tự sinh theo danh sách skills đã chọn
|
|
13
|
+
- Tự tạo `browser-tool.js` (Desktop mode) và `BROWSER.md`
|
|
14
|
+
- Tự đăng ký skills vào `openclaw.json → skills.entries`
|
|
15
|
+
- Bổ sung prompt cấu hình Email SMTP và inject vào `.env`
|
|
16
|
+
- Single-source version qua `bump-version.mjs` — 1 lệnh cập nhật tất cả file
|
|
17
|
+
|
|
3
18
|
## [4.1.3] — 2026-04-02
|
|
4
19
|
|
|
5
20
|
### ✨ Cải tiến
|
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-v4.1.
|
|
6
|
+
<a href="https://github.com/tuanminhhole/openclaw-setup/releases"><img src="https://img.shields.io/badge/RELEASE-v4.1.4-0EA5E9?style=for-the-badge" alt="Version 4.1.4" /></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>
|
|
@@ -119,7 +119,7 @@ The fastest way to install OpenClaw is using the interactive NPM package.
|
|
|
119
119
|
2. Open this repo as workspace
|
|
120
120
|
3. Paste into chat:
|
|
121
121
|
```text
|
|
122
|
-
Read SETUP.md and set up OpenClaw v4.1.
|
|
122
|
+
Read SETUP.md and set up OpenClaw v4.1.4 for me.
|
|
123
123
|
My bot token is X, my 9Router proxy doesn't need a key.
|
|
124
124
|
My project folder: <YOUR_PATH>
|
|
125
125
|
```
|
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-v4.1.
|
|
6
|
+
<a href="https://github.com/tuanminhhole/openclaw-setup/releases"><img src="https://img.shields.io/badge/RELEASE-v4.1.4-0EA5E9?style=for-the-badge" alt="Version 4.1.4" /></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>
|
|
@@ -118,7 +118,7 @@ Dùng NPX là cách cài chuẩn nhất:
|
|
|
118
118
|
2. Mở repo này làm workspace
|
|
119
119
|
3. Paste vào chat:
|
|
120
120
|
```text
|
|
121
|
-
Read SETUP.md and install OpenClaw 4.1.
|
|
121
|
+
Read SETUP.md and install OpenClaw 4.1.4 for me.
|
|
122
122
|
My bot token is X, my 9Router proxy doesn't need a key.
|
|
123
123
|
My project folder: <THƯ_MỤC_CỦA_BẠN>
|
|
124
124
|
```
|
package/cli.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
1
|
+
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
import { input, select, checkbox, confirm } from '@inquirer/prompts';
|
|
4
4
|
import fs from 'fs-extra';
|
|
@@ -259,7 +259,12 @@ async function main() {
|
|
|
259
259
|
|
|
260
260
|
// Browser Playwright (both desktop & server modes need chromium)
|
|
261
261
|
const browserDockerLines = selectedSkills.includes('browser')
|
|
262
|
-
?
|
|
262
|
+
? [
|
|
263
|
+
'# Browser Automation: Playwright + Chromium',
|
|
264
|
+
'RUN npm install -g agent-browser playwright \\',
|
|
265
|
+
' && npx playwright install chromium --with-deps \\',
|
|
266
|
+
' && ln -sf /root/.cache/ms-playwright/chromium-*/chrome-linux*/chrome /usr/bin/google-chrome'
|
|
267
|
+
].join('\n')
|
|
263
268
|
: '';
|
|
264
269
|
// socat only for Desktop mode (bridge to host Chrome)
|
|
265
270
|
const socatApt = hasBrowserDesktop ? ' socat' : '';
|
|
@@ -278,16 +283,19 @@ async function main() {
|
|
|
278
283
|
'',
|
|
279
284
|
`RUN apt-get update && apt-get install -y git curl${socatApt} && rm -rf /var/lib/apt/lists/*`,
|
|
280
285
|
'',
|
|
281
|
-
|
|
286
|
+
|
|
282
287
|
];
|
|
283
288
|
if (browserDockerLines) dockerfileLines.push(browserDockerLines);
|
|
284
289
|
dockerfileLines.push(
|
|
290
|
+
'',
|
|
291
|
+
`ARG CACHEBUST=${Date.now()}`,
|
|
292
|
+
'RUN npm install -g openclaw@latest',
|
|
285
293
|
'',
|
|
286
294
|
'WORKDIR /root/.openclaw',
|
|
287
295
|
'',
|
|
288
296
|
'EXPOSE 18791',
|
|
289
297
|
'',
|
|
290
|
-
`CMD sh -c "node -e \\"eval(Buffer.from('${b64Patch}','base64').toString())\\" && ${skillInstallCmd}${socatBridge}(sleep 5
|
|
298
|
+
`CMD sh -c "node -e \\"eval(Buffer.from('${b64Patch}','base64').toString())\\" && ${skillInstallCmd}${socatBridge}(while true; do sleep 5; openclaw devices approve --latest 2>/dev/null || true; done) & openclaw gateway run"`
|
|
291
299
|
);
|
|
292
300
|
const dockerfile = dockerfileLines.join('\n');
|
|
293
301
|
|
|
@@ -351,7 +359,9 @@ services:
|
|
|
351
359
|
- 9router
|
|
352
360
|
${hasBrowserDesktop ? ` extra_hosts:
|
|
353
361
|
- "host.docker.internal:host-gateway"
|
|
354
|
-
` : ''}
|
|
362
|
+
` : ''} ports:
|
|
363
|
+
- "18791:18791"
|
|
364
|
+
volumes:
|
|
355
365
|
- ../../.openclaw:/root/.openclaw
|
|
356
366
|
|
|
357
367
|
9router:
|
|
@@ -389,7 +399,9 @@ services:
|
|
|
389
399
|
env_file: .env
|
|
390
400
|
${hasBrowserDesktop ? ` extra_hosts:
|
|
391
401
|
- "host.docker.internal:host-gateway"
|
|
392
|
-
` : ''}
|
|
402
|
+
` : ''} ports:
|
|
403
|
+
- "18791:18791"
|
|
404
|
+
volumes:
|
|
393
405
|
- ../../.openclaw:/root/.openclaw`;
|
|
394
406
|
}
|
|
395
407
|
|
package/package.json
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "create-openclaw-bot",
|
|
3
|
-
"version": "4.1.
|
|
4
|
-
"description": "Interactive CLI installer for OpenClaw Bot",
|
|
5
|
-
"main": "cli.js",
|
|
6
|
-
"bin": {
|
|
7
|
-
"create-openclaw-bot": "./cli.js"
|
|
8
|
-
},
|
|
9
|
-
"scripts": {
|
|
10
|
-
"test": "echo \"Error: no test specified\" && exit 1",
|
|
11
|
-
"bump": "node bump-version.mjs"
|
|
12
|
-
},
|
|
13
|
-
"keywords": [
|
|
14
|
-
"openclaw",
|
|
15
|
-
"cli",
|
|
16
|
-
"bot",
|
|
17
|
-
"zalo",
|
|
18
|
-
"telegram",
|
|
19
|
-
"ai"
|
|
20
|
-
],
|
|
21
|
-
"author": "tuanminhhole",
|
|
22
|
-
"license": "MIT",
|
|
23
|
-
"dependencies": {
|
|
24
|
-
"@inquirer/prompts": "^4.3.1",
|
|
25
|
-
"chalk": "^5.3.0",
|
|
26
|
-
"fs-extra": "^11.2.0"
|
|
27
|
-
},
|
|
28
|
-
"type": "module"
|
|
29
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "create-openclaw-bot",
|
|
3
|
+
"version": "4.1.4",
|
|
4
|
+
"description": "Interactive CLI installer for OpenClaw Bot",
|
|
5
|
+
"main": "cli.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"create-openclaw-bot": "./cli.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
11
|
+
"bump": "node bump-version.mjs"
|
|
12
|
+
},
|
|
13
|
+
"keywords": [
|
|
14
|
+
"openclaw",
|
|
15
|
+
"cli",
|
|
16
|
+
"bot",
|
|
17
|
+
"zalo",
|
|
18
|
+
"telegram",
|
|
19
|
+
"ai"
|
|
20
|
+
],
|
|
21
|
+
"author": "tuanminhhole",
|
|
22
|
+
"license": "MIT",
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@inquirer/prompts": "^4.3.1",
|
|
25
|
+
"chalk": "^5.3.0",
|
|
26
|
+
"fs-extra": "^11.2.0"
|
|
27
|
+
},
|
|
28
|
+
"type": "module"
|
|
29
|
+
}
|
package/setup.js
CHANGED
|
@@ -1140,7 +1140,15 @@ model:
|
|
|
1140
1140
|
// Browser Automation: extra Docker deps
|
|
1141
1141
|
const browserAptExtra = hasBrowser ? ' socat' : '';
|
|
1142
1142
|
const browserInstallLines = hasBrowser
|
|
1143
|
-
?
|
|
1143
|
+
? [
|
|
1144
|
+
'',
|
|
1145
|
+
'# Browser Automation: Playwright engine (needed for native CDP)',
|
|
1146
|
+
'RUN npm install -g agent-browser playwright \\',
|
|
1147
|
+
' && npx playwright install chromium --with-deps \\',
|
|
1148
|
+
' && ln -f -s /root/.cache/ms-playwright/chromium-*/chrome-linux*/chrome /usr/bin/google-chrome',
|
|
1149
|
+
'',
|
|
1150
|
+
''
|
|
1151
|
+
].join('\n')
|
|
1144
1152
|
: '';
|
|
1145
1153
|
|
|
1146
1154
|
// Plugins install at runtime (avoids ClawHub rate limit during build)
|
|
@@ -1152,17 +1160,18 @@ model:
|
|
|
1152
1160
|
? 'socat TCP-LISTEN:9222,fork,reuseaddr TCP:host.docker.internal:9222 & '
|
|
1153
1161
|
: '';
|
|
1154
1162
|
// Patch config on every startup to survive openclaw onboard overwrites
|
|
1155
|
-
const patchCmd = `node -e \\"const fs=require('fs'),p='/root/.openclaw/openclaw.json';if(fs.existsSync(p)){const c=JSON.parse(fs.readFileSync(p,'utf8'));c.tools=Object.assign({},c.tools,{profile:'full',exec:{host:'gateway',security:'full',ask:'off'}});c.gateway=Object.assign({},c.gateway,{port:18791,bind:'0.0.0.0'});fs.writeFileSync(p,JSON.stringify(c,null,2));}\\" && `;
|
|
1163
|
+
const patchCmd = `node -e \\"const fs=require('fs'),p='/root/.openclaw/openclaw.json';if(fs.existsSync(p)){const c=JSON.parse(fs.readFileSync(p,'utf8'));c.tools=Object.assign({},c.tools,{profile:'full',exec:{host:'gateway',security:'full',ask:'off'}});c.gateway=Object.assign({},c.gateway,{port:18791,bind:'custom',customBindHost:'0.0.0.0'});fs.writeFileSync(p,JSON.stringify(c,null,2));}\\" && `;
|
|
1156
1164
|
// Auto-approve device pairing after gateway starts (required since v2026.3.x)
|
|
1157
|
-
const autoApproveCmd = '(sleep 5
|
|
1165
|
+
const autoApproveCmd = '(while true; do sleep 5; openclaw devices approve --latest 2>/dev/null || true; done) & ';
|
|
1158
1166
|
const finalCmd = `CMD sh -c "${pluginInstallCmd}${patchCmd}${browserPrefix}${autoApproveCmd}${gatewayCmd}"`;
|
|
1159
1167
|
|
|
1160
1168
|
const dockerfile = `FROM node:22-slim
|
|
1161
1169
|
|
|
1162
1170
|
RUN apt-get update && apt-get install -y git curl${browserAptExtra} && rm -rf /var/lib/apt/lists/*
|
|
1163
1171
|
|
|
1164
|
-
|
|
1165
|
-
|
|
1172
|
+
|
|
1173
|
+
ARG CACHEBUST=${Date.now()}
|
|
1174
|
+
RUN npm install -g openclaw@latest${skillLines}${browserInstallLines}
|
|
1166
1175
|
WORKDIR /root/.openclaw
|
|
1167
1176
|
|
|
1168
1177
|
EXPOSE 18791
|
|
@@ -1217,7 +1226,8 @@ setInterval(sync, INTERVAL);`;
|
|
|
1217
1226
|
|
|
1218
1227
|
let compose;
|
|
1219
1228
|
if (is9Router) {
|
|
1220
|
-
compose = `
|
|
1229
|
+
compose = `name: oc-bot
|
|
1230
|
+
services:
|
|
1221
1231
|
ai-bot:
|
|
1222
1232
|
build: .
|
|
1223
1233
|
container_name: openclaw-bot
|
|
@@ -1230,7 +1240,7 @@ ${extraHostsBlock}
|
|
|
1230
1240
|
volumes:
|
|
1231
1241
|
- ../../.openclaw:/root/.openclaw
|
|
1232
1242
|
ports:
|
|
1233
|
-
- "
|
|
1243
|
+
- "18791:18791"
|
|
1234
1244
|
|
|
1235
1245
|
9router:
|
|
1236
1246
|
image: node:22-slim
|
|
@@ -1258,7 +1268,8 @@ ${extraHostsBlock}
|
|
|
1258
1268
|
volumes:
|
|
1259
1269
|
9router-data:`;
|
|
1260
1270
|
} else {
|
|
1261
|
-
compose = `
|
|
1271
|
+
compose = `name: oc-bot
|
|
1272
|
+
services:
|
|
1262
1273
|
ai-bot:
|
|
1263
1274
|
build: .
|
|
1264
1275
|
container_name: openclaw-bot
|
|
@@ -1269,7 +1280,7 @@ ${extraHostsBlock}
|
|
|
1269
1280
|
volumes:
|
|
1270
1281
|
- ../../.openclaw:/root/.openclaw
|
|
1271
1282
|
ports:
|
|
1272
|
-
- "
|
|
1283
|
+
- "18791:18791"`;
|
|
1273
1284
|
}
|
|
1274
1285
|
|
|
1275
1286
|
setOutput('out-compose', compose);
|
package/tele_docs.md
ADDED
|
Binary file
|