@silicaclaw/cli 2026.3.20-2 → 2026.3.20-20

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 (145) hide show
  1. package/CHANGELOG.md +102 -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 +139 -3
  6. package/apps/local-console/dist/apps/local-console/src/server.js +1018 -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 +27 -1
  21. package/apps/local-console/dist/packages/storage/src/repos.js +35 -1
  22. package/apps/local-console/public/app/app.js +472 -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 +57 -27
  26. package/apps/local-console/public/app/social.js +342 -105
  27. package/apps/local-console/public/app/styles.css +149 -43
  28. package/apps/local-console/public/app/template.js +196 -100
  29. package/apps/local-console/public/app/translations.js +430 -316
  30. package/apps/local-console/src/server.ts +1164 -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/package.json +2 -2
  47. package/node_modules/@silicaclaw/core/src/index.ts +2 -0
  48. package/node_modules/@silicaclaw/core/src/privateCrypto.ts +57 -0
  49. package/node_modules/@silicaclaw/core/src/privateMessage.ts +101 -0
  50. package/node_modules/@silicaclaw/core/src/profile.ts +2 -0
  51. package/node_modules/@silicaclaw/core/src/publicProfileSummary.ts +7 -0
  52. package/node_modules/@silicaclaw/core/src/types.ts +44 -0
  53. package/node_modules/@silicaclaw/network/dist/packages/network/src/relayPreview.d.ts +12 -0
  54. package/node_modules/@silicaclaw/network/dist/packages/network/src/relayPreview.js +108 -8
  55. package/node_modules/@silicaclaw/network/dist/packages/network/src/types.d.ts +4 -0
  56. package/node_modules/@silicaclaw/network/src/relayPreview.ts +120 -10
  57. package/node_modules/@silicaclaw/network/src/types.ts +2 -0
  58. package/node_modules/@silicaclaw/storage/dist/packages/core/src/index.d.ts +2 -0
  59. package/node_modules/@silicaclaw/storage/dist/packages/core/src/index.js +2 -0
  60. package/node_modules/@silicaclaw/storage/dist/packages/core/src/privateCrypto.d.ts +17 -0
  61. package/node_modules/@silicaclaw/storage/dist/packages/core/src/privateCrypto.js +40 -0
  62. package/node_modules/@silicaclaw/storage/dist/packages/core/src/privateMessage.d.ts +23 -0
  63. package/node_modules/@silicaclaw/storage/dist/packages/core/src/privateMessage.js +74 -0
  64. package/node_modules/@silicaclaw/storage/dist/packages/core/src/profile.js +2 -0
  65. package/node_modules/@silicaclaw/storage/dist/packages/core/src/publicProfileSummary.d.ts +4 -0
  66. package/node_modules/@silicaclaw/storage/dist/packages/core/src/publicProfileSummary.js +3 -0
  67. package/node_modules/@silicaclaw/storage/dist/packages/core/src/types.d.ts +40 -0
  68. package/node_modules/@silicaclaw/storage/dist/packages/storage/src/repos.d.ts +27 -1
  69. package/node_modules/@silicaclaw/storage/dist/packages/storage/src/repos.js +35 -1
  70. package/node_modules/@silicaclaw/storage/package.json +2 -2
  71. package/node_modules/@silicaclaw/storage/src/repos.ts +59 -1
  72. package/openclaw-skills/silicaclaw-bridge-setup/SKILL.md +18 -0
  73. package/openclaw-skills/silicaclaw-bridge-setup/VERSION +1 -1
  74. package/openclaw-skills/silicaclaw-bridge-setup/manifest.json +2 -2
  75. package/openclaw-skills/silicaclaw-broadcast/SKILL.md +18 -0
  76. package/openclaw-skills/silicaclaw-broadcast/VERSION +1 -1
  77. package/openclaw-skills/silicaclaw-broadcast/manifest.json +2 -2
  78. package/openclaw-skills/silicaclaw-network-config/SKILL.md +158 -0
  79. package/openclaw-skills/silicaclaw-network-config/VERSION +1 -0
  80. package/openclaw-skills/silicaclaw-network-config/agents/openai.yaml +6 -0
  81. package/openclaw-skills/silicaclaw-network-config/manifest.json +27 -0
  82. package/openclaw-skills/silicaclaw-network-config/references/network-modes.md +22 -0
  83. package/openclaw-skills/silicaclaw-network-config/references/owner-dialogue-cheatsheet-zh.md +47 -0
  84. package/openclaw-skills/silicaclaw-network-config/references/public-discovery.md +22 -0
  85. package/openclaw-skills/silicaclaw-owner-push/SKILL.md +18 -0
  86. package/openclaw-skills/silicaclaw-owner-push/VERSION +1 -1
  87. package/openclaw-skills/silicaclaw-owner-push/manifest.json +2 -2
  88. package/openclaw-skills/silicaclaw-owner-push/references/runtime-setup.md +3 -0
  89. package/openclaw-skills/silicaclaw-owner-push/scripts/owner-push-forwarder.mjs +151 -9
  90. package/package.json +1 -1
  91. package/packages/core/dist/packages/core/src/index.d.ts +2 -0
  92. package/packages/core/dist/packages/core/src/index.js +2 -0
  93. package/packages/core/dist/packages/core/src/privateCrypto.d.ts +17 -0
  94. package/packages/core/dist/packages/core/src/privateCrypto.js +40 -0
  95. package/packages/core/dist/packages/core/src/privateMessage.d.ts +23 -0
  96. package/packages/core/dist/packages/core/src/privateMessage.js +74 -0
  97. package/packages/core/dist/packages/core/src/profile.js +2 -0
  98. package/packages/core/dist/packages/core/src/publicProfileSummary.d.ts +4 -0
  99. package/packages/core/dist/packages/core/src/publicProfileSummary.js +3 -0
  100. package/packages/core/dist/packages/core/src/types.d.ts +40 -0
  101. package/packages/core/package.json +2 -2
  102. package/packages/core/src/index.ts +2 -0
  103. package/packages/core/src/privateCrypto.ts +57 -0
  104. package/packages/core/src/privateMessage.ts +101 -0
  105. package/packages/core/src/profile.ts +2 -0
  106. package/packages/core/src/publicProfileSummary.ts +7 -0
  107. package/packages/core/src/types.ts +44 -0
  108. package/packages/network/dist/packages/network/src/relayPreview.d.ts +12 -0
  109. package/packages/network/dist/packages/network/src/relayPreview.js +108 -8
  110. package/packages/network/dist/packages/network/src/types.d.ts +4 -0
  111. package/packages/network/src/relayPreview.ts +120 -10
  112. package/packages/network/src/types.ts +2 -0
  113. package/packages/storage/dist/packages/core/src/index.d.ts +2 -0
  114. package/packages/storage/dist/packages/core/src/index.js +2 -0
  115. package/packages/storage/dist/packages/core/src/privateCrypto.d.ts +17 -0
  116. package/packages/storage/dist/packages/core/src/privateCrypto.js +40 -0
  117. package/packages/storage/dist/packages/core/src/privateMessage.d.ts +23 -0
  118. package/packages/storage/dist/packages/core/src/privateMessage.js +74 -0
  119. package/packages/storage/dist/packages/core/src/profile.js +2 -0
  120. package/packages/storage/dist/packages/core/src/publicProfileSummary.d.ts +4 -0
  121. package/packages/storage/dist/packages/core/src/publicProfileSummary.js +3 -0
  122. package/packages/storage/dist/packages/core/src/types.d.ts +40 -0
  123. package/packages/storage/dist/packages/storage/src/repos.d.ts +27 -1
  124. package/packages/storage/dist/packages/storage/src/repos.js +35 -1
  125. package/packages/storage/package.json +2 -2
  126. package/packages/storage/src/repos.ts +59 -1
  127. package/scripts/silicaclaw-cli.mjs +4 -1
  128. package/scripts/silicaclaw-gateway.mjs +114 -2
  129. package/scripts/validate-openclaw-skill.mjs +19 -0
  130. package/node_modules/@silicaclaw/storage/dist/index.d.ts +0 -3
  131. package/node_modules/@silicaclaw/storage/dist/index.js +0 -19
  132. package/node_modules/@silicaclaw/storage/dist/jsonRepo.d.ts +0 -7
  133. package/node_modules/@silicaclaw/storage/dist/jsonRepo.js +0 -29
  134. package/node_modules/@silicaclaw/storage/dist/repos.d.ts +0 -61
  135. package/node_modules/@silicaclaw/storage/dist/repos.js +0 -67
  136. package/node_modules/@silicaclaw/storage/dist/socialRuntimeRepo.d.ts +0 -5
  137. package/node_modules/@silicaclaw/storage/dist/socialRuntimeRepo.js +0 -57
  138. package/packages/storage/dist/index.d.ts +0 -3
  139. package/packages/storage/dist/index.js +0 -19
  140. package/packages/storage/dist/jsonRepo.d.ts +0 -7
  141. package/packages/storage/dist/jsonRepo.js +0 -29
  142. package/packages/storage/dist/repos.d.ts +0 -61
  143. package/packages/storage/dist/repos.js +0 -67
  144. package/packages/storage/dist/socialRuntimeRepo.d.ts +0 -5
  145. package/packages/storage/dist/socialRuntimeRepo.js +0 -57
package/CHANGELOG.md CHANGED
@@ -2,6 +2,108 @@
2
2
 
3
3
  ## v1.0 beta - 2026-03-20
4
4
 
5
+ ### 2026.3.20-20
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-19
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-18
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-17
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-16
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-15
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-13
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-12
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-11
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-10
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
+
65
+ ### 2026.3.20-9
66
+
67
+ - release build:
68
+ - prepared another fresh latest-channel package build without publishing
69
+ - regenerated the npm tarball through the verified release packing workflow
70
+
71
+ ### 2026.3.20-8
72
+
73
+ - release build:
74
+ - prepared another fresh latest-channel package build without publishing
75
+ - regenerated the npm tarball through the verified release packing workflow
76
+
77
+ ### 2026.3.20-7
78
+
79
+ - release build:
80
+ - prepared another fresh latest-channel package build without publishing
81
+ - regenerated the npm tarball through the verified release packing workflow
82
+
83
+ ### 2026.3.20-6
84
+
85
+ - release build:
86
+ - prepared another fresh latest-channel package build without publishing
87
+ - regenerated the npm tarball through the verified release packing workflow
88
+
89
+ ### 2026.3.20-5
90
+
91
+ - release build:
92
+ - prepared another fresh latest-channel package build without publishing
93
+ - regenerated the npm tarball through the verified release packing workflow
94
+
95
+ ### 2026.3.20-4
96
+
97
+ - release build:
98
+ - prepared another fresh latest-channel package build without publishing
99
+ - regenerated the npm tarball through the verified release packing workflow
100
+
101
+ ### 2026.3.20-3
102
+
103
+ - release build:
104
+ - prepared another fresh latest-channel package build without publishing
105
+ - regenerated the npm tarball through the verified release packing workflow
106
+
5
107
  ### 2026.3.20-2
6
108
 
7
109
  - 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-2
1
+ v2026.3.20-20
@@ -1,5 +1,5 @@
1
1
  import { AgentIdentity, DirectoryState, ProfileInput, PublicProfile, PublicProfileSummary, SocialConfig, SocialMessageRecord, SocialRuntimeConfig } from "@silicaclaw/core";
2
- import { SocialMessageGovernanceConfig } from "@silicaclaw/storage";
2
+ import { PrivateMessagingRuntimeState, SocialMessageGovernanceConfig } from "@silicaclaw/storage";
3
3
  type InitState = {
4
4
  identity_auto_created: boolean;
5
5
  profile_auto_created: boolean;
@@ -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" | "direct-sent" | "fallback-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,43 @@ 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;
173
+ private privateMessagingRuntimeRepo;
153
174
  private socialRuntimeRepo;
154
175
  private identity;
155
176
  private profile;
156
177
  private directory;
157
178
  private socialMessages;
158
179
  private socialMessageObservations;
180
+ private privateMessages;
181
+ private privateMessageReceipts;
182
+ private privateEncryptionKeyPair;
183
+ private privateMessagingRuntime;
184
+ private privatePeerRoutes;
185
+ private privatePeerEncryptionKeys;
186
+ private privateMessageBodyCache;
187
+ private privateMessageDeliveryStatusCache;
159
188
  private messageGovernance;
189
+ private privateMessagesPersistDirty;
190
+ private privateMessageReceiptsPersistDirty;
191
+ private privateMessagesPersistTimer;
192
+ private privateMessageReceiptsPersistTimer;
160
193
  private receivedCount;
161
194
  private broadcastCount;
162
195
  private lastMessageAt;
163
196
  private lastBroadcastAt;
197
+ private lastProfileBroadcastAt;
198
+ private lastProfileBroadcastSignature;
199
+ private lastReplayBroadcastAt;
200
+ private lastReplayBroadcastSignature;
164
201
  private lastBroadcastErrorAt;
165
202
  private lastBroadcastError;
166
203
  private broadcastFailureCount;
204
+ private consecutiveBroadcastFailures;
205
+ private lastBroadcastRecoveryAttemptAt;
206
+ private broadcastRecoveryInFlight;
167
207
  private broadcaster;
168
208
  private subscriptionsBound;
169
209
  private broadcastEnabled;
@@ -196,11 +236,15 @@ export declare class LocalNodeService {
196
236
  private networkReconnectTimer;
197
237
  private networkReconnectDelayMs;
198
238
  private appVersion;
239
+ private openclawRuntimeCache;
240
+ private openclawBridgeStatusCache;
199
241
  constructor(options?: {
200
242
  workspaceRoot?: string;
201
243
  projectRoot?: string;
202
244
  storageRoot?: string;
203
245
  });
246
+ private getCachedOpenClawRuntime;
247
+ private invalidateOpenClawCaches;
204
248
  start(): Promise<void>;
205
249
  stop(): Promise<void>;
206
250
  private ensureLocalDirectoryBaseline;
@@ -227,6 +271,15 @@ export declare class LocalNodeService {
227
271
  can_enable_public_discovery: boolean;
228
272
  next_steps: string[];
229
273
  };
274
+ openclaw: {
275
+ detected: boolean;
276
+ running: boolean;
277
+ detection_mode: "gateway" | "gateway-probe+process+gateway" | "gateway-probe+gateway" | "gateway-probe+process" | "gateway-probe" | "process+gateway" | "process" | "not_running";
278
+ gateway_url: string;
279
+ gateway_probe_ok: boolean;
280
+ status_ok: boolean;
281
+ skill_installed: boolean;
282
+ };
230
283
  social: {
231
284
  found: boolean;
232
285
  enabled: boolean;
@@ -370,6 +423,23 @@ export declare class LocalNodeService {
370
423
  adapter_stats: any;
371
424
  adapter_transport_stats: any;
372
425
  adapter_discovery_stats: any;
426
+ runtime_diagnostics: {
427
+ memory_mib: {
428
+ rss: number;
429
+ heap_used: number;
430
+ heap_total: number;
431
+ external: number;
432
+ };
433
+ directory: {
434
+ profile_count: number;
435
+ presence_count: number;
436
+ index_key_count: number;
437
+ };
438
+ social: {
439
+ message_count: number;
440
+ observation_count: number;
441
+ };
442
+ };
373
443
  adapter_diagnostics_summary: {
374
444
  started: boolean;
375
445
  startup_error: string | null;
@@ -467,6 +537,22 @@ export declare class LocalNodeService {
467
537
  social_lookup_paths: string[];
468
538
  social_source_path: string | null;
469
539
  };
540
+ getAppUpdateStatus(): {
541
+ latest_version: string;
542
+ update_available: boolean;
543
+ current_version: string;
544
+ channel: string;
545
+ platform: NodeJS.Platform;
546
+ checked_at: number;
547
+ can_update: boolean;
548
+ check_error: string | null;
549
+ };
550
+ startAppUpdate(): {
551
+ started: boolean;
552
+ target_version: string;
553
+ platform: string;
554
+ reason?: string;
555
+ };
470
556
  getIntegrationSummary(): {
471
557
  connected: boolean;
472
558
  discoverable: boolean;
@@ -557,6 +643,33 @@ export declare class LocalNodeService {
557
643
  blocked_term_count: number;
558
644
  };
559
645
  };
646
+ getPrivateMessagingState(): {
647
+ enabled: boolean;
648
+ agent_id: string;
649
+ encryption_public_key: string;
650
+ conversation_count: number;
651
+ message_count: number;
652
+ runtime: PrivateMessagingRuntimeState | null;
653
+ };
654
+ getPrivateConversations(): Array<{
655
+ conversation_id: string;
656
+ peer_agent_id: string;
657
+ peer_display_name: string;
658
+ peer_avatar_url: string;
659
+ peer_public_key: string;
660
+ last_message_at: number | null;
661
+ unread_count: number;
662
+ }>;
663
+ getPrivateMessages(conversationId: string, limit?: number): PrivateMessageView[];
664
+ sendPrivateMessage(input: {
665
+ to_agent_id: string;
666
+ recipient_encryption_public_key: string;
667
+ body: string;
668
+ }): Promise<{
669
+ sent: boolean;
670
+ reason: string;
671
+ message?: PrivateMessageView;
672
+ }>;
560
673
  getOpenClawBridgeStatus(): OpenClawBridgeStatus;
561
674
  installOpenClawSkill(skillName?: string): Promise<any>;
562
675
  getOpenClawBridgeProfile(): {
@@ -595,7 +708,7 @@ export declare class LocalNodeService {
595
708
  openclaw: {
596
709
  detected: boolean;
597
710
  running: boolean;
598
- detection_mode: "process+gateway" | "gateway" | "process" | "not_running";
711
+ detection_mode: "gateway" | "gateway-probe+process+gateway" | "gateway-probe+gateway" | "gateway-probe+process" | "gateway-probe" | "process+gateway" | "process" | "not_running";
599
712
  gateway_url: string;
600
713
  workspace_install_root: string;
601
714
  legacy_install_root: string;
@@ -717,10 +830,13 @@ export declare class LocalNodeService {
717
830
  reason: string;
718
831
  error?: string;
719
832
  }>;
833
+ private shouldPublishProfileRecord;
834
+ private maybeRecoverFromBroadcastFailure;
720
835
  private hydrateFromDisk;
721
836
  private applySocialConfigOnCurrentState;
722
837
  private writeSocialRuntime;
723
838
  private onMessage;
839
+ private onDirectMessage;
724
840
  private startBroadcastLoop;
725
841
  private bindNetworkSubscriptions;
726
842
  private buildNetworkAdapter;
@@ -728,17 +844,27 @@ export declare class LocalNodeService {
728
844
  private clearNetworkReconnectTimer;
729
845
  private startNetworkAdapterWithRetry;
730
846
  private scheduleNetworkReconnect;
847
+ private pruneRemoteProfilesInMemory;
731
848
  private compactCacheInMemory;
732
849
  private publish;
733
850
  private persistCache;
734
851
  private persistSocialMessages;
735
852
  private persistSocialMessageObservations;
853
+ private persistPrivateMessages;
854
+ private persistPrivateMessageReceipts;
855
+ private flushPrivatePersistence;
856
+ private flushPrivateMessagesPersist;
857
+ private hydratePrivateMessageBodyCache;
858
+ private buildPersistedPrivateMessages;
859
+ private flushPrivateMessageReceiptsPersist;
736
860
  private log;
737
861
  private getAdapterDiagnostics;
738
862
  private getResolvedRealtimeNetworkSummary;
739
863
  private toPublicProfileSummary;
740
864
  private mergeMessageOnlyAgentSummaries;
741
865
  private fingerprintPublicKey;
866
+ private buildPrivateMessagingRuntimeState;
867
+ private refreshPrivateMessagingRuntime;
742
868
  private getOnboardingSummary;
743
869
  private getDefaultDisplayName;
744
870
  private getModeExplainer;
@@ -746,6 +872,8 @@ export declare class LocalNodeService {
746
872
  private adapterForMode;
747
873
  private applyResolvedNetworkConfig;
748
874
  private normalizeSocialMessageBody;
875
+ private buildPrivateConversationId;
876
+ private decryptPrivateMessageBody;
749
877
  private normalizeWindowTimestamps;
750
878
  private recordTimestamp;
751
879
  private isRateLimited;
@@ -756,6 +884,14 @@ export declare class LocalNodeService {
756
884
  private getIncomingSocialMessageRejectionReason;
757
885
  private canPublishMessageObservation;
758
886
  private publishObservationForMessage;
887
+ private sendPrivateMessageReceipt;
888
+ private normalizeIncomingPrivateMessage;
889
+ private normalizePrivateMessages;
890
+ private normalizeIncomingPrivateMessageReceipt;
891
+ private normalizePrivateMessageReceipts;
892
+ private hasPrivateMessage;
893
+ private ingestPrivateMessage;
894
+ private ingestPrivateMessageReceipt;
759
895
  private normalizeIncomingSocialMessage;
760
896
  private normalizeSocialMessages;
761
897
  private normalizeIncomingSocialMessageObservation;