clawsouls 0.4.0 → 0.4.2
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 +107 -100
- package/dist/bin/clawsouls.js +25 -3
- package/dist/bin/clawsouls.js.map +1 -1
- package/dist/commands/init.js +5 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/platform.d.ts +1 -0
- package/dist/commands/platform.js +37 -0
- package/dist/commands/platform.js.map +1 -0
- package/dist/commands/soulscan.d.ts +9 -2
- package/dist/commands/soulscan.js +332 -46
- package/dist/commands/soulscan.js.map +1 -1
- package/dist/commands/use.d.ts +3 -1
- package/dist/commands/use.js +6 -21
- package/dist/commands/use.js.map +1 -1
- package/dist/storage/manager.d.ts +1 -1
- package/dist/storage/manager.js +2 -2
- package/dist/storage/manager.js.map +1 -1
- package/dist/utils/config.js +3 -11
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/platform.d.ts +4 -1
- package/dist/utils/platform.js +77 -45
- package/dist/utils/platform.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# 🧠 ClawSouls CLI
|
|
1
|
+
# 🧠 ClawSouls CLI
|
|
2
2
|
|
|
3
|
-
**Give your AI a soul.** Install, manage, and switch AI agent personas
|
|
3
|
+
**Give your AI a soul.** Install, manage, and switch AI agent personas — works with any SOUL.md-compatible agent.
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/clawsouls)
|
|
6
6
|
[](LICENSE)
|
|
@@ -11,6 +11,59 @@ ClawSouls is a persona sharing platform for AI agents. A **Soul** is a personali
|
|
|
11
11
|
|
|
12
12
|
Browse available souls at [clawsouls.ai](https://clawsouls.ai).
|
|
13
13
|
|
|
14
|
+
## Multi-Platform Support
|
|
15
|
+
|
|
16
|
+
ClawSouls works with **any SOUL.md-compatible agent framework**. The CLI auto-detects your installed platform and applies souls to the correct workspace.
|
|
17
|
+
|
|
18
|
+
| Platform | Directory | Status |
|
|
19
|
+
|----------|-----------|--------|
|
|
20
|
+
| **OpenClaw** | `~/.openclaw/workspace/` | ✅ Auto-detected |
|
|
21
|
+
| **ZeroClaw** | `~/.zeroclaw/workspace/` | ✅ Auto-detected |
|
|
22
|
+
| **Clawdbot** | `~/.clawdbot/workspace/` | ✅ Auto-detected |
|
|
23
|
+
| **Moltbot** | `~/.moltbot/workspace/` | ✅ Auto-detected |
|
|
24
|
+
| **Moldbot** | `~/.moldbot/workspace/` | ✅ Auto-detected |
|
|
25
|
+
| **Custom** | Any path | ✅ Via `--workspace` or `--platform` |
|
|
26
|
+
|
|
27
|
+
### How It Works
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
┌──────────────────────────────────────────────────┐
|
|
31
|
+
│ clawsouls install clawsouls/surgical-coder │
|
|
32
|
+
│ clawsouls use surgical-coder │
|
|
33
|
+
└──────────────┬───────────────────────────────────┘
|
|
34
|
+
│
|
|
35
|
+
▼ Auto-detect installed platform
|
|
36
|
+
┌────────────────────┐
|
|
37
|
+
│ ~/.openclaw/ ? │──yes──▶ Apply to ~/.openclaw/workspace/
|
|
38
|
+
│ ~/.zeroclaw/ ? │──yes──▶ Apply to ~/.zeroclaw/workspace/
|
|
39
|
+
│ ~/.clawdbot/ ? │──yes──▶ Apply to ~/.clawdbot/workspace/
|
|
40
|
+
│ ~/.moltbot/ ? │──yes──▶ Apply to ~/.moltbot/workspace/
|
|
41
|
+
│ ~/.moldbot/ ? │──yes──▶ Apply to ~/.moldbot/workspace/
|
|
42
|
+
│ --workspace path │──yes──▶ Apply to custom path
|
|
43
|
+
└────────────────────┘
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
1. **Install** downloads soul files to `~/<platform>/souls/<owner>/<name>/`
|
|
47
|
+
2. **Use** copies soul files (SOUL.md, IDENTITY.md, etc.) to the workspace
|
|
48
|
+
3. **Protected files** (USER.md, MEMORY.md, TOOLS.md) are **never overwritten**
|
|
49
|
+
4. **Automatic backup** before every switch — revert with `clawsouls restore`
|
|
50
|
+
|
|
51
|
+
### Override Platform
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# Explicit platform flag
|
|
55
|
+
clawsouls --platform zeroclaw use surgical-coder
|
|
56
|
+
|
|
57
|
+
# Custom workspace path
|
|
58
|
+
clawsouls --workspace ~/my-agent/workspace use surgical-coder
|
|
59
|
+
|
|
60
|
+
# Environment variable
|
|
61
|
+
CLAWSOULS_PLATFORM=clawdbot clawsouls use surgical-coder
|
|
62
|
+
|
|
63
|
+
# Check detection
|
|
64
|
+
clawsouls platform
|
|
65
|
+
```
|
|
66
|
+
|
|
14
67
|
## Quick Start
|
|
15
68
|
|
|
16
69
|
```bash
|
|
@@ -20,7 +73,7 @@ npx clawsouls install clawsouls/surgical-coder
|
|
|
20
73
|
# Activate it (backs up your current workspace)
|
|
21
74
|
npx clawsouls use surgical-coder
|
|
22
75
|
|
|
23
|
-
# Restart your
|
|
76
|
+
# Restart your agent session — done!
|
|
24
77
|
```
|
|
25
78
|
|
|
26
79
|
## Installation
|
|
@@ -37,6 +90,21 @@ npm install -g clawsouls
|
|
|
37
90
|
|
|
38
91
|
## Commands
|
|
39
92
|
|
|
93
|
+
### `clawsouls platform`
|
|
94
|
+
|
|
95
|
+
Show detected agent platform(s) and workspace path.
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
clawsouls platform
|
|
99
|
+
|
|
100
|
+
# 🔍 Agent Platform Detection
|
|
101
|
+
#
|
|
102
|
+
# ▶ Active: OpenClaw 🦞
|
|
103
|
+
# Workspace: /home/user/.openclaw/workspace
|
|
104
|
+
# Souls dir: /home/user/.openclaw/souls
|
|
105
|
+
# Restart: openclaw gateway restart
|
|
106
|
+
```
|
|
107
|
+
|
|
40
108
|
### `clawsouls init [name]`
|
|
41
109
|
|
|
42
110
|
Scaffold a new soul package directory with template files.
|
|
@@ -51,8 +119,6 @@ Creates a directory with `soul.json`, `SOUL.md`, `IDENTITY.md`, `AGENTS.md`, `HE
|
|
|
51
119
|
|
|
52
120
|
Download and install a soul from the registry. Uses `owner/name` format (e.g., `clawsouls/surgical-coder`). Optionally specify a version with `@version` (e.g., `clawsouls/surgical-coder@0.1.0`). Without a version, installs the latest.
|
|
53
121
|
|
|
54
|
-
The install command tries the API first (`/api/v1/souls/:owner/:name?files=true`), falls back to CDN if unavailable, and auto-generates `soul.json` if missing from the response.
|
|
55
|
-
|
|
56
122
|
```bash
|
|
57
123
|
clawsouls install clawsouls/minimalist
|
|
58
124
|
clawsouls install clawsouls/devops-veteran
|
|
@@ -68,7 +134,7 @@ Activate an installed soul. Your current workspace files are automatically backe
|
|
|
68
134
|
clawsouls use minimalist
|
|
69
135
|
```
|
|
70
136
|
|
|
71
|
-
**Automatic backup:** Before applying a new soul, the current workspace files (SOUL.md, IDENTITY.md, AGENTS.md, HEARTBEAT.md) are saved to
|
|
137
|
+
**Automatic backup:** Before applying a new soul, the current workspace files (SOUL.md, IDENTITY.md, AGENTS.md, HEARTBEAT.md) are saved to `~/<platform>/souls/_backup/<timestamp>/`. You can always revert with `clawsouls restore`.
|
|
72
138
|
|
|
73
139
|
**Protected files** — these are never overwritten:
|
|
74
140
|
- `USER.md` (your personal data)
|
|
@@ -77,136 +143,77 @@ clawsouls use minimalist
|
|
|
77
143
|
|
|
78
144
|
### `clawsouls restore`
|
|
79
145
|
|
|
80
|
-
Revert to your previous soul from the latest backup
|
|
146
|
+
Revert to your previous soul from the latest backup.
|
|
81
147
|
|
|
82
148
|
```bash
|
|
83
149
|
clawsouls restore
|
|
84
150
|
```
|
|
85
151
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
### `clawsouls publish <dir>`
|
|
89
|
-
|
|
90
|
-
Publish a soul package to the ClawSouls registry. Requires authentication.
|
|
91
|
-
|
|
92
|
-
```bash
|
|
93
|
-
# 1. Log in at https://clawsouls.ai and get your API token from the Dashboard
|
|
94
|
-
# 2. Set the token
|
|
95
|
-
export CLAWSOULS_TOKEN=<your-token>
|
|
96
|
-
|
|
97
|
-
# 3. Publish your soul
|
|
98
|
-
clawsouls publish ./my-soul/
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
The directory must contain a valid `soul.json`. All files in the directory are uploaded. A security scan runs automatically before publishing (blocks on dangerous patterns with 400 error).
|
|
102
|
-
|
|
103
|
-
**v0.2.0**: The `publish` command auto-prefixes the soul name with your username (e.g., publishing `my-soul` as user `TomLeeLive` creates `TomLeeLive/my-soul`).
|
|
104
|
-
|
|
105
|
-
### `clawsouls login <token>`
|
|
152
|
+
### `clawsouls list`
|
|
106
153
|
|
|
107
|
-
|
|
154
|
+
List installed souls.
|
|
108
155
|
|
|
109
156
|
```bash
|
|
110
|
-
clawsouls
|
|
157
|
+
clawsouls list
|
|
158
|
+
clawsouls ls
|
|
111
159
|
```
|
|
112
160
|
|
|
113
|
-
|
|
161
|
+
### `clawsouls validate [dir]`
|
|
114
162
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
Remove the saved API token.
|
|
163
|
+
Validate a soul package against the Soul Spec.
|
|
118
164
|
|
|
119
165
|
```bash
|
|
120
|
-
clawsouls
|
|
166
|
+
clawsouls validate # validate current directory
|
|
167
|
+
clawsouls validate ./my-soul # validate specific directory
|
|
168
|
+
clawsouls validate --soulscan # include SoulScan security analysis
|
|
121
169
|
```
|
|
122
170
|
|
|
123
|
-
### `clawsouls
|
|
171
|
+
### `clawsouls soulscan [dir]`
|
|
124
172
|
|
|
125
|
-
|
|
173
|
+
Run SoulScan™ security and quality analysis on a soul package or active workspace.
|
|
126
174
|
|
|
127
175
|
```bash
|
|
128
|
-
clawsouls
|
|
129
|
-
#
|
|
176
|
+
clawsouls soulscan # scan active workspace
|
|
177
|
+
clawsouls soulscan ./my-soul # scan specific directory
|
|
178
|
+
clawsouls soulscan -q # quiet mode (for cron)
|
|
179
|
+
clawsouls soulscan --init # initialize baseline checksums
|
|
130
180
|
```
|
|
131
181
|
|
|
132
|
-
### `clawsouls
|
|
182
|
+
### `clawsouls publish <dir>`
|
|
133
183
|
|
|
134
|
-
|
|
184
|
+
Publish a soul package to the registry.
|
|
135
185
|
|
|
136
186
|
```bash
|
|
137
|
-
clawsouls
|
|
187
|
+
clawsouls login <token> # authenticate first
|
|
188
|
+
clawsouls publish ./my-soul # publish to clawsouls.ai
|
|
138
189
|
```
|
|
139
190
|
|
|
140
|
-
##
|
|
141
|
-
|
|
142
|
-
**78+ souls** across 10 categories — browse all at [clawsouls.ai](https://clawsouls.ai).
|
|
143
|
-
|
|
144
|
-
Popular picks:
|
|
191
|
+
## Soul Spec
|
|
145
192
|
|
|
146
|
-
|
|
147
|
-
|------|----------|-------------|
|
|
148
|
-
| 🔬 **Surgical Coder** | Engineering | Karpathy-inspired surgical coding precision |
|
|
149
|
-
| 🔬 **Surgical Coder** | Engineering | Disciplined coding agent inspired by Karpathy's CLAUDE.md |
|
|
150
|
-
| 🔧 **DevOps Veteran** | DevOps | Battle-scarred infrastructure engineer |
|
|
151
|
-
| 🎮 **GameDev Mentor** | Game Dev | Experienced game developer and mentor |
|
|
152
|
-
| ⚡ **Minimalist** | Lifestyle | Extremely concise responses |
|
|
153
|
-
| 🔍 **Code Reviewer** | Engineering | Thorough, constructive code reviewer |
|
|
154
|
-
| 📚 **Coding Tutor** | Education | Patient programming teacher |
|
|
155
|
-
| 🧬 **MBTI Personas** | Lifestyle | 16 personality types (INTJ, ENFP, etc.) |
|
|
156
|
-
| 🔬 **Research Scientist** | Science | Rigorous research methodology and analysis |
|
|
157
|
-
| 📊 **Data Scientist** | Data | ML/AI-focused data analysis |
|
|
158
|
-
|
|
159
|
-
## What's in a Soul?
|
|
160
|
-
|
|
161
|
-
A soul is a directory with these files:
|
|
193
|
+
Souls follow the [Soul Spec](https://clawsouls.ai/spec) — an open specification for AI agent persona packages. A soul package contains:
|
|
162
194
|
|
|
163
195
|
```
|
|
164
196
|
my-soul/
|
|
165
|
-
├── soul.json
|
|
166
|
-
├── SOUL.md
|
|
167
|
-
├── IDENTITY.md
|
|
168
|
-
├── AGENTS.md
|
|
169
|
-
├── HEARTBEAT.md
|
|
170
|
-
└── README.md
|
|
197
|
+
├── soul.json # Metadata (name, version, tags, compatibility)
|
|
198
|
+
├── SOUL.md # Persona, tone, and boundaries
|
|
199
|
+
├── IDENTITY.md # Name, avatar, and vibe
|
|
200
|
+
├── AGENTS.md # Operating instructions
|
|
201
|
+
├── HEARTBEAT.md # Periodic check behavior
|
|
202
|
+
└── README.md # Human-readable description
|
|
171
203
|
```
|
|
172
204
|
|
|
173
|
-
|
|
205
|
+
## Security
|
|
174
206
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
```
|
|
178
|
-
┌──────────────────┐ install ┌──────────────┐
|
|
179
|
-
│ clawsouls.ai │ ───────────→ │ ~/.openclaw/ │
|
|
180
|
-
│ (API Registry) │ GET /api/ │ souls/surgical-coder/ │
|
|
181
|
-
└──────────────────┘ v1/souls/ └──────┬───────┘
|
|
182
|
-
▲ owner/name │ use
|
|
183
|
-
│ ▼
|
|
184
|
-
publish (POST) ┌──────────────────┐
|
|
185
|
-
│ │ ~/.openclaw/ │
|
|
186
|
-
┌───────┴──────┐ │ workspace/ │
|
|
187
|
-
│ clawsouls │ │ ├ SOUL.md │
|
|
188
|
-
│ publish ./ │ │ ├ IDENTITY.md │
|
|
189
|
-
└──────────────┘ │ ├ AGENTS.md │
|
|
190
|
-
│ └ HEARTBEAT.md │
|
|
191
|
-
└──────────────────┘
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
1. **Install** fetches soul files from the API (`clawsouls.ai/api/v1/souls/:owner/:name`) and saves to `~/.openclaw/souls/<name>/`
|
|
195
|
-
2. **Use** backs up your current workspace to `~/.openclaw/souls/_backup/<timestamp>/`, then copies soul files in
|
|
196
|
-
3. **Restart** your OpenClaw session to load the new personality
|
|
197
|
-
4. **Publish** uploads your soul directory to the registry (requires `CLAWSOULS_TOKEN`)
|
|
207
|
+
All souls on [clawsouls.ai](https://clawsouls.ai) are automatically scanned by **SoulScan™** — our security engine that checks for prompt injection, data exfiltration, harmful content, and 50+ other patterns.
|
|
198
208
|
|
|
199
209
|
## Links
|
|
200
210
|
|
|
201
211
|
- 🌐 [clawsouls.ai](https://clawsouls.ai) — Browse souls
|
|
202
|
-
-
|
|
203
|
-
-
|
|
204
|
-
-
|
|
212
|
+
- 📖 [Soul Spec](https://clawsouls.ai/spec) — Open specification
|
|
213
|
+
- 🔒 [SoulScan](https://clawsouls.ai/soulscan) — Security scanner
|
|
214
|
+
- 📜 [Manifesto](https://clawsouls.ai/manifesto) — Our philosophy
|
|
215
|
+
- 📄 [Research Paper](https://doi.org/10.5281/zenodo.18678616) — Academic foundation
|
|
205
216
|
|
|
206
217
|
## License
|
|
207
218
|
|
|
208
|
-
Apache
|
|
209
|
-
|
|
210
|
-
## Disclaimer
|
|
211
|
-
|
|
212
|
-
ClawSouls is an independent project. Not affiliated with or endorsed by OpenClaw.
|
|
219
|
+
Apache-2.0
|
package/dist/bin/clawsouls.js
CHANGED
|
@@ -10,13 +10,22 @@ import { loginCommand, logoutCommand, whoamiCommand } from '../commands/login.js
|
|
|
10
10
|
import { initCommand } from '../commands/init.js';
|
|
11
11
|
import { validateCommand } from '../commands/validate.js';
|
|
12
12
|
import { soulscanCommand } from '../commands/soulscan.js';
|
|
13
|
+
import { platformCommand } from '../commands/platform.js';
|
|
13
14
|
const require = createRequire(import.meta.url);
|
|
14
15
|
const { version } = require('../../package.json');
|
|
15
16
|
const program = new Command();
|
|
16
17
|
program
|
|
17
18
|
.name('clawsouls')
|
|
18
|
-
.description('AI agent persona manager
|
|
19
|
-
.version(version)
|
|
19
|
+
.description('AI agent persona manager — works with any SOUL.md-compatible agent')
|
|
20
|
+
.version(version)
|
|
21
|
+
.option('--platform <name>', 'Override agent platform (openclaw, zeroclaw, clawdbot, moltbot, moldbot, or a path)')
|
|
22
|
+
.option('--workspace <path>', 'Override workspace directory')
|
|
23
|
+
.hook('preAction', (thisCommand) => {
|
|
24
|
+
const opts = thisCommand.opts();
|
|
25
|
+
if (opts.platform) {
|
|
26
|
+
process.env.CLAWSOULS_PLATFORM = opts.platform;
|
|
27
|
+
}
|
|
28
|
+
});
|
|
20
29
|
program
|
|
21
30
|
.command('install <name>')
|
|
22
31
|
.description('Install a soul from the registry')
|
|
@@ -25,7 +34,10 @@ program
|
|
|
25
34
|
program
|
|
26
35
|
.command('use <name>')
|
|
27
36
|
.description('Activate an installed soul (backs up current workspace)')
|
|
28
|
-
.action(
|
|
37
|
+
.action((name) => {
|
|
38
|
+
const globalOpts = program.opts();
|
|
39
|
+
useCommand(name, { workspace: globalOpts.workspace });
|
|
40
|
+
});
|
|
29
41
|
program
|
|
30
42
|
.command('restore')
|
|
31
43
|
.description('Restore workspace from the latest backup')
|
|
@@ -68,6 +80,16 @@ program
|
|
|
68
80
|
.description('Run SoulScan on active workspace or a soul directory')
|
|
69
81
|
.option('-q, --quiet', 'Quiet mode for cron (outputs SOULSCAN_OK or SOULSCAN_ALERT)')
|
|
70
82
|
.option('--init', 'Initialize baseline checksums without alerting on changes')
|
|
83
|
+
.option('--restore', 'Auto-restore protected files when drift is detected')
|
|
84
|
+
.option('--approve', 'Update baselines after intentional changes')
|
|
85
|
+
.option('--report', 'Output a formatted audit report (for DM/cron)')
|
|
86
|
+
.option('--verify-audit', 'Verify the audit log hash chain integrity')
|
|
87
|
+
.option('--audit-log', 'Display recent audit log entries')
|
|
71
88
|
.action((dir, opts) => soulscanCommand(dir, opts));
|
|
89
|
+
program
|
|
90
|
+
.command('platform')
|
|
91
|
+
.alias('detect')
|
|
92
|
+
.description('Show detected agent platform(s) and workspace path')
|
|
93
|
+
.action(platformCommand);
|
|
72
94
|
program.parse();
|
|
73
95
|
//# 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;AAC1D,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,
|
|
1
|
+
{"version":3,"file":"clawsouls.js","sourceRoot":"","sources":["../../src/bin/clawsouls.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.js
CHANGED
|
@@ -5,7 +5,7 @@ const API_BASE = 'https://clawsouls.ai/api/v1';
|
|
|
5
5
|
// Minimal fallback template if server is unreachable
|
|
6
6
|
const FALLBACK_FILES = {
|
|
7
7
|
'soul.json': JSON.stringify({
|
|
8
|
-
specVersion: '0.
|
|
8
|
+
specVersion: '0.4',
|
|
9
9
|
name: 'my-soul',
|
|
10
10
|
displayName: 'My Soul',
|
|
11
11
|
version: '1.0.0',
|
|
@@ -14,7 +14,10 @@ const FALLBACK_FILES = {
|
|
|
14
14
|
license: 'Apache-2.0',
|
|
15
15
|
tags: ['custom'],
|
|
16
16
|
category: 'general',
|
|
17
|
+
compatibility: { frameworks: ['openclaw'] },
|
|
18
|
+
allowedTools: [],
|
|
17
19
|
files: { soul: 'SOUL.md', identity: 'IDENTITY.md', agents: 'AGENTS.md', heartbeat: 'HEARTBEAT.md' },
|
|
20
|
+
disclosure: { summary: 'A custom AI persona.' },
|
|
18
21
|
}, null, 2),
|
|
19
22
|
'SOUL.md': '# My Soul\n\nDescribe your AI persona here.\n',
|
|
20
23
|
'IDENTITY.md': '# My Soul\n\n- **Name:** My Soul\n- **Emoji:** 🤖\n',
|
|
@@ -32,7 +35,7 @@ export async function initCommand(name) {
|
|
|
32
35
|
// Fetch template from server
|
|
33
36
|
let files;
|
|
34
37
|
try {
|
|
35
|
-
const res = await fetch(`${API_BASE}/template?spec=0.
|
|
38
|
+
const res = await fetch(`${API_BASE}/template?spec=0.4`);
|
|
36
39
|
if (res.ok) {
|
|
37
40
|
const data = await res.json();
|
|
38
41
|
files = data.files;
|
|
@@ -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,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,QAAQ,GAAG,6BAA6B,CAAC;AAE/C,qDAAqD;AACrD,MAAM,cAAc,GAA2B;IAC7C,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC;QAC1B,WAAW,EAAE,KAAK;QAClB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,SAAS;QACtB,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,qBAAqB;QAClC,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE;QACpD,OAAO,EAAE,YAAY;QACrB,IAAI,EAAE,CAAC,QAAQ,CAAC;QAChB,QAAQ,EAAE,SAAS;QACnB,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function platformCommand(): Promise<void>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { detectPlatform, detectAllPlatforms, getPlatformLabel, getKnownPlatformNames } from '../utils/platform.js';
|
|
3
|
+
import { getConfig } from '../utils/config.js';
|
|
4
|
+
export async function platformCommand() {
|
|
5
|
+
const active = detectPlatform(process.env.CLAWSOULS_PLATFORM);
|
|
6
|
+
const all = detectAllPlatforms();
|
|
7
|
+
const config = getConfig();
|
|
8
|
+
console.log(chalk.bold('\n🔍 Agent Platform Detection\n'));
|
|
9
|
+
// Active platform
|
|
10
|
+
console.log(chalk.green('▶ Active:'), getPlatformLabel(active));
|
|
11
|
+
console.log(` Workspace: ${chalk.cyan(config.workspace)}`);
|
|
12
|
+
console.log(` Souls dir: ${chalk.cyan(config.soulsDir)}`);
|
|
13
|
+
console.log(` Restart: ${chalk.dim(active.restartCommand)}`);
|
|
14
|
+
// All detected platforms
|
|
15
|
+
if (all.length > 1) {
|
|
16
|
+
console.log(chalk.bold('\n📦 All detected platforms:'));
|
|
17
|
+
for (const p of all) {
|
|
18
|
+
const isActive = p.name === active.name;
|
|
19
|
+
const marker = isActive ? chalk.green(' ◀ active') : '';
|
|
20
|
+
console.log(` ${getPlatformLabel(p)}${marker}`);
|
|
21
|
+
console.log(` ${chalk.dim(p.workspace)}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
else if (all.length === 0) {
|
|
25
|
+
console.log(chalk.yellow('\n⚠ No agent platforms detected.'));
|
|
26
|
+
console.log(chalk.dim(' Defaulting to OpenClaw (~/.openclaw/workspace)'));
|
|
27
|
+
}
|
|
28
|
+
// Help
|
|
29
|
+
console.log(chalk.bold('\n💡 Override:'));
|
|
30
|
+
console.log(` ${chalk.dim('clawsouls --platform zeroclaw use <soul>')} # use ZeroClaw workspace`);
|
|
31
|
+
console.log(` ${chalk.dim('clawsouls --workspace /path/to use <soul>')} # use custom workspace`);
|
|
32
|
+
console.log(` ${chalk.dim('CLAWSOULS_PLATFORM=clawdbot clawsouls use')} # env var override`);
|
|
33
|
+
console.log(chalk.bold('\n🤝 Supported platforms:'));
|
|
34
|
+
console.log(` ${getKnownPlatformNames().join(', ')}, or any custom path`);
|
|
35
|
+
console.log();
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=platform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/commands/platform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACnH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,kBAAkB,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAE3D,kBAAkB;IAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAEhE,yBAAyB;IACzB,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACxD,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC;YACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,KAAK,gBAAgB,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;SAAM,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO;IACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,0CAA0C,CAAC,6BAA6B,CAAC,CAAC;IACrG,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,2CAA2C,CAAC,0BAA0B,CAAC,CAAC;IACnG,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,2CAA2C,CAAC,qBAAqB,CAAC,CAAC;IAE9F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,KAAK,qBAAqB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
interface SoulscanOpts {
|
|
2
2
|
quiet?: boolean;
|
|
3
3
|
init?: boolean;
|
|
4
|
-
|
|
4
|
+
restore?: boolean;
|
|
5
|
+
approve?: boolean;
|
|
6
|
+
report?: boolean;
|
|
7
|
+
verifyAudit?: boolean;
|
|
8
|
+
auditLog?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function soulscanCommand(dir?: string, opts?: SoulscanOpts): Promise<void>;
|
|
11
|
+
export {};
|