@okclaw-build/cli 1.0.0-beta.50 → 1.0.0-beta.52
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/commands/backup.js +11 -3
- package/dist/commands/backup.js.map +1 -1
- package/dist/commands/install.js +30 -17
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/restore.js +11 -3
- package/dist/commands/restore.js.map +1 -1
- package/dist/commands/skill.js +37 -14
- package/dist/commands/skill.js.map +1 -1
- package/dist/index.js +4 -4
- package/dist/installers/base.d.ts +2 -1
- package/dist/installers/channel.d.ts +3 -2
- package/dist/installers/channel.js +32 -26
- package/dist/installers/channel.js.map +1 -1
- package/dist/installers/openclaw.js +25 -12
- package/dist/installers/openclaw.js.map +1 -1
- package/dist/installers/skill.d.ts +3 -2
- package/dist/installers/skill.js +39 -20
- package/dist/installers/skill.js.map +1 -1
- package/dist/openclaw-user-data.d.ts +17 -2
- package/dist/openclaw-user-data.js +149 -21
- package/dist/openclaw-user-data.js.map +1 -1
- package/dist/utils/constants.d.ts +0 -8
- package/dist/utils/constants.js +0 -14
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/install-safety.d.ts +25 -0
- package/dist/utils/install-safety.js +95 -0
- package/dist/utils/install-safety.js.map +1 -0
- package/dist/utils/shell.d.ts +11 -0
- package/dist/utils/shell.js +58 -0
- package/dist/utils/shell.js.map +1 -1
- package/package.json +3 -3
package/dist/commands/backup.js
CHANGED
|
@@ -5,11 +5,14 @@ export async function backupCommand(args, deps = {}) {
|
|
|
5
5
|
const emit = deps.emit ?? defaultEmit;
|
|
6
6
|
const createArchive = deps.createArchive ?? createOpenclawUserDataArchive;
|
|
7
7
|
if (parsed.target !== 'openclaw-user-data' || !parsed.archive) {
|
|
8
|
-
error('Usage: okclaw backup openclaw-user-data --archive [--archive-path <path>] [--output=ndjson]');
|
|
8
|
+
error('Usage: okclaw backup openclaw-user-data --archive [--archive-path <path>] [--include-workspace-extra] [--output=ndjson]');
|
|
9
9
|
process.exit(1);
|
|
10
10
|
}
|
|
11
11
|
try {
|
|
12
|
-
const result = await createArchive({
|
|
12
|
+
const result = await createArchive({
|
|
13
|
+
archivePath: parsed.archivePath,
|
|
14
|
+
includeWorkspaceExtra: parsed.includeWorkspaceExtra,
|
|
15
|
+
});
|
|
13
16
|
emit({
|
|
14
17
|
ok: true,
|
|
15
18
|
code: 'OK',
|
|
@@ -39,6 +42,7 @@ function parseBackupArgs(args) {
|
|
|
39
42
|
let target;
|
|
40
43
|
let archive = false;
|
|
41
44
|
let archivePath;
|
|
45
|
+
let includeWorkspaceExtra = false;
|
|
42
46
|
let ndjson = false;
|
|
43
47
|
for (let i = 0; i < args.length; i++) {
|
|
44
48
|
const arg = args[i];
|
|
@@ -58,13 +62,17 @@ function parseBackupArgs(args) {
|
|
|
58
62
|
archivePath = arg.slice('--archive-path='.length);
|
|
59
63
|
continue;
|
|
60
64
|
}
|
|
65
|
+
if (arg === '--include-workspace-extra') {
|
|
66
|
+
includeWorkspaceExtra = true;
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
61
69
|
if (arg === '--output=ndjson' || (arg === '--output' && args[i + 1] === 'ndjson')) {
|
|
62
70
|
ndjson = true;
|
|
63
71
|
if (arg === '--output')
|
|
64
72
|
i += 1;
|
|
65
73
|
}
|
|
66
74
|
}
|
|
67
|
-
return { target, archive, archivePath, ndjson };
|
|
75
|
+
return { target, archive, archivePath, includeWorkspaceExtra, ndjson };
|
|
68
76
|
}
|
|
69
77
|
function defaultEmit(event) {
|
|
70
78
|
process.stdout.write(JSON.stringify(event) + '\n');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,6BAA6B,EAAsB,MAAM,0BAA0B,CAAC;AAiB7F,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAc,EAAE,OAA0B,EAAE;IAC9E,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC;IACtC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,6BAA6B,CAAC;IAE1E,IAAI,MAAM,CAAC,MAAM,KAAK,oBAAoB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC9D,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/install.js
CHANGED
|
@@ -1,21 +1,17 @@
|
|
|
1
1
|
import { readFileSync } from 'node:fs';
|
|
2
2
|
import { OpenclawInstaller } from '../installers/openclaw.js';
|
|
3
|
-
import { OpenvikingInstaller } from '../installers/openviking.js';
|
|
4
3
|
import { ChannelInstaller } from '../installers/channel.js';
|
|
5
4
|
import { SkillInstaller } from '../installers/skill.js';
|
|
6
5
|
import { detectOpenviking, purgePhaseA } from '../installers/openviking-purge.js';
|
|
7
6
|
import { configureMirrors } from '../utils/mirror.js';
|
|
8
7
|
import { info, error, success } from '../utils/logger.js';
|
|
9
8
|
import { NdjsonEmitter, registerExitHandlers } from '../output/ndjson.js';
|
|
9
|
+
import { assertSafePackageVersion, parseInstallComponent, parsePackageSource, } from '../utils/install-safety.js';
|
|
10
10
|
function getInstaller(component) {
|
|
11
|
-
switch (component) {
|
|
11
|
+
switch (component.kind) {
|
|
12
12
|
case 'openclaw': return new OpenclawInstaller();
|
|
13
|
-
case '
|
|
14
|
-
|
|
15
|
-
if (component.startsWith('skill:')) {
|
|
16
|
-
return new SkillInstaller(component.substring('skill:'.length));
|
|
17
|
-
}
|
|
18
|
-
return new ChannelInstaller(component);
|
|
13
|
+
case 'skill': return new SkillInstaller(component.skillName);
|
|
14
|
+
case 'channel': return new ChannelInstaller(component.channelName);
|
|
19
15
|
}
|
|
20
16
|
}
|
|
21
17
|
export async function installCommand(args) {
|
|
@@ -69,17 +65,34 @@ export async function installCommand(args) {
|
|
|
69
65
|
emitter.end(false, 1, 'E_VERSION_REQUIRED');
|
|
70
66
|
process.exit(1);
|
|
71
67
|
}
|
|
72
|
-
|
|
73
|
-
|
|
68
|
+
let parsed;
|
|
69
|
+
let safeVersion;
|
|
70
|
+
let packageSource;
|
|
71
|
+
try {
|
|
72
|
+
parsed = parseInstallComponent(component);
|
|
73
|
+
safeVersion = assertSafePackageVersion(version);
|
|
74
|
+
packageSource = packageUrl ? parsePackageSource(packageUrl) : undefined;
|
|
75
|
+
if (parsed.kind === 'channel' && parsed.channelName === 's3' && !packageSource) {
|
|
76
|
+
throw new Error('--package-url is required for s3');
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch (e) {
|
|
80
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
81
|
+
error(msg);
|
|
82
|
+
emitter.end(false, 1, 'E_INVALID_ARGS', { error: msg });
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
emitter.start(`installing ${parsed.raw}@${safeVersion}`, { component: parsed.raw, version: safeVersion });
|
|
86
|
+
info(`Installing ${parsed.raw}@${safeVersion}...`);
|
|
74
87
|
try {
|
|
75
88
|
emitter.stepStart('check-deps', 'checking system dependencies');
|
|
76
|
-
const installer = getInstaller(
|
|
89
|
+
const installer = getInstaller(parsed);
|
|
77
90
|
await installer.checkDeps();
|
|
78
91
|
emitter.stepDone('check-deps', 'dependencies ok');
|
|
79
92
|
emitter.stepStart('mirrors', 'configuring npm/pip mirrors');
|
|
80
93
|
await configureMirrors();
|
|
81
94
|
emitter.stepDone('mirrors', 'mirrors configured');
|
|
82
|
-
if (
|
|
95
|
+
if (parsed.kind === 'openclaw') {
|
|
83
96
|
emitter.stepStart('preflight:purge-openviking', 'checking openviking residue');
|
|
84
97
|
try {
|
|
85
98
|
const detection = detectOpenviking();
|
|
@@ -101,9 +114,9 @@ export async function installCommand(args) {
|
|
|
101
114
|
process.exit(1);
|
|
102
115
|
}
|
|
103
116
|
}
|
|
104
|
-
emitter.stepStart('install', `installing ${
|
|
105
|
-
await installer.install(
|
|
106
|
-
emitter.stepDone('install', `${
|
|
117
|
+
emitter.stepStart('install', `installing ${parsed.raw}@${safeVersion}`);
|
|
118
|
+
await installer.install(safeVersion, packageSource);
|
|
119
|
+
emitter.stepDone('install', `${parsed.raw}@${safeVersion} installed`);
|
|
107
120
|
if (config) {
|
|
108
121
|
emitter.stepStart('configure', 'applying configuration');
|
|
109
122
|
await installer.configure(config);
|
|
@@ -112,8 +125,8 @@ export async function installCommand(args) {
|
|
|
112
125
|
else {
|
|
113
126
|
info('No config provided, keeping existing configuration.');
|
|
114
127
|
}
|
|
115
|
-
success(`${
|
|
116
|
-
emitter.end(true, 0, undefined, { component, version });
|
|
128
|
+
success(`${parsed.raw}@${safeVersion} installed.`);
|
|
129
|
+
emitter.end(true, 0, undefined, { component: parsed.raw, version: safeVersion });
|
|
117
130
|
}
|
|
118
131
|
catch (e) {
|
|
119
132
|
const msg = e instanceof Error ? e.message : String(e);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/restore.js
CHANGED
|
@@ -5,11 +5,14 @@ export async function restoreCommand(args, deps = {}) {
|
|
|
5
5
|
const emit = deps.emit ?? defaultEmit;
|
|
6
6
|
const restoreArchive = deps.restoreArchive ?? restoreOpenclawUserDataArchive;
|
|
7
7
|
if (parsed.target !== 'openclaw-user-data' || !parsed.archivePath) {
|
|
8
|
-
error('Usage: okclaw restore openclaw-user-data --archive <path> [--output=ndjson]');
|
|
8
|
+
error('Usage: okclaw restore openclaw-user-data --archive <path> [--include-workspace-extra] [--output=ndjson]');
|
|
9
9
|
process.exit(1);
|
|
10
10
|
}
|
|
11
11
|
try {
|
|
12
|
-
const result = await restoreArchive({
|
|
12
|
+
const result = await restoreArchive({
|
|
13
|
+
archivePath: parsed.archivePath,
|
|
14
|
+
includeWorkspaceExtra: parsed.includeWorkspaceExtra,
|
|
15
|
+
});
|
|
13
16
|
emit({
|
|
14
17
|
ok: true,
|
|
15
18
|
code: 'OK',
|
|
@@ -38,6 +41,7 @@ export async function restoreCommand(args, deps = {}) {
|
|
|
38
41
|
function parseRestoreArgs(args) {
|
|
39
42
|
let target;
|
|
40
43
|
let archivePath;
|
|
44
|
+
let includeWorkspaceExtra = false;
|
|
41
45
|
let ndjson = false;
|
|
42
46
|
for (let i = 0; i < args.length; i++) {
|
|
43
47
|
const arg = args[i];
|
|
@@ -53,13 +57,17 @@ function parseRestoreArgs(args) {
|
|
|
53
57
|
archivePath = arg.slice('--archive='.length);
|
|
54
58
|
continue;
|
|
55
59
|
}
|
|
60
|
+
if (arg === '--include-workspace-extra') {
|
|
61
|
+
includeWorkspaceExtra = true;
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
56
64
|
if (arg === '--output=ndjson' || (arg === '--output' && args[i + 1] === 'ndjson')) {
|
|
57
65
|
ndjson = true;
|
|
58
66
|
if (arg === '--output')
|
|
59
67
|
i += 1;
|
|
60
68
|
}
|
|
61
69
|
}
|
|
62
|
-
return { target, archivePath, ndjson };
|
|
70
|
+
return { target, archivePath, includeWorkspaceExtra, ndjson };
|
|
63
71
|
}
|
|
64
72
|
function defaultEmit(event) {
|
|
65
73
|
process.stdout.write(JSON.stringify(event) + '\n');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restore.js","sourceRoot":"","sources":["../../src/commands/restore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,8BAA8B,EAAsB,MAAM,0BAA0B,CAAC;AAiB9F,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAc,EAAE,OAA2B,EAAE;IAChF,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC;IACtC,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,8BAA8B,CAAC;IAE7E,IAAI,MAAM,CAAC,MAAM,KAAK,oBAAoB,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAClE,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"restore.js","sourceRoot":"","sources":["../../src/commands/restore.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/skill.js
CHANGED
|
@@ -3,6 +3,7 @@ import { SkillInstaller } from '../installers/skill.js';
|
|
|
3
3
|
import { configureMirrors } from '../utils/mirror.js';
|
|
4
4
|
import { info, error, success } from '../utils/logger.js';
|
|
5
5
|
import { NdjsonEmitter, registerExitHandlers } from '../output/ndjson.js';
|
|
6
|
+
import { assertSafeInstallName, assertSafePackageVersion, parsePackageSource, } from '../utils/install-safety.js';
|
|
6
7
|
export async function skillCommand(args) {
|
|
7
8
|
const subCommand = args[0];
|
|
8
9
|
const skillName = args[1];
|
|
@@ -21,19 +22,29 @@ export async function skillCommand(args) {
|
|
|
21
22
|
emitter.end(false, 1, 'E_USAGE');
|
|
22
23
|
process.exit(1);
|
|
23
24
|
}
|
|
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);
|
|
25
36
|
if (subCommand === 'uninstall') {
|
|
26
|
-
emitter.start(`uninstalling skill ${
|
|
27
|
-
info(`Uninstalling skill ${
|
|
37
|
+
emitter.start(`uninstalling skill ${safeSkillName}`, { skillName: safeSkillName });
|
|
38
|
+
info(`Uninstalling skill ${safeSkillName}...`);
|
|
28
39
|
try {
|
|
29
|
-
emitter.stepStart('validate', `validating skill name ${
|
|
40
|
+
emitter.stepStart('validate', `validating skill name ${safeSkillName}`);
|
|
30
41
|
// installer 内部校验名称,SkillInstaller.uninstall 会在目标不存在时快速返回
|
|
31
42
|
emitter.stepDone('validate', 'skill name ok');
|
|
32
|
-
emitter.stepStart('uninstall', `removing ${
|
|
43
|
+
emitter.stepStart('uninstall', `removing ${safeSkillName}`);
|
|
33
44
|
await installer.uninstall();
|
|
34
45
|
emitter.stepDone('uninstall', 'skill removed');
|
|
35
|
-
success(`Skill ${
|
|
36
|
-
emitter.end(true, 0, undefined, { skillName });
|
|
46
|
+
success(`Skill ${safeSkillName} uninstalled.`);
|
|
47
|
+
emitter.end(true, 0, undefined, { skillName: safeSkillName });
|
|
37
48
|
}
|
|
38
49
|
catch (e) {
|
|
39
50
|
const msg = e instanceof Error ? e.message : String(e);
|
|
@@ -86,23 +97,35 @@ export async function skillCommand(args) {
|
|
|
86
97
|
emitter.end(false, 1, 'E_VERSION_REQUIRED');
|
|
87
98
|
process.exit(1);
|
|
88
99
|
}
|
|
89
|
-
|
|
90
|
-
|
|
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}...`);
|
|
91
114
|
try {
|
|
92
115
|
emitter.stepStart('validate', 'validating install args');
|
|
93
116
|
await installer.checkDeps();
|
|
94
117
|
emitter.stepDone('validate', 'args ok, deps ready');
|
|
95
|
-
emitter.stepStart('download', `downloading skill ${
|
|
118
|
+
emitter.stepStart('download', `downloading skill ${safeSkillName}@${safeVersion}`);
|
|
96
119
|
await configureMirrors();
|
|
97
|
-
await installer.install(
|
|
120
|
+
await installer.install(safeVersion, packageSource);
|
|
98
121
|
emitter.stepDone('download', 'skill downloaded');
|
|
99
|
-
emitter.stepStart('install', `applying skill ${
|
|
122
|
+
emitter.stepStart('install', `applying skill ${safeSkillName}`);
|
|
100
123
|
if (config) {
|
|
101
124
|
await installer.configure(config);
|
|
102
125
|
}
|
|
103
126
|
emitter.stepDone('install', 'skill installed');
|
|
104
|
-
success(`Skill ${
|
|
105
|
-
emitter.end(true, 0, undefined, { skillName, version });
|
|
127
|
+
success(`Skill ${safeSkillName}@${safeVersion} installed.`);
|
|
128
|
+
emitter.end(true, 0, undefined, { skillName: safeSkillName, version: safeVersion });
|
|
106
129
|
}
|
|
107
130
|
catch (e) {
|
|
108
131
|
const msg = e instanceof Error ? e.message : String(e);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -141,12 +141,11 @@ Global flags (before the command):
|
|
|
141
141
|
okclaw edit <target> --file <path> Write config file (user/identity/soul/agents/memory/tools/openclaw-json)
|
|
142
142
|
okclaw show <target...> Read config file content to stdout (batch requires --output=ndjson)
|
|
143
143
|
okclaw feed --file <path> Feed file into knowledge base
|
|
144
|
-
okclaw backup openclaw-user-data --archive [--archive-path <path>]
|
|
145
|
-
okclaw restore openclaw-user-data --archive <path>
|
|
144
|
+
okclaw backup openclaw-user-data --archive [--archive-path <path>] [--include-workspace-extra]
|
|
145
|
+
okclaw restore openclaw-user-data --archive <path> [--include-workspace-extra]
|
|
146
146
|
|
|
147
147
|
Components:
|
|
148
148
|
openclaw Core AI Agent framework (npm install)
|
|
149
|
-
openviking Long-term memory plugin (pip + openclaw plugin, needs --package-url)
|
|
150
149
|
dingtalk DingTalk channel (npm: @soimy/dingtalk)
|
|
151
150
|
feishu Feishu/Lark channel (bundled with OpenClaw, config only)
|
|
152
151
|
wechat WeChat channel (npm: @tencent-weixin/openclaw-weixin)
|
|
@@ -154,7 +153,6 @@ Components:
|
|
|
154
153
|
|
|
155
154
|
Examples:
|
|
156
155
|
okclaw install openclaw --version 2026.3.24 --config-file /root/okclaw/config/openclaw.json
|
|
157
|
-
okclaw install openviking --version 0.2.15 --package-url /tmp/ov-plugin.tar.gz --config-file /root/okclaw/config/openviking.json
|
|
158
156
|
okclaw install dingtalk --version 2.0.1 --config '{"clientId":"xxx","clientSecret":"xxx"}'
|
|
159
157
|
okclaw install s3 --version 1.0.0 --package-url /tmp/channel-s3.tar.gz
|
|
160
158
|
okclaw uninstall openclaw
|
|
@@ -168,6 +166,8 @@ Notes:
|
|
|
168
166
|
- All paths are anchored to /root/ (forced HOME=/root)
|
|
169
167
|
- npm uses npmmirror, pip uses tsinghua mirror (China acceleration)
|
|
170
168
|
- Node.js >= 24 (LTS) is auto-installed/upgraded via nvm if missing or too old
|
|
169
|
+
- openclaw-user-data defaults to core workspace files and skills only
|
|
170
|
+
- --include-workspace-extra also migrates other OpenClaw workspace root entries, but never /root/.openclaw/openclaw.json
|
|
171
171
|
`);
|
|
172
172
|
}
|
|
173
173
|
main().catch((err) => {
|
|
@@ -1,6 +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>;
|
|
5
6
|
uninstall?(): Promise<void>;
|
|
6
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
|
/**
|
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, rmSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
-
import {
|
|
1
|
+
import { copyFileSync, existsSync, mkdirSync, rmSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { runCommand, runCommandCapture } from '../utils/shell.js';
|
|
3
3
|
import { ensureCommand, checkDiskSpace } from '../utils/deps.js';
|
|
4
4
|
import { info, warn } from '../utils/logger.js';
|
|
5
5
|
import { stopDaemonForExclusiveAccess } from '../utils/openclaw-daemon.js';
|
|
6
6
|
import { CHANNEL_NPM_PACKAGES, BUNDLED_PLUGINS, OKCLAW_TMP_DIR, OPENCLAW_HOME, NPM_REGISTRY } from '../utils/constants.js';
|
|
7
|
+
import { assertSafeInstallName, channelExtensionDir, tmpInstallPath } from '../utils/install-safety.js';
|
|
7
8
|
export class ChannelInstaller {
|
|
8
9
|
channelName;
|
|
9
10
|
constructor(channelName) {
|
|
10
|
-
this.channelName = channelName;
|
|
11
|
+
this.channelName = assertSafeInstallName('channel', channelName);
|
|
11
12
|
}
|
|
12
13
|
async checkDeps() {
|
|
13
14
|
await checkDiskSpace(200);
|
|
14
15
|
await ensureCommand('openclaw');
|
|
15
16
|
}
|
|
16
|
-
async install(version,
|
|
17
|
+
async install(version, packageSource) {
|
|
17
18
|
if (BUNDLED_PLUGINS.has(this.channelName)) {
|
|
18
19
|
info(`${this.channelName} is bundled with openclaw, skipping install (config only).`);
|
|
19
20
|
return;
|
|
@@ -32,8 +33,8 @@ export class ChannelInstaller {
|
|
|
32
33
|
// Clean up any stale state (both the extension dir AND config entries) so openclaw's
|
|
33
34
|
// config validation passes when `openclaw plugins install` runs.
|
|
34
35
|
this.cleanupStaleState();
|
|
35
|
-
if (
|
|
36
|
-
await this.installFromLocalPackage(
|
|
36
|
+
if (packageSource) {
|
|
37
|
+
await this.installFromLocalPackage(packageSource);
|
|
37
38
|
}
|
|
38
39
|
else {
|
|
39
40
|
await this.installViaNpmPack(version);
|
|
@@ -50,7 +51,7 @@ export class ChannelInstaller {
|
|
|
50
51
|
info(`${this.channelName}@${version} installed.`);
|
|
51
52
|
}
|
|
52
53
|
verifyInstalled() {
|
|
53
|
-
const pluginDir =
|
|
54
|
+
const pluginDir = channelExtensionDir(this.channelName);
|
|
54
55
|
if (!existsSync(pluginDir)) {
|
|
55
56
|
throw new Error(`Install verification failed: ${pluginDir} not found after "openclaw plugins install". ` +
|
|
56
57
|
`The install command may have silently skipped due to stale config; aborting before configure() runs.`);
|
|
@@ -81,7 +82,7 @@ export class ChannelInstaller {
|
|
|
81
82
|
* `openclaw ...` commands ("unknown channel id: <name>").
|
|
82
83
|
*/
|
|
83
84
|
cleanupStaleState() {
|
|
84
|
-
const pluginDir =
|
|
85
|
+
const pluginDir = channelExtensionDir(this.channelName);
|
|
85
86
|
const configFile = `${OPENCLAW_HOME}/openclaw.json`;
|
|
86
87
|
const hadDir = existsSync(pluginDir);
|
|
87
88
|
const hadJsonRef = this.hasJsonRef(configFile);
|
|
@@ -145,22 +146,22 @@ export class ChannelInstaller {
|
|
|
145
146
|
}
|
|
146
147
|
return false;
|
|
147
148
|
}
|
|
148
|
-
async installFromLocalPackage(
|
|
149
|
+
async installFromLocalPackage(packageSource) {
|
|
150
|
+
const archive = tmpInstallPath(`${this.channelName}-plugin.tgz`);
|
|
149
151
|
mkdirSync(OKCLAW_TMP_DIR, { recursive: true });
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
await shell(`curl -fsSL --connect-timeout 30 --retry 3 -o "${archive}" "${packageUrl}"`);
|
|
152
|
+
if (packageSource.kind === 'remote') {
|
|
153
|
+
info(`Downloading ${this.channelName} from ${packageSource.url}...`);
|
|
154
|
+
await runCommand('curl', ['-fsSL', '--connect-timeout', '30', '--retry', '3', '-o', archive, packageSource.url]);
|
|
154
155
|
}
|
|
155
|
-
else if (existsSync(
|
|
156
|
-
|
|
156
|
+
else if (existsSync(packageSource.path)) {
|
|
157
|
+
copyFileSync(packageSource.path, archive);
|
|
157
158
|
}
|
|
158
159
|
else {
|
|
159
|
-
throw new Error(`Package not found: ${
|
|
160
|
+
throw new Error(`Package not found: ${packageSource.path}`);
|
|
160
161
|
}
|
|
161
162
|
info(`Installing ${this.channelName} from local package...`);
|
|
162
|
-
await
|
|
163
|
-
|
|
163
|
+
await runCommand('openclaw', ['plugins', 'install', archive]);
|
|
164
|
+
rmSync(archive, { force: true });
|
|
164
165
|
}
|
|
165
166
|
/**
|
|
166
167
|
* Download tgz from npm (npmmirror) first, then install locally.
|
|
@@ -175,17 +176,23 @@ export class ChannelInstaller {
|
|
|
175
176
|
const pkgSpec = `${npmPkg}@${version}`;
|
|
176
177
|
mkdirSync(OKCLAW_TMP_DIR, { recursive: true });
|
|
177
178
|
info(`Downloading ${pkgSpec} from npm...`);
|
|
178
|
-
const packResult = await
|
|
179
|
+
const packResult = await runCommandCapture('npm', ['pack', pkgSpec, '--registry', NPM_REGISTRY], {
|
|
180
|
+
cwd: OKCLAW_TMP_DIR,
|
|
181
|
+
});
|
|
179
182
|
if (packResult.code !== 0) {
|
|
180
183
|
throw new Error(`npm pack failed for ${pkgSpec}: ${packResult.stderr}`);
|
|
181
184
|
}
|
|
182
|
-
const
|
|
185
|
+
const tgzName = packResult.stdout.split('\n').map((line) => line.trim()).filter(Boolean).at(-1);
|
|
186
|
+
if (!tgzName) {
|
|
187
|
+
throw new Error(`npm pack did not report an output file for ${pkgSpec}`);
|
|
188
|
+
}
|
|
189
|
+
const tgzFile = tmpInstallPath(tgzName);
|
|
183
190
|
if (!existsSync(tgzFile)) {
|
|
184
191
|
throw new Error(`npm pack did not produce expected file: ${tgzFile}`);
|
|
185
192
|
}
|
|
186
193
|
info(`Installing ${this.channelName} from ${tgzFile}...`);
|
|
187
|
-
await
|
|
188
|
-
|
|
194
|
+
await runCommand('openclaw', ['plugins', 'install', tgzFile]);
|
|
195
|
+
rmSync(tgzFile, { force: true });
|
|
189
196
|
}
|
|
190
197
|
async addToPluginsAllow() {
|
|
191
198
|
const configFile = `${OPENCLAW_HOME}/openclaw.json`;
|
|
@@ -250,12 +257,11 @@ export class ChannelInstaller {
|
|
|
250
257
|
}
|
|
251
258
|
else {
|
|
252
259
|
const isJsonValue = Array.isArray(value);
|
|
253
|
-
const strVal = (isJsonValue ? JSON.stringify(value) : String(value)).replace(/'/g, "'\\''");
|
|
254
260
|
// Let errors propagate — silently skipping a config set leaves openclaw.json
|
|
255
261
|
// in a half-written state that breaks config validation at runtime.
|
|
256
|
-
await
|
|
257
|
-
?
|
|
258
|
-
:
|
|
262
|
+
await runCommand('openclaw', isJsonValue
|
|
263
|
+
? ['config', 'set', path, JSON.stringify(value), '--strict-json']
|
|
264
|
+
: ['config', 'set', path, '--', String(value)]);
|
|
259
265
|
}
|
|
260
266
|
}
|
|
261
267
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../../src/installers/channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAErF,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE3H,MAAM,OAAO,gBAAgB;IACP;IAApB,YAAoB,WAAmB;QAAnB,gBAAW,GAAX,WAAW,CAAQ;IAAG,CAAC;IAE3C,KAAK,CAAC,SAAS;QACb,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,aAAa,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAe,EAAE,UAAmB;QAChD,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,4DAA4D,CAAC,CAAC;YACtF,OAAO;QACT,CAAC;QAED,wEAAwE;QACxE,4EAA4E;QAC5E,uEAAuE;QACvE,oCAAoC;QACpC,0EAA0E;QAC1E,wCAAwC;QACxC,mEAAmE;QACnE,kEAAkE;QAClE,sEAAsE;QACtE,4EAA4E;QAC5E,MAAM,4BAA4B,CAAC,GAAG,IAAI,CAAC,WAAW,UAAU,CAAC,CAAC;QAElE,qFAAqF;QACrF,iEAAiE;QACjE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QAED,qFAAqF;QACrF,0EAA0E;QAC1E,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,sDAAsD;QACtD,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE/B,6EAA6E;QAC7E,2EAA2E;QAC3E,oEAAoE;QACpE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,IAAI,OAAO,aAAa,CAAC,CAAC;IACpD,CAAC;IAEO,eAAe;QACrB,MAAM,SAAS,GAAG,GAAG,aAAa,eAAe,IAAI,CAAC,WAAW,EAAE,CAAC;QACpE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,gCAAgC,SAAS,+CAA+C;gBACxF,sGAAsG,CACvG,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAA+B;QAC7C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAExD,4EAA4E;QAC5E,yEAAyE;QACzE,0EAA0E;QAC1E,0EAA0E;QAC1E,2EAA2E;QAC3E,MAAM,4BAA4B,CAAC,GAAG,IAAI,CAAC,WAAW,YAAY,CAAC,CAAC;QAEpE,gFAAgF;QAChF,4EAA4E;QAC5E,MAAM,YAAY,GAAG,YAAY,IAAI,CAAC,WAAW,EAAE,CAAC;QAEpD,IAAI,CAAC,eAAe,IAAI,CAAC,WAAW,OAAO,YAAY,KAAK,CAAC,CAAC;QAC9D,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,cAAc,CAAC,CAAC;IAC1C,CAAC;IAED,oBAAoB;IAEpB;;;;;;OAMG;IACK,iBAAiB;QACvB,MAAM,SAAS,GAAG,GAAG,aAAa,eAAe,IAAI,CAAC,WAAW,EAAE,CAAC;QACpE,MAAM,UAAU,GAAG,GAAG,aAAa,gBAAgB,CAAC;QACpD,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU;YAAE,OAAO;QAEnC,IAAI,CAAC,4BAA4B,IAAI,CAAC,WAAW,SAAS,MAAM,cAAc,UAAU,GAAG,CAAC,CAAC;QAE7F,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;gBACzD,IAAI,GAAG,CAAC,QAAQ;oBAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACxD,IAAI,GAAG,CAAC,OAAO,EAAE,OAAO;oBAAE,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACvE,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ;oBAAE,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACzE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;oBACtC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;gBACtF,CAAC;gBACD,oEAAoE;gBACpE,yEAAyE;gBACzE,wEAAwE;gBACxE,kEAAkE;gBAClE,qEAAqE;gBACrE,MAAM,gBAAgB,GAAG,eAAe,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;oBAC5C,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CACrE,OAAO,CAAC,KAAK,QAAQ;2BAClB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,gBAAgB,GAAG,CAAC,CAAC,CAC1E,CAAC,CAAC;gBACL,CAAC;gBACD,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;YACzE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,kCAAkC,CAAC,EAAE,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,UAAkB;QACnC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;YACzD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;gBAAE,OAAO,IAAI,CAAC;YAClD,IAAI,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC1D,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;gBAAE,OAAO,IAAI,CAAC;YACnG,yEAAyE;YACzE,0EAA0E;YAC1E,MAAM,gBAAgB,GAAG,eAAe,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CACzF,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,gBAAgB,GAAG,CAAC,CAAC,CAC9F,CAAC;gBAAE,OAAO,IAAI,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,0CAA0C;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,UAAkB;QACtD,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,GAAG,cAAc,IAAI,IAAI,CAAC,WAAW,aAAa,CAAC;QAEnE,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,eAAe,IAAI,CAAC,WAAW,SAAS,UAAU,KAAK,CAAC,CAAC;YAC9D,MAAM,KAAK,CAAC,iDAAiD,OAAO,MAAM,UAAU,GAAG,CAAC,CAAC;QAC3F,CAAC;aAAM,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAClC,MAAM,KAAK,CAAC,OAAO,UAAU,MAAM,OAAO,GAAG,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,sBAAsB,UAAU,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,CAAC,cAAc,IAAI,CAAC,WAAW,wBAAwB,CAAC,CAAC;QAC7D,MAAM,KAAK,CAAC,6BAA6B,OAAO,GAAG,CAAC,CAAC;QACrD,MAAM,KAAK,CAAC,UAAU,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACpD,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,iBAAiB,CAAC,OAAe;QAC7C,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,+BAA+B,IAAI,CAAC,WAAW,KAAK;gBACpD,oDAAoD,CACrD,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC;QACvC,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/C,IAAI,CAAC,eAAe,OAAO,cAAc,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,MAAM,YAAY,CACnC,OAAO,cAAc,kBAAkB,OAAO,gBAAgB,YAAY,iBAAiB,CAC5F,CAAC;QACF,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,uBAAuB,OAAO,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,cAAc,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAChE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,2CAA2C,OAAO,EAAE,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC,cAAc,IAAI,CAAC,WAAW,SAAS,OAAO,KAAK,CAAC,CAAC;QAC1D,MAAM,KAAK,CAAC,6BAA6B,OAAO,GAAG,CAAC,CAAC;QACrD,MAAM,KAAK,CAAC,UAAU,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACpD,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC7B,MAAM,UAAU,GAAG,GAAG,aAAa,gBAAgB,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO;QACpC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;YACzD,IAAI,CAAC,GAAG,CAAC,OAAO;gBAAE,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;YAC9D,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBAClD,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACzC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;gBACvE,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW,mBAAmB,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,mCAAmC,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,cAAc;QAC1B,MAAM,UAAU,GAAG,GAAG,aAAa,gBAAgB,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO;QACpC,MAAM,UAAU,GAAG,GAAG,aAAa,eAAe,IAAI,CAAC,WAAW,EAAE,CAAC;QACrE,MAAM,kBAAkB,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACxE,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;YACzD,IAAI,CAAC,GAAG,CAAC,OAAO;gBAAE,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC;YACnC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI;gBAAE,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;gBAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACxE,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,CACzD,OAAO,CAAC,KAAK,QAAQ,IAAI,kBAAkB,CAAC,CAAC,CAAC,KAAK,gBAAgB,CACpE,CAAC,CAAC;YACH,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,uCAAuC,UAAU,kBAAkB,CAAC,CAAC;gBAC1E,OAAO;YACT,CAAC;YACD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;YACvE,IAAI,CAAC,SAAS,UAAU,wBAAwB,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,wCAAwC,CAAC,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,GAA4B,EAAE,MAAc;QACpE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAS;YACpD,MAAM,IAAI,GAAG,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC;YAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvD,MAAM,IAAI,CAAC,WAAW,CAAC,KAAgC,EAAE,IAAI,CAAC,CAAC;YACjE,CAAC;iBAAM,CAAC;gBACN,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACzC,MAAM,MAAM,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC5F,6EAA6E;gBAC7E,oEAAoE;gBACpE,MAAM,KAAK,CAAC,WAAW;oBACrB,CAAC,CAAC,wBAAwB,IAAI,MAAM,MAAM,iBAAiB;oBAC3D,CAAC,CAAC,wBAAwB,IAAI,SAAS,MAAM,GAAG,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../../src/installers/channel.ts"],"names":[],"mappings":"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"}
|