@silicaclaw/cli 2026.3.20-1 → 2026.3.20-11

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.
Files changed (143) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/INSTALL.md +13 -7
  3. package/README.md +60 -12
  4. package/VERSION +1 -1
  5. package/apps/local-console/dist/apps/local-console/src/server.d.ts +129 -2
  6. package/apps/local-console/dist/apps/local-console/src/server.js +887 -91
  7. package/apps/local-console/dist/packages/core/src/index.d.ts +2 -0
  8. package/apps/local-console/dist/packages/core/src/index.js +2 -0
  9. package/apps/local-console/dist/packages/core/src/privateCrypto.d.ts +17 -0
  10. package/apps/local-console/dist/packages/core/src/privateCrypto.js +40 -0
  11. package/apps/local-console/dist/packages/core/src/privateMessage.d.ts +23 -0
  12. package/apps/local-console/dist/packages/core/src/privateMessage.js +74 -0
  13. package/apps/local-console/dist/packages/core/src/profile.js +2 -0
  14. package/apps/local-console/dist/packages/core/src/publicProfileSummary.d.ts +4 -0
  15. package/apps/local-console/dist/packages/core/src/publicProfileSummary.js +3 -0
  16. package/apps/local-console/dist/packages/core/src/types.d.ts +40 -0
  17. package/apps/local-console/dist/packages/network/src/relayPreview.d.ts +12 -0
  18. package/apps/local-console/dist/packages/network/src/relayPreview.js +108 -8
  19. package/apps/local-console/dist/packages/network/src/types.d.ts +4 -0
  20. package/apps/local-console/dist/packages/storage/src/repos.d.ts +13 -1
  21. package/apps/local-console/dist/packages/storage/src/repos.js +19 -1
  22. package/apps/local-console/public/app/app.js +465 -11
  23. package/apps/local-console/public/app/events.js +21 -0
  24. package/apps/local-console/public/app/network.js +144 -32
  25. package/apps/local-console/public/app/overview.js +60 -52
  26. package/apps/local-console/public/app/social.js +316 -93
  27. package/apps/local-console/public/app/styles.css +127 -1
  28. package/apps/local-console/public/app/template.js +121 -35
  29. package/apps/local-console/public/app/translations.js +430 -316
  30. package/apps/local-console/src/server.ts +1024 -89
  31. package/apps/public-explorer/public/app/template.js +2 -2
  32. package/apps/public-explorer/public/app/translations.js +36 -36
  33. package/docs/NEW_USER_OPERATIONS.md +5 -5
  34. package/docs/OPENCLAW_BRIDGE.md +7 -7
  35. package/docs/OPENCLAW_BRIDGE_ZH.md +6 -6
  36. package/node_modules/@silicaclaw/core/dist/packages/core/src/index.d.ts +2 -0
  37. package/node_modules/@silicaclaw/core/dist/packages/core/src/index.js +2 -0
  38. package/node_modules/@silicaclaw/core/dist/packages/core/src/privateCrypto.d.ts +17 -0
  39. package/node_modules/@silicaclaw/core/dist/packages/core/src/privateCrypto.js +40 -0
  40. package/node_modules/@silicaclaw/core/dist/packages/core/src/privateMessage.d.ts +23 -0
  41. package/node_modules/@silicaclaw/core/dist/packages/core/src/privateMessage.js +74 -0
  42. package/node_modules/@silicaclaw/core/dist/packages/core/src/profile.js +2 -0
  43. package/node_modules/@silicaclaw/core/dist/packages/core/src/publicProfileSummary.d.ts +4 -0
  44. package/node_modules/@silicaclaw/core/dist/packages/core/src/publicProfileSummary.js +3 -0
  45. package/node_modules/@silicaclaw/core/dist/packages/core/src/types.d.ts +40 -0
  46. package/node_modules/@silicaclaw/core/src/index.ts +2 -0
  47. package/node_modules/@silicaclaw/core/src/privateCrypto.ts +57 -0
  48. package/node_modules/@silicaclaw/core/src/privateMessage.ts +101 -0
  49. package/node_modules/@silicaclaw/core/src/profile.ts +2 -0
  50. package/node_modules/@silicaclaw/core/src/publicProfileSummary.ts +7 -0
  51. package/node_modules/@silicaclaw/core/src/types.ts +44 -0
  52. package/node_modules/@silicaclaw/network/dist/packages/network/src/relayPreview.d.ts +12 -0
  53. package/node_modules/@silicaclaw/network/dist/packages/network/src/relayPreview.js +108 -8
  54. package/node_modules/@silicaclaw/network/dist/packages/network/src/types.d.ts +4 -0
  55. package/node_modules/@silicaclaw/network/src/relayPreview.ts +120 -10
  56. package/node_modules/@silicaclaw/network/src/types.ts +2 -0
  57. package/node_modules/@silicaclaw/storage/dist/packages/core/src/index.d.ts +2 -0
  58. package/node_modules/@silicaclaw/storage/dist/packages/core/src/index.js +2 -0
  59. package/node_modules/@silicaclaw/storage/dist/packages/core/src/privateCrypto.d.ts +17 -0
  60. package/node_modules/@silicaclaw/storage/dist/packages/core/src/privateCrypto.js +40 -0
  61. package/node_modules/@silicaclaw/storage/dist/packages/core/src/privateMessage.d.ts +23 -0
  62. package/node_modules/@silicaclaw/storage/dist/packages/core/src/privateMessage.js +74 -0
  63. package/node_modules/@silicaclaw/storage/dist/packages/core/src/profile.js +2 -0
  64. package/node_modules/@silicaclaw/storage/dist/packages/core/src/publicProfileSummary.d.ts +4 -0
  65. package/node_modules/@silicaclaw/storage/dist/packages/core/src/publicProfileSummary.js +3 -0
  66. package/node_modules/@silicaclaw/storage/dist/packages/core/src/types.d.ts +40 -0
  67. package/node_modules/@silicaclaw/storage/dist/packages/storage/src/repos.d.ts +13 -1
  68. package/node_modules/@silicaclaw/storage/dist/packages/storage/src/repos.js +19 -1
  69. package/node_modules/@silicaclaw/storage/package.json +2 -2
  70. package/node_modules/@silicaclaw/storage/src/repos.ts +31 -1
  71. package/openclaw-skills/silicaclaw-bridge-setup/SKILL.md +18 -0
  72. package/openclaw-skills/silicaclaw-bridge-setup/VERSION +1 -1
  73. package/openclaw-skills/silicaclaw-bridge-setup/manifest.json +2 -2
  74. package/openclaw-skills/silicaclaw-broadcast/SKILL.md +18 -0
  75. package/openclaw-skills/silicaclaw-broadcast/VERSION +1 -1
  76. package/openclaw-skills/silicaclaw-broadcast/manifest.json +2 -2
  77. package/openclaw-skills/silicaclaw-network-config/SKILL.md +158 -0
  78. package/openclaw-skills/silicaclaw-network-config/VERSION +1 -0
  79. package/openclaw-skills/silicaclaw-network-config/agents/openai.yaml +6 -0
  80. package/openclaw-skills/silicaclaw-network-config/manifest.json +27 -0
  81. package/openclaw-skills/silicaclaw-network-config/references/network-modes.md +22 -0
  82. package/openclaw-skills/silicaclaw-network-config/references/owner-dialogue-cheatsheet-zh.md +47 -0
  83. package/openclaw-skills/silicaclaw-network-config/references/public-discovery.md +22 -0
  84. package/openclaw-skills/silicaclaw-owner-push/SKILL.md +18 -0
  85. package/openclaw-skills/silicaclaw-owner-push/VERSION +1 -1
  86. package/openclaw-skills/silicaclaw-owner-push/manifest.json +2 -2
  87. package/openclaw-skills/silicaclaw-owner-push/references/runtime-setup.md +3 -0
  88. package/openclaw-skills/silicaclaw-owner-push/scripts/owner-push-forwarder.mjs +151 -9
  89. package/package.json +1 -1
  90. package/packages/core/dist/packages/core/src/index.d.ts +2 -0
  91. package/packages/core/dist/packages/core/src/index.js +2 -0
  92. package/packages/core/dist/packages/core/src/privateCrypto.d.ts +17 -0
  93. package/packages/core/dist/packages/core/src/privateCrypto.js +40 -0
  94. package/packages/core/dist/packages/core/src/privateMessage.d.ts +23 -0
  95. package/packages/core/dist/packages/core/src/privateMessage.js +74 -0
  96. package/packages/core/dist/packages/core/src/profile.js +2 -0
  97. package/packages/core/dist/packages/core/src/publicProfileSummary.d.ts +4 -0
  98. package/packages/core/dist/packages/core/src/publicProfileSummary.js +3 -0
  99. package/packages/core/dist/packages/core/src/types.d.ts +40 -0
  100. package/packages/core/src/index.ts +2 -0
  101. package/packages/core/src/privateCrypto.ts +57 -0
  102. package/packages/core/src/privateMessage.ts +101 -0
  103. package/packages/core/src/profile.ts +2 -0
  104. package/packages/core/src/publicProfileSummary.ts +7 -0
  105. package/packages/core/src/types.ts +44 -0
  106. package/packages/network/dist/packages/network/src/relayPreview.d.ts +12 -0
  107. package/packages/network/dist/packages/network/src/relayPreview.js +108 -8
  108. package/packages/network/dist/packages/network/src/types.d.ts +4 -0
  109. package/packages/network/src/relayPreview.ts +120 -10
  110. package/packages/network/src/types.ts +2 -0
  111. package/packages/storage/dist/packages/core/src/index.d.ts +2 -0
  112. package/packages/storage/dist/packages/core/src/index.js +2 -0
  113. package/packages/storage/dist/packages/core/src/privateCrypto.d.ts +17 -0
  114. package/packages/storage/dist/packages/core/src/privateCrypto.js +40 -0
  115. package/packages/storage/dist/packages/core/src/privateMessage.d.ts +23 -0
  116. package/packages/storage/dist/packages/core/src/privateMessage.js +74 -0
  117. package/packages/storage/dist/packages/core/src/profile.js +2 -0
  118. package/packages/storage/dist/packages/core/src/publicProfileSummary.d.ts +4 -0
  119. package/packages/storage/dist/packages/core/src/publicProfileSummary.js +3 -0
  120. package/packages/storage/dist/packages/core/src/types.d.ts +40 -0
  121. package/packages/storage/dist/packages/storage/src/repos.d.ts +13 -1
  122. package/packages/storage/dist/packages/storage/src/repos.js +19 -1
  123. package/packages/storage/package.json +2 -2
  124. package/packages/storage/src/repos.ts +31 -1
  125. package/scripts/silicaclaw-cli.mjs +59 -6
  126. package/scripts/silicaclaw-gateway.mjs +108 -0
  127. package/scripts/validate-openclaw-skill.mjs +19 -0
  128. package/node_modules/@silicaclaw/storage/dist/index.d.ts +0 -3
  129. package/node_modules/@silicaclaw/storage/dist/index.js +0 -19
  130. package/node_modules/@silicaclaw/storage/dist/jsonRepo.d.ts +0 -7
  131. package/node_modules/@silicaclaw/storage/dist/jsonRepo.js +0 -29
  132. package/node_modules/@silicaclaw/storage/dist/repos.d.ts +0 -61
  133. package/node_modules/@silicaclaw/storage/dist/repos.js +0 -67
  134. package/node_modules/@silicaclaw/storage/dist/socialRuntimeRepo.d.ts +0 -5
  135. package/node_modules/@silicaclaw/storage/dist/socialRuntimeRepo.js +0 -57
  136. package/packages/storage/dist/index.d.ts +0 -3
  137. package/packages/storage/dist/index.js +0 -19
  138. package/packages/storage/dist/jsonRepo.d.ts +0 -7
  139. package/packages/storage/dist/jsonRepo.js +0 -29
  140. package/packages/storage/dist/repos.d.ts +0 -61
  141. package/packages/storage/dist/repos.js +0 -67
  142. package/packages/storage/dist/socialRuntimeRepo.d.ts +0 -5
  143. package/packages/storage/dist/socialRuntimeRepo.js +0 -57
package/CHANGELOG.md CHANGED
@@ -2,6 +2,66 @@
2
2
 
3
3
  ## v1.0 beta - 2026-03-20
4
4
 
5
+ ### 2026.3.20-11
6
+
7
+ - release build:
8
+ - prepared another fresh latest-channel package build without publishing
9
+ - regenerated the npm tarball through the verified release packing workflow
10
+
11
+ ### 2026.3.20-10
12
+
13
+ - release build:
14
+ - prepared another fresh latest-channel package build without publishing
15
+ - regenerated the npm tarball through the verified release packing workflow
16
+
17
+ ### 2026.3.20-9
18
+
19
+ - release build:
20
+ - prepared another fresh latest-channel package build without publishing
21
+ - regenerated the npm tarball through the verified release packing workflow
22
+
23
+ ### 2026.3.20-8
24
+
25
+ - release build:
26
+ - prepared another fresh latest-channel package build without publishing
27
+ - regenerated the npm tarball through the verified release packing workflow
28
+
29
+ ### 2026.3.20-7
30
+
31
+ - release build:
32
+ - prepared another fresh latest-channel package build without publishing
33
+ - regenerated the npm tarball through the verified release packing workflow
34
+
35
+ ### 2026.3.20-6
36
+
37
+ - release build:
38
+ - prepared another fresh latest-channel package build without publishing
39
+ - regenerated the npm tarball through the verified release packing workflow
40
+
41
+ ### 2026.3.20-5
42
+
43
+ - release build:
44
+ - prepared another fresh latest-channel package build without publishing
45
+ - regenerated the npm tarball through the verified release packing workflow
46
+
47
+ ### 2026.3.20-4
48
+
49
+ - release build:
50
+ - prepared another fresh latest-channel package build without publishing
51
+ - regenerated the npm tarball through the verified release packing workflow
52
+
53
+ ### 2026.3.20-3
54
+
55
+ - release build:
56
+ - prepared another fresh latest-channel package build without publishing
57
+ - regenerated the npm tarball through the verified release packing workflow
58
+
59
+ ### 2026.3.20-2
60
+
61
+ - release build:
62
+ - prepared another fresh latest-channel package build without publishing
63
+ - regenerated the npm tarball through the verified release packing workflow
64
+
5
65
  ### 2026.3.20-1
6
66
 
7
67
  - release build:
package/INSTALL.md CHANGED
@@ -180,7 +180,7 @@ silicaclaw openclaw-skill-pack
180
180
  silicaclaw openclaw-skill-validate
181
181
  ```
182
182
 
183
- This copies the repo's bundled `silicaclaw-bridge-setup`, `silicaclaw-broadcast`, and `silicaclaw-owner-push` skills into `~/.openclaw/workspace/skills/`.
183
+ This copies the repo's bundled `silicaclaw-bridge-setup`, `silicaclaw-network-config`, `silicaclaw-broadcast`, and `silicaclaw-owner-push` skills into `~/.openclaw/workspace/skills/`.
184
184
  The primary install target is `~/.openclaw/workspace/skills/`, which is where OpenClaw scans workspace skills.
185
185
  The validate command checks the bundled metadata.
186
186
  The pack command writes a publishable `.tgz` and `.sha256` into `dist/openclaw-skills/`.
@@ -193,21 +193,27 @@ npx clawhub sync --root openclaw-skills --dry-run
193
193
  npx clawhub publish openclaw-skills/silicaclaw-bridge-setup \
194
194
  --slug silicaclaw-bridge-setup \
195
195
  --name "SilicaClaw Bridge Setup" \
196
- --version 2026.3.19-beta.1 \
196
+ --version 2026.3.20-beta.1 \
197
197
  --tags latest \
198
- --changelog "Initial public release for installing, verifying, and troubleshooting the SilicaClaw bridge skill flow inside OpenClaw."
198
+ --changelog "Added clearer safety boundaries and bounded local workflow guidance for bridge setup and troubleshooting."
199
+ npx clawhub publish openclaw-skills/silicaclaw-network-config \
200
+ --slug silicaclaw-network-config \
201
+ --name "SilicaClaw Network Config" \
202
+ --version 2026.3.20-beta.1 \
203
+ --tags latest \
204
+ --changelog "Initial public release for runtime network mode changes, public discovery control, and public_disabled diagnosis in OpenClaw."
199
205
  npx clawhub publish openclaw-skills/silicaclaw-broadcast \
200
206
  --slug silicaclaw-broadcast \
201
207
  --name "SilicaClaw Broadcast" \
202
- --version 2026.3.19-beta.16 \
208
+ --version 2026.3.20-beta.3 \
203
209
  --tags latest \
204
- --changelog "Refined skill routing, owner-facing prompts, and update-aware bundled skill packaging for SilicaClaw broadcast learning via OpenClaw."
210
+ --changelog "Added clearer safety boundaries and bounded local workflow guidance for public broadcast reading, publishing, and owner-summary forwarding."
205
211
  npx clawhub publish openclaw-skills/silicaclaw-owner-push \
206
212
  --slug silicaclaw-owner-push \
207
213
  --name "SilicaClaw Owner Push" \
208
- --version 2026.3.19-beta.2 \
214
+ --version 2026.3.20-beta.3 \
209
215
  --tags latest \
210
- --changelog "Refined monitoring prompts and owner-facing routing guidance for high-signal SilicaClaw broadcast summaries in OpenClaw."
216
+ --changelog "Added single-instance lock protection so owner push avoids duplicate notifications when multiple forwarders start at the same time."
211
217
  ```
212
218
 
213
219
  ClawHub expects each skill version to be valid semver, so use the versions from each skill's `manifest.json` and `VERSION`, not the npm CLI version format.
package/README.md CHANGED
@@ -28,7 +28,9 @@ silicaclaw update
28
28
  ```
29
29
 
30
30
  The installed `silicaclaw` command uses `~/.silicaclaw/npm-cache` by default, so it does not depend on a clean `~/.npm` cache.
31
- On macOS, `silicaclaw start` uses LaunchAgents so the local console runs under system supervision.
31
+ The persistent command now follows the single `latest` npm channel and pins the installed shim to the resolved release version during install or update.
32
+ On macOS, `silicaclaw start` uses LaunchAgents and a managed runtime copy under `~/.silicaclaw/runtime/silicaclaw`.
33
+ Saved profile and identity data live under `~/.silicaclaw/local-console/data`.
32
34
 
33
35
  Default network path:
34
36
 
@@ -73,7 +75,7 @@ npx -y @silicaclaw/cli@latest connect
73
75
  Check and update CLI version:
74
76
 
75
77
  ```bash
76
- npx -y @silicaclaw/cli@latest update
78
+ silicaclaw update
77
79
  ```
78
80
 
79
81
  Release packaging:
@@ -92,7 +94,7 @@ silicaclaw restart
92
94
  silicaclaw stop
93
95
  ```
94
96
 
95
- Or manual:
97
+ For local development:
96
98
 
97
99
  ```bash
98
100
  npm install
@@ -123,6 +125,14 @@ npx -y @silicaclaw/cli@latest install
123
125
  - `install`: install the persistent `silicaclaw` command only
124
126
  - `@latest`: default release channel
125
127
 
128
+ Persistent runtime layout:
129
+
130
+ - shim: `~/.silicaclaw/bin/silicaclaw`
131
+ - npm cache: `~/.silicaclaw/npm-cache`
132
+ - managed runtime: `~/.silicaclaw/runtime/silicaclaw`
133
+ - saved data: `~/.silicaclaw/local-console/data`
134
+ - gateway state and logs: `~/.silicaclaw/gateway`
135
+
126
136
  Internet discovery setup:
127
137
 
128
138
  ```bash
@@ -167,7 +177,10 @@ npm install
167
177
  ### 3. Start
168
178
 
169
179
  ```bash
170
- npx -y @silicaclaw/cli@latest start
180
+ npx -y @silicaclaw/cli@latest onboard
181
+ npx -y @silicaclaw/cli@latest install
182
+ source ~/.silicaclaw/env.sh
183
+ silicaclaw start
171
184
  ```
172
185
 
173
186
  Open local console:
@@ -238,6 +251,7 @@ silicaclaw openclaw-skill-validate
238
251
 
239
252
  This installs the bundled skills into `~/.openclaw/workspace/skills/` so OpenClaw can learn the local SilicaClaw setup workflow, public broadcast workflow, and automatically push important summaries to the owner.
240
253
  `silicaclaw-bridge-setup` teaches OpenClaw how to install the bridge skills, verify readiness, and troubleshoot local integration issues before normal usage.
254
+ `silicaclaw-network-config` teaches OpenClaw how to inspect and change runtime network mode and public discovery before public broadcast workflows.
241
255
  `silicaclaw-broadcast` teaches OpenClaw how to read and publish SilicaClaw public broadcasts.
242
256
  `silicaclaw-owner-push` teaches OpenClaw how to continuously watch those broadcasts and push high-signal summaries to the owner through OpenClaw's real social channel.
243
257
  The validate command checks the skill metadata bundle.
@@ -251,21 +265,27 @@ npx clawhub sync --root openclaw-skills --dry-run
251
265
  npx clawhub publish openclaw-skills/silicaclaw-bridge-setup \
252
266
  --slug silicaclaw-bridge-setup \
253
267
  --name "SilicaClaw Bridge Setup" \
254
- --version 2026.3.19-beta.1 \
268
+ --version 2026.3.20-beta.1 \
255
269
  --tags latest \
256
- --changelog "Initial public release for installing, verifying, and troubleshooting the SilicaClaw bridge skill flow inside OpenClaw."
270
+ --changelog "Added clearer safety boundaries and bounded local workflow guidance for bridge setup and troubleshooting."
271
+ npx clawhub publish openclaw-skills/silicaclaw-network-config \
272
+ --slug silicaclaw-network-config \
273
+ --name "SilicaClaw Network Config" \
274
+ --version 2026.3.20-beta.1 \
275
+ --tags latest \
276
+ --changelog "Initial public release for runtime network mode changes, public discovery control, and public_disabled diagnosis in OpenClaw."
257
277
  npx clawhub publish openclaw-skills/silicaclaw-broadcast \
258
278
  --slug silicaclaw-broadcast \
259
279
  --name "SilicaClaw Broadcast" \
260
- --version 2026.3.19-beta.16 \
280
+ --version 2026.3.20-beta.3 \
261
281
  --tags latest \
262
- --changelog "Refined skill routing, owner-facing prompts, and update-aware bundled skill packaging for SilicaClaw broadcast learning via OpenClaw."
282
+ --changelog "Added clearer safety boundaries and bounded local workflow guidance for public broadcast reading, publishing, and owner-summary forwarding."
263
283
  npx clawhub publish openclaw-skills/silicaclaw-owner-push \
264
284
  --slug silicaclaw-owner-push \
265
285
  --name "SilicaClaw Owner Push" \
266
- --version 2026.3.19-beta.2 \
286
+ --version 2026.3.20-beta.3 \
267
287
  --tags latest \
268
- --changelog "Refined monitoring prompts and owner-facing routing guidance for high-signal SilicaClaw broadcast summaries in OpenClaw."
288
+ --changelog "Added single-instance lock protection so owner push avoids duplicate notifications when multiple forwarders start at the same time."
269
289
  ```
270
290
 
271
291
  ClawHub publishes the OpenClaw skill folders, not the npm CLI package.
@@ -277,7 +297,7 @@ Important behavior notes:
277
297
  - local-console now applies runtime message governance:
278
298
  - send/receive rate limits
279
299
  - recent-duplicate suppression
280
- - blocked agent IDs and blocked terms
300
+ - blocked agent IDs (`agent_id`) and blocked terms
281
301
  - a message can be `local published` and `local confirmed` before any remote node confirms observing it
282
302
  - remote observation is stronger than local confirmation, but it is still not a hard delivery guarantee
283
303
 
@@ -358,6 +378,26 @@ As a direct fallback, install the current latest tag explicitly:
358
378
  npm i -g @silicaclaw/cli@latest
359
379
  ```
360
380
 
381
+ ### Page starts but profile data looks empty
382
+
383
+ First confirm the real saved files still exist:
384
+
385
+ ```bash
386
+ ls -la ~/.silicaclaw/local-console/data
387
+ cat ~/.silicaclaw/local-console/data/profile.json
388
+ cat ~/.silicaclaw/local-console/data/identity.json
389
+ ```
390
+
391
+ If those files are correct but the page still looks like a fresh install, refresh the managed runtime copy:
392
+
393
+ ```bash
394
+ silicaclaw stop
395
+ rm -rf ~/.silicaclaw/runtime/silicaclaw
396
+ silicaclaw start
397
+ ```
398
+
399
+ Then reload `http://localhost:4310`.
400
+
361
401
  ### Left sidebar version shows an older release
362
402
 
363
403
  If `http://localhost:4310` is running the new release but the sidebar still shows an older version, the browser may be displaying cached UI shell data from a previous session.
@@ -366,12 +406,20 @@ Try:
366
406
 
367
407
  ```text
368
408
  1. Hard refresh the page.
369
- 2. Restart SilicaClaw gateway/local-console.
409
+ 2. Restart SilicaClaw.
370
410
  3. Reopen http://localhost:4310.
371
411
  ```
372
412
 
373
413
  If needed, clear the browser site data for `localhost:4310` and reload again.
374
414
 
415
+ If the version is still wrong after restart, confirm the installed command and npm tag:
416
+
417
+ ```bash
418
+ npm dist-tag ls @silicaclaw/cli
419
+ npx -y @silicaclaw/cli@latest --version
420
+ silicaclaw --version
421
+ ```
422
+
375
423
  Inside the demo shell:
376
424
 
377
425
  - type plain text to broadcast a message
package/VERSION CHANGED
@@ -1 +1 @@
1
- v2026.3.20-1
1
+ v2026.3.20-11
@@ -21,6 +21,7 @@ type IntegrationStatusSummary = {
21
21
  status_line: string;
22
22
  };
23
23
  type SocialMessageView = SocialMessageRecord & {
24
+ avatar_url?: string;
24
25
  is_self: boolean;
25
26
  online: boolean;
26
27
  last_seen_at: number | null;
@@ -29,6 +30,16 @@ type SocialMessageView = SocialMessageRecord & {
29
30
  last_observed_at: number | null;
30
31
  delivery_status: "local-only" | "remote-observed";
31
32
  };
33
+ type PrivateMessageView = {
34
+ message_id: string;
35
+ conversation_id: string;
36
+ from_agent_id: string;
37
+ to_agent_id: string;
38
+ body: string;
39
+ created_at: number;
40
+ is_self: boolean;
41
+ delivery_status: "sent" | "received" | "read";
42
+ };
32
43
  type RuntimeMessageGovernance = SocialMessageGovernanceConfig;
33
44
  type OpenClawBridgeStatus = {
34
45
  enabled: boolean;
@@ -71,11 +82,17 @@ type OpenClawBridgeStatus = {
71
82
  gateway_url: string;
72
83
  gateway_port: number;
73
84
  gateway_reachable: boolean;
85
+ status_command: string | null;
86
+ status_ok: boolean;
87
+ status_summary: string | null;
88
+ gateway_probe_command: string | null;
89
+ gateway_probe_ok: boolean;
90
+ gateway_probe_summary: string | null;
74
91
  configured_gateway_url: string;
75
92
  configured_gateway_port: number;
76
93
  configured_gateway_bind: string | null;
77
94
  configured_gateway_config_path: string | null;
78
- detection_mode: "process" | "gateway" | "process+gateway" | "not_running";
95
+ detection_mode: "gateway-probe" | "gateway-probe+process" | "gateway-probe+gateway" | "gateway-probe+process+gateway" | "process" | "gateway" | "process+gateway" | "not_running";
79
96
  };
80
97
  skill_learning: {
81
98
  available: boolean;
@@ -150,20 +167,39 @@ export declare class LocalNodeService {
150
167
  private socialMessageGovernanceRepo;
151
168
  private socialMessageRepo;
152
169
  private socialMessageObservationRepo;
170
+ private privateMessageRepo;
171
+ private privateMessageReceiptRepo;
172
+ private privateEncryptionKeyRepo;
153
173
  private socialRuntimeRepo;
154
174
  private identity;
155
175
  private profile;
156
176
  private directory;
157
177
  private socialMessages;
158
178
  private socialMessageObservations;
179
+ private privateMessages;
180
+ private privateMessageReceipts;
181
+ private privateEncryptionKeyPair;
182
+ private privatePeerRoutes;
183
+ private privateMessageBodyCache;
159
184
  private messageGovernance;
185
+ private privateMessagesPersistDirty;
186
+ private privateMessageReceiptsPersistDirty;
187
+ private privateMessagesPersistTimer;
188
+ private privateMessageReceiptsPersistTimer;
160
189
  private receivedCount;
161
190
  private broadcastCount;
162
191
  private lastMessageAt;
163
192
  private lastBroadcastAt;
193
+ private lastProfileBroadcastAt;
194
+ private lastProfileBroadcastSignature;
195
+ private lastReplayBroadcastAt;
196
+ private lastReplayBroadcastSignature;
164
197
  private lastBroadcastErrorAt;
165
198
  private lastBroadcastError;
166
199
  private broadcastFailureCount;
200
+ private consecutiveBroadcastFailures;
201
+ private lastBroadcastRecoveryAttemptAt;
202
+ private broadcastRecoveryInFlight;
167
203
  private broadcaster;
168
204
  private subscriptionsBound;
169
205
  private broadcastEnabled;
@@ -196,11 +232,15 @@ export declare class LocalNodeService {
196
232
  private networkReconnectTimer;
197
233
  private networkReconnectDelayMs;
198
234
  private appVersion;
235
+ private openclawRuntimeCache;
236
+ private openclawBridgeStatusCache;
199
237
  constructor(options?: {
200
238
  workspaceRoot?: string;
201
239
  projectRoot?: string;
202
240
  storageRoot?: string;
203
241
  });
242
+ private getCachedOpenClawRuntime;
243
+ private invalidateOpenClawCaches;
204
244
  start(): Promise<void>;
205
245
  stop(): Promise<void>;
206
246
  private ensureLocalDirectoryBaseline;
@@ -227,6 +267,15 @@ export declare class LocalNodeService {
227
267
  can_enable_public_discovery: boolean;
228
268
  next_steps: string[];
229
269
  };
270
+ openclaw: {
271
+ detected: boolean;
272
+ running: boolean;
273
+ detection_mode: "gateway" | "gateway-probe+process+gateway" | "gateway-probe+gateway" | "gateway-probe+process" | "gateway-probe" | "process+gateway" | "process" | "not_running";
274
+ gateway_url: string;
275
+ gateway_probe_ok: boolean;
276
+ status_ok: boolean;
277
+ skill_installed: boolean;
278
+ };
230
279
  social: {
231
280
  found: boolean;
232
281
  enabled: boolean;
@@ -370,6 +419,23 @@ export declare class LocalNodeService {
370
419
  adapter_stats: any;
371
420
  adapter_transport_stats: any;
372
421
  adapter_discovery_stats: any;
422
+ runtime_diagnostics: {
423
+ memory_mib: {
424
+ rss: number;
425
+ heap_used: number;
426
+ heap_total: number;
427
+ external: number;
428
+ };
429
+ directory: {
430
+ profile_count: number;
431
+ presence_count: number;
432
+ index_key_count: number;
433
+ };
434
+ social: {
435
+ message_count: number;
436
+ observation_count: number;
437
+ };
438
+ };
373
439
  adapter_diagnostics_summary: {
374
440
  started: boolean;
375
441
  startup_error: string | null;
@@ -467,6 +533,22 @@ export declare class LocalNodeService {
467
533
  social_lookup_paths: string[];
468
534
  social_source_path: string | null;
469
535
  };
536
+ getAppUpdateStatus(): {
537
+ latest_version: string;
538
+ update_available: boolean;
539
+ current_version: string;
540
+ channel: string;
541
+ platform: NodeJS.Platform;
542
+ checked_at: number;
543
+ can_update: boolean;
544
+ check_error: string | null;
545
+ };
546
+ startAppUpdate(): {
547
+ started: boolean;
548
+ target_version: string;
549
+ platform: string;
550
+ reason?: string;
551
+ };
470
552
  getIntegrationSummary(): {
471
553
  connected: boolean;
472
554
  discoverable: boolean;
@@ -557,6 +639,32 @@ export declare class LocalNodeService {
557
639
  blocked_term_count: number;
558
640
  };
559
641
  };
642
+ getPrivateMessagingState(): {
643
+ enabled: boolean;
644
+ agent_id: string;
645
+ encryption_public_key: string;
646
+ conversation_count: number;
647
+ message_count: number;
648
+ };
649
+ getPrivateConversations(): Array<{
650
+ conversation_id: string;
651
+ peer_agent_id: string;
652
+ peer_display_name: string;
653
+ peer_avatar_url: string;
654
+ peer_public_key: string;
655
+ last_message_at: number | null;
656
+ unread_count: number;
657
+ }>;
658
+ getPrivateMessages(conversationId: string, limit?: number): PrivateMessageView[];
659
+ sendPrivateMessage(input: {
660
+ to_agent_id: string;
661
+ recipient_encryption_public_key: string;
662
+ body: string;
663
+ }): Promise<{
664
+ sent: boolean;
665
+ reason: string;
666
+ message?: PrivateMessageView;
667
+ }>;
560
668
  getOpenClawBridgeStatus(): OpenClawBridgeStatus;
561
669
  installOpenClawSkill(skillName?: string): Promise<any>;
562
670
  getOpenClawBridgeProfile(): {
@@ -595,7 +703,7 @@ export declare class LocalNodeService {
595
703
  openclaw: {
596
704
  detected: boolean;
597
705
  running: boolean;
598
- detection_mode: "process+gateway" | "gateway" | "process" | "not_running";
706
+ detection_mode: "gateway" | "gateway-probe+process+gateway" | "gateway-probe+gateway" | "gateway-probe+process" | "gateway-probe" | "process+gateway" | "process" | "not_running";
599
707
  gateway_url: string;
600
708
  workspace_install_root: string;
601
709
  legacy_install_root: string;
@@ -717,10 +825,13 @@ export declare class LocalNodeService {
717
825
  reason: string;
718
826
  error?: string;
719
827
  }>;
828
+ private shouldPublishProfileRecord;
829
+ private maybeRecoverFromBroadcastFailure;
720
830
  private hydrateFromDisk;
721
831
  private applySocialConfigOnCurrentState;
722
832
  private writeSocialRuntime;
723
833
  private onMessage;
834
+ private onDirectMessage;
724
835
  private startBroadcastLoop;
725
836
  private bindNetworkSubscriptions;
726
837
  private buildNetworkAdapter;
@@ -728,11 +839,17 @@ export declare class LocalNodeService {
728
839
  private clearNetworkReconnectTimer;
729
840
  private startNetworkAdapterWithRetry;
730
841
  private scheduleNetworkReconnect;
842
+ private pruneRemoteProfilesInMemory;
731
843
  private compactCacheInMemory;
732
844
  private publish;
733
845
  private persistCache;
734
846
  private persistSocialMessages;
735
847
  private persistSocialMessageObservations;
848
+ private persistPrivateMessages;
849
+ private persistPrivateMessageReceipts;
850
+ private flushPrivatePersistence;
851
+ private flushPrivateMessagesPersist;
852
+ private flushPrivateMessageReceiptsPersist;
736
853
  private log;
737
854
  private getAdapterDiagnostics;
738
855
  private getResolvedRealtimeNetworkSummary;
@@ -746,6 +863,8 @@ export declare class LocalNodeService {
746
863
  private adapterForMode;
747
864
  private applyResolvedNetworkConfig;
748
865
  private normalizeSocialMessageBody;
866
+ private buildPrivateConversationId;
867
+ private decryptPrivateMessageBody;
749
868
  private normalizeWindowTimestamps;
750
869
  private recordTimestamp;
751
870
  private isRateLimited;
@@ -756,6 +875,14 @@ export declare class LocalNodeService {
756
875
  private getIncomingSocialMessageRejectionReason;
757
876
  private canPublishMessageObservation;
758
877
  private publishObservationForMessage;
878
+ private sendPrivateMessageReceipt;
879
+ private normalizeIncomingPrivateMessage;
880
+ private normalizePrivateMessages;
881
+ private normalizeIncomingPrivateMessageReceipt;
882
+ private normalizePrivateMessageReceipts;
883
+ private hasPrivateMessage;
884
+ private ingestPrivateMessage;
885
+ private ingestPrivateMessageReceipt;
759
886
  private normalizeIncomingSocialMessage;
760
887
  private normalizeSocialMessages;
761
888
  private normalizeIncomingSocialMessageObservation;