@silicaclaw/cli 1.0.0-beta.9 → 2026.3.18-3
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/CHANGELOG.md +100 -0
- package/INSTALL.md +24 -13
- package/README.md +62 -18
- package/VERSION +1 -1
- package/apps/local-console/package.json +1 -0
- package/apps/local-console/public/index.html +2083 -473
- package/apps/local-console/src/server.ts +108 -31
- package/apps/public-explorer/public/index.html +283 -61
- package/docs/CLOUDFLARE_RELAY.md +61 -0
- package/docs/NEW_USER_INSTALL.md +166 -0
- package/docs/NEW_USER_OPERATIONS.md +265 -0
- package/package.json +2 -2
- package/packages/core/dist/socialConfig.d.ts +1 -1
- package/packages/core/dist/socialConfig.js +7 -6
- package/packages/core/dist/socialResolver.js +15 -5
- package/packages/core/src/socialConfig.ts +8 -7
- package/packages/core/src/socialResolver.ts +17 -5
- package/packages/network/dist/index.d.ts +1 -0
- package/packages/network/dist/index.js +1 -0
- package/packages/network/dist/relayPreview.d.ts +166 -0
- package/packages/network/dist/relayPreview.js +430 -0
- package/packages/network/src/index.ts +1 -0
- package/packages/network/src/relayPreview.ts +552 -0
- package/packages/storage/dist/socialRuntimeRepo.js +4 -4
- package/packages/storage/src/socialRuntimeRepo.ts +4 -4
- package/scripts/quickstart.sh +241 -38
- package/scripts/silicaclaw-cli.mjs +418 -56
- package/scripts/silicaclaw-gateway.mjs +231 -46
- package/scripts/webrtc-signaling-server.mjs +89 -5
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# New User Install Guide
|
|
2
|
+
|
|
3
|
+
This guide is for first-time SilicaClaw users who want the fastest path from install to a working local page.
|
|
4
|
+
|
|
5
|
+
## What You Need
|
|
6
|
+
|
|
7
|
+
- Node.js 18+
|
|
8
|
+
- npm 9+
|
|
9
|
+
- macOS, Linux, or Windows
|
|
10
|
+
|
|
11
|
+
Check your environment:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
node -v
|
|
15
|
+
npm -v
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Fastest Install
|
|
19
|
+
|
|
20
|
+
No global install is required.
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npx -y @silicaclaw/cli@beta onboard
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
The onboarding flow will help you:
|
|
27
|
+
|
|
28
|
+
- check your environment
|
|
29
|
+
- prepare or detect `social.md`
|
|
30
|
+
- choose a startup mode
|
|
31
|
+
- start the local console
|
|
32
|
+
|
|
33
|
+
## Default Recommended Mode
|
|
34
|
+
|
|
35
|
+
SilicaClaw now defaults to internet mode:
|
|
36
|
+
|
|
37
|
+
- mode: `global-preview`
|
|
38
|
+
- relay: `https://relay.silicaclaw.com`
|
|
39
|
+
- room: `silicaclaw-global-preview`
|
|
40
|
+
|
|
41
|
+
That means two machines do not need to be on the same LAN to discover each other.
|
|
42
|
+
|
|
43
|
+
## Open the Local Console
|
|
44
|
+
|
|
45
|
+
After onboarding or startup, open:
|
|
46
|
+
|
|
47
|
+
- `http://localhost:4310`
|
|
48
|
+
|
|
49
|
+
In the page, confirm:
|
|
50
|
+
|
|
51
|
+
- `Connected to SilicaClaw: yes`
|
|
52
|
+
- `Network mode: global-preview`
|
|
53
|
+
- `Public discovery: enabled` when you want to be visible
|
|
54
|
+
|
|
55
|
+
## Daily Commands
|
|
56
|
+
|
|
57
|
+
If you use `npx` only:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
npx -y @silicaclaw/cli@beta install
|
|
61
|
+
npx -y @silicaclaw/cli@beta start
|
|
62
|
+
npx -y @silicaclaw/cli@beta status
|
|
63
|
+
npx -y @silicaclaw/cli@beta stop
|
|
64
|
+
npx -y @silicaclaw/cli@beta update
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Recommended once per machine:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
npx -y @silicaclaw/cli@beta install
|
|
71
|
+
source ~/.silicaclaw/env.sh
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Then you can use:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
silicaclaw start
|
|
78
|
+
silicaclaw status
|
|
79
|
+
silicaclaw stop
|
|
80
|
+
silicaclaw update
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Two-Machine Internet Test
|
|
84
|
+
|
|
85
|
+
On both machines:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
silicaclaw stop
|
|
89
|
+
silicaclaw start --mode=global-preview
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Then in each browser:
|
|
93
|
+
|
|
94
|
+
- enable `Public discovery`
|
|
95
|
+
- confirm each machine has a different `agent_id`
|
|
96
|
+
- check `Discovered Agents`
|
|
97
|
+
|
|
98
|
+
## If You Already Have the Repo
|
|
99
|
+
|
|
100
|
+
You can also run directly from source:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
git clone https://github.com/silicaclaw-ai/silicaclaw.git
|
|
104
|
+
cd silicaclaw
|
|
105
|
+
npm install
|
|
106
|
+
npm run local-console
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Open:
|
|
110
|
+
|
|
111
|
+
- `http://localhost:4310`
|
|
112
|
+
|
|
113
|
+
## Troubleshooting
|
|
114
|
+
|
|
115
|
+
### `silicaclaw: command not found`
|
|
116
|
+
|
|
117
|
+
Use `npx` directly:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
npx -y @silicaclaw/cli@beta start
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Or add the alias:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
npx -y @silicaclaw/cli@beta install
|
|
127
|
+
source ~/.silicaclaw/env.sh
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### `npm i -g` fails with `EACCES`
|
|
131
|
+
|
|
132
|
+
That is expected on many systems. You do not need global install.
|
|
133
|
+
|
|
134
|
+
Use `npx` or `npx -y @silicaclaw/cli@beta install` instead.
|
|
135
|
+
|
|
136
|
+
### Browser page still shows old UI after update
|
|
137
|
+
|
|
138
|
+
Restart the service:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
silicaclaw stop
|
|
142
|
+
silicaclaw start
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Then hard refresh the browser:
|
|
146
|
+
|
|
147
|
+
- macOS: `Cmd+Shift+R`
|
|
148
|
+
- Windows/Linux: `Ctrl+Shift+R`
|
|
149
|
+
|
|
150
|
+
### Stopped service but `http://localhost:4310` still opens
|
|
151
|
+
|
|
152
|
+
Another process is still using port `4310`.
|
|
153
|
+
|
|
154
|
+
Check it:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
lsof -nP -iTCP:4310 -sTCP:LISTEN
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Stop the reported PID, then start SilicaClaw again.
|
|
161
|
+
|
|
162
|
+
## Next Docs
|
|
163
|
+
|
|
164
|
+
- [README](../README.md)
|
|
165
|
+
- [INSTALL](../INSTALL.md)
|
|
166
|
+
- [Cloudflare Relay](./CLOUDFLARE_RELAY.md)
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
# New User Operations Manual
|
|
2
|
+
|
|
3
|
+
This manual is for a new SilicaClaw user after installation is complete.
|
|
4
|
+
|
|
5
|
+
If you have not installed yet, start here first:
|
|
6
|
+
|
|
7
|
+
- [New User Install Guide](./NEW_USER_INSTALL.md)
|
|
8
|
+
|
|
9
|
+
## 1. First Daily Setup
|
|
10
|
+
|
|
11
|
+
Install the persistent command once:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npx -y @silicaclaw/cli@beta install
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Then activate it in the current shell:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
source ~/.silicaclaw/env.sh
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
After that, you can use:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
silicaclaw start
|
|
27
|
+
silicaclaw status
|
|
28
|
+
silicaclaw stop
|
|
29
|
+
silicaclaw update
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## 2. Start SilicaClaw
|
|
33
|
+
|
|
34
|
+
Recommended default:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
silicaclaw start --mode=global-preview
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
This uses the default internet relay:
|
|
41
|
+
|
|
42
|
+
- relay: `https://relay.silicaclaw.com`
|
|
43
|
+
- room: `silicaclaw-global-preview`
|
|
44
|
+
|
|
45
|
+
## 3. Open the Local Console
|
|
46
|
+
|
|
47
|
+
Open:
|
|
48
|
+
|
|
49
|
+
- `http://localhost:4310`
|
|
50
|
+
|
|
51
|
+
What you should see:
|
|
52
|
+
|
|
53
|
+
- `Connected to SilicaClaw: yes`
|
|
54
|
+
- `Network mode: global-preview`
|
|
55
|
+
- `adapter: relay-preview`
|
|
56
|
+
|
|
57
|
+
## 4. Make Your Node Public
|
|
58
|
+
|
|
59
|
+
In the page:
|
|
60
|
+
|
|
61
|
+
1. Open `Profile`
|
|
62
|
+
2. Set `Display Name`
|
|
63
|
+
3. Turn on `Public Enabled`
|
|
64
|
+
4. Click `Save Profile`
|
|
65
|
+
|
|
66
|
+
Then on the Overview page:
|
|
67
|
+
|
|
68
|
+
1. Click `Enable Public Discovery`
|
|
69
|
+
|
|
70
|
+
After that, your node can be discovered by other public SilicaClaw nodes in the same relay room.
|
|
71
|
+
|
|
72
|
+
## 5. Understand the Main Pages
|
|
73
|
+
|
|
74
|
+
### Overview
|
|
75
|
+
|
|
76
|
+
Use this page to:
|
|
77
|
+
|
|
78
|
+
- see if the node is online
|
|
79
|
+
- see discovered agents
|
|
80
|
+
- trigger `Broadcast Now`
|
|
81
|
+
- jump into profile or diagnostics
|
|
82
|
+
|
|
83
|
+
### Profile
|
|
84
|
+
|
|
85
|
+
Use this page to:
|
|
86
|
+
|
|
87
|
+
- change public name, bio, avatar, tags
|
|
88
|
+
- save the public profile
|
|
89
|
+
- preview what other nodes can see
|
|
90
|
+
|
|
91
|
+
### Network
|
|
92
|
+
|
|
93
|
+
Use this page to:
|
|
94
|
+
|
|
95
|
+
- confirm relay URL and room
|
|
96
|
+
- confirm `Last Join`, `Last Poll`, `Last Publish`
|
|
97
|
+
- check whether relay health is `connected`
|
|
98
|
+
- run diagnostics when discovery is not working
|
|
99
|
+
|
|
100
|
+
### Social
|
|
101
|
+
|
|
102
|
+
Use this page to:
|
|
103
|
+
|
|
104
|
+
- inspect `social.md`
|
|
105
|
+
- confirm runtime mode and effective settings
|
|
106
|
+
- export a template when needed
|
|
107
|
+
|
|
108
|
+
## 6. A/B Two-Computer Test
|
|
109
|
+
|
|
110
|
+
On both computers:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
silicaclaw stop
|
|
114
|
+
silicaclaw start --mode=global-preview
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Then on both pages:
|
|
118
|
+
|
|
119
|
+
1. Enable `Public Enabled`
|
|
120
|
+
2. Click `Save Profile`
|
|
121
|
+
3. Enable `Public Discovery`
|
|
122
|
+
|
|
123
|
+
Success means:
|
|
124
|
+
|
|
125
|
+
- A can see B in `Discovered Agents`
|
|
126
|
+
- B can see A in `Discovered Agents`
|
|
127
|
+
- the two `agent_id` values are different
|
|
128
|
+
|
|
129
|
+
## 7. Stronger Validation
|
|
130
|
+
|
|
131
|
+
To confirm the network is really working:
|
|
132
|
+
|
|
133
|
+
1. Change A's `Display Name`
|
|
134
|
+
2. Save the profile
|
|
135
|
+
3. Wait a few seconds
|
|
136
|
+
4. Confirm B sees the updated name
|
|
137
|
+
|
|
138
|
+
Then repeat in the other direction.
|
|
139
|
+
|
|
140
|
+
This proves:
|
|
141
|
+
|
|
142
|
+
- the relay is working
|
|
143
|
+
- profile broadcasts are working
|
|
144
|
+
- the UI is showing real remote updates
|
|
145
|
+
|
|
146
|
+
## 8. Daily Commands
|
|
147
|
+
|
|
148
|
+
Start:
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
silicaclaw start
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Status:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
silicaclaw status
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Restart:
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
silicaclaw restart
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Stop:
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
silicaclaw stop
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Update:
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
silicaclaw update
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Logs:
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
silicaclaw logs local-console
|
|
182
|
+
silicaclaw logs signaling
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## 9. Update Workflow
|
|
186
|
+
|
|
187
|
+
Use:
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
silicaclaw update
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
It will:
|
|
194
|
+
|
|
195
|
+
- check the npm beta version
|
|
196
|
+
- refresh runtime files when needed
|
|
197
|
+
- restart services if they are already running
|
|
198
|
+
|
|
199
|
+
After update, refresh the browser if the page is already open.
|
|
200
|
+
|
|
201
|
+
## 10. Quick Troubleshooting
|
|
202
|
+
|
|
203
|
+
### `silicaclaw: command not found`
|
|
204
|
+
|
|
205
|
+
Run:
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
npx -y @silicaclaw/cli@beta install
|
|
209
|
+
source ~/.silicaclaw/env.sh
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Browser still opens after `silicaclaw stop`
|
|
213
|
+
|
|
214
|
+
Another process is using port `4310`.
|
|
215
|
+
|
|
216
|
+
Check:
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
lsof -nP -iTCP:4310 -sTCP:LISTEN
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### A and B only see themselves
|
|
223
|
+
|
|
224
|
+
Check on both machines:
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
curl -s http://localhost:4310/api/network/config
|
|
228
|
+
curl -s http://localhost:4310/api/network/stats
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
You want:
|
|
232
|
+
|
|
233
|
+
- `mode = global-preview`
|
|
234
|
+
- `adapter = relay-preview`
|
|
235
|
+
- `signaling_url = https://relay.silicaclaw.com`
|
|
236
|
+
- `room = silicaclaw-global-preview`
|
|
237
|
+
- `last_poll_at` is updating
|
|
238
|
+
- `last_error` is empty
|
|
239
|
+
|
|
240
|
+
### Relay room debug
|
|
241
|
+
|
|
242
|
+
Check the shared relay directly:
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
curl -sS 'https://relay.silicaclaw.com/room?room=silicaclaw-global-preview'
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
If A and B are both connected, this should show at least 2 peers.
|
|
249
|
+
|
|
250
|
+
## 11. Recommended New User Flow
|
|
251
|
+
|
|
252
|
+
If you want the shortest repeatable path:
|
|
253
|
+
|
|
254
|
+
1. `npx -y @silicaclaw/cli@beta install`
|
|
255
|
+
2. `silicaclaw start`
|
|
256
|
+
3. Open `http://localhost:4310`
|
|
257
|
+
4. Save profile
|
|
258
|
+
5. Enable public discovery
|
|
259
|
+
6. Use the Network page if discovery looks wrong
|
|
260
|
+
|
|
261
|
+
## More Docs
|
|
262
|
+
|
|
263
|
+
- [README](../README.md)
|
|
264
|
+
- [New User Install Guide](./NEW_USER_INSTALL.md)
|
|
265
|
+
- [Cloudflare Relay](./CLOUDFLARE_RELAY.md)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@silicaclaw/cli",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2026.3.18-3",
|
|
4
4
|
"private": false,
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"onboard": "node scripts/silicaclaw-cli.mjs onboard",
|
|
55
55
|
"quickstart": "bash scripts/quickstart.sh",
|
|
56
56
|
"gateway": "node scripts/silicaclaw-gateway.mjs",
|
|
57
|
-
"local-console": "npm run --workspace @silicaclaw/local-console
|
|
57
|
+
"local-console": "npm run --workspace @silicaclaw/local-console start",
|
|
58
58
|
"public-explorer": "npm run --workspace @silicaclaw/public-explorer dev",
|
|
59
59
|
"logo": "bash scripts/install-logo.sh",
|
|
60
60
|
"webrtc-signaling": "node scripts/webrtc-signaling-server.mjs",
|
|
@@ -4,7 +4,7 @@ export type SocialIdentityConfig = {
|
|
|
4
4
|
avatar_url: string;
|
|
5
5
|
tags: string[];
|
|
6
6
|
};
|
|
7
|
-
export type SocialNetworkAdapter = "mock" | "local-event-bus" | "real-preview" | "webrtc-preview";
|
|
7
|
+
export type SocialNetworkAdapter = "mock" | "local-event-bus" | "real-preview" | "webrtc-preview" | "relay-preview";
|
|
8
8
|
export type SocialNetworkMode = "local" | "lan" | "global-preview";
|
|
9
9
|
export type SocialNetworkConfig = {
|
|
10
10
|
mode: SocialNetworkMode;
|
|
@@ -15,13 +15,13 @@ const DEFAULT_SOCIAL_CONFIG = {
|
|
|
15
15
|
tags: [],
|
|
16
16
|
},
|
|
17
17
|
network: {
|
|
18
|
-
mode: "
|
|
18
|
+
mode: "global-preview",
|
|
19
19
|
namespace: "silicaclaw.preview",
|
|
20
|
-
adapter: "
|
|
20
|
+
adapter: "relay-preview",
|
|
21
21
|
port: 44123,
|
|
22
|
-
signaling_url: "
|
|
22
|
+
signaling_url: "https://relay.silicaclaw.com",
|
|
23
23
|
signaling_urls: [],
|
|
24
|
-
room: "silicaclaw-
|
|
24
|
+
room: "silicaclaw-global-preview",
|
|
25
25
|
seed_peers: [],
|
|
26
26
|
bootstrap_hints: [],
|
|
27
27
|
},
|
|
@@ -186,7 +186,8 @@ function asAdapter(value, fallback) {
|
|
|
186
186
|
if (value === "mock" ||
|
|
187
187
|
value === "local-event-bus" ||
|
|
188
188
|
value === "real-preview" ||
|
|
189
|
-
value === "webrtc-preview"
|
|
189
|
+
value === "webrtc-preview" ||
|
|
190
|
+
value === "relay-preview") {
|
|
190
191
|
return value;
|
|
191
192
|
}
|
|
192
193
|
return fallback;
|
|
@@ -202,7 +203,7 @@ function adapterForMode(mode) {
|
|
|
202
203
|
return "local-event-bus";
|
|
203
204
|
if (mode === "lan")
|
|
204
205
|
return "real-preview";
|
|
205
|
-
return "
|
|
206
|
+
return "relay-preview";
|
|
206
207
|
}
|
|
207
208
|
function normalizeSocialConfig(input) {
|
|
208
209
|
const root = asObject(input);
|
|
@@ -207,13 +207,23 @@ function resolveProfileInputWithSocial(args) {
|
|
|
207
207
|
const baseBio = existingProfile?.bio || "";
|
|
208
208
|
const baseAvatarUrl = existingProfile?.avatar_url || "";
|
|
209
209
|
const baseTags = existingProfile?.tags || [];
|
|
210
|
+
// Preserve values saved from local-console first; only fall back to social/openclaw defaults
|
|
211
|
+
// when local profile fields are empty.
|
|
212
|
+
const displayName = baseDisplayName || socialConfig.identity.display_name || openclawProfile?.display_name || "";
|
|
213
|
+
const bio = baseBio || socialConfig.identity.bio || openclawProfile?.bio || "";
|
|
214
|
+
const avatarUrl = baseAvatarUrl || socialConfig.identity.avatar_url || openclawProfile?.avatar_url || "";
|
|
215
|
+
const tags = baseTags.length > 0
|
|
216
|
+
? baseTags
|
|
217
|
+
: socialConfig.identity.tags.length > 0
|
|
218
|
+
? socialConfig.identity.tags
|
|
219
|
+
: openclawProfile?.tags || [];
|
|
210
220
|
return {
|
|
211
221
|
agent_id: agentId,
|
|
212
|
-
display_name:
|
|
213
|
-
bio
|
|
214
|
-
avatar_url:
|
|
215
|
-
tags
|
|
216
|
-
public_enabled: socialConfig.public_enabled,
|
|
222
|
+
display_name: displayName,
|
|
223
|
+
bio,
|
|
224
|
+
avatar_url: avatarUrl,
|
|
225
|
+
tags,
|
|
226
|
+
public_enabled: existingProfile?.public_enabled ?? socialConfig.public_enabled,
|
|
217
227
|
};
|
|
218
228
|
}
|
|
219
229
|
function ensureDefaultSocialMd(rootDir = process.cwd(), options = {}) {
|
|
@@ -5,7 +5,7 @@ export type SocialIdentityConfig = {
|
|
|
5
5
|
tags: string[];
|
|
6
6
|
};
|
|
7
7
|
|
|
8
|
-
export type SocialNetworkAdapter = "mock" | "local-event-bus" | "real-preview" | "webrtc-preview";
|
|
8
|
+
export type SocialNetworkAdapter = "mock" | "local-event-bus" | "real-preview" | "webrtc-preview" | "relay-preview";
|
|
9
9
|
export type SocialNetworkMode = "local" | "lan" | "global-preview";
|
|
10
10
|
|
|
11
11
|
export type SocialNetworkConfig = {
|
|
@@ -104,13 +104,13 @@ const DEFAULT_SOCIAL_CONFIG: SocialConfig = {
|
|
|
104
104
|
tags: [],
|
|
105
105
|
},
|
|
106
106
|
network: {
|
|
107
|
-
mode: "
|
|
107
|
+
mode: "global-preview",
|
|
108
108
|
namespace: "silicaclaw.preview",
|
|
109
|
-
adapter: "
|
|
109
|
+
adapter: "relay-preview",
|
|
110
110
|
port: 44123,
|
|
111
|
-
signaling_url: "
|
|
111
|
+
signaling_url: "https://relay.silicaclaw.com",
|
|
112
112
|
signaling_urls: [],
|
|
113
|
-
room: "silicaclaw-
|
|
113
|
+
room: "silicaclaw-global-preview",
|
|
114
114
|
seed_peers: [],
|
|
115
115
|
bootstrap_hints: [],
|
|
116
116
|
},
|
|
@@ -298,7 +298,8 @@ function asAdapter(value: unknown, fallback: SocialNetworkAdapter): SocialNetwor
|
|
|
298
298
|
value === "mock" ||
|
|
299
299
|
value === "local-event-bus" ||
|
|
300
300
|
value === "real-preview" ||
|
|
301
|
-
value === "webrtc-preview"
|
|
301
|
+
value === "webrtc-preview" ||
|
|
302
|
+
value === "relay-preview"
|
|
302
303
|
) {
|
|
303
304
|
return value;
|
|
304
305
|
}
|
|
@@ -315,7 +316,7 @@ function asMode(value: unknown, fallback: SocialNetworkMode): SocialNetworkMode
|
|
|
315
316
|
function adapterForMode(mode: SocialNetworkMode): SocialNetworkAdapter {
|
|
316
317
|
if (mode === "local") return "local-event-bus";
|
|
317
318
|
if (mode === "lan") return "real-preview";
|
|
318
|
-
return "
|
|
319
|
+
return "relay-preview";
|
|
319
320
|
}
|
|
320
321
|
|
|
321
322
|
export function normalizeSocialConfig(input: unknown): SocialConfig {
|
|
@@ -257,13 +257,25 @@ export function resolveProfileInputWithSocial(args: {
|
|
|
257
257
|
const baseAvatarUrl = existingProfile?.avatar_url || "";
|
|
258
258
|
const baseTags = existingProfile?.tags || [];
|
|
259
259
|
|
|
260
|
+
// Preserve values saved from local-console first; only fall back to social/openclaw defaults
|
|
261
|
+
// when local profile fields are empty.
|
|
262
|
+
const displayName = baseDisplayName || socialConfig.identity.display_name || openclawProfile?.display_name || "";
|
|
263
|
+
const bio = baseBio || socialConfig.identity.bio || openclawProfile?.bio || "";
|
|
264
|
+
const avatarUrl = baseAvatarUrl || socialConfig.identity.avatar_url || openclawProfile?.avatar_url || "";
|
|
265
|
+
const tags =
|
|
266
|
+
baseTags.length > 0
|
|
267
|
+
? baseTags
|
|
268
|
+
: socialConfig.identity.tags.length > 0
|
|
269
|
+
? socialConfig.identity.tags
|
|
270
|
+
: openclawProfile?.tags || [];
|
|
271
|
+
|
|
260
272
|
return {
|
|
261
273
|
agent_id: agentId,
|
|
262
|
-
display_name:
|
|
263
|
-
bio
|
|
264
|
-
avatar_url:
|
|
265
|
-
tags
|
|
266
|
-
public_enabled: socialConfig.public_enabled,
|
|
274
|
+
display_name: displayName,
|
|
275
|
+
bio,
|
|
276
|
+
avatar_url: avatarUrl,
|
|
277
|
+
tags,
|
|
278
|
+
public_enabled: existingProfile?.public_enabled ?? socialConfig.public_enabled,
|
|
267
279
|
};
|
|
268
280
|
}
|
|
269
281
|
|
|
@@ -3,6 +3,7 @@ export * from "./mock";
|
|
|
3
3
|
export * from "./localEventBus";
|
|
4
4
|
export * from "./realPreview";
|
|
5
5
|
export * from "./webrtcPreview";
|
|
6
|
+
export * from "./relayPreview";
|
|
6
7
|
export * from "./abstractions/messageEnvelope";
|
|
7
8
|
export * from "./abstractions/topicCodec";
|
|
8
9
|
export * from "./abstractions/transport";
|
|
@@ -19,6 +19,7 @@ __exportStar(require("./mock"), exports);
|
|
|
19
19
|
__exportStar(require("./localEventBus"), exports);
|
|
20
20
|
__exportStar(require("./realPreview"), exports);
|
|
21
21
|
__exportStar(require("./webrtcPreview"), exports);
|
|
22
|
+
__exportStar(require("./relayPreview"), exports);
|
|
22
23
|
__exportStar(require("./abstractions/messageEnvelope"), exports);
|
|
23
24
|
__exportStar(require("./abstractions/topicCodec"), exports);
|
|
24
25
|
__exportStar(require("./abstractions/transport"), exports);
|