clawsouls 0.2.9 → 0.3.0
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/README.md +1 -1
- package/dist/bin/clawsouls.js +3 -3
- package/dist/bin/clawsouls.js.map +1 -1
- package/dist/commands/init.js +65 -97
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/install.js +19 -42
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/publish.d.ts +3 -1
- package/dist/commands/publish.js +52 -51
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/validate.d.ts +1 -3
- package/dist/commands/validate.js +58 -218
- package/dist/commands/validate.js.map +1 -1
- package/dist/storage/local.d.ts +1 -2
- package/dist/storage/local.js.map +1 -1
- package/dist/storage/manager.js.map +1 -1
- package/dist/utils/validate.d.ts +99 -1
- package/dist/utils/validate.js +46 -2
- package/dist/utils/validate.js.map +1 -1
- package/package.json +2 -4
package/README.md
CHANGED
package/dist/bin/clawsouls.js
CHANGED
|
@@ -37,7 +37,8 @@ program
|
|
|
37
37
|
program
|
|
38
38
|
.command('publish <dir>')
|
|
39
39
|
.description('Publish a soul package to the registry')
|
|
40
|
-
.
|
|
40
|
+
.option('--confirm', 'Skip interactive confirmation prompt')
|
|
41
|
+
.action((dir, opts) => publishCommand(dir, opts));
|
|
41
42
|
program
|
|
42
43
|
.command('login <token>')
|
|
43
44
|
.description('Save API token for registry authentication')
|
|
@@ -58,7 +59,6 @@ program
|
|
|
58
59
|
.command('validate [dir]')
|
|
59
60
|
.alias('check')
|
|
60
61
|
.description('Validate a soul package against the spec')
|
|
61
|
-
.
|
|
62
|
-
.action((dir, options) => validateCommand(dir, options));
|
|
62
|
+
.action((dir) => validateCommand(dir));
|
|
63
63
|
program.parse();
|
|
64
64
|
//# sourceMappingURL=clawsouls.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clawsouls.js","sourceRoot":"","sources":["../../src/bin/clawsouls.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAElD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,uCAAuC,CAAC;KACpD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,aAAa,EAAE,gCAAgC,CAAC;KACvD,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,yDAAyD,CAAC;KACtE,MAAM,CAAC,UAAU,CAAC,CAAC;AAEtB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,KAAK,CAAC,IAAI,CAAC;KACX,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,cAAc,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"clawsouls.js","sourceRoot":"","sources":["../../src/bin/clawsouls.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAElD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,uCAAuC,CAAC;KACpD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,aAAa,EAAE,gCAAgC,CAAC;KACvD,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,yDAAyD,CAAC;KACtE,MAAM,CAAC,UAAU,CAAC,CAAC;AAEtB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,KAAK,CAAC,IAAI,CAAC;KACX,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,WAAW,EAAE,sCAAsC,CAAC;KAC3D,MAAM,CAAC,CAAC,GAAW,EAAE,IAA2B,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AAEnF,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,4CAA4C,CAAC;KACzD,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,CAAC,IAAa,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AAEhD,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,KAAK,CAAC,OAAO,CAAC;KACd,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;AAElD,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,107 +1,75 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import {
|
|
2
|
+
import { existsSync, mkdirSync, writeFileSync } from 'fs';
|
|
3
3
|
import { join } from 'path';
|
|
4
|
+
const API_BASE = 'https://clawsouls.ai/api/v1';
|
|
5
|
+
// Minimal fallback template if server is unreachable
|
|
6
|
+
const FALLBACK_FILES = {
|
|
7
|
+
'soul.json': JSON.stringify({
|
|
8
|
+
specVersion: '0.3',
|
|
9
|
+
name: 'my-soul',
|
|
10
|
+
displayName: 'My Soul',
|
|
11
|
+
version: '1.0.0',
|
|
12
|
+
description: 'A custom AI persona',
|
|
13
|
+
author: { name: 'Your Name', github: 'your-github' },
|
|
14
|
+
license: 'Apache-2.0',
|
|
15
|
+
tags: ['custom'],
|
|
16
|
+
category: 'general',
|
|
17
|
+
files: { soul: 'SOUL.md', identity: 'IDENTITY.md', agents: 'AGENTS.md', heartbeat: 'HEARTBEAT.md' },
|
|
18
|
+
}, null, 2),
|
|
19
|
+
'SOUL.md': '# My Soul\n\nDescribe your AI persona here.\n',
|
|
20
|
+
'IDENTITY.md': '# My Soul\n\n- **Name:** My Soul\n- **Emoji:** 🤖\n',
|
|
21
|
+
'AGENTS.md': '# Workflow\n\n## Rules\n- Be helpful\n',
|
|
22
|
+
'HEARTBEAT.md': '# Heartbeat\n',
|
|
23
|
+
'README.md': '# My Soul\n\nA custom AI persona for OpenClaw.\n',
|
|
24
|
+
};
|
|
4
25
|
export async function initCommand(name) {
|
|
5
26
|
const soulName = name || 'my-soul';
|
|
6
27
|
const dir = join(process.cwd(), soulName);
|
|
7
28
|
if (existsSync(dir)) {
|
|
8
|
-
console.
|
|
9
|
-
|
|
29
|
+
console.error(chalk.red(`Directory already exists: ${soulName}/`));
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
// Fetch template from server
|
|
33
|
+
let files;
|
|
34
|
+
try {
|
|
35
|
+
const res = await fetch(`${API_BASE}/template?spec=0.3`);
|
|
36
|
+
if (res.ok) {
|
|
37
|
+
const data = await res.json();
|
|
38
|
+
files = data.files;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
files = FALLBACK_FILES;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
files = FALLBACK_FILES;
|
|
10
46
|
}
|
|
11
47
|
mkdirSync(dir, { recursive: true });
|
|
12
|
-
//
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
writeFileSync(join(dir, 'SOUL.md'), `# ${meta.displayName}
|
|
39
|
-
|
|
40
|
-
Describe who this AI persona is.
|
|
41
|
-
|
|
42
|
-
## Personality
|
|
43
|
-
|
|
44
|
-
- **Tone**:
|
|
45
|
-
- **Style**:
|
|
46
|
-
- **Philosophy**:
|
|
47
|
-
|
|
48
|
-
## Principles
|
|
49
|
-
|
|
50
|
-
1. ...
|
|
51
|
-
2. ...
|
|
52
|
-
3. ...
|
|
53
|
-
|
|
54
|
-
## Communication
|
|
55
|
-
|
|
56
|
-
- ...
|
|
57
|
-
|
|
58
|
-
## Boundaries
|
|
59
|
-
|
|
60
|
-
- ...
|
|
61
|
-
`);
|
|
62
|
-
// IDENTITY.md
|
|
63
|
-
writeFileSync(join(dir, 'IDENTITY.md'), `# ${meta.displayName}
|
|
64
|
-
|
|
65
|
-
- **Name:**
|
|
66
|
-
- **Creature:**
|
|
67
|
-
- **Vibe:**
|
|
68
|
-
- **Emoji:**
|
|
69
|
-
`);
|
|
70
|
-
// AGENTS.md
|
|
71
|
-
writeFileSync(join(dir, 'AGENTS.md'), `# ${meta.displayName} — Workflow
|
|
72
|
-
|
|
73
|
-
## Every Session
|
|
74
|
-
1. Read SOUL.md, USER.md, memory files
|
|
75
|
-
2. ...
|
|
76
|
-
|
|
77
|
-
## Work Rules
|
|
78
|
-
- ...
|
|
79
|
-
|
|
80
|
-
## Safety
|
|
81
|
-
- ...
|
|
82
|
-
|
|
83
|
-
## Heartbeats
|
|
84
|
-
- ...
|
|
85
|
-
`);
|
|
86
|
-
// HEARTBEAT.md
|
|
87
|
-
writeFileSync(join(dir, 'HEARTBEAT.md'), '# Heartbeat Checks\n# Add your periodic checks here\n');
|
|
88
|
-
// README.md
|
|
89
|
-
writeFileSync(join(dir, 'README.md'), `# ${meta.displayName}
|
|
90
|
-
|
|
91
|
-
Short description.
|
|
92
|
-
|
|
93
|
-
**Best for:** ...
|
|
94
|
-
|
|
95
|
-
**Personality:** ...
|
|
96
|
-
|
|
97
|
-
**Skills:** ...
|
|
98
|
-
`);
|
|
99
|
-
console.log();
|
|
100
|
-
console.log(chalk.green(`✅ Soul "${soulName}" created!`));
|
|
101
|
-
console.log();
|
|
102
|
-
console.log(` ${chalk.cyan('Edit:')} cd ${soulName} && edit SOUL.md`);
|
|
103
|
-
console.log(` ${chalk.cyan('Test:')} clawsouls use ${soulName} (after install)`);
|
|
104
|
-
console.log(` ${chalk.cyan('Publish:')} clawsouls publish (coming soon)`);
|
|
105
|
-
console.log();
|
|
48
|
+
// Replace placeholder name
|
|
49
|
+
for (const [filename, content] of Object.entries(files)) {
|
|
50
|
+
let processed = content;
|
|
51
|
+
if (filename === 'soul.json') {
|
|
52
|
+
try {
|
|
53
|
+
const manifest = JSON.parse(content);
|
|
54
|
+
manifest.name = soulName;
|
|
55
|
+
manifest.displayName = soulName.split('-').map((w) => w.charAt(0).toUpperCase() + w.slice(1)).join(' ');
|
|
56
|
+
processed = JSON.stringify(manifest, null, 2);
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
processed = content.replace(/"name":\s*"my-soul"/, `"name": "${soulName}"`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
writeFileSync(join(dir, filename), processed, 'utf-8');
|
|
63
|
+
}
|
|
64
|
+
console.log(chalk.green(`\n✓ Created soul scaffold: ${soulName}/\n`));
|
|
65
|
+
console.log(` Files:`);
|
|
66
|
+
for (const filename of Object.keys(files)) {
|
|
67
|
+
console.log(chalk.dim(` ${filename}`));
|
|
68
|
+
}
|
|
69
|
+
console.log(`\n Next steps:`);
|
|
70
|
+
console.log(chalk.cyan(` cd ${soulName}`));
|
|
71
|
+
console.log(chalk.cyan(` # Edit SOUL.md and other files`));
|
|
72
|
+
console.log(chalk.cyan(` clawsouls validate .`));
|
|
73
|
+
console.log(chalk.cyan(` clawsouls publish .`));
|
|
106
74
|
}
|
|
107
75
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/install.js
CHANGED
|
@@ -1,17 +1,10 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import ora from 'ora';
|
|
3
|
-
import { RegistryClient } from '../registry/client.js';
|
|
4
3
|
import { StorageManager } from '../storage/manager.js';
|
|
5
4
|
import { writeFileSync } from 'fs';
|
|
6
5
|
import { join } from 'path';
|
|
7
6
|
import { ensureDir } from '../utils/config.js';
|
|
8
|
-
|
|
9
|
-
* Parse a soul identifier. Supports:
|
|
10
|
-
* owner/name
|
|
11
|
-
* owner/name@version
|
|
12
|
-
* name (legacy, no owner)
|
|
13
|
-
* name@version (legacy)
|
|
14
|
-
*/
|
|
7
|
+
const API_BASE = 'https://clawsouls.ai/api/v1';
|
|
15
8
|
function parseSoulId(input) {
|
|
16
9
|
const [nameWithOwner, version] = input.split('@');
|
|
17
10
|
if (nameWithOwner.includes('/')) {
|
|
@@ -26,54 +19,38 @@ export async function installCommand(nameWithVersion, options) {
|
|
|
26
19
|
const spinner = ora(`Installing soul "${fullName}"...`).start();
|
|
27
20
|
try {
|
|
28
21
|
const storage = new StorageManager();
|
|
29
|
-
const registry = new RegistryClient();
|
|
30
|
-
// Use owner/name as storage key
|
|
31
22
|
const storageKey = owner ? `${owner}/${name}` : name;
|
|
32
23
|
if (storage.isInstalled(storageKey) && !options.force) {
|
|
33
24
|
spinner.fail(`Soul "${fullName}" is already installed. Use ${chalk.yellow('--force')} to overwrite.`);
|
|
34
25
|
process.exit(1);
|
|
35
26
|
}
|
|
36
|
-
spinner.text = `
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
catch {
|
|
47
|
-
// Skip missing optional files
|
|
27
|
+
spinner.text = `Downloading "${fullName}"${version ? `@${version}` : ''}...`;
|
|
28
|
+
// Use bundle API — single request for all files
|
|
29
|
+
const bundleOwner = owner || 'clawsouls';
|
|
30
|
+
const vq = version ? `?version=${version}` : '';
|
|
31
|
+
const res = await fetch(`${API_BASE}/bundle/${bundleOwner}/${name}${vq}`);
|
|
32
|
+
if (!res.ok) {
|
|
33
|
+
const data = await res.json().catch(() => ({ error: 'Unknown error' }));
|
|
34
|
+
if (res.status === 404) {
|
|
35
|
+
throw new Error(`Soul "${fullName}" not found`);
|
|
48
36
|
}
|
|
37
|
+
throw new Error(data.error || `Server error: ${res.status}`);
|
|
49
38
|
}
|
|
39
|
+
const bundle = await res.json();
|
|
50
40
|
spinner.text = `Saving to local storage...`;
|
|
51
41
|
const soulDir = storage.getSoulDir(storageKey);
|
|
52
42
|
ensureDir(soulDir);
|
|
53
|
-
for (const [filename, content] of files) {
|
|
43
|
+
for (const [filename, content] of Object.entries(bundle.files)) {
|
|
44
|
+
if (typeof content !== 'string')
|
|
45
|
+
continue;
|
|
54
46
|
const filePath = join(soulDir, filename);
|
|
55
47
|
ensureDir(join(filePath, '..'));
|
|
56
48
|
writeFileSync(filePath, content, 'utf-8');
|
|
57
49
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
version: meta.version || '1.0.0',
|
|
63
|
-
description: meta.description || '',
|
|
64
|
-
category: meta.category || '',
|
|
65
|
-
tags: meta.tags || [],
|
|
66
|
-
files: Object.fromEntries([...files.keys()]
|
|
67
|
-
.filter(f => f.endsWith('.md'))
|
|
68
|
-
.map(f => {
|
|
69
|
-
const key = f.replace('.md', '').toLowerCase();
|
|
70
|
-
return [key, f];
|
|
71
|
-
})),
|
|
72
|
-
};
|
|
73
|
-
writeFileSync(join(soulDir, 'soul.json'), JSON.stringify(manifest, null, 2), 'utf-8');
|
|
74
|
-
}
|
|
75
|
-
spinner.succeed(`Installed ${chalk.green(meta.displayName || name)} v${meta.version || '?'}\n` +
|
|
76
|
-
` ${chalk.dim(meta.description || '')}\n` +
|
|
50
|
+
const displayName = bundle.manifest?.displayName || name;
|
|
51
|
+
const ver = bundle.version || bundle.manifest?.version || '?';
|
|
52
|
+
spinner.succeed(`Installed ${chalk.green(displayName)} v${ver}\n` +
|
|
53
|
+
` ${chalk.dim(bundle.manifest?.description || '')}\n` +
|
|
77
54
|
` Run ${chalk.cyan(`clawsouls use ${storageKey}`)} to activate.`);
|
|
78
55
|
}
|
|
79
56
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/publish.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { readFileSync, existsSync, readdirSync, statSync } from 'fs';
|
|
2
2
|
import { join } from 'path';
|
|
3
|
-
import {
|
|
3
|
+
import { createInterface } from 'readline';
|
|
4
4
|
const API_BASE = 'https://clawsouls.ai/api/v1';
|
|
5
5
|
function getToken() {
|
|
6
6
|
if (process.env.CLAWSOULS_TOKEN)
|
|
@@ -23,7 +23,44 @@ async function getUsername(token) {
|
|
|
23
23
|
const data = await res.json();
|
|
24
24
|
return data.user?.username || data.username || data.user?.name || data.name;
|
|
25
25
|
}
|
|
26
|
-
|
|
26
|
+
function askConfirmation(question) {
|
|
27
|
+
return new Promise((resolve) => {
|
|
28
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
29
|
+
rl.question(question, (answer) => {
|
|
30
|
+
rl.close();
|
|
31
|
+
resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes');
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
function collectFiles(soulDir) {
|
|
36
|
+
const files = {};
|
|
37
|
+
const entries = readdirSync(soulDir);
|
|
38
|
+
for (const entry of entries) {
|
|
39
|
+
const fullPath = join(soulDir, entry);
|
|
40
|
+
if (statSync(fullPath).isFile() && entry !== 'soul.json' && entry !== 'clawsoul.json') {
|
|
41
|
+
try {
|
|
42
|
+
files[entry] = readFileSync(fullPath, 'utf-8');
|
|
43
|
+
}
|
|
44
|
+
catch { }
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
for (const entry of entries) {
|
|
48
|
+
const fullPath = join(soulDir, entry);
|
|
49
|
+
if (statSync(fullPath).isDirectory()) {
|
|
50
|
+
for (const sub of readdirSync(fullPath)) {
|
|
51
|
+
const subPath = join(fullPath, sub);
|
|
52
|
+
if (statSync(subPath).isFile()) {
|
|
53
|
+
try {
|
|
54
|
+
files[`${entry}/${sub}`] = readFileSync(subPath, 'utf-8');
|
|
55
|
+
}
|
|
56
|
+
catch { }
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return files;
|
|
62
|
+
}
|
|
63
|
+
export async function publishCommand(dir, options) {
|
|
27
64
|
const soulDir = dir.startsWith('/') ? dir : join(process.cwd(), dir);
|
|
28
65
|
if (!existsSync(soulDir) || !statSync(soulDir).isDirectory()) {
|
|
29
66
|
console.error(`Error: "${dir}" is not a directory`);
|
|
@@ -33,8 +70,7 @@ export async function publishCommand(dir) {
|
|
|
33
70
|
const legacyPath = join(soulDir, 'clawsoul.json');
|
|
34
71
|
const manifestPath = existsSync(soulJsonPath) ? soulJsonPath : legacyPath;
|
|
35
72
|
if (!existsSync(manifestPath)) {
|
|
36
|
-
console.error(
|
|
37
|
-
console.error('Run "clawsouls init" to create one, or add it manually.');
|
|
73
|
+
console.error('Error: soul.json not found. Run "clawsouls init" to create one.');
|
|
38
74
|
process.exit(1);
|
|
39
75
|
}
|
|
40
76
|
if (manifestPath === legacyPath) {
|
|
@@ -44,30 +80,18 @@ export async function publishCommand(dir) {
|
|
|
44
80
|
try {
|
|
45
81
|
manifest = JSON.parse(readFileSync(manifestPath, 'utf-8'));
|
|
46
82
|
}
|
|
47
|
-
catch
|
|
83
|
+
catch {
|
|
48
84
|
console.error('Error: Invalid soul.json');
|
|
49
85
|
process.exit(1);
|
|
50
86
|
}
|
|
51
|
-
// Validate against spec
|
|
52
|
-
const validation = ClawSoulSchema.safeParse(manifest);
|
|
53
|
-
if (!validation.success) {
|
|
54
|
-
console.error('Error: soul.json validation failed:');
|
|
55
|
-
for (const issue of validation.error.issues) {
|
|
56
|
-
console.error(` - ${issue.path.join('.')}: ${issue.message}`);
|
|
57
|
-
}
|
|
58
|
-
process.exit(1);
|
|
59
|
-
}
|
|
60
87
|
const token = getToken();
|
|
61
88
|
if (!token) {
|
|
62
|
-
console.error('Error: Authentication required
|
|
63
|
-
console.error('');
|
|
89
|
+
console.error('Error: Authentication required.\n');
|
|
64
90
|
console.error('Log in with your API token:');
|
|
65
|
-
console.error(' clawsouls login <token
|
|
66
|
-
console.error('');
|
|
91
|
+
console.error(' clawsouls login <token>\n');
|
|
67
92
|
console.error('Get a token at: https://clawsouls.ai/dashboard');
|
|
68
93
|
process.exit(1);
|
|
69
94
|
}
|
|
70
|
-
// Get the authenticated user's username for namespacing
|
|
71
95
|
let owner;
|
|
72
96
|
try {
|
|
73
97
|
owner = await getUsername(token);
|
|
@@ -76,36 +100,16 @@ export async function publishCommand(dir) {
|
|
|
76
100
|
console.error(`Error: ${err.message}`);
|
|
77
101
|
process.exit(1);
|
|
78
102
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
const entries = readdirSync(soulDir);
|
|
85
|
-
for (const entry of entries) {
|
|
86
|
-
const fullPath = join(soulDir, entry);
|
|
87
|
-
if (statSync(fullPath).isFile() && entry !== 'soul.json' && entry !== 'clawsoul.json') {
|
|
88
|
-
try {
|
|
89
|
-
files[entry] = readFileSync(fullPath, 'utf-8');
|
|
90
|
-
}
|
|
91
|
-
catch { }
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
for (const entry of entries) {
|
|
95
|
-
const fullPath = join(soulDir, entry);
|
|
96
|
-
if (statSync(fullPath).isDirectory()) {
|
|
97
|
-
const subEntries = readdirSync(fullPath);
|
|
98
|
-
for (const subEntry of subEntries) {
|
|
99
|
-
const subPath = join(fullPath, subEntry);
|
|
100
|
-
if (statSync(subPath).isFile()) {
|
|
101
|
-
try {
|
|
102
|
-
files[`${entry}/${subEntry}`] = readFileSync(subPath, 'utf-8');
|
|
103
|
-
}
|
|
104
|
-
catch { }
|
|
105
|
-
}
|
|
106
|
-
}
|
|
103
|
+
if (!options?.confirm) {
|
|
104
|
+
const confirmed = await askConfirmation('Do you confirm this is your original work or you have the rights to distribute it? (y/N) ');
|
|
105
|
+
if (!confirmed) {
|
|
106
|
+
console.error('Publish cancelled.');
|
|
107
|
+
process.exit(1);
|
|
107
108
|
}
|
|
108
109
|
}
|
|
110
|
+
const soulName = manifest.name.includes('/') ? manifest.name.split('/')[1] : manifest.name;
|
|
111
|
+
manifest.name = soulName;
|
|
112
|
+
const files = collectFiles(soulDir);
|
|
109
113
|
const fileCount = Object.keys(files).length;
|
|
110
114
|
console.log(`Publishing ${owner}/${soulName}@${manifest.version || '0.1.0'}...`);
|
|
111
115
|
console.log(` ${fileCount} files`);
|
|
@@ -131,10 +135,8 @@ export async function publishCommand(dir) {
|
|
|
131
135
|
console.log(`\n✅ Published successfully!`);
|
|
132
136
|
console.log(` URL: ${data.url}`);
|
|
133
137
|
if (data.warnings?.length) {
|
|
134
|
-
|
|
135
|
-
for (const w of data.warnings) {
|
|
138
|
+
for (const w of data.warnings)
|
|
136
139
|
console.log(` ⚠️ ${w}`);
|
|
137
|
-
}
|
|
138
140
|
}
|
|
139
141
|
}
|
|
140
142
|
catch (err) {
|
|
@@ -142,5 +144,4 @@ export async function publishCommand(dir) {
|
|
|
142
144
|
process.exit(1);
|
|
143
145
|
}
|
|
144
146
|
}
|
|
145
|
-
// loginCommand moved to login.ts
|
|
146
147
|
//# sourceMappingURL=publish.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AACrE,OAAO,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,249 +1,89 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { existsSync, readFileSync, readdirSync, statSync } from 'fs';
|
|
3
3
|
import { join } from 'path';
|
|
4
|
-
|
|
5
|
-
function
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
const API_BASE = 'https://clawsouls.ai/api/v1';
|
|
5
|
+
function collectFiles(soulDir) {
|
|
6
|
+
const files = {};
|
|
7
|
+
const entries = readdirSync(soulDir);
|
|
8
|
+
for (const entry of entries) {
|
|
9
|
+
const fullPath = join(soulDir, entry);
|
|
10
|
+
if (statSync(fullPath).isFile() && entry !== 'soul.json' && entry !== 'clawsoul.json') {
|
|
11
|
+
try {
|
|
12
|
+
files[entry] = readFileSync(fullPath, 'utf-8');
|
|
13
|
+
}
|
|
14
|
+
catch { }
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
for (const entry of entries) {
|
|
18
|
+
const fullPath = join(soulDir, entry);
|
|
19
|
+
if (statSync(fullPath).isDirectory()) {
|
|
20
|
+
for (const sub of readdirSync(fullPath)) {
|
|
21
|
+
const subPath = join(fullPath, sub);
|
|
22
|
+
if (statSync(subPath).isFile()) {
|
|
23
|
+
try {
|
|
24
|
+
files[`${entry}/${sub}`] = readFileSync(subPath, 'utf-8');
|
|
25
|
+
}
|
|
26
|
+
catch { }
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return files;
|
|
9
32
|
}
|
|
10
|
-
export async function validateCommand(dir
|
|
33
|
+
export async function validateCommand(dir) {
|
|
11
34
|
const soulDir = dir || '.';
|
|
12
35
|
const soulJsonPath = join(soulDir, 'soul.json');
|
|
13
36
|
const legacyPath = join(soulDir, 'clawsoul.json');
|
|
14
37
|
const manifestPath = existsSync(soulJsonPath) ? soulJsonPath : legacyPath;
|
|
15
|
-
|
|
16
|
-
const specVersion = options?.spec || LATEST_SPEC;
|
|
17
|
-
const results = [];
|
|
18
|
-
const add = (type, message, details) => {
|
|
19
|
-
results.push({ type, message, details });
|
|
20
|
-
};
|
|
21
|
-
console.log(chalk.bold(`\nValidating ${soulDir}/...`) + chalk.dim(` (spec v${specVersion})\n`));
|
|
22
|
-
// 1. Check soul.json exists
|
|
38
|
+
console.log(chalk.bold(`\nValidating ${soulDir}/...\n`));
|
|
23
39
|
if (!existsSync(manifestPath)) {
|
|
24
|
-
|
|
25
|
-
printResults(results);
|
|
40
|
+
console.log(chalk.red('❌ soul.json missing'));
|
|
26
41
|
process.exit(1);
|
|
27
42
|
}
|
|
28
|
-
if (
|
|
29
|
-
|
|
43
|
+
if (manifestPath === legacyPath) {
|
|
44
|
+
console.log(chalk.yellow('⚠️ Using legacy clawsoul.json — rename to soul.json'));
|
|
30
45
|
}
|
|
31
|
-
|
|
32
|
-
// 2. Parse JSON
|
|
33
|
-
let raw;
|
|
46
|
+
let manifest;
|
|
34
47
|
try {
|
|
35
|
-
|
|
48
|
+
manifest = JSON.parse(readFileSync(manifestPath, 'utf-8'));
|
|
36
49
|
}
|
|
37
50
|
catch (err) {
|
|
38
|
-
|
|
39
|
-
// Try to extract line/position info
|
|
40
|
-
const posMatch = msg.match(/position (\d+)/);
|
|
41
|
-
const detail = posMatch
|
|
42
|
-
? `Parse error at byte ${posMatch[1]}: ${msg}`
|
|
43
|
-
: `Parse error: ${msg}`;
|
|
44
|
-
add('fail', 'soul.json is not valid JSON', [detail]);
|
|
45
|
-
printResults(results);
|
|
51
|
+
console.log(chalk.red(`❌ soul.json is not valid JSON: ${err.message}`));
|
|
46
52
|
process.exit(1);
|
|
47
53
|
}
|
|
48
|
-
|
|
49
|
-
let schema;
|
|
54
|
+
const files = collectFiles(soulDir);
|
|
50
55
|
try {
|
|
51
|
-
|
|
56
|
+
const res = await fetch(`${API_BASE}/validate`, {
|
|
57
|
+
method: 'POST',
|
|
58
|
+
headers: { 'Content-Type': 'application/json' },
|
|
59
|
+
body: JSON.stringify({ manifest, files }),
|
|
60
|
+
});
|
|
61
|
+
const data = await res.json();
|
|
62
|
+
printResults(data.checks || []);
|
|
63
|
+
if (!data.valid)
|
|
64
|
+
process.exit(1);
|
|
52
65
|
}
|
|
53
66
|
catch (err) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
add('pass', `soul.json schema valid (spec v${specVersion})`);
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
const details = [];
|
|
65
|
-
for (const issue of parsed.error.issues) {
|
|
66
|
-
const path = issue.path.length > 0 ? `"${issue.path.join('.')}"` : '(root)';
|
|
67
|
-
let expected = '';
|
|
68
|
-
if (issue.code === 'invalid_type') {
|
|
69
|
-
expected = ` (expected: ${issue.expected}, got: ${issue.received})`;
|
|
70
|
-
}
|
|
71
|
-
else if (issue.code === 'invalid_string' && issue.validation) {
|
|
72
|
-
expected = ` (expected: ${issue.validation})`;
|
|
73
|
-
}
|
|
74
|
-
else if (issue.code === 'invalid_enum_value' && issue.options) {
|
|
75
|
-
expected = ` (expected one of: ${issue.options.join(', ')})`;
|
|
76
|
-
}
|
|
77
|
-
else if (issue.code === 'too_big') {
|
|
78
|
-
expected = ` (max: ${issue.maximum})`;
|
|
79
|
-
}
|
|
80
|
-
else if (issue.code === 'too_small') {
|
|
81
|
-
expected = ` (min: ${issue.minimum})`;
|
|
82
|
-
}
|
|
83
|
-
// Friendly hints for common required fields
|
|
84
|
-
let hint = '';
|
|
85
|
-
const fieldPath = issue.path.join('.');
|
|
86
|
-
const hints = {
|
|
87
|
-
'author': 'object with "name" field',
|
|
88
|
-
'license': 'string, e.g. "Apache-2.0"',
|
|
89
|
-
'name': 'kebab-case string, e.g. "my-soul"',
|
|
90
|
-
'displayName': 'human-readable name string',
|
|
91
|
-
'version': 'semver string, e.g. "1.0.0"',
|
|
92
|
-
'description': 'string, max 160 chars',
|
|
93
|
-
'tags': 'array of strings, max 10',
|
|
94
|
-
'category': 'string',
|
|
95
|
-
'files': 'object with "soul" field',
|
|
96
|
-
'files.soul': 'path to SOUL.md',
|
|
97
|
-
};
|
|
98
|
-
if (issue.code === 'invalid_type' && issue.received === 'undefined') {
|
|
99
|
-
const friendlyExpected = hints[fieldPath] || issue.expected;
|
|
100
|
-
details.push(`${path} is required (expected: ${friendlyExpected})`);
|
|
101
|
-
}
|
|
102
|
-
else if (issue.code === 'invalid_string') {
|
|
103
|
-
const actual = raw;
|
|
104
|
-
const val = issue.path.reduce((o, k) => o?.[k], raw);
|
|
105
|
-
const valStr = val !== undefined ? ` (got: ${JSON.stringify(val)})` : '';
|
|
106
|
-
details.push(`${path}: ${issue.message}${valStr}`);
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
const friendlyHint = hints[fieldPath] ? ` (expected: ${hints[fieldPath]})` : expected;
|
|
110
|
-
details.push(`${path}: ${issue.message}${friendlyHint}`);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
add('fail', 'soul.json schema', details);
|
|
114
|
-
}
|
|
115
|
-
// 4. Check required files
|
|
116
|
-
const files = raw.files || {};
|
|
117
|
-
const requiredFiles = [
|
|
118
|
-
['soul', 'SOUL.md'],
|
|
119
|
-
];
|
|
120
|
-
const optionalFiles = [
|
|
121
|
-
['identity', 'IDENTITY.md', 'recommended for personality definition'],
|
|
122
|
-
['agents', 'AGENTS.md', 'recommended for agent workflows'],
|
|
123
|
-
['heartbeat', 'HEARTBEAT.md', 'optional'],
|
|
124
|
-
['style', 'STYLE.md', 'optional but recommended'],
|
|
125
|
-
];
|
|
126
|
-
for (const [key, defaultName] of requiredFiles) {
|
|
127
|
-
const filename = files[key] || defaultName;
|
|
128
|
-
const filePath = join(soulDir, filename);
|
|
129
|
-
if (existsSync(filePath)) {
|
|
130
|
-
const size = statSync(filePath).size;
|
|
131
|
-
add('pass', `${filename} found (${formatBytes(size)})`);
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
add('fail', `${filename} missing`);
|
|
135
|
-
}
|
|
67
|
+
// Fallback: basic local check if server unreachable
|
|
68
|
+
console.log(chalk.yellow('⚠️ Server unreachable, running basic local checks only'));
|
|
69
|
+
console.log(chalk.green('✅ soul.json parsed successfully'));
|
|
70
|
+
if (manifest.name)
|
|
71
|
+
console.log(chalk.green(`✅ name: ${manifest.name}`));
|
|
72
|
+
if (!manifest.specVersion)
|
|
73
|
+
console.log(chalk.yellow('⚠️ specVersion missing'));
|
|
136
74
|
}
|
|
137
|
-
for (const [key, defaultName, hint] of optionalFiles) {
|
|
138
|
-
const filename = files[key] || defaultName;
|
|
139
|
-
const filePath = join(soulDir, filename);
|
|
140
|
-
if (existsSync(filePath)) {
|
|
141
|
-
const size = statSync(filePath).size;
|
|
142
|
-
add('pass', `${filename} found (${formatBytes(size)})`);
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
add('warn', `${filename} missing (${hint})`);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
// 5. README.md
|
|
149
|
-
const readmePath = join(soulDir, 'README.md');
|
|
150
|
-
if (existsSync(readmePath)) {
|
|
151
|
-
const size = statSync(readmePath).size;
|
|
152
|
-
add('pass', `README.md found (${formatBytes(size)})`);
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
add('warn', 'README.md missing (recommended)');
|
|
156
|
-
}
|
|
157
|
-
// 6. Content quality checks
|
|
158
|
-
const soulFile = files.soul || 'SOUL.md';
|
|
159
|
-
const soulPath = join(soulDir, soulFile);
|
|
160
|
-
if (existsSync(soulPath)) {
|
|
161
|
-
const content = readFileSync(soulPath, 'utf-8');
|
|
162
|
-
if (content.length < 10) {
|
|
163
|
-
add('warn', `${soulFile} is very short (${content.length} chars — consider expanding)`);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
// 7. Security scan
|
|
167
|
-
let allFiles;
|
|
168
|
-
try {
|
|
169
|
-
allFiles = readdirSync(soulDir, { recursive: true });
|
|
170
|
-
}
|
|
171
|
-
catch {
|
|
172
|
-
allFiles = [];
|
|
173
|
-
}
|
|
174
|
-
const dangerousExts = ['.exe', '.dll', '.so', '.dylib', '.sh', '.bat', '.cmd'];
|
|
175
|
-
const dangerousPatterns = ['eval(', 'exec(', 'Function(', 'require(', 'import('];
|
|
176
|
-
const securityIssues = [];
|
|
177
|
-
for (const file of allFiles) {
|
|
178
|
-
const filePath = String(file);
|
|
179
|
-
// skip node_modules, .git
|
|
180
|
-
if (filePath.startsWith('node_modules') || filePath.startsWith('.git'))
|
|
181
|
-
continue;
|
|
182
|
-
const ext = filePath.substring(filePath.lastIndexOf('.'));
|
|
183
|
-
if (dangerousExts.includes(ext)) {
|
|
184
|
-
securityIssues.push(`Dangerous file extension: ${filePath}`);
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
for (const file of allFiles) {
|
|
188
|
-
const filePath = String(file);
|
|
189
|
-
if (filePath.startsWith('node_modules') || filePath.startsWith('.git'))
|
|
190
|
-
continue;
|
|
191
|
-
const fullPath = join(soulDir, filePath);
|
|
192
|
-
try {
|
|
193
|
-
const stat = statSync(fullPath);
|
|
194
|
-
if (stat.isDirectory() || stat.size > 1024 * 1024)
|
|
195
|
-
continue; // skip dirs and large files
|
|
196
|
-
const content = readFileSync(fullPath, 'utf-8');
|
|
197
|
-
for (const pattern of dangerousPatterns) {
|
|
198
|
-
if (content.includes(pattern)) {
|
|
199
|
-
// Find line number
|
|
200
|
-
const lines = content.split('\n');
|
|
201
|
-
for (let i = 0; i < lines.length; i++) {
|
|
202
|
-
if (lines[i].includes(pattern)) {
|
|
203
|
-
securityIssues.push(`"${pattern}" found in ${filePath}:${i + 1}`);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
catch {
|
|
210
|
-
// Binary file or unreadable, skip
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
if (securityIssues.length > 0) {
|
|
214
|
-
add('fail', 'Security scan', securityIssues);
|
|
215
|
-
}
|
|
216
|
-
else {
|
|
217
|
-
add('pass', 'Security scan passed');
|
|
218
|
-
}
|
|
219
|
-
// 8. Field-specific warnings
|
|
220
|
-
if (raw.name && raw.name.length > 40)
|
|
221
|
-
add('warn', 'Name is very long (> 40 chars)');
|
|
222
|
-
if (raw.description && raw.description.length < 10)
|
|
223
|
-
add('warn', 'Description is very short (< 10 chars)');
|
|
224
|
-
if (raw.tags && raw.tags.length === 0)
|
|
225
|
-
add('warn', 'No tags defined');
|
|
226
|
-
printResults(results);
|
|
227
|
-
const errors = results.filter(r => r.type === 'fail').length;
|
|
228
|
-
if (errors > 0)
|
|
229
|
-
process.exit(1);
|
|
230
75
|
}
|
|
231
76
|
function printResults(results) {
|
|
232
|
-
const icons = {
|
|
233
|
-
pass: chalk.green('✅'),
|
|
234
|
-
fail: chalk.red('❌'),
|
|
235
|
-
warn: chalk.yellow('⚠️'),
|
|
236
|
-
};
|
|
77
|
+
const icons = { pass: chalk.green('✅'), fail: chalk.red('❌'), warn: chalk.yellow('⚠️') };
|
|
237
78
|
for (const r of results) {
|
|
238
79
|
const icon = icons[r.type];
|
|
239
80
|
const text = r.type === 'fail' ? chalk.red(r.message)
|
|
240
81
|
: r.type === 'warn' ? chalk.yellow(r.message)
|
|
241
82
|
: r.message;
|
|
242
83
|
console.log(`${icon} ${text}`);
|
|
243
|
-
if (r.details
|
|
84
|
+
if (r.details?.length) {
|
|
244
85
|
for (const d of r.details) {
|
|
245
|
-
|
|
246
|
-
console.log(detailColor(` - ${d}`));
|
|
86
|
+
console.log(r.type === 'fail' ? chalk.red(` - ${d}`) : chalk.yellow(` - ${d}`));
|
|
247
87
|
}
|
|
248
88
|
}
|
|
249
89
|
}
|
|
@@ -255,10 +95,10 @@ function printResults(results) {
|
|
|
255
95
|
console.log(chalk.red.bold(`Result: ${failed} error${failed !== 1 ? 's' : ''}, ${warnings} warning${warnings !== 1 ? 's' : ''} — fix errors before publishing`));
|
|
256
96
|
}
|
|
257
97
|
else if (warnings > 0) {
|
|
258
|
-
console.log(chalk.green.bold(
|
|
98
|
+
console.log(chalk.green.bold('✓ Valid!') + chalk.dim(` ${passed} passed, ${warnings} warning${warnings !== 1 ? 's' : ''}`));
|
|
259
99
|
}
|
|
260
100
|
else {
|
|
261
|
-
console.log(chalk.green.bold(
|
|
101
|
+
console.log(chalk.green.bold('✓ Soul is valid and ready to publish!') + chalk.dim(` (${passed} checks passed)`));
|
|
262
102
|
}
|
|
263
103
|
}
|
|
264
104
|
//# sourceMappingURL=validate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
|
package/dist/storage/local.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { ClawSoul } from '../utils/validate.js';
|
|
2
1
|
export declare class LocalStorage {
|
|
3
2
|
private soulsDir;
|
|
4
3
|
private workspace;
|
|
@@ -7,7 +6,7 @@ export declare class LocalStorage {
|
|
|
7
6
|
/** Soul이 로컬에 설치되어 있는지 확인 */
|
|
8
7
|
isInstalled(name: string): boolean;
|
|
9
8
|
/** 설치된 Soul 목록 */
|
|
10
|
-
listInstalled():
|
|
9
|
+
listInstalled(): any[];
|
|
11
10
|
/** Soul 파일을 로컬에 저장 */
|
|
12
11
|
saveSoulFile(name: string, filename: string, content: string): void;
|
|
13
12
|
/** 현재 workspace 파일 백업 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/storage/local.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAa,MAAM,IAAI,CAAC;AAC7F,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/storage/local.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/storage/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAa,MAAM,EAAE,MAAM,IAAI,CAAC;AAC3G,OAAO,EAAE,IAAI,EAAY,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/storage/manager.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/validate.d.ts
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
export declare const ALLOWED_LICENSES: readonly ["Apache-2.0", "MIT", "BSD-2-Clause", "BSD-3-Clause", "CC-BY-4.0", "CC0-1.0", "ISC", "Unlicense"];
|
|
3
|
+
export interface LicenseCheckResult {
|
|
4
|
+
ok: boolean;
|
|
5
|
+
error?: string;
|
|
6
|
+
warning?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function checkLicense(license: string): LicenseCheckResult;
|
|
2
9
|
export declare const ClawSoulSchemaV01: z.ZodObject<{
|
|
3
10
|
name: z.ZodString;
|
|
4
11
|
displayName: z.ZodString;
|
|
@@ -63,6 +70,49 @@ export declare const ClawSoulSchemaV02: z.ZodObject<{
|
|
|
63
70
|
}>>;
|
|
64
71
|
skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
65
72
|
}, z.core.$strip>;
|
|
73
|
+
export declare const ClawSoulSchemaV03: z.ZodObject<{
|
|
74
|
+
name: z.ZodString;
|
|
75
|
+
displayName: z.ZodString;
|
|
76
|
+
version: z.ZodString;
|
|
77
|
+
description: z.ZodString;
|
|
78
|
+
author: z.ZodObject<{
|
|
79
|
+
name: z.ZodString;
|
|
80
|
+
github: z.ZodOptional<z.ZodString>;
|
|
81
|
+
}, z.core.$strip>;
|
|
82
|
+
license: z.ZodString;
|
|
83
|
+
tags: z.ZodArray<z.ZodString>;
|
|
84
|
+
category: z.ZodString;
|
|
85
|
+
compatibility: z.ZodOptional<z.ZodObject<{
|
|
86
|
+
openclaw: z.ZodOptional<z.ZodString>;
|
|
87
|
+
models: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
88
|
+
}, z.core.$strip>>;
|
|
89
|
+
repository: z.ZodOptional<z.ZodString>;
|
|
90
|
+
files: z.ZodObject<{
|
|
91
|
+
soul: z.ZodString;
|
|
92
|
+
identity: z.ZodOptional<z.ZodString>;
|
|
93
|
+
agents: z.ZodOptional<z.ZodString>;
|
|
94
|
+
heartbeat: z.ZodOptional<z.ZodString>;
|
|
95
|
+
style: z.ZodOptional<z.ZodString>;
|
|
96
|
+
userTemplate: z.ZodOptional<z.ZodString>;
|
|
97
|
+
avatar: z.ZodOptional<z.ZodString>;
|
|
98
|
+
}, z.core.$strip>;
|
|
99
|
+
examples: z.ZodOptional<z.ZodObject<{
|
|
100
|
+
good: z.ZodOptional<z.ZodString>;
|
|
101
|
+
bad: z.ZodOptional<z.ZodString>;
|
|
102
|
+
}, z.core.$strip>>;
|
|
103
|
+
modes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
104
|
+
interpolation: z.ZodOptional<z.ZodEnum<{
|
|
105
|
+
bold: "bold";
|
|
106
|
+
cautious: "cautious";
|
|
107
|
+
strict: "strict";
|
|
108
|
+
}>>;
|
|
109
|
+
skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
110
|
+
specVersion: z.ZodOptional<z.ZodEnum<{
|
|
111
|
+
0.1: "0.1";
|
|
112
|
+
0.2: "0.2";
|
|
113
|
+
0.3: "0.3";
|
|
114
|
+
}>>;
|
|
115
|
+
}, z.core.$strip>;
|
|
66
116
|
export declare const SPEC_VERSIONS: {
|
|
67
117
|
readonly '0.1': z.ZodObject<{
|
|
68
118
|
name: z.ZodString;
|
|
@@ -128,6 +178,49 @@ export declare const SPEC_VERSIONS: {
|
|
|
128
178
|
}>>;
|
|
129
179
|
skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
130
180
|
}, z.core.$strip>;
|
|
181
|
+
readonly '0.3': z.ZodObject<{
|
|
182
|
+
name: z.ZodString;
|
|
183
|
+
displayName: z.ZodString;
|
|
184
|
+
version: z.ZodString;
|
|
185
|
+
description: z.ZodString;
|
|
186
|
+
author: z.ZodObject<{
|
|
187
|
+
name: z.ZodString;
|
|
188
|
+
github: z.ZodOptional<z.ZodString>;
|
|
189
|
+
}, z.core.$strip>;
|
|
190
|
+
license: z.ZodString;
|
|
191
|
+
tags: z.ZodArray<z.ZodString>;
|
|
192
|
+
category: z.ZodString;
|
|
193
|
+
compatibility: z.ZodOptional<z.ZodObject<{
|
|
194
|
+
openclaw: z.ZodOptional<z.ZodString>;
|
|
195
|
+
models: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
196
|
+
}, z.core.$strip>>;
|
|
197
|
+
repository: z.ZodOptional<z.ZodString>;
|
|
198
|
+
files: z.ZodObject<{
|
|
199
|
+
soul: z.ZodString;
|
|
200
|
+
identity: z.ZodOptional<z.ZodString>;
|
|
201
|
+
agents: z.ZodOptional<z.ZodString>;
|
|
202
|
+
heartbeat: z.ZodOptional<z.ZodString>;
|
|
203
|
+
style: z.ZodOptional<z.ZodString>;
|
|
204
|
+
userTemplate: z.ZodOptional<z.ZodString>;
|
|
205
|
+
avatar: z.ZodOptional<z.ZodString>;
|
|
206
|
+
}, z.core.$strip>;
|
|
207
|
+
examples: z.ZodOptional<z.ZodObject<{
|
|
208
|
+
good: z.ZodOptional<z.ZodString>;
|
|
209
|
+
bad: z.ZodOptional<z.ZodString>;
|
|
210
|
+
}, z.core.$strip>>;
|
|
211
|
+
modes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
212
|
+
interpolation: z.ZodOptional<z.ZodEnum<{
|
|
213
|
+
bold: "bold";
|
|
214
|
+
cautious: "cautious";
|
|
215
|
+
strict: "strict";
|
|
216
|
+
}>>;
|
|
217
|
+
skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
218
|
+
specVersion: z.ZodOptional<z.ZodEnum<{
|
|
219
|
+
0.1: "0.1";
|
|
220
|
+
0.2: "0.2";
|
|
221
|
+
0.3: "0.3";
|
|
222
|
+
}>>;
|
|
223
|
+
}, z.core.$strip>;
|
|
131
224
|
};
|
|
132
225
|
export type SpecVersion = keyof typeof SPEC_VERSIONS;
|
|
133
226
|
export declare const LATEST_SPEC: SpecVersion;
|
|
@@ -168,7 +261,12 @@ export declare const ClawSoulSchema: z.ZodObject<{
|
|
|
168
261
|
strict: "strict";
|
|
169
262
|
}>>;
|
|
170
263
|
skills: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
264
|
+
specVersion: z.ZodOptional<z.ZodEnum<{
|
|
265
|
+
0.1: "0.1";
|
|
266
|
+
0.2: "0.2";
|
|
267
|
+
0.3: "0.3";
|
|
268
|
+
}>>;
|
|
171
269
|
}, z.core.$strip>;
|
|
172
|
-
export type ClawSoul = z.infer<typeof
|
|
270
|
+
export type ClawSoul = z.infer<typeof ClawSoulSchemaV03>;
|
|
173
271
|
export declare function getSchema(version?: string): z.ZodType;
|
|
174
272
|
export declare function validateClawSoul(data: unknown, version?: string): ClawSoul;
|
package/dist/utils/validate.js
CHANGED
|
@@ -1,4 +1,30 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
// ─── License Allowlist ─────────────────────────────────────
|
|
3
|
+
export const ALLOWED_LICENSES = [
|
|
4
|
+
'Apache-2.0', 'MIT', 'BSD-2-Clause', 'BSD-3-Clause',
|
|
5
|
+
'CC-BY-4.0', 'CC0-1.0', 'ISC', 'Unlicense',
|
|
6
|
+
];
|
|
7
|
+
const BLOCKED_LICENSE_PATTERNS = [
|
|
8
|
+
/^GPL-/i, /^AGPL-/i, /^LGPL-/i,
|
|
9
|
+
/^CC-BY-NC/i, /^CC-BY-ND/i,
|
|
10
|
+
];
|
|
11
|
+
export function checkLicense(license) {
|
|
12
|
+
if (ALLOWED_LICENSES.includes(license)) {
|
|
13
|
+
return { ok: true };
|
|
14
|
+
}
|
|
15
|
+
for (const pattern of BLOCKED_LICENSE_PATTERNS) {
|
|
16
|
+
if (pattern.test(license)) {
|
|
17
|
+
return {
|
|
18
|
+
ok: false,
|
|
19
|
+
error: `License "${license}" is not allowed. GPL/AGPL/copyleft licenses are not permitted on ClawSouls. Soul files are meant to be freely installed, modified, and used. Please use a permissive license (Apache-2.0, MIT, etc.)`,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
ok: true,
|
|
25
|
+
warning: `License "${license}" is not in the known allowlist. Allowed: ${ALLOWED_LICENSES.join(', ')}. Proceeding with warning.`,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
2
28
|
// ─── v0.1 Schema ───────────────────────────────────────────
|
|
3
29
|
export const ClawSoulSchemaV01 = z.object({
|
|
4
30
|
name: z.string().regex(/^[a-z0-9-]+$/, 'Must be kebab-case'),
|
|
@@ -45,12 +71,17 @@ export const ClawSoulSchemaV02 = ClawSoulSchemaV01.extend({
|
|
|
45
71
|
interpolation: z.enum(['bold', 'cautious', 'strict']).optional(),
|
|
46
72
|
skills: z.array(z.string()).optional(),
|
|
47
73
|
});
|
|
74
|
+
// ─── v0.3 Schema (extends v0.2 with specVersion) ───
|
|
75
|
+
export const ClawSoulSchemaV03 = ClawSoulSchemaV02.extend({
|
|
76
|
+
specVersion: z.enum(['0.1', '0.2', '0.3']).optional(),
|
|
77
|
+
});
|
|
48
78
|
// ─── Version Registry ──────────────────────────────────────
|
|
49
79
|
export const SPEC_VERSIONS = {
|
|
50
80
|
'0.1': ClawSoulSchemaV01,
|
|
51
81
|
'0.2': ClawSoulSchemaV02,
|
|
82
|
+
'0.3': ClawSoulSchemaV03,
|
|
52
83
|
};
|
|
53
|
-
export const LATEST_SPEC = '0.
|
|
84
|
+
export const LATEST_SPEC = '0.3';
|
|
54
85
|
// Default export = latest
|
|
55
86
|
export const ClawSoulSchema = SPEC_VERSIONS[LATEST_SPEC];
|
|
56
87
|
export function getSchema(version) {
|
|
@@ -66,6 +97,19 @@ export function getSchema(version) {
|
|
|
66
97
|
}
|
|
67
98
|
export function validateClawSoul(data, version) {
|
|
68
99
|
const schema = getSchema(version);
|
|
69
|
-
|
|
100
|
+
const result = schema.parse(data);
|
|
101
|
+
// Warn if specVersion is missing (backward compat — not an error)
|
|
102
|
+
if (!data?.specVersion) {
|
|
103
|
+
console.warn('⚠️ Warning: "specVersion" field is missing from soul.json. Consider adding "specVersion": "0.3"');
|
|
104
|
+
}
|
|
105
|
+
// License allowlist check
|
|
106
|
+
const licenseCheck = checkLicense(result.license);
|
|
107
|
+
if (!licenseCheck.ok) {
|
|
108
|
+
throw new Error(licenseCheck.error);
|
|
109
|
+
}
|
|
110
|
+
if (licenseCheck.warning) {
|
|
111
|
+
console.warn(`⚠️ Warning: ${licenseCheck.warning}`);
|
|
112
|
+
}
|
|
113
|
+
return result;
|
|
70
114
|
}
|
|
71
115
|
//# sourceMappingURL=validate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/utils/validate.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/utils/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,8DAA8D;AAC9D,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,cAAc;IACnD,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW;CAClC,CAAC;AAEX,MAAM,wBAAwB,GAAG;IAC/B,QAAQ,EAAE,SAAS,EAAE,SAAS;IAC9B,YAAY,EAAE,YAAY;CAC3B,CAAC;AAQF,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,IAAI,gBAAgB,CAAC,QAAQ,CAAC,OAAc,CAAC,EAAE,CAAC;QAC9C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,wBAAwB,EAAE,CAAC;QAC/C,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,YAAY,OAAO,uMAAuM;aAClO,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,OAAO,EAAE,YAAY,OAAO,6CAA6C,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B;KACjI,CAAC;AACJ,CAAC;AAED,8DAA8D;AAC9D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,oBAAoB,CAAC;IAC5D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;IAC9D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;IAChC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC9B,CAAC;IACF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IACjC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC;QACtB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;KACvC,CAAC,CAAC,QAAQ,EAAE;IACb,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACnC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC9B,CAAC;IACF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAC;AAEH,2FAA2F;AAC3F,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,MAAM,CAAC;IACxD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC5B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACnC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC9B,CAAC;IACF,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC;QACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC3B,CAAC,CAAC,QAAQ,EAAE;IACb,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACrC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC;AAEH,sDAAsD;AACtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,MAAM,CAAC;IACxD,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;CACtD,CAAC,CAAC;AAEH,8DAA8D;AAC9D,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,KAAK,EAAE,iBAAiB;IACxB,KAAK,EAAE,iBAAiB;IACxB,KAAK,EAAE,iBAAiB;CAChB,CAAC;AAGX,MAAM,CAAC,MAAM,WAAW,GAAgB,KAAK,CAAC;AAE9C,0BAA0B;AAC1B,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;AAGzD,MAAM,UAAU,SAAS,CAAC,OAAgB;IACxC,IAAI,CAAC,OAAO;QAAE,OAAO,cAAc,CAAC;IACpC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAgB,CAAC;IACnD,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,iBAAiB,SAAS,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAa,EAAE,OAAgB;IAC9D,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAa,CAAC;IAE9C,kEAAkE;IAClE,IAAI,CAAE,IAAY,EAAE,WAAW,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,kGAAkG,CAAC,CAAC;IACnH,CAAC;IAED,0BAA0B;IAC1B,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,KAAM,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,gBAAgB,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "clawsouls",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "CLI for ClawSouls — AI agent persona sharing platform",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -36,9 +36,7 @@
|
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"chalk": "^5.6.2",
|
|
38
38
|
"commander": "^14.0.3",
|
|
39
|
-
"ora": "^9.3.0"
|
|
40
|
-
"tar": "^7.5.7",
|
|
41
|
-
"zod": "^4.3.6"
|
|
39
|
+
"ora": "^9.3.0"
|
|
42
40
|
},
|
|
43
41
|
"devDependencies": {
|
|
44
42
|
"@types/node": "^25.2.3",
|