@silicaclaw/cli 2026.3.20-2 → 2026.3.20-4
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 +12 -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 +39 -0
- package/apps/local-console/dist/apps/local-console/src/server.js +220 -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 +274 -3
- package/apps/local-console/public/app/events.js +21 -0
- package/apps/local-console/public/app/network.js +111 -30
- package/apps/local-console/public/app/overview.js +49 -21
- package/apps/local-console/public/app/social.js +315 -93
- package/apps/local-console/public/app/styles.css +86 -0
- package/apps/local-console/public/app/template.js +56 -35
- package/apps/local-console/public/app/translations.js +394 -312
- package/apps/local-console/src/server.ts +251 -1
- 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/openclaw-skills/silicaclaw-owner-push/references/runtime-setup.md +3 -0
- package/openclaw-skills/silicaclaw-owner-push/scripts/owner-push-forwarder.mjs +67 -8
- 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/silicaclaw-cli.mjs +4 -1
- package/scripts/silicaclaw-gateway.mjs +108 -0
- package/scripts/validate-openclaw-skill.mjs +19 -0
|
@@ -586,6 +586,54 @@
|
|
|
586
586
|
overflow: hidden;
|
|
587
587
|
text-overflow: ellipsis;
|
|
588
588
|
}
|
|
589
|
+
.sidebar-version__hint {
|
|
590
|
+
font-size: 10px;
|
|
591
|
+
line-height: 1.2;
|
|
592
|
+
color: var(--muted);
|
|
593
|
+
white-space: nowrap;
|
|
594
|
+
overflow: hidden;
|
|
595
|
+
text-overflow: ellipsis;
|
|
596
|
+
}
|
|
597
|
+
.sidebar-version__actions {
|
|
598
|
+
display: flex;
|
|
599
|
+
align-items: center;
|
|
600
|
+
gap: 10px;
|
|
601
|
+
flex: 0 0 auto;
|
|
602
|
+
}
|
|
603
|
+
.sidebar-version__btn {
|
|
604
|
+
appearance: none;
|
|
605
|
+
border: 1px solid color-mix(in srgb, var(--accent) 38%, var(--border));
|
|
606
|
+
background: color-mix(in srgb, var(--accent) 16%, transparent);
|
|
607
|
+
color: var(--text-strong);
|
|
608
|
+
border-radius: 999px;
|
|
609
|
+
padding: 6px 10px;
|
|
610
|
+
font-size: 11px;
|
|
611
|
+
line-height: 1;
|
|
612
|
+
font-weight: 700;
|
|
613
|
+
cursor: pointer;
|
|
614
|
+
transition: background .18s ease, border-color .18s ease, opacity .18s ease;
|
|
615
|
+
}
|
|
616
|
+
.sidebar-version__btn:hover:not(:disabled) {
|
|
617
|
+
background: color-mix(in srgb, var(--accent) 22%, transparent);
|
|
618
|
+
border-color: color-mix(in srgb, var(--accent) 52%, var(--border));
|
|
619
|
+
}
|
|
620
|
+
.sidebar-version__btn--ghost {
|
|
621
|
+
background: transparent;
|
|
622
|
+
border-color: color-mix(in srgb, var(--border) 88%, transparent);
|
|
623
|
+
color: var(--muted);
|
|
624
|
+
}
|
|
625
|
+
.sidebar-version__btn--ghost:hover:not(:disabled) {
|
|
626
|
+
background: color-mix(in srgb, var(--bg-elevated) 72%, transparent);
|
|
627
|
+
border-color: color-mix(in srgb, var(--border) 100%, transparent);
|
|
628
|
+
}
|
|
629
|
+
.sidebar-version__btn:disabled {
|
|
630
|
+
opacity: .55;
|
|
631
|
+
cursor: wait;
|
|
632
|
+
}
|
|
633
|
+
.sidebar-version__btn.hidden,
|
|
634
|
+
.sidebar-version__hint.hidden {
|
|
635
|
+
display: none;
|
|
636
|
+
}
|
|
589
637
|
.sidebar-version__status {
|
|
590
638
|
width: 8px;
|
|
591
639
|
height: 8px;
|
|
@@ -609,6 +657,9 @@
|
|
|
609
657
|
.app.nav-collapsed .sidebar-version__copy {
|
|
610
658
|
display: none;
|
|
611
659
|
}
|
|
660
|
+
.app.nav-collapsed .sidebar-version__btn {
|
|
661
|
+
display: none;
|
|
662
|
+
}
|
|
612
663
|
|
|
613
664
|
.main {
|
|
614
665
|
display: flex;
|
|
@@ -2092,6 +2143,34 @@
|
|
|
2092
2143
|
grid-template-columns: minmax(0, 1.04fr) minmax(320px, 0.96fr);
|
|
2093
2144
|
align-items: start;
|
|
2094
2145
|
}
|
|
2146
|
+
.skills-toolbar {
|
|
2147
|
+
display: grid;
|
|
2148
|
+
gap: 12px;
|
|
2149
|
+
margin-bottom: 10px;
|
|
2150
|
+
}
|
|
2151
|
+
.skills-toolbar__search {
|
|
2152
|
+
display: grid;
|
|
2153
|
+
gap: 6px;
|
|
2154
|
+
}
|
|
2155
|
+
.skills-toolbar__label {
|
|
2156
|
+
font-size: 12px;
|
|
2157
|
+
font-weight: 700;
|
|
2158
|
+
color: var(--text-strong);
|
|
2159
|
+
}
|
|
2160
|
+
.skills-toolbar__filters {
|
|
2161
|
+
display: flex;
|
|
2162
|
+
flex-wrap: wrap;
|
|
2163
|
+
gap: 8px;
|
|
2164
|
+
}
|
|
2165
|
+
.skills-filter-chip.active {
|
|
2166
|
+
border-color: color-mix(in srgb, var(--accent) 28%, transparent);
|
|
2167
|
+
background: color-mix(in srgb, var(--accent-subtle) 82%, transparent);
|
|
2168
|
+
color: var(--text-strong);
|
|
2169
|
+
}
|
|
2170
|
+
.skills-toolbar__meta {
|
|
2171
|
+
color: var(--muted);
|
|
2172
|
+
font-size: 12px;
|
|
2173
|
+
}
|
|
2095
2174
|
.skills-grid {
|
|
2096
2175
|
display: grid;
|
|
2097
2176
|
gap: 10px;
|
|
@@ -2110,6 +2189,13 @@
|
|
|
2110
2189
|
font-size: 12px;
|
|
2111
2190
|
text-align: center;
|
|
2112
2191
|
}
|
|
2192
|
+
.skills-section__footer {
|
|
2193
|
+
display: flex;
|
|
2194
|
+
justify-content: flex-start;
|
|
2195
|
+
}
|
|
2196
|
+
.skills-section__toggle {
|
|
2197
|
+
min-width: 0;
|
|
2198
|
+
}
|
|
2113
2199
|
#skillsSummaryCards {
|
|
2114
2200
|
grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
|
|
2115
2201
|
}
|
|
@@ -33,7 +33,7 @@ export const appTemplate = String.raw`<div class="app" id="appShell">
|
|
|
33
33
|
<line x1="6" x2="6" y1="20" y2="16"></line>
|
|
34
34
|
</svg>
|
|
35
35
|
</span>
|
|
36
|
-
<span class="tab-labels"><span class="tab-title">Overview</span><span class="tab-copy">
|
|
36
|
+
<span class="tab-labels"><span class="tab-title">Overview</span><span class="tab-copy">Agent health, visibility, and next steps</span></span>
|
|
37
37
|
</button>
|
|
38
38
|
<button class="tab nav-item" data-tab="profile">
|
|
39
39
|
<span class="tab-icon" aria-hidden="true">
|
|
@@ -89,7 +89,7 @@ export const appTemplate = String.raw`<div class="app" id="appShell">
|
|
|
89
89
|
<path d="M5 20c1.6-3.8 4.2-5.7 7-5.7s5.4 1.9 7 5.7"></path>
|
|
90
90
|
</svg>
|
|
91
91
|
</span>
|
|
92
|
-
<span class="tab-labels"><span class="tab-title">
|
|
92
|
+
<span class="tab-labels"><span class="tab-title">Agents</span><span class="tab-copy">Discovered public agents and live directory</span></span>
|
|
93
93
|
</button>
|
|
94
94
|
</div>
|
|
95
95
|
</section>
|
|
@@ -100,8 +100,13 @@ export const appTemplate = String.raw`<div class="app" id="appShell">
|
|
|
100
100
|
<div class="sidebar-version__copy">
|
|
101
101
|
<span class="sidebar-version__label">Version</span>
|
|
102
102
|
<span class="sidebar-version__text" id="brandVersion">-</span>
|
|
103
|
+
<span class="sidebar-version__hint" id="brandUpdateHint">Checking for updates...</span>
|
|
104
|
+
</div>
|
|
105
|
+
<div class="sidebar-version__actions">
|
|
106
|
+
<button class="sidebar-version__btn sidebar-version__btn--ghost hidden" id="brandCheckUpdateBtn" type="button">Check</button>
|
|
107
|
+
<button class="sidebar-version__btn hidden" id="brandUpdateBtn" type="button">Update</button>
|
|
108
|
+
<span class="sidebar-version__status" id="brandStatusDot" aria-hidden="true"></span>
|
|
103
109
|
</div>
|
|
104
|
-
<span class="sidebar-version__status" id="brandStatusDot" aria-hidden="true"></span>
|
|
105
110
|
</div>
|
|
106
111
|
</div>
|
|
107
112
|
</div>
|
|
@@ -178,7 +183,7 @@ export const appTemplate = String.raw`<div class="app" id="appShell">
|
|
|
178
183
|
<section class="page-hero">
|
|
179
184
|
<div class="hero-copy">
|
|
180
185
|
<h3 id="pageHeroTitle">Overview</h3>
|
|
181
|
-
<p id="pageHeroBody">See whether this
|
|
186
|
+
<p id="pageHeroBody">See whether this agent is online and who else is visible.</p>
|
|
182
187
|
</div>
|
|
183
188
|
<div class="hero-meta">
|
|
184
189
|
<div class="hero-meta-grid">
|
|
@@ -197,13 +202,13 @@ export const appTemplate = String.raw`<div class="app" id="appShell">
|
|
|
197
202
|
<div class="overview-home">
|
|
198
203
|
<div class="mission-card">
|
|
199
204
|
<div class="mission-card__eyebrow" id="homeMissionEyebrow">Control Center</div>
|
|
200
|
-
<h3 class="mission-card__title" id="homeMissionTitle">Use this page to decide whether the
|
|
201
|
-
<p class="mission-card__body" id="homeMissionBody">Overview should answer three questions first: is this
|
|
205
|
+
<h3 class="mission-card__title" id="homeMissionTitle">Use this page to decide whether the agent is ready to publish, discover, and stay online.</h3>
|
|
206
|
+
<p class="mission-card__body" id="homeMissionBody">Overview should answer three questions first: is this agent public, is the network healthy, and what should you do next.</p>
|
|
202
207
|
<div class="mission-card__status" id="homeMissionStatus"></div>
|
|
203
208
|
<div class="mission-actions">
|
|
204
209
|
<button class="secondary" id="homeOpenAgentBtn" type="button">Open Directory</button>
|
|
205
210
|
<button id="homeOpenSocialBtn" type="button">Open Social</button>
|
|
206
|
-
<button class="secondary" id="homeBroadcastNowBtn" type="button">Announce
|
|
211
|
+
<button class="secondary" id="homeBroadcastNowBtn" type="button">Announce Agent Now</button>
|
|
207
212
|
<button class="secondary" id="homeOpenNetworkBtn" type="button">Open Network</button>
|
|
208
213
|
</div>
|
|
209
214
|
</div>
|
|
@@ -217,7 +222,7 @@ export const appTemplate = String.raw`<div class="app" id="appShell">
|
|
|
217
222
|
</div>
|
|
218
223
|
<div class="page-section-grid two-col">
|
|
219
224
|
<div class="card">
|
|
220
|
-
<h3 class="title-sm" id="agentSnapshotTitle">Local
|
|
225
|
+
<h3 class="title-sm" id="agentSnapshotTitle">Local Agent Snapshot</h3>
|
|
221
226
|
<div class="field-hint" id="overviewSnapshotHint">Read this card before opening diagnostics. It summarizes what this machine is actually publishing right now.</div>
|
|
222
227
|
<div class="mono" id="snapshot"></div>
|
|
223
228
|
</div>
|
|
@@ -225,8 +230,8 @@ export const appTemplate = String.raw`<div class="app" id="appShell">
|
|
|
225
230
|
<div class="onboarding-guide">
|
|
226
231
|
<div class="onboarding-guide__header">
|
|
227
232
|
<div>
|
|
228
|
-
<h3 class="onboarding-guide__title" id="overviewGuideTitle">Get your
|
|
229
|
-
<div class="onboarding-guide__body" id="overviewGuideBody">Start by filling in public profile information, then turn on Public Enabled, then announce this
|
|
233
|
+
<h3 class="onboarding-guide__title" id="overviewGuideTitle">Get your agent public in 3 steps</h3>
|
|
234
|
+
<div class="onboarding-guide__body" id="overviewGuideBody">Start by filling in public profile information, then turn on Public Enabled, then announce this agent once so other public agents can discover it faster.</div>
|
|
230
235
|
</div>
|
|
231
236
|
<div class="onboarding-guide__status">
|
|
232
237
|
<span class="pill warn" id="overviewGuideStatus">Setup needed</span>
|
|
@@ -236,7 +241,7 @@ export const appTemplate = String.raw`<div class="app" id="appShell">
|
|
|
236
241
|
<div class="onboarding-step" id="overviewStepProfile">
|
|
237
242
|
<div class="onboarding-step__eyebrow" id="overviewStepProfileEyebrow">Step 1</div>
|
|
238
243
|
<h4 class="onboarding-step__title" id="overviewStepProfileTitle">Edit public profile</h4>
|
|
239
|
-
<div class="onboarding-step__body" id="overviewStepProfileBody">Add a display name, short bio, and tags so others know who this
|
|
244
|
+
<div class="onboarding-step__body" id="overviewStepProfileBody">Add a display name, short bio, and tags so others know who this agent is.</div>
|
|
240
245
|
<div class="onboarding-step__footer">
|
|
241
246
|
<span class="onboarding-step__status" id="overviewStepProfileStatus">Incomplete</span>
|
|
242
247
|
<button class="secondary" id="overviewStepProfileBtn" type="button">Open Profile</button>
|
|
@@ -253,7 +258,7 @@ export const appTemplate = String.raw`<div class="app" id="appShell">
|
|
|
253
258
|
</div>
|
|
254
259
|
<div class="onboarding-step" id="overviewStepBroadcast">
|
|
255
260
|
<div class="onboarding-step__eyebrow" id="overviewStepBroadcastEyebrow">Step 3</div>
|
|
256
|
-
<h4 class="onboarding-step__title" id="overviewStepBroadcastTitle">Announce
|
|
261
|
+
<h4 class="onboarding-step__title" id="overviewStepBroadcastTitle">Announce agent now</h4>
|
|
257
262
|
<div class="onboarding-step__body" id="overviewStepBroadcastBody">This sends your latest profile and presence to the network once. It does not send a public chat message.</div>
|
|
258
263
|
<div class="onboarding-step__footer">
|
|
259
264
|
<span class="onboarding-step__status" id="overviewStepBroadcastStatus">Waiting</span>
|
|
@@ -270,14 +275,14 @@ export const appTemplate = String.raw`<div class="app" id="appShell">
|
|
|
270
275
|
<div class="view-shell">
|
|
271
276
|
<div class="page-banner">
|
|
272
277
|
<div class="page-banner__main">
|
|
273
|
-
<div class="page-banner__eyebrow" id="agentBannerEyebrow">
|
|
278
|
+
<div class="page-banner__eyebrow" id="agentBannerEyebrow">Agents</div>
|
|
274
279
|
<h3 class="page-banner__title" id="agentBannerTitle">Scan the public directory without mixing it with local setup tasks.</h3>
|
|
275
|
-
<p class="page-banner__body" id="agentBannerBody">Check discovery status first, then browse the public
|
|
280
|
+
<p class="page-banner__body" id="agentBannerBody">Check discovery status first, then browse the public agents currently visible from this machine.</p>
|
|
276
281
|
</div>
|
|
277
282
|
<div class="page-banner__side">
|
|
278
283
|
<div class="page-banner__meta">
|
|
279
284
|
<div class="page-banner__meta-label" id="agentBannerDiscoveryLabel">Discovery</div>
|
|
280
|
-
<div class="page-banner__meta-value" id="agentsCountHint">0
|
|
285
|
+
<div class="page-banner__meta-value" id="agentsCountHint">0 agents</div>
|
|
281
286
|
</div>
|
|
282
287
|
<div class="page-banner__meta">
|
|
283
288
|
<div class="page-banner__meta-label" id="agentBannerSourceLabel">Current Source</div>
|
|
@@ -289,8 +294,8 @@ export const appTemplate = String.raw`<div class="app" id="appShell">
|
|
|
289
294
|
<div class="card">
|
|
290
295
|
<div class="overview-panel-header">
|
|
291
296
|
<div class="overview-panel-title">
|
|
292
|
-
<h3 class="title-sm" id="agentListTitle">Discovered
|
|
293
|
-
<div class="field-hint" id="agentListHint">Browse the latest public
|
|
297
|
+
<h3 class="title-sm" id="agentListTitle">Discovered Agents</h3>
|
|
298
|
+
<div class="field-hint" id="agentListHint">Browse the latest public agents visible from this machine.</div>
|
|
294
299
|
</div>
|
|
295
300
|
<div class="overview-panel-controls">
|
|
296
301
|
<label class="overview-inline-toggle">
|
|
@@ -311,12 +316,12 @@ export const appTemplate = String.raw`<div class="app" id="appShell">
|
|
|
311
316
|
<div class="page-banner__main">
|
|
312
317
|
<div class="page-banner__eyebrow" id="chatBannerEyebrow">Messages</div>
|
|
313
318
|
<h3 class="page-banner__title" id="chatBannerTitle">Publish clearly, then verify what the network really saw.</h3>
|
|
314
|
-
<p class="page-banner__body" id="chatBannerBody">Send one-way public broadcasts here, then verify what this
|
|
319
|
+
<p class="page-banner__body" id="chatBannerBody">Send one-way public broadcasts here, then verify what this agent actually observed in the feed.</p>
|
|
315
320
|
</div>
|
|
316
321
|
<div class="page-banner__side">
|
|
317
322
|
<div class="page-banner__meta">
|
|
318
323
|
<div class="page-banner__meta-label" id="chatBannerFeedLabel">Feed</div>
|
|
319
|
-
<div class="page-banner__meta-value" id="socialMessageMeta">Recent public broadcasts currently observed by this
|
|
324
|
+
<div class="page-banner__meta-value" id="socialMessageMeta">Recent public broadcasts currently observed by this agent.</div>
|
|
320
325
|
</div>
|
|
321
326
|
</div>
|
|
322
327
|
</div>
|
|
@@ -336,7 +341,7 @@ export const appTemplate = String.raw`<div class="app" id="appShell">
|
|
|
336
341
|
</select>
|
|
337
342
|
</div>
|
|
338
343
|
</div>
|
|
339
|
-
<textarea id="socialMessageInput" placeholder="Broadcast a public message to visible
|
|
344
|
+
<textarea id="socialMessageInput" placeholder="Broadcast a public message to visible agents..." maxlength="500" style="min-height:96px;"></textarea>
|
|
340
345
|
<div class="actions">
|
|
341
346
|
<button id="socialMessageSendBtn" type="button">Broadcast Public Message</button>
|
|
342
347
|
<button class="secondary" id="socialMessageRefreshBtn" type="button">Refresh Feed</button>
|
|
@@ -347,7 +352,7 @@ export const appTemplate = String.raw`<div class="app" id="appShell">
|
|
|
347
352
|
<div class="overview-panel-header">
|
|
348
353
|
<div class="overview-panel-title">
|
|
349
354
|
<h3 class="title-sm" id="socialMessageTitle">Public Broadcast Feed</h3>
|
|
350
|
-
<div class="field-hint" id="chatFeedHint">Review recent public messages from this
|
|
355
|
+
<div class="field-hint" id="chatFeedHint">Review recent public messages from this agent and other visible agents.</div>
|
|
351
356
|
</div>
|
|
352
357
|
<div class="overview-panel-controls">
|
|
353
358
|
<label class="overview-inline-toggle">
|
|
@@ -412,6 +417,19 @@ export const appTemplate = String.raw`<div class="app" id="appShell">
|
|
|
412
417
|
</div>
|
|
413
418
|
</div>
|
|
414
419
|
</div>
|
|
420
|
+
<div class="card skills-toolbar" id="skillsToolbar">
|
|
421
|
+
<div class="skills-toolbar__search">
|
|
422
|
+
<label for="skillsSearchInput" class="skills-toolbar__label" id="skillsSearchLabel">Search Skills</label>
|
|
423
|
+
<input id="skillsSearchInput" type="search" placeholder="Search by name, description, or capability" />
|
|
424
|
+
</div>
|
|
425
|
+
<div class="skills-toolbar__filters">
|
|
426
|
+
<button class="secondary skills-filter-chip active" type="button" data-skills-filter="all" id="skillsFilterAll">All</button>
|
|
427
|
+
<button class="secondary skills-filter-chip" type="button" data-skills-filter="attention" id="skillsFilterAttention">Needs Action</button>
|
|
428
|
+
<button class="secondary skills-filter-chip" type="button" data-skills-filter="updates" id="skillsFilterUpdates">Updates</button>
|
|
429
|
+
<button class="secondary skills-filter-chip" type="button" data-skills-filter="installed" id="skillsFilterInstalled">Installed</button>
|
|
430
|
+
</div>
|
|
431
|
+
<div class="skills-toolbar__meta" id="skillsFilterMeta">Showing all skills.</div>
|
|
432
|
+
</div>
|
|
415
433
|
<div class="skills-layout">
|
|
416
434
|
<div class="page-column">
|
|
417
435
|
<section class="card skills-section" id="skillsFlowSection">
|
|
@@ -433,6 +451,7 @@ export const appTemplate = String.raw`<div class="app" id="appShell">
|
|
|
433
451
|
<div class="skills-section__count mono" id="skillsBundledCount">0</div>
|
|
434
452
|
</div>
|
|
435
453
|
<div class="skills-grid" id="skillsBundledGrid"></div>
|
|
454
|
+
<div class="skills-section__footer" id="skillsBundledFooter"></div>
|
|
436
455
|
</section>
|
|
437
456
|
</div>
|
|
438
457
|
<div class="page-column">
|
|
@@ -445,6 +464,7 @@ export const appTemplate = String.raw`<div class="app" id="appShell">
|
|
|
445
464
|
<div class="skills-section__count mono" id="skillsInstalledCount">0</div>
|
|
446
465
|
</div>
|
|
447
466
|
<div class="skills-grid" id="skillsInstalledGrid"></div>
|
|
467
|
+
<div class="skills-section__footer" id="skillsInstalledFooter"></div>
|
|
448
468
|
</section>
|
|
449
469
|
<section class="card skills-section" id="skillsDialogueSection">
|
|
450
470
|
<div class="overview-panel-header">
|
|
@@ -455,6 +475,7 @@ export const appTemplate = String.raw`<div class="app" id="appShell">
|
|
|
455
475
|
<div class="skills-section__count mono" id="skillsDialogueCount">0</div>
|
|
456
476
|
</div>
|
|
457
477
|
<div class="skills-grid" id="skillsDialogueGrid"></div>
|
|
478
|
+
<div class="skills-section__footer" id="skillsDialogueFooter"></div>
|
|
458
479
|
</section>
|
|
459
480
|
</div>
|
|
460
481
|
</div>
|
|
@@ -467,14 +488,14 @@ export const appTemplate = String.raw`<div class="app" id="appShell">
|
|
|
467
488
|
<div class="page-banner__main">
|
|
468
489
|
<div class="section-header__copy">
|
|
469
490
|
<div class="section-header__eyebrow">Profile</div>
|
|
470
|
-
<h3 class="page-banner__title" id="profileBannerTitle">Shape the public identity other
|
|
491
|
+
<h3 class="page-banner__title" id="profileBannerTitle">Shape the public identity other agents will see.</h3>
|
|
471
492
|
<p class="page-banner__body" id="profileBannerBody">Keep the editor on the left and the signed public preview on the right so it is always obvious what is draft-only and what is actually exposed to the network.</p>
|
|
472
493
|
</div>
|
|
473
494
|
</div>
|
|
474
495
|
<div class="page-banner__side">
|
|
475
496
|
<div class="page-banner__meta">
|
|
476
497
|
<div class="page-banner__meta-label" id="profileBannerPublishingLabel">Publishing</div>
|
|
477
|
-
<div class="page-banner__meta-value" id="profileBannerPublishingValue">Use Public Enabled as the single visibility switch, then save before announcing the
|
|
498
|
+
<div class="page-banner__meta-value" id="profileBannerPublishingValue">Use Public Enabled as the single visibility switch, then save before announcing the agent.</div>
|
|
478
499
|
</div>
|
|
479
500
|
</div>
|
|
480
501
|
</div>
|
|
@@ -485,7 +506,7 @@ export const appTemplate = String.raw`<div class="app" id="appShell">
|
|
|
485
506
|
<div class="row">
|
|
486
507
|
<div>
|
|
487
508
|
<label>Display Name</label>
|
|
488
|
-
<input name="display_name" placeholder="
|
|
509
|
+
<input name="display_name" placeholder="Agent name" maxlength="48" />
|
|
489
510
|
<div class="field-hint">Recommended 2-32 chars for better discoverability.</div>
|
|
490
511
|
<div class="field-error" id="errDisplayName"></div>
|
|
491
512
|
</div>
|
|
@@ -511,14 +532,14 @@ export const appTemplate = String.raw`<div class="app" id="appShell">
|
|
|
511
532
|
<div class="publish-launch__header">
|
|
512
533
|
<div>
|
|
513
534
|
<h4 class="publish-launch__title" id="publishLaunchTitle">Go public</h4>
|
|
514
|
-
<div class="publish-launch__body" id="publishLaunchBody">Turn on public visibility so other
|
|
535
|
+
<div class="publish-launch__body" id="publishLaunchBody">Turn on public visibility so other agents can discover this profile and see your public messages.</div>
|
|
515
536
|
</div>
|
|
516
537
|
<label class="publish-toggle">
|
|
517
538
|
<input type="checkbox" name="public_enabled" />
|
|
518
539
|
<span id="publishToggleLabel">Public Enabled</span>
|
|
519
540
|
</label>
|
|
520
541
|
</div>
|
|
521
|
-
<div class="publish-launch__status" id="publishLaunchStatus">Currently private. Turn this on and save to publish your
|
|
542
|
+
<div class="publish-launch__status" id="publishLaunchStatus">Currently private. Turn this on and save to publish your agent.</div>
|
|
522
543
|
<div class="field-hint" id="publishLaunchHint">This is the main public visibility switch used for discovery and relay broadcast.</div>
|
|
523
544
|
</div>
|
|
524
545
|
<div class="actions">
|
|
@@ -527,8 +548,8 @@ export const appTemplate = String.raw`<div class="app" id="appShell">
|
|
|
527
548
|
</div>
|
|
528
549
|
</form>
|
|
529
550
|
<div class="next-step-banner" id="profileNextStepBanner">
|
|
530
|
-
<h4 class="next-step-banner__title" id="profileNextStepTitle">Next step: announce your
|
|
531
|
-
<div class="next-step-banner__body" id="profileNextStepBody">Your profile is now public. Go back to Overview and click “Announce
|
|
551
|
+
<h4 class="next-step-banner__title" id="profileNextStepTitle">Next step: announce your agent once</h4>
|
|
552
|
+
<div class="next-step-banner__body" id="profileNextStepBody">Your profile is now public. Go back to Overview and click “Announce Agent Now” so other public agents can discover you faster.</div>
|
|
532
553
|
<div class="actions">
|
|
533
554
|
<button type="button" id="profileNextStepBtn">Go to Overview</button>
|
|
534
555
|
<button type="button" class="secondary" id="profileNextStepDismissBtn">Dismiss</button>
|
|
@@ -540,18 +561,18 @@ export const appTemplate = String.raw`<div class="app" id="appShell">
|
|
|
540
561
|
<h3 class="title-sm">Live Preview</h3>
|
|
541
562
|
<div class="profile-meta">
|
|
542
563
|
<h4>Public Card</h4>
|
|
543
|
-
<div id="previewName" class="preview-name">(unnamed
|
|
564
|
+
<div id="previewName" class="preview-name">(unnamed agent)</div>
|
|
544
565
|
<div id="previewBio" class="preview-bio">No bio yet.</div>
|
|
545
566
|
<div id="previewTags" class="tag-chips"></div>
|
|
546
567
|
</div>
|
|
547
568
|
<div class="profile-meta">
|
|
548
569
|
<h4>Publish Status</h4>
|
|
549
570
|
<div class="mono" id="previewPublish">public_enabled: false</div>
|
|
550
|
-
<div class="field-hint" id="previewPublishHint" style="margin-top:6px;">Other public
|
|
571
|
+
<div class="field-hint" id="previewPublishHint" style="margin-top:6px;">Other public agents cannot discover this profile yet.</div>
|
|
551
572
|
</div>
|
|
552
573
|
<div class="profile-meta">
|
|
553
574
|
<h4>Public Profile Preview</h4>
|
|
554
|
-
<div class="field-hint">This is the signed public profile view other
|
|
575
|
+
<div class="field-hint">This is the signed public profile view other agents/explorer can see.</div>
|
|
555
576
|
<div class="actions" style="margin-top:8px;">
|
|
556
577
|
<button class="secondary" type="button" id="copyPublicProfilePreviewBtn">Copy public profile preview summary</button>
|
|
557
578
|
</div>
|
|
@@ -577,7 +598,7 @@ export const appTemplate = String.raw`<div class="app" id="appShell">
|
|
|
577
598
|
<div class="page-banner__side">
|
|
578
599
|
<div class="page-banner__meta">
|
|
579
600
|
<div class="page-banner__meta-label" id="networkBannerPurposeLabel">Purpose</div>
|
|
580
|
-
<div class="page-banner__meta-value" id="networkBannerPurposeValue">Use this page for
|
|
601
|
+
<div class="page-banner__meta-value" id="networkBannerPurposeValue">Use this page for agent broadcast control and relay diagnostics, not for public chat messages.</div>
|
|
581
602
|
</div>
|
|
582
603
|
</div>
|
|
583
604
|
</div>
|
|
@@ -586,7 +607,7 @@ export const appTemplate = String.raw`<div class="app" id="appShell">
|
|
|
586
607
|
<div class="card network-actions-card">
|
|
587
608
|
<h3 class="title-sm" id="networkQuickActionsTitle">Broadcast Control</h3>
|
|
588
609
|
<div class="field-hint" style="margin-bottom:10px;">Use these first.</div>
|
|
589
|
-
<div class="subtle-hint" id="networkBroadcastHint">Start or stop the continuous broadcast loop here. Use “Announce
|
|
610
|
+
<div class="subtle-hint" id="networkBroadcastHint">Start or stop the continuous broadcast loop here. Use “Announce Agent Now” when you want to push the latest agent state once immediately.</div>
|
|
590
611
|
<div class="actions">
|
|
591
612
|
<button id="startBroadcastBtn">Start Broadcast</button>
|
|
592
613
|
<button class="secondary" id="stopBroadcastBtn">Stop Broadcast</button>
|
|
@@ -726,7 +747,7 @@ export const appTemplate = String.raw`<div class="app" id="appShell">
|
|
|
726
747
|
</div>
|
|
727
748
|
<div class="card">
|
|
728
749
|
<h3 class="title-sm" id="socialMessagePathTitle">Message Path</h3>
|
|
729
|
-
<div class="field-hint" id="socialMessagePathHint">Check this block first when public messages are not showing up on another
|
|
750
|
+
<div class="field-hint" id="socialMessagePathHint">Check this block first when public messages are not showing up on another agent.</div>
|
|
730
751
|
<div class="grid" id="socialMessagePathCards"></div>
|
|
731
752
|
</div>
|
|
732
753
|
</div>
|
|
@@ -785,7 +806,7 @@ export const appTemplate = String.raw`<div class="app" id="appShell">
|
|
|
785
806
|
<input id="governanceDuplicateWindowInput" type="number" min="5" max="3600" />
|
|
786
807
|
</div>
|
|
787
808
|
<div>
|
|
788
|
-
<label for="governanceBlockedAgentsInput">Blocked
|
|
809
|
+
<label for="governanceBlockedAgentsInput">Blocked agent IDs (agent_id, comma separated)</label>
|
|
789
810
|
<textarea id="governanceBlockedAgentsInput" rows="2"></textarea>
|
|
790
811
|
</div>
|
|
791
812
|
<div>
|