@okclaw-build/cli 1.0.0-beta.6 → 1.0.0-beta.8
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/edit.d.ts +2 -7
- package/dist/commands/edit.js +7 -13
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/show.d.ts +11 -0
- package/dist/commands/show.js +27 -0
- package/dist/commands/show.js.map +1 -0
- package/dist/commands/skill.d.ts +1 -0
- package/dist/commands/skill.js +72 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/index.js +14 -1
- package/dist/index.js.map +1 -1
- package/dist/installers/skill.d.ts +1 -0
- package/dist/installers/skill.js +11 -1
- package/dist/installers/skill.js.map +1 -1
- package/package.json +3 -2
package/dist/commands/edit.d.ts
CHANGED
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Copies a file to the openclaw workspace directory.
|
|
5
|
-
* user → ~/.openclaw/workspace/USER.md
|
|
6
|
-
* identity → ~/.openclaw/workspace/IDENTITY.md
|
|
7
|
-
* soul → ~/.openclaw/workspace/SOUL.md
|
|
8
|
-
* agents → ~/.openclaw/workspace/AGENTS.md
|
|
2
|
+
* 7 个受支持的编辑目标:6 个 markdown 位于 workspace,openclaw.json 位于 OPENCLAW_HOME。
|
|
9
3
|
*/
|
|
4
|
+
export declare const TARGETS: Record<string, string>;
|
|
10
5
|
export declare function editCommand(args: string[]): Promise<void>;
|
package/dist/commands/edit.js
CHANGED
|
@@ -1,26 +1,20 @@
|
|
|
1
1
|
import { existsSync, mkdirSync } from 'node:fs';
|
|
2
|
+
import { dirname } from 'node:path';
|
|
2
3
|
import { shell } from '../utils/shell.js';
|
|
3
4
|
import { info, error } from '../utils/logger.js';
|
|
4
|
-
import { OPENCLAW_WORKSPACE } from '../utils/constants.js';
|
|
5
|
+
import { OPENCLAW_HOME, OPENCLAW_WORKSPACE } from '../utils/constants.js';
|
|
5
6
|
/**
|
|
6
|
-
*
|
|
7
|
+
* 7 个受支持的编辑目标:6 个 markdown 位于 workspace,openclaw.json 位于 OPENCLAW_HOME。
|
|
7
8
|
*/
|
|
8
|
-
const TARGETS = {
|
|
9
|
+
export const TARGETS = {
|
|
9
10
|
user: `${OPENCLAW_WORKSPACE}/USER.md`,
|
|
10
11
|
identity: `${OPENCLAW_WORKSPACE}/IDENTITY.md`,
|
|
11
12
|
soul: `${OPENCLAW_WORKSPACE}/SOUL.md`,
|
|
12
13
|
agents: `${OPENCLAW_WORKSPACE}/AGENTS.md`,
|
|
13
14
|
memory: `${OPENCLAW_WORKSPACE}/MEMORY.md`,
|
|
15
|
+
tools: `${OPENCLAW_WORKSPACE}/TOOLS.md`,
|
|
16
|
+
'openclaw-json': `${OPENCLAW_HOME}/openclaw.json`,
|
|
14
17
|
};
|
|
15
|
-
/**
|
|
16
|
-
* okclaw edit <target> --file <path>
|
|
17
|
-
*
|
|
18
|
-
* Copies a file to the openclaw workspace directory.
|
|
19
|
-
* user → ~/.openclaw/workspace/USER.md
|
|
20
|
-
* identity → ~/.openclaw/workspace/IDENTITY.md
|
|
21
|
-
* soul → ~/.openclaw/workspace/SOUL.md
|
|
22
|
-
* agents → ~/.openclaw/workspace/AGENTS.md
|
|
23
|
-
*/
|
|
24
18
|
export async function editCommand(args) {
|
|
25
19
|
const target = args[0];
|
|
26
20
|
if (!target || !TARGETS[target]) {
|
|
@@ -38,7 +32,7 @@ export async function editCommand(args) {
|
|
|
38
32
|
process.exit(1);
|
|
39
33
|
}
|
|
40
34
|
const dest = TARGETS[target];
|
|
41
|
-
mkdirSync(
|
|
35
|
+
mkdirSync(dirname(dest), { recursive: true });
|
|
42
36
|
await shell(`cp -f '${filePath}' '${dest}'`);
|
|
43
37
|
info(`Written to ${dest}`);
|
|
44
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/commands/edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../src/commands/edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE1E;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAA2B;IAC7C,IAAI,EAAa,GAAG,kBAAkB,UAAU;IAChD,QAAQ,EAAS,GAAG,kBAAkB,cAAc;IACpD,IAAI,EAAa,GAAG,kBAAkB,UAAU;IAChD,MAAM,EAAW,GAAG,kBAAkB,YAAY;IAClD,MAAM,EAAW,GAAG,kBAAkB,YAAY;IAClD,KAAK,EAAY,GAAG,kBAAkB,WAAW;IACjD,eAAe,EAAE,GAAG,aAAa,gBAAgB;CAClD,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAc;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,uBAAuB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,KAAK,CAAC,UAAU,QAAQ,MAAM,IAAI,GAAG,CAAC,CAAC;IAC7C,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* okclaw show <target>
|
|
3
|
+
*
|
|
4
|
+
* 把 target 对应的文件内容原样输出到 stdout。
|
|
5
|
+
* - 文件存在 → 输出文件内容,exit 0
|
|
6
|
+
* - 文件不存在 → 输出空内容,exit 0(视为尚未创建)
|
|
7
|
+
* - target 非法 → stderr 提示,exit 1
|
|
8
|
+
*
|
|
9
|
+
* `targets` 参数用于测试注入;生产调用不传第二个参数,使用 edit.ts 导出的 TARGETS。
|
|
10
|
+
*/
|
|
11
|
+
export declare function showCommand(args: string[], targets?: Record<string, string>): Promise<void>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { error } from '../utils/logger.js';
|
|
3
|
+
import { TARGETS as DEFAULT_TARGETS } from './edit.js';
|
|
4
|
+
/**
|
|
5
|
+
* okclaw show <target>
|
|
6
|
+
*
|
|
7
|
+
* 把 target 对应的文件内容原样输出到 stdout。
|
|
8
|
+
* - 文件存在 → 输出文件内容,exit 0
|
|
9
|
+
* - 文件不存在 → 输出空内容,exit 0(视为尚未创建)
|
|
10
|
+
* - target 非法 → stderr 提示,exit 1
|
|
11
|
+
*
|
|
12
|
+
* `targets` 参数用于测试注入;生产调用不传第二个参数,使用 edit.ts 导出的 TARGETS。
|
|
13
|
+
*/
|
|
14
|
+
export async function showCommand(args, targets = DEFAULT_TARGETS) {
|
|
15
|
+
const target = args[0];
|
|
16
|
+
if (!target || !targets[target]) {
|
|
17
|
+
error(`Usage: okclaw show <${Object.keys(targets).join('|')}>`);
|
|
18
|
+
process.exit(1);
|
|
19
|
+
}
|
|
20
|
+
const path = targets[target];
|
|
21
|
+
if (!existsSync(path)) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const content = readFileSync(path, 'utf8');
|
|
25
|
+
process.stdout.write(content);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=show.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,WAAW,CAAC;AAEvD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAc,EACd,UAAkC,eAAe;IAEjD,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,uBAAuB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function skillCommand(args: string[]): Promise<void>;
|
|
@@ -0,0 +1,72 @@
|
|
|
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
|
+
export async function skillCommand(args) {
|
|
6
|
+
const subCommand = args[0];
|
|
7
|
+
const skillName = args[1];
|
|
8
|
+
if (!subCommand || !['install', 'uninstall'].includes(subCommand)) {
|
|
9
|
+
error('Usage: okclaw skill <install|uninstall> <name> [options]');
|
|
10
|
+
process.exit(1);
|
|
11
|
+
}
|
|
12
|
+
if (!skillName) {
|
|
13
|
+
error(`Usage: okclaw skill ${subCommand} <name>${subCommand === 'install' ? ' --version <ver> [--package-url <url>]' : ''}`);
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
const installer = new SkillInstaller(skillName);
|
|
17
|
+
if (subCommand === 'uninstall') {
|
|
18
|
+
info(`Uninstalling skill ${skillName}...`);
|
|
19
|
+
await installer.uninstall();
|
|
20
|
+
success(`Skill ${skillName} uninstalled.`);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
// install
|
|
24
|
+
let version = '';
|
|
25
|
+
let config;
|
|
26
|
+
let packageUrl;
|
|
27
|
+
for (let i = 2; i < args.length; i++) {
|
|
28
|
+
const arg = args[i];
|
|
29
|
+
if ((arg === '--version' || arg.startsWith('--version=')) && !version) {
|
|
30
|
+
version = arg.includes('=') ? arg.split('=')[1] : args[++i];
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
if (arg === '--config' && args[i + 1]) {
|
|
34
|
+
try {
|
|
35
|
+
config = JSON.parse(args[++i]);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
error('Invalid --config JSON');
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
if ((arg === '--config-file' || arg.startsWith('--config-file=')) && !config) {
|
|
44
|
+
const filePath = arg.includes('=') ? arg.split('=')[1] : args[++i];
|
|
45
|
+
try {
|
|
46
|
+
config = JSON.parse(readFileSync(filePath, 'utf8'));
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
error(`Failed to read config file: ${e}`);
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
if ((arg === '--package-url' || arg.startsWith('--package-url=')) && !packageUrl) {
|
|
55
|
+
packageUrl = arg.includes('=') ? arg.split('=')[1] : args[++i];
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (!version) {
|
|
60
|
+
error('--version is required for install');
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
info(`Installing skill ${skillName}@${version}...`);
|
|
64
|
+
await installer.checkDeps();
|
|
65
|
+
await configureMirrors();
|
|
66
|
+
await installer.install(version, packageUrl);
|
|
67
|
+
if (config) {
|
|
68
|
+
await installer.configure(config);
|
|
69
|
+
}
|
|
70
|
+
success(`Skill ${skillName}@${version} installed.`);
|
|
71
|
+
}
|
|
72
|
+
//# 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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"}
|
package/dist/index.js
CHANGED
|
@@ -2,8 +2,10 @@ import { readFileSync } from 'node:fs';
|
|
|
2
2
|
import { installCommand } from './commands/install.js';
|
|
3
3
|
import { checkCommand } from './commands/check.js';
|
|
4
4
|
import { editCommand } from './commands/edit.js';
|
|
5
|
+
import { showCommand } from './commands/show.js';
|
|
5
6
|
import { feedCommand } from './commands/feed.js';
|
|
6
7
|
import { startCommand, stopCommand, restartCommand, statusCommand } from './commands/service.js';
|
|
8
|
+
import { skillCommand } from './commands/skill.js';
|
|
7
9
|
import { ensureRoot } from './utils/shell.js';
|
|
8
10
|
import { error } from './utils/logger.js';
|
|
9
11
|
const [command, ...args] = process.argv.slice(2);
|
|
@@ -13,6 +15,9 @@ async function main() {
|
|
|
13
15
|
ensureRoot();
|
|
14
16
|
}
|
|
15
17
|
switch (command) {
|
|
18
|
+
case 'skill':
|
|
19
|
+
await skillCommand(args);
|
|
20
|
+
break;
|
|
16
21
|
case 'install':
|
|
17
22
|
await installCommand(args);
|
|
18
23
|
break;
|
|
@@ -34,6 +39,9 @@ async function main() {
|
|
|
34
39
|
case 'edit':
|
|
35
40
|
await editCommand(args);
|
|
36
41
|
break;
|
|
42
|
+
case 'show':
|
|
43
|
+
await showCommand(args);
|
|
44
|
+
break;
|
|
37
45
|
case 'feed':
|
|
38
46
|
await feedCommand(args);
|
|
39
47
|
break;
|
|
@@ -60,13 +68,16 @@ okclaw - OKClaw Deployment CLI
|
|
|
60
68
|
|
|
61
69
|
Usage: okclaw <command> [args...]
|
|
62
70
|
|
|
71
|
+
okclaw skill install <name> --version <ver> [--package-url <url>] Install a skill
|
|
72
|
+
okclaw skill uninstall <name> Uninstall a skill
|
|
63
73
|
okclaw install <component> --version <ver> [--config '<json>'] [--config-file <path>] [--package-url <url>]
|
|
64
74
|
okclaw check Check & install system dependencies
|
|
65
75
|
okclaw start Start openclaw gateway
|
|
66
76
|
okclaw stop Stop openclaw gateway
|
|
67
77
|
okclaw restart Restart openclaw gateway
|
|
68
78
|
okclaw status Show gateway status
|
|
69
|
-
okclaw edit <target> --file <path> Write config file (user/identity/soul/agents)
|
|
79
|
+
okclaw edit <target> --file <path> Write config file (user/identity/soul/agents/memory/tools/openclaw-json)
|
|
80
|
+
okclaw show <target> Read config file content to stdout (user/identity/soul/agents/memory/tools/openclaw-json)
|
|
70
81
|
okclaw feed --file <path> Feed file into knowledge base
|
|
71
82
|
|
|
72
83
|
Components:
|
|
@@ -82,6 +93,8 @@ Examples:
|
|
|
82
93
|
okclaw install openviking --version 0.2.15 --package-url /tmp/ov-plugin.tar.gz --config-file /root/okclaw/config/openviking.json
|
|
83
94
|
okclaw install dingtalk --version 2.0.1 --config '{"clientId":"xxx","clientSecret":"xxx"}'
|
|
84
95
|
okclaw install s3 --version 1.0.0 --package-url /tmp/channel-s3.tar.gz
|
|
96
|
+
okclaw skill install my-skill --version 1.0.0 --package-url https://example.com/skill.zip
|
|
97
|
+
okclaw skill uninstall my-skill
|
|
85
98
|
okclaw restart
|
|
86
99
|
okclaw status
|
|
87
100
|
|
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;AAE1C,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEjD,KAAK,UAAU,IAAI;IACjB,2CAA2C;IAC3C,IAAI,OAAO,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACvG,UAAU,EAAE,CAAC;IACf,CAAC;IAED,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,SAAS;YACZ,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM;QACR,KAAK,OAAO;YACV,MAAM,YAAY,EAAE,CAAC;YACrB,MAAM;QACR,KAAK,OAAO;YACV,MAAM,YAAY,EAAE,CAAC;YACrB,MAAM;QACR,KAAK,MAAM;YACT,MAAM,WAAW,EAAE,CAAC;YACpB,MAAM;QACR,KAAK,SAAS;YACZ,MAAM,cAAc,EAAE,CAAC;YACvB,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,aAAa,EAAE,CAAC;YACtB,MAAM;QACR,KAAK,MAAM;YACT,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;YACxB,MAAM;QACR,KAAK,MAAM;YACT,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;YACxB,MAAM;QACR,KAAK,WAAW,CAAC;QACjB,KAAK,IAAI,CAAC,CAAC,CAAC;YACV,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;YAC1F,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACzB,MAAM;QACR,CAAC;QACD,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,CAAC;QACV,KAAK,SAAS;YACZ,SAAS,EAAE,CAAC;YACZ,MAAM;QACR;YACE,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;YACrC,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/installers/skill.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, rmSync } from 'node:fs';
|
|
2
2
|
import { shell, shellCapture } from '../utils/shell.js';
|
|
3
3
|
import { checkDiskSpace, ensureCommand } from '../utils/deps.js';
|
|
4
|
-
import { info } from '../utils/logger.js';
|
|
4
|
+
import { info, warn } from '../utils/logger.js';
|
|
5
5
|
import { OKCLAW_TMP_DIR, OPENCLAW_WORKSPACE } from '../utils/constants.js';
|
|
6
6
|
const SKILLS_DIR = `${OPENCLAW_WORKSPACE}/skills`;
|
|
7
7
|
export class SkillInstaller {
|
|
@@ -51,5 +51,15 @@ export class SkillInstaller {
|
|
|
51
51
|
async configure(_config) {
|
|
52
52
|
// Skills don't need extra configuration
|
|
53
53
|
}
|
|
54
|
+
async uninstall() {
|
|
55
|
+
const skillDir = `${SKILLS_DIR}/${this.skillName}`;
|
|
56
|
+
if (!existsSync(skillDir)) {
|
|
57
|
+
warn(`Skill ${this.skillName} not found at ${skillDir}, skipping`);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
info(`Removing skill ${this.skillName} from ${skillDir}...`);
|
|
61
|
+
rmSync(skillDir, { recursive: true, force: true });
|
|
62
|
+
info(`Skill ${this.skillName} uninstalled`);
|
|
63
|
+
}
|
|
54
64
|
}
|
|
55
65
|
//# sourceMappingURL=skill.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/installers/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAExD,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/installers/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAExD,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3E,MAAM,UAAU,GAAG,GAAG,kBAAkB,SAAS,CAAC;AAElD,MAAM,OAAO,cAAc;IACL;IAApB,YAAoB,SAAiB;QAAjB,cAAS,GAAT,SAAS,CAAQ;IAAG,CAAC;IAEzC,KAAK,CAAC,SAAS;QACb,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,UAAmB;QACjD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QAED,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE3C,MAAM,OAAO,GAAG,GAAG,cAAc,IAAI,IAAI,CAAC,SAAS,YAAY,CAAC;QAEhE,WAAW;QACX,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,qBAAqB,IAAI,CAAC,SAAS,SAAS,UAAU,KAAK,CAAC,CAAC;YAClE,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,yDAAyD;QACzD,MAAM,QAAQ,GAAG,GAAG,UAAU,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnD,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,iCAAiC,QAAQ,KAAK,CAAC,CAAC;YACrD,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,kEAAkE;QAClE,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,uBAAuB,QAAQ,KAAK,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,aAAa,OAAO,SAAS,QAAQ,GAAG,CAAC,CAAC;QACjF,IAAI,WAAW,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,sBAAsB,WAAW,CAAC,IAAI,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,UAAU;QACV,MAAM,KAAK,CAAC,UAAU,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAElD,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,iBAAiB,QAAQ,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAgC;QAC9C,wCAAwC;IAC1C,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,QAAQ,GAAG,GAAG,UAAU,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,iBAAiB,QAAQ,YAAY,CAAC,CAAC;YACnE,OAAO;QACT,CAAC;QACD,IAAI,CAAC,kBAAkB,IAAI,CAAC,SAAS,SAAS,QAAQ,KAAK,CAAC,CAAC;QAC7D,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,cAAc,CAAC,CAAC;IAC9C,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@okclaw-build/cli",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.8",
|
|
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"
|
|
14
15
|
},
|
|
15
16
|
"keywords": ["openclaw", "openviking", "deploy", "cli"],
|
|
16
17
|
"license": "MIT",
|