@silicaclaw/cli 2026.3.19-9 → 2026.3.20-10

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 (331) hide show
  1. package/CHANGELOG.md +182 -0
  2. package/DEMO_GUIDE.md +1 -1
  3. package/INSTALL.md +53 -13
  4. package/README.md +106 -23
  5. package/VERSION +1 -1
  6. package/apps/local-console/dist/apps/local-console/src/server.d.ts +180 -14
  7. package/apps/local-console/dist/apps/local-console/src/server.js +1499 -267
  8. package/apps/local-console/dist/config/silicaclaw-defaults.json +19 -0
  9. package/apps/local-console/dist/packages/core/src/index.d.ts +2 -0
  10. package/apps/local-console/dist/packages/core/src/index.js +2 -0
  11. package/apps/local-console/dist/packages/core/src/privateCrypto.d.ts +17 -0
  12. package/apps/local-console/dist/packages/core/src/privateCrypto.js +40 -0
  13. package/apps/local-console/dist/packages/core/src/privateMessage.d.ts +23 -0
  14. package/apps/local-console/dist/packages/core/src/privateMessage.js +74 -0
  15. package/apps/local-console/dist/packages/core/src/profile.js +2 -0
  16. package/apps/local-console/dist/packages/core/src/publicProfileSummary.d.ts +4 -0
  17. package/apps/local-console/dist/packages/core/src/publicProfileSummary.js +3 -0
  18. package/apps/local-console/dist/packages/core/src/socialConfig.js +9 -5
  19. package/apps/local-console/dist/packages/core/src/types.d.ts +40 -0
  20. package/apps/local-console/dist/packages/network/src/realPreview.js +6 -2
  21. package/apps/local-console/dist/packages/network/src/relayPreview.d.ts +12 -0
  22. package/apps/local-console/dist/packages/network/src/relayPreview.js +116 -10
  23. package/apps/local-console/dist/packages/network/src/transport/udpLanBroadcastTransport.js +2 -1
  24. package/apps/local-console/dist/packages/network/src/types.d.ts +4 -0
  25. package/apps/local-console/dist/packages/network/src/webrtcPreview.js +5 -1
  26. package/apps/local-console/dist/packages/storage/config/silicaclaw-defaults.json +19 -0
  27. package/apps/local-console/dist/packages/storage/src/repos.d.ts +13 -1
  28. package/apps/local-console/dist/packages/storage/src/repos.js +19 -1
  29. package/apps/local-console/dist/packages/storage/src/socialRuntimeRepo.js +8 -4
  30. package/apps/local-console/public/app/app.js +486 -12
  31. package/apps/local-console/public/app/events.js +61 -2
  32. package/apps/local-console/public/app/network.js +176 -35
  33. package/apps/local-console/public/app/overview.js +75 -53
  34. package/apps/local-console/public/app/shell.js +18 -34
  35. package/apps/local-console/public/app/social.js +495 -93
  36. package/apps/local-console/public/app/styles.css +309 -15
  37. package/apps/local-console/public/app/template.js +182 -51
  38. package/apps/local-console/public/app/translations.js +476 -266
  39. package/apps/local-console/src/server.ts +1669 -271
  40. package/apps/public-explorer/dist/apps/public-explorer/src/server.d.ts +1 -0
  41. package/apps/public-explorer/dist/apps/public-explorer/src/server.js +41 -0
  42. package/apps/public-explorer/dist/config/silicaclaw-defaults.json +19 -0
  43. package/apps/public-explorer/public/app/app.js +22 -2
  44. package/apps/public-explorer/public/app/template.js +4 -4
  45. package/apps/public-explorer/public/app/translations.js +29 -29
  46. package/apps/public-explorer/src/server.ts +11 -1
  47. package/config/silicaclaw-defaults.json +19 -0
  48. package/dist/apps/local-console/src/server.d.ts +1 -0
  49. package/dist/apps/local-console/src/server.js +555 -0
  50. package/docs/NEW_USER_INSTALL.md +14 -10
  51. package/docs/NEW_USER_OPERATIONS.md +9 -9
  52. package/docs/OPENCLAW_BRIDGE.md +22 -7
  53. package/docs/OPENCLAW_BRIDGE_ZH.md +21 -6
  54. package/docs/RELEASE_CHECKLIST.md +95 -0
  55. package/node_modules/@silicaclaw/core/dist/config/silicaclaw-defaults.json +19 -0
  56. package/node_modules/@silicaclaw/core/dist/packages/core/src/crypto.d.ts +6 -0
  57. package/node_modules/@silicaclaw/core/dist/packages/core/src/crypto.js +50 -0
  58. package/node_modules/@silicaclaw/core/dist/packages/core/src/directory.d.ts +17 -0
  59. package/node_modules/@silicaclaw/core/dist/packages/core/src/directory.js +145 -0
  60. package/node_modules/@silicaclaw/core/dist/packages/core/src/identity.d.ts +2 -0
  61. package/node_modules/@silicaclaw/core/dist/packages/core/src/identity.js +18 -0
  62. package/node_modules/@silicaclaw/core/dist/packages/core/src/index.d.ts +14 -0
  63. package/node_modules/@silicaclaw/core/dist/packages/core/src/index.js +30 -0
  64. package/node_modules/@silicaclaw/core/dist/packages/core/src/indexing.d.ts +6 -0
  65. package/node_modules/@silicaclaw/core/dist/packages/core/src/indexing.js +43 -0
  66. package/node_modules/@silicaclaw/core/dist/packages/core/src/presence.d.ts +4 -0
  67. package/node_modules/@silicaclaw/core/dist/packages/core/src/presence.js +23 -0
  68. package/node_modules/@silicaclaw/core/dist/packages/core/src/privateCrypto.d.ts +17 -0
  69. package/node_modules/@silicaclaw/core/dist/packages/core/src/privateCrypto.js +40 -0
  70. package/node_modules/@silicaclaw/core/dist/packages/core/src/privateMessage.d.ts +23 -0
  71. package/node_modules/@silicaclaw/core/dist/packages/core/src/privateMessage.js +74 -0
  72. package/node_modules/@silicaclaw/core/dist/packages/core/src/profile.d.ts +4 -0
  73. package/node_modules/@silicaclaw/core/dist/packages/core/src/profile.js +41 -0
  74. package/node_modules/@silicaclaw/core/dist/packages/core/src/publicProfileSummary.d.ts +74 -0
  75. package/node_modules/@silicaclaw/core/dist/packages/core/src/publicProfileSummary.js +106 -0
  76. package/node_modules/@silicaclaw/core/dist/packages/core/src/socialConfig.d.ts +100 -0
  77. package/node_modules/@silicaclaw/core/dist/packages/core/src/socialConfig.js +300 -0
  78. package/node_modules/@silicaclaw/core/dist/packages/core/src/socialMessage.d.ts +19 -0
  79. package/node_modules/@silicaclaw/core/dist/packages/core/src/socialMessage.js +69 -0
  80. package/node_modules/@silicaclaw/core/dist/packages/core/src/socialResolver.d.ts +46 -0
  81. package/node_modules/@silicaclaw/core/dist/packages/core/src/socialResolver.js +237 -0
  82. package/node_modules/@silicaclaw/core/dist/packages/core/src/socialTemplate.d.ts +2 -0
  83. package/node_modules/@silicaclaw/core/dist/packages/core/src/socialTemplate.js +90 -0
  84. package/node_modules/@silicaclaw/core/dist/packages/core/src/types.d.ts +99 -0
  85. package/node_modules/@silicaclaw/core/dist/packages/core/src/types.js +2 -0
  86. package/node_modules/@silicaclaw/core/src/index.ts +2 -0
  87. package/node_modules/@silicaclaw/core/src/privateCrypto.ts +57 -0
  88. package/node_modules/@silicaclaw/core/src/privateMessage.ts +101 -0
  89. package/node_modules/@silicaclaw/core/src/profile.ts +2 -0
  90. package/node_modules/@silicaclaw/core/src/publicProfileSummary.ts +7 -0
  91. package/node_modules/@silicaclaw/core/src/socialConfig.ts +7 -5
  92. package/node_modules/@silicaclaw/core/src/types.ts +44 -0
  93. package/node_modules/@silicaclaw/network/dist/config/silicaclaw-defaults.json +19 -0
  94. package/node_modules/@silicaclaw/network/dist/packages/network/src/abstractions/messageEnvelope.d.ts +28 -0
  95. package/node_modules/@silicaclaw/network/dist/packages/network/src/abstractions/messageEnvelope.js +36 -0
  96. package/node_modules/@silicaclaw/network/dist/packages/network/src/abstractions/peerDiscovery.d.ts +43 -0
  97. package/node_modules/@silicaclaw/network/dist/packages/network/src/abstractions/peerDiscovery.js +2 -0
  98. package/node_modules/@silicaclaw/network/dist/packages/network/src/abstractions/topicCodec.d.ts +4 -0
  99. package/node_modules/@silicaclaw/network/dist/packages/network/src/abstractions/topicCodec.js +2 -0
  100. package/node_modules/@silicaclaw/network/dist/packages/network/src/abstractions/transport.d.ts +36 -0
  101. package/node_modules/@silicaclaw/network/dist/packages/network/src/abstractions/transport.js +2 -0
  102. package/node_modules/@silicaclaw/network/dist/packages/network/src/codec/jsonMessageEnvelopeCodec.d.ts +5 -0
  103. package/node_modules/@silicaclaw/network/dist/packages/network/src/codec/jsonMessageEnvelopeCodec.js +24 -0
  104. package/node_modules/@silicaclaw/network/dist/packages/network/src/codec/jsonTopicCodec.d.ts +5 -0
  105. package/node_modules/@silicaclaw/network/dist/packages/network/src/codec/jsonTopicCodec.js +12 -0
  106. package/node_modules/@silicaclaw/network/dist/packages/network/src/discovery/heartbeatPeerDiscovery.d.ts +28 -0
  107. package/node_modules/@silicaclaw/network/dist/packages/network/src/discovery/heartbeatPeerDiscovery.js +144 -0
  108. package/node_modules/@silicaclaw/network/dist/packages/network/src/index.d.ts +14 -0
  109. package/node_modules/@silicaclaw/network/dist/packages/network/src/index.js +30 -0
  110. package/node_modules/@silicaclaw/network/dist/packages/network/src/localEventBus.d.ts +9 -0
  111. package/node_modules/@silicaclaw/network/dist/packages/network/src/localEventBus.js +47 -0
  112. package/node_modules/@silicaclaw/network/dist/packages/network/src/mock.d.ts +8 -0
  113. package/node_modules/@silicaclaw/network/dist/packages/network/src/mock.js +24 -0
  114. package/node_modules/@silicaclaw/network/dist/packages/network/src/realPreview.d.ts +105 -0
  115. package/node_modules/@silicaclaw/network/dist/packages/network/src/realPreview.js +331 -0
  116. package/node_modules/@silicaclaw/network/dist/packages/network/src/relayPreview.d.ts +178 -0
  117. package/node_modules/@silicaclaw/network/dist/packages/network/src/relayPreview.js +548 -0
  118. package/node_modules/@silicaclaw/network/dist/packages/network/src/transport/udpLanBroadcastTransport.d.ts +23 -0
  119. package/node_modules/@silicaclaw/network/dist/packages/network/src/transport/udpLanBroadcastTransport.js +154 -0
  120. package/node_modules/@silicaclaw/network/dist/packages/network/src/types.d.ts +10 -0
  121. package/node_modules/@silicaclaw/network/dist/packages/network/src/types.js +2 -0
  122. package/node_modules/@silicaclaw/network/dist/packages/network/src/webrtcPreview.d.ts +163 -0
  123. package/node_modules/@silicaclaw/network/dist/packages/network/src/webrtcPreview.js +848 -0
  124. package/node_modules/@silicaclaw/network/src/realPreview.ts +3 -2
  125. package/node_modules/@silicaclaw/network/src/relayPreview.ts +125 -12
  126. package/node_modules/@silicaclaw/network/src/transport/udpLanBroadcastTransport.ts +2 -1
  127. package/node_modules/@silicaclaw/network/src/types.ts +2 -0
  128. package/node_modules/@silicaclaw/network/src/webrtcPreview.ts +2 -1
  129. package/node_modules/@silicaclaw/storage/config/silicaclaw-defaults.json +19 -0
  130. package/node_modules/@silicaclaw/storage/dist/config/silicaclaw-defaults.json +19 -0
  131. package/node_modules/@silicaclaw/storage/dist/packages/core/src/crypto.d.ts +6 -0
  132. package/node_modules/@silicaclaw/storage/dist/packages/core/src/crypto.js +50 -0
  133. package/node_modules/@silicaclaw/storage/dist/packages/core/src/directory.d.ts +17 -0
  134. package/node_modules/@silicaclaw/storage/dist/packages/core/src/directory.js +145 -0
  135. package/node_modules/@silicaclaw/storage/dist/packages/core/src/identity.d.ts +2 -0
  136. package/node_modules/@silicaclaw/storage/dist/packages/core/src/identity.js +18 -0
  137. package/node_modules/@silicaclaw/storage/dist/packages/core/src/index.d.ts +14 -0
  138. package/node_modules/@silicaclaw/storage/dist/packages/core/src/index.js +30 -0
  139. package/node_modules/@silicaclaw/storage/dist/packages/core/src/indexing.d.ts +6 -0
  140. package/node_modules/@silicaclaw/storage/dist/packages/core/src/indexing.js +43 -0
  141. package/node_modules/@silicaclaw/storage/dist/packages/core/src/presence.d.ts +4 -0
  142. package/node_modules/@silicaclaw/storage/dist/packages/core/src/presence.js +23 -0
  143. package/node_modules/@silicaclaw/storage/dist/packages/core/src/privateCrypto.d.ts +17 -0
  144. package/node_modules/@silicaclaw/storage/dist/packages/core/src/privateCrypto.js +40 -0
  145. package/node_modules/@silicaclaw/storage/dist/packages/core/src/privateMessage.d.ts +23 -0
  146. package/node_modules/@silicaclaw/storage/dist/packages/core/src/privateMessage.js +74 -0
  147. package/node_modules/@silicaclaw/storage/dist/packages/core/src/profile.d.ts +4 -0
  148. package/node_modules/@silicaclaw/storage/dist/packages/core/src/profile.js +41 -0
  149. package/node_modules/@silicaclaw/storage/dist/packages/core/src/publicProfileSummary.d.ts +74 -0
  150. package/node_modules/@silicaclaw/storage/dist/packages/core/src/publicProfileSummary.js +106 -0
  151. package/node_modules/@silicaclaw/storage/dist/packages/core/src/socialConfig.d.ts +100 -0
  152. package/node_modules/@silicaclaw/storage/dist/packages/core/src/socialConfig.js +300 -0
  153. package/node_modules/@silicaclaw/storage/dist/packages/core/src/socialMessage.d.ts +19 -0
  154. package/node_modules/@silicaclaw/storage/dist/packages/core/src/socialMessage.js +69 -0
  155. package/node_modules/@silicaclaw/storage/dist/packages/core/src/socialResolver.d.ts +46 -0
  156. package/node_modules/@silicaclaw/storage/dist/packages/core/src/socialResolver.js +237 -0
  157. package/node_modules/@silicaclaw/storage/dist/packages/core/src/socialTemplate.d.ts +2 -0
  158. package/node_modules/@silicaclaw/storage/dist/packages/core/src/socialTemplate.js +90 -0
  159. package/node_modules/@silicaclaw/storage/dist/packages/core/src/types.d.ts +99 -0
  160. package/node_modules/@silicaclaw/storage/dist/packages/core/src/types.js +2 -0
  161. package/node_modules/@silicaclaw/storage/dist/packages/storage/config/silicaclaw-defaults.json +19 -0
  162. package/node_modules/@silicaclaw/storage/dist/packages/storage/src/index.d.ts +3 -0
  163. package/node_modules/@silicaclaw/storage/dist/packages/storage/src/index.js +19 -0
  164. package/node_modules/@silicaclaw/storage/dist/packages/storage/src/jsonRepo.d.ts +7 -0
  165. package/node_modules/@silicaclaw/storage/dist/packages/storage/src/jsonRepo.js +29 -0
  166. package/node_modules/@silicaclaw/storage/dist/packages/storage/src/repos.d.ts +73 -0
  167. package/node_modules/@silicaclaw/storage/dist/packages/storage/src/repos.js +85 -0
  168. package/node_modules/@silicaclaw/storage/dist/packages/storage/src/socialRuntimeRepo.d.ts +5 -0
  169. package/node_modules/@silicaclaw/storage/dist/packages/storage/src/socialRuntimeRepo.js +57 -0
  170. package/node_modules/@silicaclaw/storage/dist/socialRuntimeRepo.js +8 -4
  171. package/node_modules/@silicaclaw/storage/src/repos.ts +31 -1
  172. package/node_modules/@silicaclaw/storage/src/socialRuntimeRepo.ts +5 -4
  173. package/node_modules/@silicaclaw/storage/tsconfig.json +1 -6
  174. package/openclaw-skills/silicaclaw-bridge-setup/SKILL.md +165 -0
  175. package/openclaw-skills/silicaclaw-bridge-setup/VERSION +1 -0
  176. package/openclaw-skills/silicaclaw-bridge-setup/agents/openai.yaml +6 -0
  177. package/openclaw-skills/silicaclaw-bridge-setup/manifest.json +27 -0
  178. package/openclaw-skills/silicaclaw-bridge-setup/references/owner-dialogue-cheatsheet-zh.md +58 -0
  179. package/openclaw-skills/silicaclaw-bridge-setup/references/runtime-setup.md +43 -0
  180. package/openclaw-skills/silicaclaw-bridge-setup/references/troubleshooting.md +24 -0
  181. package/openclaw-skills/silicaclaw-broadcast/SKILL.md +150 -0
  182. package/openclaw-skills/silicaclaw-broadcast/VERSION +1 -1
  183. package/openclaw-skills/silicaclaw-broadcast/agents/openai.yaml +2 -2
  184. package/openclaw-skills/silicaclaw-broadcast/manifest.json +4 -3
  185. package/openclaw-skills/silicaclaw-broadcast/references/owner-dialogue-cheatsheet-zh.md +81 -0
  186. package/openclaw-skills/silicaclaw-network-config/SKILL.md +158 -0
  187. package/openclaw-skills/silicaclaw-network-config/VERSION +1 -0
  188. package/openclaw-skills/silicaclaw-network-config/agents/openai.yaml +6 -0
  189. package/openclaw-skills/silicaclaw-network-config/manifest.json +27 -0
  190. package/openclaw-skills/silicaclaw-network-config/references/network-modes.md +22 -0
  191. package/openclaw-skills/silicaclaw-network-config/references/owner-dialogue-cheatsheet-zh.md +47 -0
  192. package/openclaw-skills/silicaclaw-network-config/references/public-discovery.md +22 -0
  193. package/openclaw-skills/silicaclaw-owner-push/SKILL.md +235 -0
  194. package/openclaw-skills/silicaclaw-owner-push/VERSION +1 -0
  195. package/openclaw-skills/silicaclaw-owner-push/agents/openai.yaml +6 -0
  196. package/openclaw-skills/silicaclaw-owner-push/manifest.json +30 -0
  197. package/openclaw-skills/silicaclaw-owner-push/references/owner-dialogue-cheatsheet-zh.md +87 -0
  198. package/openclaw-skills/silicaclaw-owner-push/references/push-routing-policy.md +43 -0
  199. package/openclaw-skills/silicaclaw-owner-push/references/runtime-setup.md +44 -0
  200. package/openclaw-skills/silicaclaw-owner-push/scripts/owner-push-forwarder.mjs +356 -0
  201. package/openclaw-skills/silicaclaw-owner-push/scripts/send-to-owner-via-openclaw.mjs +69 -0
  202. package/package.json +5 -1
  203. package/packages/core/dist/config/silicaclaw-defaults.json +19 -0
  204. package/packages/core/dist/packages/core/src/crypto.d.ts +6 -0
  205. package/packages/core/dist/packages/core/src/crypto.js +50 -0
  206. package/packages/core/dist/packages/core/src/directory.d.ts +17 -0
  207. package/packages/core/dist/packages/core/src/directory.js +145 -0
  208. package/packages/core/dist/packages/core/src/identity.d.ts +2 -0
  209. package/packages/core/dist/packages/core/src/identity.js +18 -0
  210. package/packages/core/dist/packages/core/src/index.d.ts +14 -0
  211. package/packages/core/dist/packages/core/src/index.js +30 -0
  212. package/packages/core/dist/packages/core/src/indexing.d.ts +6 -0
  213. package/packages/core/dist/packages/core/src/indexing.js +43 -0
  214. package/packages/core/dist/packages/core/src/presence.d.ts +4 -0
  215. package/packages/core/dist/packages/core/src/presence.js +23 -0
  216. package/packages/core/dist/packages/core/src/privateCrypto.d.ts +17 -0
  217. package/packages/core/dist/packages/core/src/privateCrypto.js +40 -0
  218. package/packages/core/dist/packages/core/src/privateMessage.d.ts +23 -0
  219. package/packages/core/dist/packages/core/src/privateMessage.js +74 -0
  220. package/packages/core/dist/packages/core/src/profile.d.ts +4 -0
  221. package/packages/core/dist/packages/core/src/profile.js +41 -0
  222. package/packages/core/dist/packages/core/src/publicProfileSummary.d.ts +74 -0
  223. package/packages/core/dist/packages/core/src/publicProfileSummary.js +106 -0
  224. package/packages/core/dist/packages/core/src/socialConfig.d.ts +100 -0
  225. package/packages/core/dist/packages/core/src/socialConfig.js +300 -0
  226. package/packages/core/dist/packages/core/src/socialMessage.d.ts +19 -0
  227. package/packages/core/dist/packages/core/src/socialMessage.js +69 -0
  228. package/packages/core/dist/packages/core/src/socialResolver.d.ts +46 -0
  229. package/packages/core/dist/packages/core/src/socialResolver.js +237 -0
  230. package/packages/core/dist/packages/core/src/socialTemplate.d.ts +2 -0
  231. package/packages/core/dist/packages/core/src/socialTemplate.js +90 -0
  232. package/packages/core/dist/packages/core/src/types.d.ts +99 -0
  233. package/packages/core/dist/packages/core/src/types.js +2 -0
  234. package/packages/core/src/index.ts +2 -0
  235. package/packages/core/src/privateCrypto.ts +57 -0
  236. package/packages/core/src/privateMessage.ts +101 -0
  237. package/packages/core/src/profile.ts +2 -0
  238. package/packages/core/src/publicProfileSummary.ts +7 -0
  239. package/packages/core/src/socialConfig.ts +7 -5
  240. package/packages/core/src/types.ts +44 -0
  241. package/packages/network/dist/config/silicaclaw-defaults.json +19 -0
  242. package/packages/network/dist/packages/network/src/abstractions/messageEnvelope.d.ts +28 -0
  243. package/packages/network/dist/packages/network/src/abstractions/messageEnvelope.js +36 -0
  244. package/packages/network/dist/packages/network/src/abstractions/peerDiscovery.d.ts +43 -0
  245. package/packages/network/dist/packages/network/src/abstractions/peerDiscovery.js +2 -0
  246. package/packages/network/dist/packages/network/src/abstractions/topicCodec.d.ts +4 -0
  247. package/packages/network/dist/packages/network/src/abstractions/topicCodec.js +2 -0
  248. package/packages/network/dist/packages/network/src/abstractions/transport.d.ts +36 -0
  249. package/packages/network/dist/packages/network/src/abstractions/transport.js +2 -0
  250. package/packages/network/dist/packages/network/src/codec/jsonMessageEnvelopeCodec.d.ts +5 -0
  251. package/packages/network/dist/packages/network/src/codec/jsonMessageEnvelopeCodec.js +24 -0
  252. package/packages/network/dist/packages/network/src/codec/jsonTopicCodec.d.ts +5 -0
  253. package/packages/network/dist/packages/network/src/codec/jsonTopicCodec.js +12 -0
  254. package/packages/network/dist/packages/network/src/discovery/heartbeatPeerDiscovery.d.ts +28 -0
  255. package/packages/network/dist/packages/network/src/discovery/heartbeatPeerDiscovery.js +144 -0
  256. package/packages/network/dist/packages/network/src/index.d.ts +14 -0
  257. package/packages/network/dist/packages/network/src/index.js +30 -0
  258. package/packages/network/dist/packages/network/src/localEventBus.d.ts +9 -0
  259. package/packages/network/dist/packages/network/src/localEventBus.js +47 -0
  260. package/packages/network/dist/packages/network/src/mock.d.ts +8 -0
  261. package/packages/network/dist/packages/network/src/mock.js +24 -0
  262. package/packages/network/dist/packages/network/src/realPreview.d.ts +105 -0
  263. package/packages/network/dist/packages/network/src/realPreview.js +331 -0
  264. package/packages/network/dist/packages/network/src/relayPreview.d.ts +178 -0
  265. package/packages/network/dist/packages/network/src/relayPreview.js +548 -0
  266. package/packages/network/dist/packages/network/src/transport/udpLanBroadcastTransport.d.ts +23 -0
  267. package/packages/network/dist/packages/network/src/transport/udpLanBroadcastTransport.js +154 -0
  268. package/packages/network/dist/packages/network/src/types.d.ts +10 -0
  269. package/packages/network/dist/packages/network/src/types.js +2 -0
  270. package/packages/network/dist/packages/network/src/webrtcPreview.d.ts +163 -0
  271. package/packages/network/dist/packages/network/src/webrtcPreview.js +848 -0
  272. package/packages/network/src/realPreview.ts +3 -2
  273. package/packages/network/src/relayPreview.ts +125 -12
  274. package/packages/network/src/transport/udpLanBroadcastTransport.ts +2 -1
  275. package/packages/network/src/types.ts +2 -0
  276. package/packages/network/src/webrtcPreview.ts +2 -1
  277. package/packages/storage/config/silicaclaw-defaults.json +19 -0
  278. package/packages/storage/dist/config/silicaclaw-defaults.json +19 -0
  279. package/packages/storage/dist/packages/core/src/crypto.d.ts +6 -0
  280. package/packages/storage/dist/packages/core/src/crypto.js +50 -0
  281. package/packages/storage/dist/packages/core/src/directory.d.ts +17 -0
  282. package/packages/storage/dist/packages/core/src/directory.js +145 -0
  283. package/packages/storage/dist/packages/core/src/identity.d.ts +2 -0
  284. package/packages/storage/dist/packages/core/src/identity.js +18 -0
  285. package/packages/storage/dist/packages/core/src/index.d.ts +14 -0
  286. package/packages/storage/dist/packages/core/src/index.js +30 -0
  287. package/packages/storage/dist/packages/core/src/indexing.d.ts +6 -0
  288. package/packages/storage/dist/packages/core/src/indexing.js +43 -0
  289. package/packages/storage/dist/packages/core/src/presence.d.ts +4 -0
  290. package/packages/storage/dist/packages/core/src/presence.js +23 -0
  291. package/packages/storage/dist/packages/core/src/privateCrypto.d.ts +17 -0
  292. package/packages/storage/dist/packages/core/src/privateCrypto.js +40 -0
  293. package/packages/storage/dist/packages/core/src/privateMessage.d.ts +23 -0
  294. package/packages/storage/dist/packages/core/src/privateMessage.js +74 -0
  295. package/packages/storage/dist/packages/core/src/profile.d.ts +4 -0
  296. package/packages/storage/dist/packages/core/src/profile.js +41 -0
  297. package/packages/storage/dist/packages/core/src/publicProfileSummary.d.ts +74 -0
  298. package/packages/storage/dist/packages/core/src/publicProfileSummary.js +106 -0
  299. package/packages/storage/dist/packages/core/src/socialConfig.d.ts +100 -0
  300. package/packages/storage/dist/packages/core/src/socialConfig.js +300 -0
  301. package/packages/storage/dist/packages/core/src/socialMessage.d.ts +19 -0
  302. package/packages/storage/dist/packages/core/src/socialMessage.js +69 -0
  303. package/packages/storage/dist/packages/core/src/socialResolver.d.ts +46 -0
  304. package/packages/storage/dist/packages/core/src/socialResolver.js +237 -0
  305. package/packages/storage/dist/packages/core/src/socialTemplate.d.ts +2 -0
  306. package/packages/storage/dist/packages/core/src/socialTemplate.js +90 -0
  307. package/packages/storage/dist/packages/core/src/types.d.ts +99 -0
  308. package/packages/storage/dist/packages/core/src/types.js +2 -0
  309. package/packages/storage/dist/packages/storage/config/silicaclaw-defaults.json +19 -0
  310. package/packages/storage/dist/packages/storage/src/index.d.ts +3 -0
  311. package/packages/storage/dist/packages/storage/src/index.js +19 -0
  312. package/packages/storage/dist/packages/storage/src/jsonRepo.d.ts +7 -0
  313. package/packages/storage/dist/packages/storage/src/jsonRepo.js +29 -0
  314. package/packages/storage/dist/packages/storage/src/repos.d.ts +73 -0
  315. package/packages/storage/dist/packages/storage/src/repos.js +85 -0
  316. package/packages/storage/dist/packages/storage/src/socialRuntimeRepo.d.ts +5 -0
  317. package/packages/storage/dist/packages/storage/src/socialRuntimeRepo.js +57 -0
  318. package/packages/storage/dist/socialRuntimeRepo.js +8 -4
  319. package/packages/storage/src/repos.ts +31 -1
  320. package/packages/storage/src/socialRuntimeRepo.ts +5 -4
  321. package/packages/storage/tsconfig.json +1 -6
  322. package/scripts/functional-check.mjs +35 -6
  323. package/scripts/install-openclaw-skill.mjs +9 -2
  324. package/scripts/openclaw-bridge-adapter.mjs +3 -1
  325. package/scripts/openclaw-bridge-client.mjs +3 -1
  326. package/scripts/openclaw-runtime-demo.mjs +3 -1
  327. package/scripts/quickstart.sh +14 -10
  328. package/scripts/release-pack.mjs +59 -1
  329. package/scripts/silicaclaw-cli.mjs +166 -51
  330. package/scripts/silicaclaw-gateway.mjs +410 -84
  331. package/scripts/validate-openclaw-skill.mjs +98 -21
@@ -13,13 +13,23 @@ function checkJson(filePath) {
13
13
  JSON.parse(raw);
14
14
  }
15
15
 
16
- function checkInlineScriptSyntax(htmlPath) {
16
+ function checkBrowserScriptSyntax(htmlPath) {
17
17
  const html = readFileSync(htmlPath, 'utf8');
18
18
  const start = html.indexOf('<script>');
19
19
  const end = html.lastIndexOf('</script>');
20
- assert(start >= 0 && end > start, `Missing inline script in ${htmlPath}`);
21
- const js = html.slice(start + '<script>'.length, end);
22
- new vm.Script(js, { filename: htmlPath });
20
+ if (start >= 0 && end > start) {
21
+ const js = html.slice(start + '<script>'.length, end);
22
+ new vm.Script(js, { filename: htmlPath });
23
+ return;
24
+ }
25
+
26
+ const moduleMatch = html.match(/<script\s+type="module"\s+src="([^"]+)"/i);
27
+ assert(moduleMatch?.[1], `Missing browser script in ${htmlPath}`);
28
+ const src = String(moduleMatch[1]);
29
+ const resolved = src.startsWith('/')
30
+ ? path.resolve(path.dirname(htmlPath), `.${src}`)
31
+ : path.resolve(path.dirname(htmlPath), src);
32
+ assert(existsSync(resolved), `Missing module script target for ${htmlPath}: ${src}`);
23
33
  }
24
34
 
25
35
  class InMemoryLoopbackTransport {
@@ -66,6 +76,14 @@ async function main() {
66
76
  'openclaw-skills/silicaclaw-broadcast/scripts/owner-dispatch-adapter-demo.mjs',
67
77
  'openclaw-skills/silicaclaw-broadcast/scripts/send-to-owner-via-openclaw.mjs',
68
78
  'openclaw-skills/silicaclaw-broadcast/scripts/owner-forwarder-demo.mjs',
79
+ 'openclaw-skills/silicaclaw-owner-push/SKILL.md',
80
+ 'openclaw-skills/silicaclaw-owner-push/VERSION',
81
+ 'openclaw-skills/silicaclaw-owner-push/manifest.json',
82
+ 'openclaw-skills/silicaclaw-owner-push/agents/openai.yaml',
83
+ 'openclaw-skills/silicaclaw-owner-push/references/push-routing-policy.md',
84
+ 'openclaw-skills/silicaclaw-owner-push/references/runtime-setup.md',
85
+ 'openclaw-skills/silicaclaw-owner-push/scripts/owner-push-forwarder.mjs',
86
+ 'openclaw-skills/silicaclaw-owner-push/scripts/send-to-owner-via-openclaw.mjs',
69
87
  'apps/local-console/public/index.html',
70
88
  'apps/public-explorer/public/index.html',
71
89
  'data/cache.json',
@@ -86,8 +104,8 @@ async function main() {
86
104
  checkJson(path.resolve(root, 'data/identity.json'));
87
105
 
88
106
  // Browser script syntax sanity
89
- checkInlineScriptSyntax(path.resolve(root, 'apps/local-console/public/index.html'));
90
- checkInlineScriptSyntax(path.resolve(root, 'apps/public-explorer/public/index.html'));
107
+ checkBrowserScriptSyntax(path.resolve(root, 'apps/local-console/public/index.html'));
108
+ checkBrowserScriptSyntax(path.resolve(root, 'apps/public-explorer/public/index.html'));
91
109
 
92
110
  const skillBody = readFileSync(path.resolve(root, 'openclaw-skills/silicaclaw-broadcast/SKILL.md'), 'utf8');
93
111
  assert(skillBody.includes('name: silicaclaw-broadcast'), 'OpenClaw skill metadata missing');
@@ -102,6 +120,17 @@ async function main() {
102
120
  const skillUi = readFileSync(path.resolve(root, 'openclaw-skills/silicaclaw-broadcast/agents/openai.yaml'), 'utf8');
103
121
  assert(skillUi.includes('display_name: "SilicaClaw Broadcast"'), 'OpenClaw skill UI metadata missing');
104
122
 
123
+ const ownerPushBody = readFileSync(path.resolve(root, 'openclaw-skills/silicaclaw-owner-push/SKILL.md'), 'utf8');
124
+ assert(ownerPushBody.includes('name: silicaclaw-owner-push'), 'Owner push skill metadata missing');
125
+ const ownerPushManifest = JSON.parse(readFileSync(path.resolve(root, 'openclaw-skills/silicaclaw-owner-push/manifest.json'), 'utf8'));
126
+ assert(ownerPushManifest.name === 'silicaclaw-owner-push', 'Owner push skill manifest missing name');
127
+ assert(ownerPushManifest.references?.push_routing_policy === 'references/push-routing-policy.md', 'Owner push skill manifest missing push routing policy reference');
128
+ assert(ownerPushManifest.references?.runtime_setup === 'references/runtime-setup.md', 'Owner push skill manifest missing runtime setup reference');
129
+ assert(ownerPushManifest.entrypoints?.owner_push_forwarder === 'scripts/owner-push-forwarder.mjs', 'Owner push skill manifest missing owner push forwarder entrypoint');
130
+ assert(ownerPushManifest.entrypoints?.owner_send_via_openclaw === 'scripts/send-to-owner-via-openclaw.mjs', 'Owner push skill manifest missing owner send via openclaw entrypoint');
131
+ const ownerPushUi = readFileSync(path.resolve(root, 'openclaw-skills/silicaclaw-owner-push/agents/openai.yaml'), 'utf8');
132
+ assert(ownerPushUi.includes('display_name: "SilicaClaw Owner Push"'), 'Owner push skill UI metadata missing');
133
+
105
134
  // Import built modules (requires npm run build)
106
135
  const core = await import(pathToFileURL(path.resolve(root, 'packages/core/dist/index.js')).href);
107
136
  const network = await import(pathToFileURL(path.resolve(root, 'packages/network/dist/index.js')).href);
@@ -26,10 +26,16 @@ function main() {
26
26
  const sourceRoot = resolve(ROOT_DIR, "openclaw-skills");
27
27
  const targetRoot = resolve(homedir(), ".openclaw", "workspace", "skills");
28
28
  const legacyTargetRoot = resolve(homedir(), ".openclaw", "skills");
29
- const skills = listSkillDirs(sourceRoot);
29
+ const requestedSkill = String(process.argv.find((arg) => arg.startsWith("--skill=")) || "")
30
+ .replace(/^--skill=/, "")
31
+ .trim();
32
+ const allSkills = listSkillDirs(sourceRoot);
33
+ const skills = requestedSkill
34
+ ? allSkills.filter((skill) => skill.name === requestedSkill)
35
+ : allSkills;
30
36
 
31
37
  if (!skills.length) {
32
- throw new Error("No bundled OpenClaw skills found.");
38
+ throw new Error(requestedSkill ? `Bundled OpenClaw skill not found: ${requestedSkill}` : "No bundled OpenClaw skills found.");
33
39
  }
34
40
 
35
41
  mkdirSync(targetRoot, { recursive: true });
@@ -41,6 +47,7 @@ function main() {
41
47
  }
42
48
 
43
49
  console.log(JSON.stringify({
50
+ requested_skill: requestedSkill || null,
44
51
  installed: skills.map((skill) => ({
45
52
  name: skill.name,
46
53
  target_path: resolve(targetRoot, skill.name),
@@ -1,4 +1,6 @@
1
- const DEFAULT_API_BASE = "http://localhost:4310";
1
+ import defaults from "../config/silicaclaw-defaults.json" with { type: "json" };
2
+
3
+ const DEFAULT_API_BASE = defaults.bridge.api_base;
2
4
 
3
5
  function normalizeApiBase(value) {
4
6
  return String(value || DEFAULT_API_BASE).replace(/\/+$/, "");
@@ -4,7 +4,9 @@ import { createOpenClawBridgeClient } from "./openclaw-bridge-adapter.mjs";
4
4
 
5
5
  const argv = process.argv.slice(2);
6
6
  const cmd = String(argv[0] || "help").toLowerCase();
7
- const API_BASE = String(process.env.SILICACLAW_API_BASE || "http://localhost:4310").replace(/\/+$/, "");
7
+ import defaults from "../config/silicaclaw-defaults.json" with { type: "json" };
8
+
9
+ const API_BASE = String(process.env.SILICACLAW_API_BASE || defaults.bridge.api_base).replace(/\/+$/, "");
8
10
  const client = createOpenClawBridgeClient({ apiBase: API_BASE });
9
11
 
10
12
  const COLOR = {
@@ -3,7 +3,9 @@
3
3
  import readline from "node:readline";
4
4
  import { createOpenClawBridgeClient } from "./openclaw-bridge-adapter.mjs";
5
5
 
6
- const apiBase = String(process.env.SILICACLAW_API_BASE || "http://localhost:4310").replace(/\/+$/, "");
6
+ import defaults from "../config/silicaclaw-defaults.json" with { type: "json" };
7
+
8
+ const apiBase = String(process.env.SILICACLAW_API_BASE || defaults.bridge.api_base).replace(/\/+$/, "");
7
9
  const bridge = createOpenClawBridgeClient({ apiBase });
8
10
 
9
11
  const COLOR = {
@@ -7,6 +7,10 @@ WORK_DIR="$ROOT_DIR"
7
7
  IS_NPX_MODE=0
8
8
  DEFAULT_MODE_PICK="${QUICKSTART_DEFAULT_MODE:-3}"
9
9
  CONNECT_MODE="${QUICKSTART_CONNECT_MODE:-0}"
10
+ DEFAULTS_FILE="$ROOT_DIR/config/silicaclaw-defaults.json"
11
+ DEFAULT_LOCAL_CONSOLE_PORT="$(node -p "require(process.argv[1]).ports.local_console" "$DEFAULTS_FILE")"
12
+ DEFAULT_GLOBAL_SIGNALING_URL="$(node -p "require(process.argv[1]).network.global_preview.relay_url" "$DEFAULTS_FILE")"
13
+ DEFAULT_GLOBAL_ROOM="$(node -p "require(process.argv[1]).network.global_preview.room" "$DEFAULTS_FILE")"
10
14
 
11
15
  case "$DEFAULT_MODE_PICK" in
12
16
  1|2|3) ;;
@@ -48,7 +52,7 @@ title() {
48
52
  }
49
53
 
50
54
  headline() {
51
- printf '%sSilicaClaw%s %s%s%s\n' "$ORANGE$BOLD" "$RESET" "$DIM" "$(cat "$WORK_DIR/VERSION" 2>/dev/null || printf 'unknown')" "$RESET"
55
+ printf '%s🦀 SilicaClaw%s %s%s%s\n' "$ORANGE$BOLD" "$RESET" "$DIM" "$(cat "$WORK_DIR/VERSION" 2>/dev/null || printf 'unknown')" "$RESET"
52
56
  printf '%sPublic identity and discovery for OpenClaw agents.%s\n' "$DIM" "$RESET"
53
57
  }
54
58
 
@@ -144,7 +148,7 @@ install_npx_alias() {
144
148
  rc_file="$(detect_shell_rc_file)"
145
149
  local begin_mark="# >>> silicaclaw npx alias >>>"
146
150
  local end_mark="# <<< silicaclaw npx alias <<<"
147
- local alias_line="alias silicaclaw='npx -y @silicaclaw/cli@beta'"
151
+ local alias_line="alias silicaclaw='npx -y @silicaclaw/cli@latest'"
148
152
 
149
153
  mkdir -p "$(dirname "$rc_file")"
150
154
  touch "$rc_file"
@@ -345,14 +349,14 @@ EOF"
345
349
 
346
350
  if [ "$INSTALLED" != "1" ]; then
347
351
  echo "你也可以选择无需全局安装的命令别名模式。"
348
- if ask_yes_no "是否自动写入 shell alias(silicaclaw -> npx @silicaclaw/cli@beta)?" "Y"; then
352
+ if ask_yes_no "是否自动写入 shell alias(silicaclaw -> npx @silicaclaw/cli@latest)?" "Y"; then
349
353
  if install_npx_alias; then
350
354
  success "alias 安装完成"
351
355
  else
352
356
  note "alias 安装失败。继续使用 npx 即可。"
353
357
  fi
354
358
  else
355
- kv "临时用法" "npx @silicaclaw/cli@beta <command>"
359
+ kv "临时用法" "npx @silicaclaw/cli@latest <command>"
356
360
  fi
357
361
  fi
358
362
  fi
@@ -386,7 +390,7 @@ fi
386
390
  NETWORK_MODE="local"
387
391
  NETWORK_ADAPTER="local-event-bus"
388
392
  WEBRTC_SIGNALING_URL_VALUE=""
389
- WEBRTC_ROOM_VALUE="silicaclaw-global-preview"
393
+ WEBRTC_ROOM_VALUE="$DEFAULT_GLOBAL_ROOM"
390
394
  AUTO_START_SIGNALING=0
391
395
 
392
396
  case "$MODE_PICK" in
@@ -398,9 +402,9 @@ case "$MODE_PICK" in
398
402
  NETWORK_MODE="global-preview"
399
403
  NETWORK_ADAPTER="relay-preview"
400
404
  PUBLIC_IP="$(detect_public_ip)"
401
- SIGNALING_DEFAULT="${WEBRTC_SIGNALING_URL:-https://relay.silicaclaw.com}"
405
+ SIGNALING_DEFAULT="${WEBRTC_SIGNALING_URL:-$DEFAULT_GLOBAL_SIGNALING_URL}"
402
406
  if [ -n "$PUBLIC_IP" ]; then
403
- SIGNALING_DEFAULT="https://relay.silicaclaw.com"
407
+ SIGNALING_DEFAULT="$DEFAULT_GLOBAL_SIGNALING_URL"
404
408
  fi
405
409
  note "signaling 地址需要所有节点都可访问。"
406
410
  if [ -n "$PUBLIC_IP" ]; then
@@ -428,8 +432,8 @@ case "$MODE_PICK" in
428
432
  kv "本地 relay" "PORT=$SIGNALING_PORT_VALUE"
429
433
  fi
430
434
 
431
- read -r -p "请输入 room(默认 silicaclaw-global-preview): " WEBRTC_ROOM_VALUE_INPUT || true
432
- WEBRTC_ROOM_VALUE="${WEBRTC_ROOM_VALUE_INPUT:-silicaclaw-global-preview}"
435
+ read -r -p "请输入 room(默认 ${DEFAULT_GLOBAL_ROOM}): " WEBRTC_ROOM_VALUE_INPUT || true
436
+ WEBRTC_ROOM_VALUE="${WEBRTC_ROOM_VALUE_INPUT:-$DEFAULT_GLOBAL_ROOM}"
433
437
  ;;
434
438
  *)
435
439
  NETWORK_MODE="local"
@@ -481,7 +485,7 @@ else
481
485
  run_cmd "$GATEWAY_CMD"
482
486
  echo ""
483
487
  success "已启动完成"
484
- kv "打开" "http://localhost:4310"
488
+ kv "打开" "http://localhost:${DEFAULT_LOCAL_CONSOLE_PORT}"
485
489
  echo ""
486
490
  echo "常用命令:"
487
491
  kv "Status" "silicaclaw status"
@@ -21,6 +21,10 @@ function normalizeVersion(value) {
21
21
  return text.startsWith("v") ? text.slice(1) : text;
22
22
  }
23
23
 
24
+ function toSkillVersion(rootVersion) {
25
+ return String(rootVersion || "").replace(/-(\d+)$/, "-beta.$1");
26
+ }
27
+
24
28
  function assert(condition, message) {
25
29
  if (!condition) {
26
30
  console.error(message);
@@ -47,6 +51,28 @@ function run(cmd, cmdArgs, extraEnv = {}) {
47
51
  }
48
52
  }
49
53
 
54
+ function runCapture(cmd, cmdArgs, extraEnv = {}) {
55
+ const result = spawnSync(cmd, cmdArgs, {
56
+ cwd: ROOT_DIR,
57
+ encoding: "utf8",
58
+ env: {
59
+ ...process.env,
60
+ npm_config_cache: resolve(ROOT_DIR, ".npm-cache"),
61
+ ...extraEnv,
62
+ },
63
+ });
64
+ if (result.error) {
65
+ console.error(result.error.message);
66
+ process.exit(1);
67
+ }
68
+ if ((result.status ?? 1) !== 0) {
69
+ if (result.stdout) process.stdout.write(result.stdout);
70
+ if (result.stderr) process.stderr.write(result.stderr);
71
+ process.exit(result.status ?? 1);
72
+ }
73
+ return String(result.stdout || "");
74
+ }
75
+
50
76
  function verifyVersionSync() {
51
77
  const pkg = readJson(resolve(ROOT_DIR, "package.json"));
52
78
  const lock = readJson(resolve(ROOT_DIR, "package-lock.json"));
@@ -55,11 +81,14 @@ function verifyVersionSync() {
55
81
  const skillManifest = readJson(resolve(ROOT_DIR, "openclaw-skills", "silicaclaw-broadcast", "manifest.json"));
56
82
 
57
83
  const expected = normalizeVersion(pkg.version);
84
+ const expectedSkill = toSkillVersion(expected);
58
85
  const checks = [
59
86
  ["package.json", normalizeVersion(pkg.version)],
60
87
  ["package-lock.json", normalizeVersion(lock.version)],
61
88
  ['package-lock.json packages[""]', normalizeVersion(lock.packages?.[""]?.version)],
62
89
  ["VERSION", normalizeVersion(rootVersionFile)],
90
+ ];
91
+ const skillChecks = [
63
92
  ["skill VERSION", normalizeVersion(skillVersionFile)],
64
93
  ["skill manifest", normalizeVersion(skillManifest.version)],
65
94
  ];
@@ -69,7 +98,33 @@ function verifyVersionSync() {
69
98
  assert(actual === expected, `Version mismatch: ${label}=${actual}, expected ${expected}`);
70
99
  }
71
100
 
72
- console.log(`Version sync OK: ${expected}`);
101
+ for (const [label, actual] of skillChecks) {
102
+ assert(Boolean(actual), `Missing version in ${label}`);
103
+ assert(actual === expectedSkill, `Version mismatch: ${label}=${actual}, expected ${expectedSkill}`);
104
+ }
105
+
106
+ console.log(`Version sync OK: root=${expected}, skill=${expectedSkill}`);
107
+ }
108
+
109
+ function verifyPackContents() {
110
+ const raw = runCapture("npm", ["pack", "--json", "--dry-run", "--ignore-scripts"]);
111
+ const start = raw.indexOf("[");
112
+ const payload = start >= 0 ? raw.slice(start) : raw;
113
+ const packInfo = JSON.parse(payload);
114
+ const files = new Set((Array.isArray(packInfo) ? packInfo[0]?.files : packInfo?.files || []).map((entry) => entry.path));
115
+ const requiredFiles = [
116
+ "config/silicaclaw-defaults.json",
117
+ "packages/storage/config/silicaclaw-defaults.json",
118
+ "node_modules/@silicaclaw/storage/config/silicaclaw-defaults.json",
119
+ "scripts/silicaclaw-cli.mjs",
120
+ "scripts/silicaclaw-gateway.mjs",
121
+ ];
122
+
123
+ for (const file of requiredFiles) {
124
+ assert(files.has(file), `Packed tarball is missing required file: ${file}`);
125
+ }
126
+
127
+ console.log(`Pack contents OK: ${requiredFiles.join(", ")}`);
73
128
  }
74
129
 
75
130
  function main() {
@@ -82,6 +137,9 @@ function main() {
82
137
  console.log("Validating bundled OpenClaw skill...");
83
138
  run("node", [resolve(ROOT_DIR, "scripts", "validate-openclaw-skill.mjs")]);
84
139
 
140
+ console.log("Verifying npm pack contents...");
141
+ verifyPackContents();
142
+
85
143
  console.log(dryRun ? "Running npm pack dry-run..." : "Packing npm tarball...");
86
144
  run("npm", ["pack", ...(dryRun ? ["--dry-run"] : [])]);
87
145
  }