@silicaclaw/cli 2026.3.20-2 → 2026.3.20-3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/INSTALL.md +13 -7
- package/README.md +60 -12
- package/VERSION +1 -1
- package/apps/local-console/dist/apps/local-console/src/server.d.ts +5 -0
- package/apps/local-console/dist/apps/local-console/src/server.js +35 -0
- package/apps/local-console/dist/packages/network/src/relayPreview.d.ts +1 -0
- package/apps/local-console/dist/packages/network/src/relayPreview.js +17 -0
- package/apps/local-console/public/app/app.js +25 -2
- package/apps/local-console/public/app/events.js +21 -0
- package/apps/local-console/public/app/overview.js +6 -6
- package/apps/local-console/public/app/social.js +180 -40
- package/apps/local-console/public/app/styles.css +35 -0
- package/apps/local-console/public/app/template.js +50 -34
- package/apps/local-console/public/app/translations.js +362 -312
- package/apps/local-console/src/server.ts +42 -0
- package/apps/public-explorer/public/app/template.js +2 -2
- package/apps/public-explorer/public/app/translations.js +36 -36
- package/docs/NEW_USER_OPERATIONS.md +5 -5
- package/docs/OPENCLAW_BRIDGE.md +7 -7
- package/docs/OPENCLAW_BRIDGE_ZH.md +6 -6
- package/node_modules/@silicaclaw/network/dist/packages/network/src/relayPreview.d.ts +1 -0
- package/node_modules/@silicaclaw/network/dist/packages/network/src/relayPreview.js +17 -0
- package/node_modules/@silicaclaw/network/src/relayPreview.ts +17 -0
- package/openclaw-skills/silicaclaw-bridge-setup/SKILL.md +18 -0
- package/openclaw-skills/silicaclaw-bridge-setup/VERSION +1 -1
- package/openclaw-skills/silicaclaw-bridge-setup/manifest.json +2 -2
- package/openclaw-skills/silicaclaw-broadcast/SKILL.md +18 -0
- package/openclaw-skills/silicaclaw-broadcast/VERSION +1 -1
- package/openclaw-skills/silicaclaw-broadcast/manifest.json +2 -2
- package/openclaw-skills/silicaclaw-network-config/SKILL.md +158 -0
- package/openclaw-skills/silicaclaw-network-config/VERSION +1 -0
- package/openclaw-skills/silicaclaw-network-config/agents/openai.yaml +6 -0
- package/openclaw-skills/silicaclaw-network-config/manifest.json +27 -0
- package/openclaw-skills/silicaclaw-network-config/references/network-modes.md +22 -0
- package/openclaw-skills/silicaclaw-network-config/references/owner-dialogue-cheatsheet-zh.md +47 -0
- package/openclaw-skills/silicaclaw-network-config/references/public-discovery.md +22 -0
- package/openclaw-skills/silicaclaw-owner-push/SKILL.md +18 -0
- package/openclaw-skills/silicaclaw-owner-push/VERSION +1 -1
- package/openclaw-skills/silicaclaw-owner-push/manifest.json +2 -2
- package/package.json +1 -1
- package/packages/network/dist/packages/network/src/relayPreview.d.ts +1 -0
- package/packages/network/dist/packages/network/src/relayPreview.js +17 -0
- package/packages/network/src/relayPreview.ts +17 -0
- package/scripts/validate-openclaw-skill.mjs +19 -0
|
@@ -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.
|
|
1
|
+
2026.3.20-beta.1
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "silicaclaw-owner-push",
|
|
3
|
-
"version": "2026.3.
|
|
3
|
+
"version": "2026.3.20-beta.1",
|
|
4
4
|
"display_name": "SilicaClaw Owner Push",
|
|
5
|
-
"description": "OpenClaw skill for
|
|
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",
|
package/package.json
CHANGED
|
@@ -349,6 +349,7 @@ class RelayPreviewAdapter {
|
|
|
349
349
|
if (!this.lastJoinAt || Date.now() - this.lastJoinAt > Math.max(45_000, this.pollIntervalMs * 6)) {
|
|
350
350
|
await this.joinRoom(reason);
|
|
351
351
|
}
|
|
352
|
+
this.ensurePollingAlive(reason);
|
|
352
353
|
}
|
|
353
354
|
async get(path) {
|
|
354
355
|
return this.requestJson("GET", path);
|
|
@@ -444,5 +445,21 @@ class RelayPreviewAdapter {
|
|
|
444
445
|
this.pollOnce().catch(() => { });
|
|
445
446
|
}, Math.max(1000, delayMs + jitterMs));
|
|
446
447
|
}
|
|
448
|
+
ensurePollingAlive(reason) {
|
|
449
|
+
if (!this.started)
|
|
450
|
+
return;
|
|
451
|
+
const pollStaleMs = Math.max(45_000, this.pollIntervalMs * 6);
|
|
452
|
+
const pollMissing = !this.poller;
|
|
453
|
+
const pollStale = Boolean(this.lastPollAt) && Date.now() - this.lastPollAt > pollStaleMs;
|
|
454
|
+
if (!pollMissing && !pollStale) {
|
|
455
|
+
return;
|
|
456
|
+
}
|
|
457
|
+
this.recordDiscovery("poll_recover_scheduled", {
|
|
458
|
+
endpoint: this.activeEndpoint,
|
|
459
|
+
detail: `${reason}:${pollMissing ? "missing" : "stale"}`,
|
|
460
|
+
});
|
|
461
|
+
this.currentPollDelayMs = this.pollIntervalMs;
|
|
462
|
+
this.scheduleNextPoll(0);
|
|
463
|
+
}
|
|
447
464
|
}
|
|
448
465
|
exports.RelayPreviewAdapter = RelayPreviewAdapter;
|
|
@@ -467,6 +467,7 @@ export class RelayPreviewAdapter implements NetworkAdapter {
|
|
|
467
467
|
if (!this.lastJoinAt || Date.now() - this.lastJoinAt > Math.max(45_000, this.pollIntervalMs * 6)) {
|
|
468
468
|
await this.joinRoom(reason);
|
|
469
469
|
}
|
|
470
|
+
this.ensurePollingAlive(reason);
|
|
470
471
|
}
|
|
471
472
|
|
|
472
473
|
private async get(path: string): Promise<any> {
|
|
@@ -565,4 +566,20 @@ export class RelayPreviewAdapter implements NetworkAdapter {
|
|
|
565
566
|
this.pollOnce().catch(() => {});
|
|
566
567
|
}, Math.max(1000, delayMs + jitterMs));
|
|
567
568
|
}
|
|
569
|
+
|
|
570
|
+
private ensurePollingAlive(reason: string): void {
|
|
571
|
+
if (!this.started) return;
|
|
572
|
+
const pollStaleMs = Math.max(45_000, this.pollIntervalMs * 6);
|
|
573
|
+
const pollMissing = !this.poller;
|
|
574
|
+
const pollStale = Boolean(this.lastPollAt) && Date.now() - this.lastPollAt > pollStaleMs;
|
|
575
|
+
if (!pollMissing && !pollStale) {
|
|
576
|
+
return;
|
|
577
|
+
}
|
|
578
|
+
this.recordDiscovery("poll_recover_scheduled", {
|
|
579
|
+
endpoint: this.activeEndpoint,
|
|
580
|
+
detail: `${reason}:${pollMissing ? "missing" : "stale"}`,
|
|
581
|
+
});
|
|
582
|
+
this.currentPollDelayMs = this.pollIntervalMs;
|
|
583
|
+
this.scheduleNextPoll(0);
|
|
584
|
+
}
|
|
568
585
|
}
|
|
@@ -100,6 +100,25 @@ function main() {
|
|
|
100
100
|
assert(dialogueCheatsheetZh.includes("主人对话速查表"), "owner dialogue cheatsheet zh content mismatch");
|
|
101
101
|
},
|
|
102
102
|
},
|
|
103
|
+
"silicaclaw-network-config": {
|
|
104
|
+
requiredFiles: [
|
|
105
|
+
resolve(skillDir, "references", "network-modes.md"),
|
|
106
|
+
resolve(skillDir, "references", "public-discovery.md"),
|
|
107
|
+
resolve(skillDir, "references", "owner-dialogue-cheatsheet-zh.md"),
|
|
108
|
+
],
|
|
109
|
+
uiDisplayName: 'display_name: "SilicaClaw Network Config"',
|
|
110
|
+
checks(manifest, files) {
|
|
111
|
+
const networkModes = readFileSync(files[0], "utf8");
|
|
112
|
+
const publicDiscovery = readFileSync(files[1], "utf8");
|
|
113
|
+
const dialogueCheatsheetZh = readFileSync(files[2], "utf8");
|
|
114
|
+
assert(String(manifest.references?.network_modes || "") === "references/network-modes.md", "manifest network modes reference mismatch");
|
|
115
|
+
assert(String(manifest.references?.public_discovery || "") === "references/public-discovery.md", "manifest public discovery reference mismatch");
|
|
116
|
+
assert(String(manifest.references?.owner_dialogue_cheatsheet_zh || "") === "references/owner-dialogue-cheatsheet-zh.md", "manifest owner dialogue cheatsheet zh reference mismatch");
|
|
117
|
+
assert(networkModes.includes("## Modes"), "network modes content mismatch");
|
|
118
|
+
assert(publicDiscovery.includes("public_enabled"), "public discovery content mismatch");
|
|
119
|
+
assert(dialogueCheatsheetZh.includes("主人对话速查表"), "owner dialogue cheatsheet zh content mismatch");
|
|
120
|
+
},
|
|
121
|
+
},
|
|
103
122
|
}[skillName];
|
|
104
123
|
|
|
105
124
|
assert(profile, `Unsupported skill for validation: ${skillName}`);
|