@okclaw-build/cli 1.0.0-beta.2 → 1.0.0-beta.20

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.
Files changed (56) hide show
  1. package/dist/commands/check.js +22 -6
  2. package/dist/commands/check.js.map +1 -1
  3. package/dist/commands/edit.d.ts +2 -7
  4. package/dist/commands/edit.js +28 -15
  5. package/dist/commands/edit.js.map +1 -1
  6. package/dist/commands/feed.d.ts +0 -9
  7. package/dist/commands/feed.js +80 -103
  8. package/dist/commands/feed.js.map +1 -1
  9. package/dist/commands/install.js +34 -9
  10. package/dist/commands/install.js.map +1 -1
  11. package/dist/commands/service.js +48 -11
  12. package/dist/commands/service.js.map +1 -1
  13. package/dist/commands/show.d.ts +13 -0
  14. package/dist/commands/show.js +49 -0
  15. package/dist/commands/show.js.map +1 -0
  16. package/dist/commands/skill.d.ts +1 -0
  17. package/dist/commands/skill.js +114 -0
  18. package/dist/commands/skill.js.map +1 -0
  19. package/dist/commands/uninstall.d.ts +1 -0
  20. package/dist/commands/uninstall.js +46 -0
  21. package/dist/commands/uninstall.js.map +1 -0
  22. package/dist/index.js +93 -7
  23. package/dist/index.js.map +1 -1
  24. package/dist/installers/base.d.ts +1 -0
  25. package/dist/installers/channel.d.ts +10 -1
  26. package/dist/installers/channel.js +69 -8
  27. package/dist/installers/channel.js.map +1 -1
  28. package/dist/installers/openclaw.d.ts +1 -0
  29. package/dist/installers/openclaw.js +73 -8
  30. package/dist/installers/openclaw.js.map +1 -1
  31. package/dist/installers/openviking.js +1 -2
  32. package/dist/installers/openviking.js.map +1 -1
  33. package/dist/installers/skill.d.ts +1 -0
  34. package/dist/installers/skill.js +17 -4
  35. package/dist/installers/skill.js.map +1 -1
  36. package/dist/output/mode.d.ts +11 -0
  37. package/dist/output/mode.js +27 -0
  38. package/dist/output/mode.js.map +1 -0
  39. package/dist/output/ndjson.d.ts +57 -0
  40. package/dist/output/ndjson.js +136 -0
  41. package/dist/output/ndjson.js.map +1 -0
  42. package/dist/utils/constants.d.ts +0 -2
  43. package/dist/utils/constants.js +1 -4
  44. package/dist/utils/constants.js.map +1 -1
  45. package/dist/utils/deps.d.ts +0 -5
  46. package/dist/utils/deps.js +1 -88
  47. package/dist/utils/deps.js.map +1 -1
  48. package/dist/utils/logger.d.ts +10 -0
  49. package/dist/utils/logger.js +31 -4
  50. package/dist/utils/logger.js.map +1 -1
  51. package/dist/utils/mirror.js +7 -0
  52. package/dist/utils/mirror.js.map +1 -1
  53. package/dist/utils/shell.d.ts +12 -2
  54. package/dist/utils/shell.js +66 -3
  55. package/dist/utils/shell.js.map +1 -1
  56. package/package.json +3 -2
@@ -1,6 +1,6 @@
1
1
  import { shell, shellCapture, commandExists } from './shell.js';
2
2
  import { info, warn } from './logger.js';
3
- import { NODE_MIN_MAJOR, NODE_MIN_MINOR, NODE_INSTALL_VERSION, NODE_MIRROR, PYTHON_MIN_MAJOR, PYTHON_MIN_MINOR, } from './constants.js';
3
+ import { NODE_MIN_MAJOR, NODE_MIN_MINOR, NODE_INSTALL_VERSION, NODE_MIRROR, } from './constants.js';
4
4
  /**
5
5
  * Ensure Node.js >= NODE_MIN_MAJOR.NODE_MIN_MINOR is installed via nvm.
6
6
  * Installs nvm first if not present, then installs Node.js through nvm.
@@ -55,79 +55,6 @@ async function installNodejs() {
55
55
  throw new Error('Node.js installation failed: node command not found');
56
56
  info(`Node.js ${verify.stdout.trim()} installed via nvm ✓`);
57
57
  }
58
- /**
59
- * Ensure Python >= PYTHON_MIN_MAJOR.PYTHON_MIN_MINOR is installed.
60
- * Auto-installs via system package manager if missing or too old.
61
- */
62
- export async function ensurePython() {
63
- const required = `${PYTHON_MIN_MAJOR}.${PYTHON_MIN_MINOR}`;
64
- const result = await shellCapture('python3 --version');
65
- if (result.code === 0) {
66
- const match = result.stdout.match(/(\d+)\.(\d+)\.?(\d+)?/);
67
- if (match) {
68
- const version = `${match[1]}.${match[2]}`;
69
- if (versionGe(version, required)) {
70
- info(`Python ${result.stdout.trim()} >= ${required} ✓`);
71
- await ensurePip();
72
- return;
73
- }
74
- warn(`Python ${version} < ${required}, upgrading...`);
75
- }
76
- }
77
- else {
78
- info('Python3 not found, installing...');
79
- }
80
- await installPython();
81
- await ensurePip();
82
- }
83
- async function installPython() {
84
- const required = `${PYTHON_MIN_MAJOR}.${PYTHON_MIN_MINOR}`;
85
- info(`Installing Python >= ${required}...`);
86
- if (await commandExists('apt-get')) {
87
- // Try deadsnakes PPA for newer Python on older Ubuntu
88
- await shell('apt-get update -qq').catch(() => { });
89
- await shell('apt-get install -y -qq python3 python3-pip python3-venv python3-dev').catch(async () => {
90
- info('Trying deadsnakes PPA...');
91
- await shell('apt-get install -y -qq software-properties-common').catch(() => { });
92
- await shell('add-apt-repository -y ppa:deadsnakes/ppa').catch(() => { });
93
- await shell('apt-get update -qq');
94
- await shell('apt-get install -y -qq python3 python3-pip python3-venv python3-dev');
95
- });
96
- }
97
- else if (await commandExists('dnf')) {
98
- await shell('dnf install -y python3 python3-pip python3-devel');
99
- }
100
- else if (await commandExists('yum')) {
101
- await shell('yum install -y python3 python3-pip python3-devel');
102
- }
103
- else {
104
- throw new Error(`Cannot install Python: no supported package manager. Install Python >= ${required} manually.`);
105
- }
106
- // Verify
107
- const verify = await shellCapture('python3 --version');
108
- if (verify.code !== 0)
109
- throw new Error('Python installation failed');
110
- const match = verify.stdout.match(/(\d+)\.(\d+)/);
111
- if (match && !versionGe(`${match[1]}.${match[2]}`, required)) {
112
- throw new Error(`Installed Python ${match[1]}.${match[2]} still below ${required}. Install manually.`);
113
- }
114
- info(`Python ${verify.stdout.trim()} installed ✓`);
115
- }
116
- /**
117
- * Ensure pip is available.
118
- */
119
- async function ensurePip() {
120
- const result = await shellCapture('python3 -m pip --version');
121
- if (result.code === 0)
122
- return;
123
- info('pip not found, installing...');
124
- await shell('curl -fsSL https://bootstrap.pypa.io/get-pip.py | python3').catch(async () => {
125
- await installSystemPackages(['python3-pip']);
126
- });
127
- const verify = await shellCapture('python3 -m pip --version');
128
- if (verify.code !== 0)
129
- throw new Error('Failed to install pip');
130
- }
131
58
  /**
132
59
  * Ensure a command exists on PATH.
133
60
  */
@@ -147,20 +74,6 @@ export async function checkDiskSpace(requiredMb) {
147
74
  }
148
75
  }
149
76
  // ---- helpers ----
150
- async function installSystemPackages(packages) {
151
- if (await commandExists('apt-get')) {
152
- await shell(`apt-get update -qq && apt-get install -y -qq ${packages.join(' ')}`);
153
- }
154
- else if (await commandExists('dnf')) {
155
- await shell(`dnf install -y ${packages.join(' ')}`);
156
- }
157
- else if (await commandExists('yum')) {
158
- await shell(`yum install -y ${packages.join(' ')}`);
159
- }
160
- else {
161
- throw new Error(`Cannot install packages: no supported package manager`);
162
- }
163
- }
164
77
  function versionGe(a, b) {
165
78
  const pa = a.split('.').map(Number);
166
79
  const pb = b.split('.').map(Number);
@@ -1 +1 @@
1
- {"version":3,"file":"deps.js","sourceRoot":"","sources":["../../src/utils/deps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deps.js","sourceRoot":"","sources":["../../src/utils/deps.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,13 @@
1
+ /**
2
+ * 人类可读 log。
3
+ *
4
+ * ndjson 模式下:所有业务级 log(info / warn / success / error)静默。
5
+ * - info/warn/success 本就无关紧要,静默避免污染 stdout 结构化流
6
+ * - error 也静默(bug#5 修):业务错误必须通过 emitter.end(false, code, { error: msg }) 承载,
7
+ * 与 design 契约对齐(stderr 仅给真正的崩溃栈,由 registerExitHandlers 的 uncaughtException 打印)
8
+ *
9
+ * 调用方注意:ndjson 模式下调 error(msg) 不会让用户看见消息,务必把 msg 塞进 emitter.end 的 fields。
10
+ */
1
11
  export declare function info(msg: string): void;
2
12
  export declare function warn(msg: string): void;
3
13
  export declare function error(msg: string): void;
@@ -1,5 +1,32 @@
1
- export function info(msg) { console.log(`[okclaw] ${msg}`); }
2
- export function warn(msg) { console.log(`[okclaw] WARN: ${msg}`); }
3
- export function error(msg) { console.error(`[okclaw] ERROR: ${msg}`); }
4
- export function success(msg) { console.log(`[okclaw] ✓ ${msg}`); }
1
+ import { isNdjson } from '../output/mode.js';
2
+ /**
3
+ * 人类可读 log。
4
+ *
5
+ * ndjson 模式下:所有业务级 log(info / warn / success / error)静默。
6
+ * - info/warn/success 本就无关紧要,静默避免污染 stdout 结构化流
7
+ * - error 也静默(bug#5 修):业务错误必须通过 emitter.end(false, code, { error: msg }) 承载,
8
+ * 与 design 契约对齐(stderr 仅给真正的崩溃栈,由 registerExitHandlers 的 uncaughtException 打印)
9
+ *
10
+ * 调用方注意:ndjson 模式下调 error(msg) 不会让用户看见消息,务必把 msg 塞进 emitter.end 的 fields。
11
+ */
12
+ export function info(msg) {
13
+ if (isNdjson())
14
+ return;
15
+ console.log(`[okclaw] ${msg}`);
16
+ }
17
+ export function warn(msg) {
18
+ if (isNdjson())
19
+ return;
20
+ console.log(`[okclaw] WARN: ${msg}`);
21
+ }
22
+ export function error(msg) {
23
+ if (isNdjson())
24
+ return;
25
+ console.error(`[okclaw] ERROR: ${msg}`);
26
+ }
27
+ export function success(msg) {
28
+ if (isNdjson())
29
+ return;
30
+ console.log(`[okclaw] ✓ ${msg}`);
31
+ }
5
32
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,IAAI,CAAC,GAAW,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,MAAM,UAAU,IAAI,CAAC,GAAW,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3E,MAAM,UAAU,KAAK,CAAC,GAAW,IAAI,OAAO,CAAC,KAAK,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/E,MAAM,UAAU,OAAO,CAAC,GAAW,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C;;;;;;;;;GASG;AAEH,MAAM,UAAU,IAAI,CAAC,GAAW;IAC9B,IAAI,QAAQ,EAAE;QAAE,OAAO;IACvB,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,GAAW;IAC9B,IAAI,QAAQ,EAAE;QAAE,OAAO;IACvB,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAW;IAC/B,IAAI,QAAQ,EAAE;QAAE,OAAO;IACvB,OAAO,CAAC,KAAK,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,IAAI,QAAQ,EAAE;QAAE,OAAO;IACvB,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC;AACnC,CAAC"}
@@ -4,6 +4,13 @@ import { NPM_REGISTRY, PIP_INDEX_URL, PIP_TRUSTED_HOST } from './constants.js';
4
4
  export async function configureMirrors() {
5
5
  info('Configuring China mirrors...');
6
6
  await shell(`npm config set registry ${NPM_REGISTRY}`).catch(() => { });
7
+ // 部分 npm 包(如 openclaw 依赖的 libsignal-node)用 git+ssh://git@github.com/...
8
+ // 引用 GitHub 仓库。云主机 root 账户默认没有 GitHub SSH key 会拉取失败。
9
+ // 这里把 ssh://git@github.com/ 和 git@github.com: 都重写成 https://github.com/(匿名可读)。
10
+ // 注意: 同一个 URL name 下要写多个 insteadOf 必须用 --add,否则第二次 set 会覆盖第一次。
11
+ await shell(`git config --global --unset-all url."https://github.com/".insteadOf 2>/dev/null || true`).catch(() => { });
12
+ await shell(`git config --global --add url."https://github.com/".insteadOf ssh://git@github.com/`).catch(() => { });
13
+ await shell(`git config --global --add url."https://github.com/".insteadOf git@github.com:`).catch(() => { });
7
14
  // Use /root/.pip — not ~/
8
15
  await shell(`mkdir -p /root/.pip && cat > /root/.pip/pip.conf << 'EOF'
9
16
  [global]
@@ -1 +1 @@
1
- {"version":3,"file":"mirror.js","sourceRoot":"","sources":["../../src/utils/mirror.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAE/E,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAErC,MAAM,KAAK,CAAC,2BAA2B,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAEvE,0BAA0B;IAC1B,MAAM,KAAK,CAAC;;cAEA,aAAa;iBACV,gBAAgB;IAC7B,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAEpB,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"mirror.js","sourceRoot":"","sources":["../../src/utils/mirror.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAE/E,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAErC,MAAM,KAAK,CAAC,2BAA2B,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAEvE,wEAAwE;IACxE,qDAAqD;IACrD,8EAA8E;IAC9E,+DAA+D;IAC/D,MAAM,KAAK,CACT,yFAAyF,CAC1F,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAClB,MAAM,KAAK,CACT,qFAAqF,CACtF,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAClB,MAAM,KAAK,CACT,+EAA+E,CAChF,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAElB,0BAA0B;IAC1B,MAAM,KAAK,CAAC;;cAEA,aAAa;iBACV,gBAAgB;IAC7B,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAEpB,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAC9B,CAAC"}
@@ -8,8 +8,18 @@ export interface ShellResult {
8
8
  */
9
9
  export declare function ensureRoot(): void;
10
10
  /**
11
- * Run a shell command with inherited stdio (visible output).
12
- * Automatically sources nvm so node/npm/openclaw are available.
11
+ * Run a shell command and wait for exit.
12
+ *
13
+ * text 模式:stdio:inherit,子进程输出直通父进程 TTY(本地交互体验不变)。
14
+ *
15
+ * ndjson 模式:捕获 stdout/stderr 并按行合成 phase="log" 事件(stdout→level=info,
16
+ * stderr→level=warn),通过 {@link getActiveEmitter} 拿到当前 op 的 emitter 发出。
17
+ * 这样像 `npm install` 这种几分钟才回一行 ndjson 的长操作,其实时进度也能通过
18
+ * 事件流推给 os-api / 前端,用户不会看到 UI 卡死 10 分钟。
19
+ *
20
+ * 透传是"尽力而为":emitter 缺失(理论上只有本地脚本直接 import shell() 且没走
21
+ * 正常 command 入口才会发生)时静默吞,不影响命令本身执行。
22
+ *
13
23
  * Throws on non-zero exit.
14
24
  */
15
25
  export declare function shell(cmd: string): Promise<void>;
@@ -1,5 +1,7 @@
1
1
  import { spawn, execFileSync } from 'node:child_process';
2
2
  import { error as logError, info } from './logger.js';
3
+ import { isNdjson } from '../output/mode.js';
4
+ import { getActiveEmitter } from '../output/ndjson.js';
3
5
  /**
4
6
  * Ensure running as root. If not, re-exec with sudo and exit.
5
7
  */
@@ -23,16 +25,31 @@ export function ensureRoot() {
23
25
  // Prefix to source nvm before every shell command so node/npm are on PATH
24
26
  const NVM_INIT = 'export HOME=/root; export NVM_DIR=/root/.nvm; [ -s "$NVM_DIR/nvm.sh" ] && source "$NVM_DIR/nvm.sh"; ';
25
27
  /**
26
- * Run a shell command with inherited stdio (visible output).
27
- * Automatically sources nvm so node/npm/openclaw are available.
28
+ * Run a shell command and wait for exit.
29
+ *
30
+ * text 模式:stdio:inherit,子进程输出直通父进程 TTY(本地交互体验不变)。
31
+ *
32
+ * ndjson 模式:捕获 stdout/stderr 并按行合成 phase="log" 事件(stdout→level=info,
33
+ * stderr→level=warn),通过 {@link getActiveEmitter} 拿到当前 op 的 emitter 发出。
34
+ * 这样像 `npm install` 这种几分钟才回一行 ndjson 的长操作,其实时进度也能通过
35
+ * 事件流推给 os-api / 前端,用户不会看到 UI 卡死 10 分钟。
36
+ *
37
+ * 透传是"尽力而为":emitter 缺失(理论上只有本地脚本直接 import shell() 且没走
38
+ * 正常 command 入口才会发生)时静默吞,不影响命令本身执行。
39
+ *
28
40
  * Throws on non-zero exit.
29
41
  */
30
42
  export function shell(cmd) {
31
43
  return new Promise((resolve, reject) => {
44
+ const ndjson = isNdjson();
32
45
  const child = spawn('bash', ['-c', NVM_INIT + cmd], {
33
- stdio: 'inherit',
46
+ stdio: ndjson ? ['ignore', 'pipe', 'pipe'] : 'inherit',
34
47
  env: { ...process.env, HOME: '/root' },
35
48
  });
49
+ if (ndjson) {
50
+ forwardStreamAsLogEvents(child, 'stdout', 'info');
51
+ forwardStreamAsLogEvents(child, 'stderr', 'warn');
52
+ }
36
53
  child.on('error', reject);
37
54
  child.on('close', (code) => {
38
55
  if (code === 0)
@@ -42,6 +59,52 @@ export function shell(cmd) {
42
59
  });
43
60
  });
44
61
  }
62
+ /**
63
+ * 把子进程的一个输出流按换行切分,每行合成一条 phase="log" ndjson 事件。
64
+ *
65
+ * 实现细节:
66
+ * - 跨 chunk 续行:`buf` 累积未看到 \n 的尾巴,下次 data 再拼
67
+ * - 空行丢弃(避免 npm 输出里的空白行污染事件流)
68
+ * - \r 尾字符剥掉(Windows / 终端控制字符常见)
69
+ * - close 时 flush 尾 buf,防止最后一行没 \n 漏掉
70
+ * - emitter 为空时整段 no-op,绝不抛异常——shell() 的主路径不能因日志透传失败而失败
71
+ */
72
+ function forwardStreamAsLogEvents(child, streamName, level) {
73
+ const stream = child[streamName];
74
+ if (!stream)
75
+ return;
76
+ let buf = '';
77
+ stream.setEncoding('utf8');
78
+ stream.on('data', (chunk) => {
79
+ buf += chunk;
80
+ let idx = buf.indexOf('\n');
81
+ while (idx >= 0) {
82
+ emitLogLine(buf.slice(0, idx), level);
83
+ buf = buf.slice(idx + 1);
84
+ idx = buf.indexOf('\n');
85
+ }
86
+ });
87
+ stream.on('close', () => {
88
+ if (buf.length > 0) {
89
+ emitLogLine(buf, level);
90
+ buf = '';
91
+ }
92
+ });
93
+ }
94
+ function emitLogLine(line, level) {
95
+ const cleaned = line.endsWith('\r') ? line.slice(0, -1) : line;
96
+ if (cleaned.length === 0)
97
+ return;
98
+ const emitter = getActiveEmitter();
99
+ if (!emitter)
100
+ return;
101
+ try {
102
+ emitter.log(level, cleaned);
103
+ }
104
+ catch {
105
+ // log 事件透传失败不能影响命令本身执行;这里静默
106
+ }
107
+ }
45
108
  /**
46
109
  * Run a shell command with retries.
47
110
  */
@@ -1 +1 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/utils/shell.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/utils/shell.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@okclaw-build/cli",
3
- "version": "1.0.0-beta.2",
3
+ "version": "1.0.0-beta.20",
4
4
  "description": "OKClaw deployment CLI - install and manage OpenClaw, OpenViking, and channel plugins",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -10,7 +10,8 @@
10
10
  "scripts": {
11
11
  "build": "tsc",
12
12
  "dev": "tsc --watch",
13
- "prepublishOnly": "npm run build"
13
+ "prepublishOnly": "npm run build",
14
+ "test": "tsc -p tsconfig.test.json && node --test dist-test/tests/*.test.js dist-test/tests/*/*.test.js"
14
15
  },
15
16
  "keywords": ["openclaw", "openviking", "deploy", "cli"],
16
17
  "license": "MIT",