@okclaw-build/cli 1.0.0-beta.6 → 1.0.0-beta.60
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/dist/bridge/daemon/config.d.ts +24 -0
- package/dist/bridge/daemon/config.js +96 -0
- package/dist/bridge/daemon/config.js.map +1 -0
- package/dist/bridge/daemon/daemon.d.ts +7 -0
- package/dist/bridge/daemon/daemon.js +23 -0
- package/dist/bridge/daemon/daemon.js.map +1 -0
- package/dist/bridge/daemon/event-id.d.ts +2 -0
- package/dist/bridge/daemon/event-id.js +18 -0
- package/dist/bridge/daemon/event-id.js.map +1 -0
- package/dist/bridge/daemon/frames.d.ts +81 -0
- package/dist/bridge/daemon/frames.js +64 -0
- package/dist/bridge/daemon/frames.js.map +1 -0
- package/dist/bridge/daemon/openclaw-chat-runtime.d.ts +80 -0
- package/dist/bridge/daemon/openclaw-chat-runtime.js +1222 -0
- package/dist/bridge/daemon/openclaw-chat-runtime.js.map +1 -0
- package/dist/bridge/daemon/openclaw-gateway-client.d.ts +58 -0
- package/dist/bridge/daemon/openclaw-gateway-client.js +251 -0
- package/dist/bridge/daemon/openclaw-gateway-client.js.map +1 -0
- package/dist/bridge/daemon/relay-client.d.ts +75 -0
- package/dist/bridge/daemon/relay-client.js +369 -0
- package/dist/bridge/daemon/relay-client.js.map +1 -0
- package/dist/bridge/daemon/stub-chat-runtime.d.ts +4 -0
- package/dist/bridge/daemon/stub-chat-runtime.js +91 -0
- package/dist/bridge/daemon/stub-chat-runtime.js.map +1 -0
- package/dist/bridge/service.d.ts +12 -0
- package/dist/bridge/service.js +86 -0
- package/dist/bridge/service.js.map +1 -0
- package/dist/commands/backup.d.ts +16 -0
- package/dist/commands/backup.js +99 -0
- package/dist/commands/backup.js.map +1 -0
- package/dist/commands/bridge.d.ts +7 -0
- package/dist/commands/bridge.js +100 -0
- package/dist/commands/bridge.js.map +1 -0
- package/dist/commands/check.js +22 -6
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/edit.d.ts +2 -7
- package/dist/commands/edit.js +28 -16
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/feed.js +48 -16
- package/dist/commands/feed.js.map +1 -1
- package/dist/commands/install.js +99 -18
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/migration.d.ts +1 -0
- package/dist/commands/migration.js +205 -0
- package/dist/commands/migration.js.map +1 -0
- package/dist/commands/openclaw-channel-login.d.ts +54 -0
- package/dist/commands/openclaw-channel-login.js +334 -0
- package/dist/commands/openclaw-channel-login.js.map +1 -0
- package/dist/commands/restore.d.ts +16 -0
- package/dist/commands/restore.js +94 -0
- package/dist/commands/restore.js.map +1 -0
- package/dist/commands/service.js +56 -13
- package/dist/commands/service.js.map +1 -1
- package/dist/commands/show.d.ts +13 -0
- package/dist/commands/show.js +70 -0
- package/dist/commands/show.js.map +1 -0
- package/dist/commands/skill.d.ts +1 -0
- package/dist/commands/skill.js +137 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/uninstall.d.ts +1 -0
- package/dist/commands/uninstall.js +46 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/index.js +121 -12
- package/dist/index.js.map +1 -1
- package/dist/installers/base.d.ts +3 -1
- package/dist/installers/channel.d.ts +10 -2
- package/dist/installers/channel.js +143 -24
- package/dist/installers/channel.js.map +1 -1
- package/dist/installers/openclaw.d.ts +19 -2
- package/dist/installers/openclaw.js +186 -55
- package/dist/installers/openclaw.js.map +1 -1
- package/dist/installers/openviking-purge.d.ts +52 -0
- package/dist/installers/openviking-purge.js +380 -0
- package/dist/installers/openviking-purge.js.map +1 -0
- package/dist/installers/openviking.js +1 -2
- package/dist/installers/openviking.js.map +1 -1
- package/dist/installers/skill.d.ts +5 -2
- package/dist/installers/skill.js +67 -18
- package/dist/installers/skill.js.map +1 -1
- package/dist/migration/archive.d.ts +14 -0
- package/dist/migration/archive.js +84 -0
- package/dist/migration/archive.js.map +1 -0
- package/dist/migration/crypto.d.ts +16 -0
- package/dist/migration/crypto.js +56 -0
- package/dist/migration/crypto.js.map +1 -0
- package/dist/migration/manifest.d.ts +39 -0
- package/dist/migration/manifest.js +140 -0
- package/dist/migration/manifest.js.map +1 -0
- package/dist/openclaw-user-data.d.ts +86 -0
- package/dist/openclaw-user-data.js +422 -0
- package/dist/openclaw-user-data.js.map +1 -0
- package/dist/output/mode.d.ts +11 -0
- package/dist/output/mode.js +27 -0
- package/dist/output/mode.js.map +1 -0
- package/dist/output/ndjson.d.ts +57 -0
- package/dist/output/ndjson.js +136 -0
- package/dist/output/ndjson.js.map +1 -0
- package/dist/utils/constants.d.ts +14 -13
- package/dist/utils/constants.js +40 -21
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/deps.d.ts +34 -3
- package/dist/utils/deps.js +62 -100
- package/dist/utils/deps.js.map +1 -1
- package/dist/utils/install-safety.d.ts +25 -0
- package/dist/utils/install-safety.js +97 -0
- package/dist/utils/install-safety.js.map +1 -0
- package/dist/utils/logger.d.ts +10 -0
- package/dist/utils/logger.js +31 -4
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/mirror.js +14 -0
- package/dist/utils/mirror.js.map +1 -1
- package/dist/utils/openclaw-config-cli.d.ts +19 -0
- package/dist/utils/openclaw-config-cli.js +81 -0
- package/dist/utils/openclaw-config-cli.js.map +1 -0
- package/dist/utils/openclaw-daemon.d.ts +58 -0
- package/dist/utils/openclaw-daemon.js +154 -0
- package/dist/utils/openclaw-daemon.js.map +1 -0
- package/dist/utils/shell.d.ts +23 -2
- package/dist/utils/shell.js +138 -5
- package/dist/utils/shell.js.map +1 -1
- package/package.json +6 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function skillCommand(args: string[]): Promise<void>;
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { SkillInstaller } from '../installers/skill.js';
|
|
3
|
+
import { configureMirrors } from '../utils/mirror.js';
|
|
4
|
+
import { info, error, success } from '../utils/logger.js';
|
|
5
|
+
import { NdjsonEmitter, registerExitHandlers } from '../output/ndjson.js';
|
|
6
|
+
import { assertSafeInstallName, assertSafePackageVersion, parsePackageSource, } from '../utils/install-safety.js';
|
|
7
|
+
export async function skillCommand(args) {
|
|
8
|
+
const subCommand = args[0];
|
|
9
|
+
const skillName = args[1];
|
|
10
|
+
if (!subCommand || !['install', 'uninstall'].includes(subCommand)) {
|
|
11
|
+
const emitter = new NdjsonEmitter('skill_install');
|
|
12
|
+
registerExitHandlers(emitter);
|
|
13
|
+
error('Usage: okclaw skill <install|uninstall> <name> [options]');
|
|
14
|
+
emitter.end(false, 1, 'E_USAGE');
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
17
|
+
const op = subCommand === 'install' ? 'skill_install' : 'skill_uninstall';
|
|
18
|
+
const emitter = new NdjsonEmitter(op);
|
|
19
|
+
registerExitHandlers(emitter);
|
|
20
|
+
if (!skillName) {
|
|
21
|
+
error(`Usage: okclaw skill ${subCommand} <name>${subCommand === 'install' ? ' --version <ver> [--package-url <url>]' : ''}`);
|
|
22
|
+
emitter.end(false, 1, 'E_USAGE');
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
let safeSkillName;
|
|
26
|
+
try {
|
|
27
|
+
safeSkillName = assertSafeInstallName('skill', skillName);
|
|
28
|
+
}
|
|
29
|
+
catch (e) {
|
|
30
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
31
|
+
error(msg);
|
|
32
|
+
emitter.end(false, 1, 'E_INVALID_ARGS', { error: msg });
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
35
|
+
const installer = new SkillInstaller(safeSkillName);
|
|
36
|
+
if (subCommand === 'uninstall') {
|
|
37
|
+
emitter.start(`uninstalling skill ${safeSkillName}`, { skillName: safeSkillName });
|
|
38
|
+
info(`Uninstalling skill ${safeSkillName}...`);
|
|
39
|
+
try {
|
|
40
|
+
emitter.stepStart('validate', `validating skill name ${safeSkillName}`);
|
|
41
|
+
// installer 内部校验名称,SkillInstaller.uninstall 会在目标不存在时快速返回
|
|
42
|
+
emitter.stepDone('validate', 'skill name ok');
|
|
43
|
+
emitter.stepStart('uninstall', `removing ${safeSkillName}`);
|
|
44
|
+
await installer.uninstall();
|
|
45
|
+
emitter.stepDone('uninstall', 'skill removed');
|
|
46
|
+
success(`Skill ${safeSkillName} uninstalled.`);
|
|
47
|
+
emitter.end(true, 0, undefined, { skillName: safeSkillName });
|
|
48
|
+
}
|
|
49
|
+
catch (e) {
|
|
50
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
51
|
+
error(msg);
|
|
52
|
+
emitter.end(false, 1, 'E_SKILL_UNINSTALL_FAILED', { error: msg });
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
// install
|
|
58
|
+
let version = '';
|
|
59
|
+
let config;
|
|
60
|
+
let packageUrl;
|
|
61
|
+
for (let i = 2; i < args.length; i++) {
|
|
62
|
+
const arg = args[i];
|
|
63
|
+
if ((arg === '--version' || arg.startsWith('--version=')) && !version) {
|
|
64
|
+
version = arg.includes('=') ? arg.split('=')[1] : args[++i];
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
if (arg === '--config' && args[i + 1]) {
|
|
68
|
+
try {
|
|
69
|
+
config = JSON.parse(args[++i]);
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
error('Invalid --config JSON');
|
|
73
|
+
emitter.end(false, 1, 'E_CONFIG_JSON');
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
if ((arg === '--config-file' || arg.startsWith('--config-file=')) && !config) {
|
|
79
|
+
const filePath = arg.includes('=') ? arg.split('=')[1] : args[++i];
|
|
80
|
+
try {
|
|
81
|
+
config = JSON.parse(readFileSync(filePath, 'utf8'));
|
|
82
|
+
}
|
|
83
|
+
catch (e) {
|
|
84
|
+
error(`Failed to read config file: ${e}`);
|
|
85
|
+
emitter.end(false, 1, 'E_CONFIG_FILE');
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
if ((arg === '--package-url' || arg.startsWith('--package-url=')) && !packageUrl) {
|
|
91
|
+
packageUrl = arg.includes('=') ? arg.split('=')[1] : args[++i];
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (!version) {
|
|
96
|
+
error('--version is required for install');
|
|
97
|
+
emitter.end(false, 1, 'E_VERSION_REQUIRED');
|
|
98
|
+
process.exit(1);
|
|
99
|
+
}
|
|
100
|
+
let safeVersion;
|
|
101
|
+
let packageSource;
|
|
102
|
+
try {
|
|
103
|
+
safeVersion = assertSafePackageVersion(version);
|
|
104
|
+
packageSource = packageUrl ? parsePackageSource(packageUrl) : undefined;
|
|
105
|
+
}
|
|
106
|
+
catch (e) {
|
|
107
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
108
|
+
error(msg);
|
|
109
|
+
emitter.end(false, 1, 'E_INVALID_ARGS', { error: msg });
|
|
110
|
+
process.exit(1);
|
|
111
|
+
}
|
|
112
|
+
emitter.start(`installing skill ${safeSkillName}@${safeVersion}`, { skillName: safeSkillName, version: safeVersion });
|
|
113
|
+
info(`Installing skill ${safeSkillName}@${safeVersion}...`);
|
|
114
|
+
try {
|
|
115
|
+
emitter.stepStart('validate', 'validating install args');
|
|
116
|
+
await installer.checkDeps();
|
|
117
|
+
emitter.stepDone('validate', 'args ok, deps ready');
|
|
118
|
+
emitter.stepStart('download', `downloading skill ${safeSkillName}@${safeVersion}`);
|
|
119
|
+
await configureMirrors();
|
|
120
|
+
await installer.install(safeVersion, packageSource);
|
|
121
|
+
emitter.stepDone('download', 'skill downloaded');
|
|
122
|
+
emitter.stepStart('install', `applying skill ${safeSkillName}`);
|
|
123
|
+
if (config) {
|
|
124
|
+
await installer.configure(config);
|
|
125
|
+
}
|
|
126
|
+
emitter.stepDone('install', 'skill installed');
|
|
127
|
+
success(`Skill ${safeSkillName}@${safeVersion} installed.`);
|
|
128
|
+
emitter.end(true, 0, undefined, { skillName: safeSkillName, version: safeVersion });
|
|
129
|
+
}
|
|
130
|
+
catch (e) {
|
|
131
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
132
|
+
error(msg);
|
|
133
|
+
emitter.end(false, 1, 'E_SKILL_INSTALL_FAILED', { error: msg });
|
|
134
|
+
process.exit(1);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=skill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function uninstallCommand(args: string[]): Promise<void>;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { OpenclawInstaller } from '../installers/openclaw.js';
|
|
2
|
+
import { error, info, success } from '../utils/logger.js';
|
|
3
|
+
import { NdjsonEmitter, registerExitHandlers } from '../output/ndjson.js';
|
|
4
|
+
function getInstaller(component) {
|
|
5
|
+
switch (component) {
|
|
6
|
+
case 'openclaw': return new OpenclawInstaller();
|
|
7
|
+
default: return null;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export async function uninstallCommand(args) {
|
|
11
|
+
const emitter = new NdjsonEmitter('uninstall');
|
|
12
|
+
registerExitHandlers(emitter);
|
|
13
|
+
const component = args[0];
|
|
14
|
+
if (!component) {
|
|
15
|
+
error('Usage: okclaw uninstall <component>');
|
|
16
|
+
emitter.end(false, 1, 'E_USAGE');
|
|
17
|
+
process.exit(1);
|
|
18
|
+
}
|
|
19
|
+
const installer = getInstaller(component);
|
|
20
|
+
if (!installer) {
|
|
21
|
+
error(`Uninstall not supported for component: ${component}`);
|
|
22
|
+
emitter.end(false, 1, 'E_UNSUPPORTED');
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
if (!installer.uninstall) {
|
|
26
|
+
error(`Component ${component} does not support uninstall`);
|
|
27
|
+
emitter.end(false, 1, 'E_UNSUPPORTED');
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
emitter.start(`uninstalling ${component}`, { component });
|
|
31
|
+
info(`Uninstalling ${component}...`);
|
|
32
|
+
try {
|
|
33
|
+
emitter.stepStart('uninstall', `running uninstall for ${component}`);
|
|
34
|
+
await installer.uninstall();
|
|
35
|
+
emitter.stepDone('uninstall', `${component} uninstalled`);
|
|
36
|
+
success(`${component} uninstalled.`);
|
|
37
|
+
emitter.end(true, 0, undefined, { component });
|
|
38
|
+
}
|
|
39
|
+
catch (e) {
|
|
40
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
41
|
+
error(msg);
|
|
42
|
+
emitter.end(false, 1, 'E_UNINSTALL_FAILED', { error: msg });
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=uninstall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE1E,SAAS,YAAY,CAAC,SAAiB;IACrC,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,UAAU,CAAC,CAAC,OAAO,IAAI,iBAAiB,EAAE,CAAC;QAChD,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAc;IACnD,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC;IAC/C,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAE9B,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,KAAK,CAAC,0CAA0C,SAAS,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QACzB,KAAK,CAAC,aAAa,SAAS,6BAA6B,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,gBAAgB,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1D,IAAI,CAAC,gBAAgB,SAAS,KAAK,CAAC,CAAC;IAErC,IAAI,CAAC;QACH,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,yBAAyB,SAAS,EAAE,CAAC,CAAC;QACrE,MAAM,SAAS,CAAC,SAAS,EAAE,CAAC;QAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,SAAS,cAAc,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,SAAS,eAAe,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvD,KAAK,CAAC,GAAG,CAAC,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,oBAAoB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,21 +1,78 @@
|
|
|
1
1
|
import { readFileSync } from 'node:fs';
|
|
2
2
|
import { installCommand } from './commands/install.js';
|
|
3
|
+
import { uninstallCommand } from './commands/uninstall.js';
|
|
3
4
|
import { checkCommand } from './commands/check.js';
|
|
4
5
|
import { editCommand } from './commands/edit.js';
|
|
6
|
+
import { showCommand } from './commands/show.js';
|
|
5
7
|
import { feedCommand } from './commands/feed.js';
|
|
8
|
+
import { backupCommand } from './commands/backup.js';
|
|
9
|
+
import { restoreCommand } from './commands/restore.js';
|
|
6
10
|
import { startCommand, stopCommand, restartCommand, statusCommand } from './commands/service.js';
|
|
11
|
+
import { skillCommand } from './commands/skill.js';
|
|
12
|
+
import { bridgeCommand } from './commands/bridge.js';
|
|
13
|
+
import { openclawChannelLoginCommand } from './commands/openclaw-channel-login.js';
|
|
7
14
|
import { ensureRoot } from './utils/shell.js';
|
|
8
15
|
import { error } from './utils/logger.js';
|
|
9
|
-
|
|
16
|
+
import { setNdjsonPath, setOutputMode, isNdjson } from './output/mode.js';
|
|
17
|
+
import { getActiveEmitter, NdjsonEmitter } from './output/ndjson.js';
|
|
18
|
+
/**
|
|
19
|
+
* 从 argv 里抽出全局 flag --output=<mode> 和 --op-id=<uuid>,返回剩余参数。
|
|
20
|
+
* 支持 "--flag=value" 与 "--flag value" 两种写法。
|
|
21
|
+
*/
|
|
22
|
+
function extractGlobalFlags(argv) {
|
|
23
|
+
const rest = [];
|
|
24
|
+
let output = 'text';
|
|
25
|
+
let opId;
|
|
26
|
+
let ndjsonPath;
|
|
27
|
+
for (let i = 0; i < argv.length; i++) {
|
|
28
|
+
const arg = argv[i];
|
|
29
|
+
if (arg === '--output' && argv[i + 1]) {
|
|
30
|
+
output = argv[++i] === 'ndjson' ? 'ndjson' : 'text';
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
if (arg.startsWith('--output=')) {
|
|
34
|
+
output = arg.slice('--output='.length) === 'ndjson' ? 'ndjson' : 'text';
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
if (arg === '--op-id' && argv[i + 1]) {
|
|
38
|
+
opId = argv[++i];
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
if (arg.startsWith('--op-id=')) {
|
|
42
|
+
opId = arg.slice('--op-id='.length);
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
if (arg === '--ndjson-path' && argv[i + 1]) {
|
|
46
|
+
ndjsonPath = argv[++i];
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
if (arg.startsWith('--ndjson-path=')) {
|
|
50
|
+
ndjsonPath = arg.slice('--ndjson-path='.length);
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
rest.push(arg);
|
|
54
|
+
}
|
|
55
|
+
return { rest, output, opId, ndjsonPath };
|
|
56
|
+
}
|
|
57
|
+
const { rest, output, opId, ndjsonPath } = extractGlobalFlags(process.argv.slice(2));
|
|
58
|
+
setOutputMode(output, opId);
|
|
59
|
+
setNdjsonPath(ndjsonPath);
|
|
60
|
+
const [command, ...args] = rest;
|
|
10
61
|
async function main() {
|
|
11
62
|
// All commands require root (or auto-sudo)
|
|
12
63
|
if (command && command !== '--help' && command !== '-h' && command !== '--version' && command !== '-v') {
|
|
13
64
|
ensureRoot();
|
|
14
65
|
}
|
|
15
66
|
switch (command) {
|
|
67
|
+
case 'skill':
|
|
68
|
+
await skillCommand(args);
|
|
69
|
+
break;
|
|
16
70
|
case 'install':
|
|
17
71
|
await installCommand(args);
|
|
18
72
|
break;
|
|
73
|
+
case 'uninstall':
|
|
74
|
+
await uninstallCommand(args);
|
|
75
|
+
break;
|
|
19
76
|
case 'check':
|
|
20
77
|
await checkCommand();
|
|
21
78
|
break;
|
|
@@ -34,13 +91,27 @@ async function main() {
|
|
|
34
91
|
case 'edit':
|
|
35
92
|
await editCommand(args);
|
|
36
93
|
break;
|
|
94
|
+
case 'show':
|
|
95
|
+
await showCommand(args);
|
|
96
|
+
break;
|
|
37
97
|
case 'feed':
|
|
38
98
|
await feedCommand(args);
|
|
39
99
|
break;
|
|
100
|
+
case 'backup':
|
|
101
|
+
await backupCommand(args);
|
|
102
|
+
break;
|
|
103
|
+
case 'restore':
|
|
104
|
+
await restoreCommand(args);
|
|
105
|
+
break;
|
|
106
|
+
case 'bridge':
|
|
107
|
+
await bridgeCommand(args, readCliVersion());
|
|
108
|
+
break;
|
|
109
|
+
case 'openclaw-channel-login':
|
|
110
|
+
await openclawChannelLoginCommand(args);
|
|
111
|
+
break;
|
|
40
112
|
case '--version':
|
|
41
113
|
case '-v': {
|
|
42
|
-
|
|
43
|
-
console.log(pkg.version);
|
|
114
|
+
console.log(readCliVersion());
|
|
44
115
|
break;
|
|
45
116
|
}
|
|
46
117
|
case '--help':
|
|
@@ -54,34 +125,54 @@ async function main() {
|
|
|
54
125
|
process.exit(1);
|
|
55
126
|
}
|
|
56
127
|
}
|
|
128
|
+
function readCliVersion() {
|
|
129
|
+
const pkg = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8'));
|
|
130
|
+
return typeof pkg.version === 'string' ? pkg.version : 'unknown';
|
|
131
|
+
}
|
|
57
132
|
function printHelp() {
|
|
58
133
|
console.log(`
|
|
59
134
|
okclaw - OKClaw Deployment CLI
|
|
60
135
|
|
|
61
|
-
Usage: okclaw <command> [args...]
|
|
136
|
+
Usage: okclaw [global-flags] <command> [args...]
|
|
137
|
+
|
|
138
|
+
Global flags (before the command):
|
|
139
|
+
--output text|ndjson Output mode (default: text)
|
|
140
|
+
--op-id <uuid> Operation id, echoed in every ndjson event's fields.opId
|
|
141
|
+
--ndjson-path <path> Append ndjson to file instead of stdout (used in detached mode)
|
|
62
142
|
|
|
143
|
+
okclaw skill install <name> --version <ver> [--package-url <url>] Install a skill
|
|
144
|
+
okclaw skill uninstall <name> Uninstall a skill
|
|
63
145
|
okclaw install <component> --version <ver> [--config '<json>'] [--config-file <path>] [--package-url <url>]
|
|
146
|
+
okclaw uninstall <component> Uninstall a component (currently: openclaw)
|
|
64
147
|
okclaw check Check & install system dependencies
|
|
65
148
|
okclaw start Start openclaw gateway
|
|
66
149
|
okclaw stop Stop openclaw gateway
|
|
67
150
|
okclaw restart Restart openclaw gateway
|
|
68
151
|
okclaw status Show gateway status
|
|
69
|
-
okclaw edit <target> --file <path> Write config file (user/identity/soul/agents)
|
|
152
|
+
okclaw edit <target> --file <path> Write config file (user/identity/soul/agents/memory/tools/openclaw-json)
|
|
153
|
+
okclaw show <target...> Read config file content to stdout (batch requires --output=ndjson)
|
|
70
154
|
okclaw feed --file <path> Feed file into knowledge base
|
|
155
|
+
okclaw backup openclaw-user-data --archive [--archive-path <path>] [--scope user-data|clone] [--include-workspace-extra]
|
|
156
|
+
okclaw restore openclaw-user-data --archive <path> [--scope user-data|clone] [--include-workspace-extra]
|
|
157
|
+
okclaw install bridge --config-file <path> Install and start bridge daemon
|
|
158
|
+
okclaw bridge daemon|status|restart|uninstall Manage bridge daemon
|
|
159
|
+
okclaw openclaw-channel-login --channel openclaw-weixin Run OpenClaw plugin QR login (OS internal)
|
|
71
160
|
|
|
72
161
|
Components:
|
|
73
162
|
openclaw Core AI Agent framework (npm install)
|
|
74
|
-
|
|
75
|
-
dingtalk DingTalk channel (npm: @
|
|
76
|
-
feishu Feishu/Lark channel (
|
|
77
|
-
wechat WeChat channel (npm: @tencent-weixin/openclaw-weixin)
|
|
163
|
+
bridge OKClaw bridge daemon bundled in this CLI
|
|
164
|
+
dingtalk DingTalk channel (npm: @soimy/dingtalk)
|
|
165
|
+
feishu Feishu/Lark channel (bundled with OpenClaw, config only)
|
|
166
|
+
wechat WeChat channel alias for openclaw-weixin (npm: @tencent-weixin/openclaw-weixin)
|
|
78
167
|
s3 S3 IM channel (needs --package-url)
|
|
79
168
|
|
|
80
169
|
Examples:
|
|
81
170
|
okclaw install openclaw --version 2026.3.24 --config-file /root/okclaw/config/openclaw.json
|
|
82
|
-
okclaw install openviking --version 0.2.15 --package-url /tmp/ov-plugin.tar.gz --config-file /root/okclaw/config/openviking.json
|
|
83
171
|
okclaw install dingtalk --version 2.0.1 --config '{"clientId":"xxx","clientSecret":"xxx"}'
|
|
84
172
|
okclaw install s3 --version 1.0.0 --package-url /tmp/channel-s3.tar.gz
|
|
173
|
+
okclaw uninstall openclaw
|
|
174
|
+
okclaw skill install my-skill --version 1.0.0 --package-url https://example.com/skill.zip
|
|
175
|
+
okclaw skill uninstall my-skill
|
|
85
176
|
okclaw restart
|
|
86
177
|
okclaw status
|
|
87
178
|
|
|
@@ -89,11 +180,29 @@ Notes:
|
|
|
89
180
|
- All commands auto-elevate to root via sudo if needed
|
|
90
181
|
- All paths are anchored to /root/ (forced HOME=/root)
|
|
91
182
|
- npm uses npmmirror, pip uses tsinghua mirror (China acceleration)
|
|
92
|
-
- Node.js >=
|
|
183
|
+
- Node.js >= 24 (LTS) is auto-installed/upgraded via nvm if missing or too old
|
|
184
|
+
- openclaw-user-data defaults to core workspace files and skills only
|
|
185
|
+
- --scope clone backs up/restores only IDENTITY.md, SOUL.md, TOOLS.md, AGENTS.md, and workspace/skills
|
|
186
|
+
- --include-workspace-extra also migrates other OpenClaw workspace root entries, but never /root/.openclaw/openclaw.json
|
|
93
187
|
`);
|
|
94
188
|
}
|
|
95
189
|
main().catch((err) => {
|
|
96
|
-
|
|
190
|
+
const msg = String(err?.message || err);
|
|
191
|
+
// bug#4 修:顶层 catch 兜底发 end,防止 os-api 永远等不到终态。
|
|
192
|
+
// 有活 emitter 就用它;没有(比如 extractGlobalFlags/ensureRoot 阶段崩)→ 直接写一行 fallback。
|
|
193
|
+
if (isNdjson()) {
|
|
194
|
+
const active = getActiveEmitter();
|
|
195
|
+
if (active && !active.hasEnded()) {
|
|
196
|
+
active.end(false, 1, 'E_TOPLEVEL', { error: msg });
|
|
197
|
+
}
|
|
198
|
+
else if (!active) {
|
|
199
|
+
// 没有任何 emitter 被注册过:手写一条 end 行
|
|
200
|
+
const fallback = new NdjsonEmitter('unknown');
|
|
201
|
+
fallback.start('top-level error');
|
|
202
|
+
fallback.end(false, 1, 'E_TOPLEVEL', { error: msg });
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
error(msg);
|
|
97
206
|
process.exit(1);
|
|
98
207
|
});
|
|
99
208
|
//# 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":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACjG,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import type { PackageSource, SafePackageVersion } from '../utils/install-safety.js';
|
|
1
2
|
export interface Installer {
|
|
2
3
|
checkDeps(): Promise<void>;
|
|
3
|
-
install(version:
|
|
4
|
+
install(version: SafePackageVersion, packageSource?: PackageSource): Promise<void>;
|
|
4
5
|
configure(config: Record<string, unknown>): Promise<void>;
|
|
6
|
+
uninstall?(): Promise<void>;
|
|
5
7
|
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { Installer } from './base.js';
|
|
2
|
+
import type { PackageSource } from '../utils/install-safety.js';
|
|
2
3
|
export declare class ChannelInstaller implements Installer {
|
|
3
|
-
private channelName;
|
|
4
|
+
private readonly channelName;
|
|
4
5
|
constructor(channelName: string);
|
|
5
6
|
checkDeps(): Promise<void>;
|
|
6
|
-
install(version: string,
|
|
7
|
+
install(version: string, packageSource?: PackageSource): Promise<void>;
|
|
7
8
|
private verifyInstalled;
|
|
8
9
|
configure(config: Record<string, unknown>): Promise<void>;
|
|
9
10
|
/**
|
|
@@ -15,6 +16,7 @@ export declare class ChannelInstaller implements Installer {
|
|
|
15
16
|
*/
|
|
16
17
|
private cleanupStaleState;
|
|
17
18
|
private hasJsonRef;
|
|
19
|
+
private reportLegacyWechatAliasState;
|
|
18
20
|
private installFromLocalPackage;
|
|
19
21
|
/**
|
|
20
22
|
* Download tgz from npm (npmmirror) first, then install locally.
|
|
@@ -22,5 +24,11 @@ export declare class ChannelInstaller implements Installer {
|
|
|
22
24
|
*/
|
|
23
25
|
private installViaNpmPack;
|
|
24
26
|
private addToPluginsAllow;
|
|
27
|
+
/**
|
|
28
|
+
* Push the absolute extension dir into plugins.load.paths so the gateway
|
|
29
|
+
* scans it on startup. Idempotent — dedup against trailing-slash variants
|
|
30
|
+
* (e.g. `/.../dingtalk` vs `/.../dingtalk/` both count as the same entry).
|
|
31
|
+
*/
|
|
32
|
+
private addToLoadPaths;
|
|
25
33
|
private applyConfig;
|
|
26
34
|
}
|