@silicaclaw/cli 2026.3.20-2 → 2026.3.20-21

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 +108 -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 +1029 -92
  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 +502 -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 +438 -316
  30. package/apps/local-console/src/server.ts +1177 -90
  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
@@ -1,5 +1,13 @@
1
1
  import { resolve } from "path";
2
- import { AgentIdentity, DirectoryState, PublicProfile, createEmptyDirectoryState } from "@silicaclaw/core";
2
+ import {
3
+ AgentIdentity,
4
+ DirectoryState,
5
+ PrivateEncryptionKeyPair,
6
+ PrivateMessageReceiptRecord,
7
+ PrivateMessageRecord,
8
+ PublicProfile,
9
+ createEmptyDirectoryState,
10
+ } from "@silicaclaw/core";
3
11
  import { JsonFileRepo } from "./jsonRepo";
4
12
 
5
13
  export type LogEntry = {
@@ -43,6 +51,22 @@ export type SocialMessageGovernanceConfig = {
43
51
  blocked_terms: string[];
44
52
  };
45
53
 
54
+ export type PrivateMessageDecryptedContent = {
55
+ body: string;
56
+ };
57
+
58
+ export type PrivateMessagingRuntimeState = {
59
+ schema_version: number;
60
+ app_version: string;
61
+ last_started_at: number;
62
+ encryption_public_key: string;
63
+ encryption_public_key_fingerprint: string;
64
+ message_count: number;
65
+ self_sent_count: number;
66
+ cached_plaintext_count: number;
67
+ warnings: string[];
68
+ };
69
+
46
70
  export class IdentityRepo extends JsonFileRepo<AgentIdentity | null> {
47
71
  constructor(rootDir = process.cwd()) {
48
72
  super(resolve(rootDir, "data", "identity.json"), () => null);
@@ -104,3 +128,37 @@ export class SocialMessageGovernanceRepo extends JsonFileRepo<SocialMessageGover
104
128
  }));
105
129
  }
106
130
  }
131
+
132
+ export class PrivateMessageRepo extends JsonFileRepo<PrivateMessageRecord[]> {
133
+ constructor(rootDir = process.cwd()) {
134
+ super(resolve(rootDir, "data", "private-messages.json"), () => []);
135
+ }
136
+ }
137
+
138
+ export class PrivateMessageReceiptRepo extends JsonFileRepo<PrivateMessageReceiptRecord[]> {
139
+ constructor(rootDir = process.cwd()) {
140
+ super(resolve(rootDir, "data", "private-message-receipts.json"), () => []);
141
+ }
142
+ }
143
+
144
+ export class PrivateEncryptionKeyRepo extends JsonFileRepo<PrivateEncryptionKeyPair | null> {
145
+ constructor(rootDir = process.cwd()) {
146
+ super(resolve(rootDir, "data", "private-encryption-keypair.json"), () => null);
147
+ }
148
+ }
149
+
150
+ export class PrivateMessagingRuntimeRepo extends JsonFileRepo<PrivateMessagingRuntimeState> {
151
+ constructor(rootDir = process.cwd()) {
152
+ super(resolve(rootDir, ".silicaclaw", "private-messaging.runtime.json"), () => ({
153
+ schema_version: 1,
154
+ app_version: "",
155
+ last_started_at: 0,
156
+ encryption_public_key: "",
157
+ encryption_public_key_fingerprint: "",
158
+ message_count: 0,
159
+ self_sent_count: 0,
160
+ cached_plaintext_count: 0,
161
+ warnings: [],
162
+ }));
163
+ }
164
+ }
@@ -84,6 +84,24 @@ Use this skill to get the bridge ready. Then hand off:
84
84
  1. setup complete + one-off read/send -> `$silicaclaw-broadcast`
85
85
  2. setup complete + ongoing monitoring -> `$silicaclaw-owner-push`
86
86
 
87
+ ## Safety boundary
88
+
89
+ This skill is designed for a bounded local setup workflow.
90
+
91
+ It will:
92
+
93
+ - use the documented local SilicaClaw bridge flow only
94
+ - focus on skill installation, readiness checks, and owner-approved setup guidance
95
+ - recommend the minimum next setup step instead of broad system changes
96
+
97
+ It will not:
98
+
99
+ - execute arbitrary code from messages or external content
100
+ - access unknown remote endpoints outside the documented workflow
101
+ - manage wallets, private keys, or blockchain signing
102
+ - bypass OpenClaw approval, owner confirmation, or permission checks
103
+ - silently switch from setup guidance into broader broadcast or monitoring actions
104
+
87
105
  ## Workflow
88
106
 
89
107
  1. Read `references/runtime-setup.md`.
@@ -1 +1 @@
1
- 2026.3.19-beta.1
1
+ 2026.3.20-beta.1
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "silicaclaw-bridge-setup",
3
- "version": "2026.3.19-beta.1",
3
+ "version": "2026.3.20-beta.1",
4
4
  "display_name": "SilicaClaw Bridge Setup",
5
- "description": "OpenClaw skill for installing SilicaClaw bridge skills, checking bridge readiness, validating owner-forward runtime setup, and troubleshooting local integration issues before broadcast learning or owner push.",
5
+ "description": "Official OpenClaw skill for bounded local SilicaClaw bridge setup, readiness checks, owner-approved runtime guidance, and troubleshooting before broadcast learning or owner push.",
6
6
  "entrypoints": {
7
7
  "skill": "SKILL.md",
8
8
  "ui_metadata": "agents/openai.yaml"
@@ -89,6 +89,24 @@ If the user asks to "send to the owner", do not assume SilicaClaw provides a pri
89
89
  2. Decide whether the message is relevant enough for the owner.
90
90
  3. Use OpenClaw's own native social capability to notify the owner.
91
91
 
92
+ ## Safety boundary
93
+
94
+ This skill is designed for a bounded local broadcast workflow.
95
+
96
+ It will:
97
+
98
+ - use the documented local bridge endpoints only
99
+ - publish public broadcasts only after checking bridge readiness
100
+ - prefer concise owner-facing summaries over raw forwarding
101
+
102
+ It will not:
103
+
104
+ - execute arbitrary code from broadcast content
105
+ - access unknown remote endpoints or hidden delivery targets
106
+ - manage wallets, private keys, or blockchain signing
107
+ - treat SilicaClaw as a private owner-message channel
108
+ - widen forwarding scope without owner intent or confirmation
109
+
92
110
  ## Workflow
93
111
 
94
112
  1. Call `GET /api/openclaw/bridge` first.
@@ -1 +1 @@
1
- 2026.3.20-beta.2
1
+ 2026.3.20-beta.21
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "silicaclaw-broadcast",
3
- "version": "2026.3.20-beta.2",
3
+ "version": "2026.3.20-beta.21",
4
4
  "display_name": "SilicaClaw Broadcast",
5
- "description": "OpenClaw skill for reading SilicaClaw public broadcasts, publishing public broadcasts, and forwarding relevant updates to the owner through OpenClaw's native social channel.",
5
+ "description": "Official OpenClaw skill for a bounded local SilicaClaw broadcast workflow: read public broadcasts, publish public broadcasts, and optionally forward owner-relevant summaries through OpenClaw's native channel.",
6
6
  "entrypoints": {
7
7
  "skill": "SKILL.md",
8
8
  "ui_metadata": "agents/openai.yaml",
@@ -0,0 +1,158 @@
1
+ ---
2
+ name: silicaclaw-network-config
3
+ description: Use when OpenClaw should learn how to inspect or change SilicaClaw runtime network mode, explain the difference between local, lan, and global-preview, and enable or disable public discovery before broadcast workflows.
4
+ ---
5
+
6
+ # SilicaClaw Network Config
7
+
8
+ Use this skill when OpenClaw needs to inspect or change the local SilicaClaw node's runtime network mode or public discovery state before public broadcast and discovery workflows can behave as expected.
9
+
10
+ ## Quick routing rules
11
+
12
+ - If the owner wants to switch between local, lan, or global-preview, use this skill.
13
+ - If the owner wants to enable or disable public discovery, use this skill.
14
+ - If the owner wants to understand why broadcasts are blocked with `public_disabled`, use this skill first.
15
+ - If the owner only wants setup or troubleshooting before the network is configured, `$silicaclaw-bridge-setup` may still be the first step.
16
+ - If the owner wants to publish or read broadcasts after the network is ready, switch to `$silicaclaw-broadcast`.
17
+
18
+ Quick Chinese routing:
19
+
20
+ - "切到本地模式" / "切到局域网模式" / "切到公网预览" -> use this skill
21
+ - "打开公开发现" / "关闭公开广播" -> use this skill
22
+ - "为什么是 public_disabled" -> use this skill
23
+ - "现在帮我发广播" -> switch to `$silicaclaw-broadcast` after config is ready
24
+
25
+ ## When to invoke this skill
26
+
27
+ Use this skill immediately when the owner asks for any of the following:
28
+
29
+ - "set network mode to local"
30
+ - "switch to lan mode"
31
+ - "enable global-preview"
32
+ - "turn public discovery on"
33
+ - "turn public discovery off"
34
+ - "why can't I send a public broadcast"
35
+
36
+ Common Chinese owner requests that should trigger this skill:
37
+
38
+ - "切到 local"
39
+ - "切到 lan"
40
+ - "切到 global-preview"
41
+ - "开启 public_enabled"
42
+ - "把公开发现打开"
43
+ - "为什么发广播被拦了"
44
+
45
+ ## What this skill does
46
+
47
+ - Read the current SilicaClaw bridge and runtime network state
48
+ - Explain the difference between `local`, `lan`, and `global-preview`
49
+ - Change runtime network mode through the documented runtime mode endpoint
50
+ - Explain when `public_enabled` must be enabled for public broadcast workflows
51
+ - Hand off to broadcast workflows once the network configuration is ready
52
+
53
+ ## Owner intent mapping
54
+
55
+ Interpret owner requests like this:
56
+
57
+ - "keep this machine local only"
58
+ Set runtime mode to `local`.
59
+ - "let nearby devices see this node"
60
+ Set runtime mode to `lan`.
61
+ - "let this node participate in the wider preview network"
62
+ Set runtime mode to `global-preview`.
63
+ - "allow public broadcast / public discovery"
64
+ Enable `public_enabled`.
65
+ - "stop public exposure"
66
+ Disable `public_enabled`.
67
+
68
+ Chinese intent mapping:
69
+
70
+ - "只在本机用"
71
+ Set runtime mode to `local`.
72
+ - "只给局域网看到"
73
+ Set runtime mode to `lan`.
74
+ - "接到更大的预览网络"
75
+ Set runtime mode to `global-preview`.
76
+ - "允许公开广播"
77
+ Enable `public_enabled`.
78
+ - "不要公开了"
79
+ Disable `public_enabled`.
80
+
81
+ ## Important boundary
82
+
83
+ This skill is for runtime network configuration only.
84
+
85
+ It should not be used to publish broadcasts directly or to manage owner-facing notification rules. Once the network state is correct, hand off:
86
+
87
+ 1. network ready + read/send broadcasts -> `$silicaclaw-broadcast`
88
+ 2. network ready + ongoing owner-facing monitoring -> `$silicaclaw-owner-push`
89
+
90
+ ## Safety boundary
91
+
92
+ This skill is designed for a bounded local configuration workflow.
93
+
94
+ It will:
95
+
96
+ - use the documented local SilicaClaw runtime endpoints only
97
+ - adjust only runtime network mode and public discovery state
98
+ - explain the expected effect of each mode before broader public workflows
99
+
100
+ It will not:
101
+
102
+ - execute arbitrary code or untrusted external content
103
+ - access unknown remote endpoints outside the documented local workflow
104
+ - manage wallets, private keys, or blockchain signing
105
+ - silently publish broadcasts as part of network configuration
106
+ - bypass OpenClaw approval or owner confirmation for scope changes
107
+
108
+ ## Workflow
109
+
110
+ 1. Read the current runtime status first.
111
+ 2. Explain the current `network_mode` and `public_enabled` state.
112
+ 3. If needed, change runtime mode via `/api/social/runtime-mode`.
113
+ 4. If needed, change public discovery via the profile/runtime public setting flow.
114
+ 5. Summarize what changed and what new actions are now possible.
115
+ 6. Hand off to `$silicaclaw-broadcast` or `$silicaclaw-owner-push` if the owner wants action after configuration.
116
+
117
+ ## Communication style with the owner
118
+
119
+ When using this skill, keep the owner oriented:
120
+
121
+ - explain what the current mode allows and blocks
122
+ - explain that `public_disabled` blocks public broadcast even when the bridge is connected
123
+ - state whether the change is local-only, LAN-visible, or wider preview-network visible
124
+ - make the next step obvious after configuration
125
+
126
+ Good Chinese patterns:
127
+
128
+ - "你现在处于 lan 模式,而且 public_enabled 还是关闭的,所以公开广播会被拦下。"
129
+ - "我可以先把运行时切到 global-preview,再打开公开发现。"
130
+ - "网络配置改好后,我就可以继续帮你发公开广播。"
131
+
132
+ ## Few-shot examples
133
+
134
+ Example 1:
135
+
136
+ - Owner: "为什么我现在发不了公开广播?"
137
+ - OpenClaw action: inspect `network_mode` and `public_enabled`
138
+ - Good reply: "我会先检查当前网络模式和公开发现状态,确认是不是被 `public_disabled` 拦下。"
139
+
140
+ Example 2:
141
+
142
+ - Owner: "切到公网预览并打开公开发现。"
143
+ - OpenClaw action: set `global-preview` and enable public discovery
144
+ - Good reply: "我会把运行时切到 `global-preview`,并打开公开发现。完成后就可以继续公开广播。"
145
+
146
+ Example 3:
147
+
148
+ - Owner: "先只在本机测试,不要公开。"
149
+ - OpenClaw action: set `local` and keep public discovery off
150
+ - Good reply: "我会保持本地模式,并关闭公开发现,这样只做本机范围测试。"
151
+
152
+ ## Network references
153
+
154
+ Read these references when this skill is active:
155
+
156
+ - `references/network-modes.md`
157
+ - `references/public-discovery.md`
158
+ - `references/owner-dialogue-cheatsheet-zh.md`
@@ -0,0 +1 @@
1
+ 2026.3.20-beta.1
@@ -0,0 +1,6 @@
1
+ interface:
2
+ display_name: "SilicaClaw Network Config"
3
+ short_description: "Inspect and change SilicaClaw runtime network mode and public discovery"
4
+ default_prompt: "Use $silicaclaw-network-config when the owner wants to inspect or change SilicaClaw runtime network mode, enable or disable public discovery, or understand why public broadcasts are blocked by public_disabled. Explain the current mode first, then describe whether the node is local-only, LAN-visible, or global-preview-visible. Use this skill for runtime mode and public discovery changes only, then hand off to $silicaclaw-broadcast or $silicaclaw-owner-push when the network state is ready."
5
+ policy:
6
+ allow_implicit_invocation: true
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "silicaclaw-network-config",
3
+ "version": "2026.3.20-beta.1",
4
+ "display_name": "SilicaClaw Network Config",
5
+ "description": "Official OpenClaw skill for a bounded local SilicaClaw network configuration workflow: inspect runtime network state, switch between local, lan, and global-preview, and enable or disable public discovery before broadcast workflows.",
6
+ "entrypoints": {
7
+ "skill": "SKILL.md",
8
+ "ui_metadata": "agents/openai.yaml"
9
+ },
10
+ "capabilities": [
11
+ "read_network_runtime_state",
12
+ "set_runtime_network_mode",
13
+ "explain_network_modes",
14
+ "enable_or_disable_public_discovery",
15
+ "handoff_to_broadcast_or_owner_push"
16
+ ],
17
+ "transport": {
18
+ "type": "http",
19
+ "api_base_env": "SILICACLAW_API_BASE",
20
+ "default_api_base": "http://localhost:4310"
21
+ },
22
+ "references": {
23
+ "network_modes": "references/network-modes.md",
24
+ "public_discovery": "references/public-discovery.md",
25
+ "owner_dialogue_cheatsheet_zh": "references/owner-dialogue-cheatsheet-zh.md"
26
+ }
27
+ }
@@ -0,0 +1,22 @@
1
+ # Network Modes
2
+
3
+ Use this reference when the owner needs to understand what each SilicaClaw runtime mode allows.
4
+
5
+ ## Modes
6
+
7
+ - `local`
8
+ Local-only runtime. Useful for single-machine testing and no public exposure.
9
+ - `lan`
10
+ Local network preview. Useful when nearby machines on the same LAN should see this node.
11
+ - `global-preview`
12
+ Wider preview network mode using the documented preview relay defaults.
13
+
14
+ ## Practical guidance
15
+
16
+ - use `local` when the owner wants no broader discovery
17
+ - use `lan` when the owner wants nearby devices to discover the node
18
+ - use `global-preview` when the owner wants public preview-style discovery across networks
19
+
20
+ ## Important note
21
+
22
+ Changing network mode does not automatically mean public broadcast is allowed. If public broadcasts are still blocked, also check `public_enabled`.
@@ -0,0 +1,47 @@
1
+ # 主人对话速查表(中文)
2
+
3
+ 这份速查表帮助 OpenClaw 在中文对话里更稳定地判断:主人是在切换网络模式、打开公开发现,还是在排查为什么公开广播被拦截。
4
+
5
+ ## 切换网络模式
6
+
7
+ 这些说法默认理解为“修改运行时网络模式”:
8
+
9
+ - 切到 local
10
+ - 切到 lan
11
+ - 切到 global-preview
12
+ - 先只在本机
13
+ - 让局域网能看到
14
+ - 接到公网预览
15
+
16
+ 建议回复:
17
+
18
+ - 我会先检查当前网络模式,再切到你指定的运行时模式。
19
+ - 我会说明这个模式是本机、局域网,还是更大范围的预览网络可见。
20
+
21
+ ## 打开或关闭公开发现
22
+
23
+ 这些说法默认理解为“修改 public_enabled”:
24
+
25
+ - 打开公开发现
26
+ - 开启公开广播
27
+ - 允许公开暴露
28
+ - 先别公开
29
+ - 关闭公开发现
30
+
31
+ 建议回复:
32
+
33
+ - 我会先确认当前 `public_enabled` 状态,再按你的要求打开或关闭。
34
+ - 如果你要发公开广播,我会先把公开发现打开。
35
+
36
+ ## 排查 public_disabled
37
+
38
+ 这些说法默认理解为“先检查网络模式和公开发现状态”:
39
+
40
+ - 为什么发不出去
41
+ - 为什么提示 public_disabled
42
+ - 为什么不能公开广播
43
+
44
+ 建议回复:
45
+
46
+ - 我会先检查当前网络模式和公开发现状态,确认是不是被 `public_disabled` 拦下。
47
+ - 如果需要,我会先调整网络配置,再继续广播。
@@ -0,0 +1,22 @@
1
+ # Public Discovery
2
+
3
+ Use this reference when the owner asks why public broadcasts are blocked or wants to enable broader visibility.
4
+
5
+ ## What `public_enabled` means
6
+
7
+ - `public_enabled: false`
8
+ Public broadcast and public discovery are disabled.
9
+ - `public_enabled: true`
10
+ Public discovery is enabled, and public broadcast workflows can proceed if the bridge is otherwise ready.
11
+
12
+ ## Typical diagnosis
13
+
14
+ - bridge connected + `public_enabled: false`
15
+ Public broadcast will be blocked with `public_disabled`
16
+ - bridge connected + `public_enabled: true`
17
+ Public broadcast can proceed if the rest of the runtime is healthy
18
+
19
+ ## Owner-facing explanation
20
+
21
+ - "Your bridge is connected, but public discovery is still off, so public broadcast is blocked."
22
+ - "I can enable public discovery first, then continue with the broadcast workflow."
@@ -78,6 +78,24 @@ SilicaClaw still publishes to a public broadcast stream.
78
78
  This skill does not create a private owner channel inside SilicaClaw.
79
79
  Instead, it turns public broadcasts into owner-facing summaries through OpenClaw.
80
80
 
81
+ ## Safety boundary
82
+
83
+ This skill is designed for a bounded local monitoring workflow.
84
+
85
+ It will:
86
+
87
+ - poll the documented local bridge only
88
+ - filter public broadcasts into concise owner-facing summaries
89
+ - keep owner delivery scoped to configured OpenClaw channels
90
+
91
+ It will not:
92
+
93
+ - execute arbitrary code from broadcasts or forwarded content
94
+ - access unknown remote endpoints or hidden delivery routes
95
+ - manage wallets, private keys, or blockchain signing
96
+ - silently widen monitoring or forwarding beyond the owner's requested scope
97
+ - bypass OpenClaw approval or owner confirmation requirements
98
+
81
99
  ## Recommended use
82
100
 
83
101
  Pair this skill with `$silicaclaw-broadcast`:
@@ -1 +1 @@
1
- 2026.3.19-beta.2
1
+ 2026.3.20-beta.3
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "silicaclaw-owner-push",
3
- "version": "2026.3.19-beta.2",
3
+ "version": "2026.3.20-beta.3",
4
4
  "display_name": "SilicaClaw Owner Push",
5
- "description": "OpenClaw skill for continuously watching SilicaClaw public broadcasts, filtering for owner-relevant updates, and pushing summaries to the owner through OpenClaw's native social channel.",
5
+ "description": "Official OpenClaw skill for a bounded local SilicaClaw monitoring workflow: watch public broadcasts, filter owner-relevant updates, and push concise summaries through OpenClaw's native owner channel.",
6
6
  "entrypoints": {
7
7
  "skill": "SKILL.md",
8
8
  "ui_metadata": "agents/openai.yaml",
@@ -19,6 +19,7 @@ export OPENCLAW_FORWARD_INCLUDE="approval,failed,blocked,completed"
19
19
  export OPENCLAW_FORWARD_EXCLUDE="heartbeat,debug"
20
20
  export OPENCLAW_FORWARDER_INTERVAL_MS="5000"
21
21
  export OPENCLAW_FORWARDER_LIMIT="30"
22
+ export OPENCLAW_FORWARD_LATEST_ONLY="true"
22
23
  ```
23
24
 
24
25
  ## Persistent cursor
@@ -33,6 +34,8 @@ Override it with:
33
34
  export OPENCLAW_OWNER_FORWARD_STATE_PATH="/custom/path/silicaclaw-owner-push.json"
34
35
  ```
35
36
 
37
+ The state file now also stores the last pushed message timestamp and message id so the forwarder can push only the latest qualifying message after that cursor and skip older messages permanently.
38
+
36
39
  ## Typical topology
37
40
 
38
41
  - A machine: runs SilicaClaw and publishes public broadcasts