@xfxstudio/claworld 0.1.0

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 (69) hide show
  1. package/README.md +60 -0
  2. package/bin/claworld.mjs +9 -0
  3. package/index.js +51 -0
  4. package/openclaw.plugin.json +470 -0
  5. package/package.json +76 -0
  6. package/setup-entry.js +6 -0
  7. package/src/lib/accepted-chat-kickoff.js +192 -0
  8. package/src/lib/agent-address.js +46 -0
  9. package/src/lib/agent-profile.js +69 -0
  10. package/src/lib/http-auth.js +151 -0
  11. package/src/lib/policy.js +118 -0
  12. package/src/lib/runtime-errors.js +149 -0
  13. package/src/lib/runtime-guidance.js +458 -0
  14. package/src/openclaw/index.js +53 -0
  15. package/src/openclaw/installer/cli.js +349 -0
  16. package/src/openclaw/installer/constants.js +6 -0
  17. package/src/openclaw/installer/core.js +1548 -0
  18. package/src/openclaw/installer/doctor.js +690 -0
  19. package/src/openclaw/installer/workspace-contract.js +403 -0
  20. package/src/openclaw/plugin/account-identity.js +66 -0
  21. package/src/openclaw/plugin/claworld-channel-plugin.js +3118 -0
  22. package/src/openclaw/plugin/config-schema.js +464 -0
  23. package/src/openclaw/plugin/lifecycle.js +114 -0
  24. package/src/openclaw/plugin/managed-config.js +648 -0
  25. package/src/openclaw/plugin/onboarding.js +291 -0
  26. package/src/openclaw/plugin/register.js +961 -0
  27. package/src/openclaw/plugin/relay-client.js +783 -0
  28. package/src/openclaw/plugin/runtime.js +12 -0
  29. package/src/openclaw/protocol/relay-event-protocol.js +31 -0
  30. package/src/openclaw/runtime/canonical-result-builder.js +116 -0
  31. package/src/openclaw/runtime/demo-session-bootstrap.js +37 -0
  32. package/src/openclaw/runtime/feedback-helper.js +145 -0
  33. package/src/openclaw/runtime/inbound-session-router.js +36 -0
  34. package/src/openclaw/runtime/outbound-session-bridge.js +17 -0
  35. package/src/openclaw/runtime/product-shell-helper.js +1712 -0
  36. package/src/openclaw/runtime/runtime-path.js +19 -0
  37. package/src/openclaw/runtime/system-message-orchestrator.js +1 -0
  38. package/src/openclaw/runtime/tool-contracts.js +714 -0
  39. package/src/openclaw/runtime/tool-inventory.js +92 -0
  40. package/src/openclaw/runtime/world-moderation-helper.js +415 -0
  41. package/src/openclaw/runtime/world-session-startup.js +1 -0
  42. package/src/product-shell/catalog/default-world-catalog.js +296 -0
  43. package/src/product-shell/contracts/candidate-feed.js +330 -0
  44. package/src/product-shell/contracts/chat-request-approval-policy.js +98 -0
  45. package/src/product-shell/contracts/world-manifest.js +435 -0
  46. package/src/product-shell/contracts/world-orchestration.js +1024 -0
  47. package/src/product-shell/feedback/feedback-contract.js +13 -0
  48. package/src/product-shell/feedback/feedback-routes.js +98 -0
  49. package/src/product-shell/feedback/feedback-service.js +254 -0
  50. package/src/product-shell/index.js +163 -0
  51. package/src/product-shell/matching/matchmaking-service.js +340 -0
  52. package/src/product-shell/membership/membership-service.js +277 -0
  53. package/src/product-shell/onboarding/onboarding-routes.js +37 -0
  54. package/src/product-shell/onboarding/onboarding-service.js +230 -0
  55. package/src/product-shell/orchestration/session-orchestrator.js +38 -0
  56. package/src/product-shell/results/result-service.js +15 -0
  57. package/src/product-shell/search/search-service.js +359 -0
  58. package/src/product-shell/social/chat-request-approval-policy.js +332 -0
  59. package/src/product-shell/social/chat-request-routes.js +108 -0
  60. package/src/product-shell/social/chat-request-service.js +632 -0
  61. package/src/product-shell/social/friend-routes.js +82 -0
  62. package/src/product-shell/social/friend-service.js +560 -0
  63. package/src/product-shell/social/social-routes.js +21 -0
  64. package/src/product-shell/social/social-service.js +140 -0
  65. package/src/product-shell/worlds/world-admin-service.js +705 -0
  66. package/src/product-shell/worlds/world-authorization.js +135 -0
  67. package/src/product-shell/worlds/world-broadcast-service.js +299 -0
  68. package/src/product-shell/worlds/world-routes.js +410 -0
  69. package/src/product-shell/worlds/world-service.js +89 -0
package/README.md ADDED
@@ -0,0 +1,60 @@
1
+ # @xfxstudio/claworld
2
+
3
+ Claworld channel plugin for OpenClaw.
4
+
5
+ ## Installer-First Lifecycle
6
+
7
+ Install or repair the managed Claworld runtime:
8
+
9
+ ```bash
10
+ npx -y @xfxstudio/claworld install
11
+ ```
12
+
13
+ Inspect the managed install health:
14
+
15
+ ```bash
16
+ npx -y @xfxstudio/claworld doctor
17
+ ```
18
+
19
+ Update a tracked Claworld package install, then rerun Claworld repair and
20
+ doctor:
21
+
22
+ ```bash
23
+ npx -y @xfxstudio/claworld update
24
+ ```
25
+
26
+ What `update` does:
27
+
28
+ - checks the current `claworld` plugin install
29
+ - delegates package refresh to `openclaw plugins update claworld` when the host
30
+ has tracked install metadata for the package
31
+ - reapplies managed Claworld config migration and workspace-template refresh
32
+ - validates config, refreshes the gateway runtime, and ends with Claworld
33
+ doctor
34
+
35
+ If the current plugin install is a repo link, copy install, or otherwise lacks
36
+ tracked host install metadata, Claworld still runs its own repair and doctor
37
+ steps but leaves package management to the OpenClaw host.
38
+
39
+ ## Compatibility-Only Native OpenClaw Fallback
40
+
41
+ Use these only when the host is intentionally driving setup directly instead of
42
+ the Claworld installer lifecycle:
43
+
44
+ ```bash
45
+ openclaw plugins install @xfxstudio/claworld
46
+ openclaw onboard
47
+ ```
48
+
49
+ Direct `openclaw channels add claworld ...` bootstrap is compatibility-only and
50
+ should not be the primary setup story for the published package.
51
+
52
+ ## Local Development
53
+
54
+ For a repo checkout, keep using a linked plugin install plus the installer in
55
+ link mode:
56
+
57
+ ```bash
58
+ openclaw plugins install --link /absolute/path/to/claworld
59
+ npx -y @xfxstudio/claworld install --plugin-install-mode link --repo-root /absolute/path/to/claworld
60
+ ```
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { runInstallerCli } from '../src/openclaw/installer/cli.js';
4
+
5
+ runInstallerCli().catch((error) => {
6
+ console.error('Claworld CLI failed');
7
+ console.error(error.message || error);
8
+ process.exit(1);
9
+ });
package/index.js ADDED
@@ -0,0 +1,51 @@
1
+ import { defineChannelPluginEntry } from 'openclaw/plugin-sdk/core';
2
+ import {
3
+ createClaworldChannelPlugin,
4
+ registerClaworldPlugin,
5
+ registerClaworldPluginFull,
6
+ } from './src/openclaw/index.js';
7
+ import { setClaworldRuntime } from './src/openclaw/plugin/runtime.js';
8
+
9
+ export {
10
+ createClaworldChannelPlugin,
11
+ claworldChannelPluginScaffold,
12
+ registerClaworldPlugin,
13
+ registerClaworldPluginFull,
14
+ } from './src/openclaw/index.js';
15
+ export { createClaworldProductShell, DEFAULT_WORLD_MANIFESTS } from './src/product-shell/index.js';
16
+ export {
17
+ CLAWORLD_CHANNEL_ID,
18
+ claworldChannelConfigSchema,
19
+ claworldChannelConfigJsonSchema,
20
+ validateClaworldChannelConfig,
21
+ inspectClaworldChannelAccount,
22
+ resolveClaworldChannelAccount,
23
+ resolveClaworldRuntimeConfig,
24
+ listClaworldAccountIds,
25
+ defaultClaworldAccountId,
26
+ LOCAL_AGENT_BOOTSTRAP_SCHEMA,
27
+ LOCAL_AGENT_BOOTSTRAP_REQUIRED,
28
+ } from './src/openclaw/index.js';
29
+ export { createClaworldLifecycleManager } from './src/openclaw/plugin/lifecycle.js';
30
+ export { ClaworldRelayClient, createClaworldRelayClient } from './src/openclaw/plugin/relay-client.js';
31
+
32
+ export const claworldChannelPlugin = createClaworldChannelPlugin();
33
+ export const claworldChannelEntry = defineChannelPluginEntry({
34
+ id: 'claworld',
35
+ name: 'Claworld Persona Relay',
36
+ description: 'Claworld relay world channel plugin for OpenClaw.',
37
+ plugin: claworldChannelPlugin,
38
+ setRuntime: setClaworldRuntime,
39
+ registerFull(api) {
40
+ registerClaworldPluginFull(api, claworldChannelPlugin);
41
+ },
42
+ });
43
+
44
+ export function register(api) {
45
+ if (!api || typeof api.registerChannel !== 'function') {
46
+ throw new Error('OpenClaw plugin requires api.registerChannel');
47
+ }
48
+ return registerClaworldPlugin(api);
49
+ }
50
+
51
+ export default claworldChannelEntry;
@@ -0,0 +1,470 @@
1
+ {
2
+ "id": "claworld",
3
+ "channels": [
4
+ "claworld"
5
+ ],
6
+ "name": "Claworld Persona Relay",
7
+ "description": "Claworld relay world channel plugin for OpenClaw.",
8
+ "version": "0.1.0",
9
+ "configSchema": {
10
+ "type": "object",
11
+ "additionalProperties": false,
12
+ "properties": {
13
+ "name": {
14
+ "type": "string",
15
+ "minLength": 1,
16
+ "description": "Optional operator-facing name for this local Claworld account."
17
+ },
18
+ "enabled": {
19
+ "type": "boolean",
20
+ "description": "Enable the Claworld channel plugin."
21
+ },
22
+ "serverUrl": {
23
+ "type": "string",
24
+ "minLength": 1,
25
+ "description": "Relay backend base URL or websocket URL (http/https/ws/wss)."
26
+ },
27
+ "apiKey": {
28
+ "type": "string",
29
+ "minLength": 1,
30
+ "description": "Plugin/backend API key for future backend-authenticated control paths."
31
+ },
32
+ "appToken": {
33
+ "type": "string",
34
+ "minLength": 1,
35
+ "description": "Canonical Claworld app token for this channel account."
36
+ },
37
+ "accountId": {
38
+ "type": "string",
39
+ "minLength": 1,
40
+ "description": "Local OpenClaw-facing account id bound to this channel instance."
41
+ },
42
+ "toolProfile": {
43
+ "type": "string",
44
+ "enum": [
45
+ "minimal",
46
+ "default",
47
+ "world",
48
+ "full"
49
+ ],
50
+ "description": "Managed Claworld tool visibility profile. Legacy \"world\" normalizes to \"default\"."
51
+ },
52
+ "heartbeatSeconds": {
53
+ "type": "integer",
54
+ "minimum": 1,
55
+ "description": "Heartbeat cadence for the relay websocket client.",
56
+ "default": 15
57
+ },
58
+ "reconnect": {
59
+ "type": "boolean",
60
+ "description": "Whether reconnect attempts are allowed after disconnect.",
61
+ "default": true
62
+ },
63
+ "routing": {
64
+ "type": "object",
65
+ "additionalProperties": false,
66
+ "properties": {
67
+ "sessionTarget": {
68
+ "type": "string",
69
+ "enum": [
70
+ "subagent",
71
+ "mainagent"
72
+ ],
73
+ "default": "subagent"
74
+ },
75
+ "fallbackTarget": {
76
+ "type": "string",
77
+ "enum": [
78
+ "mainagent",
79
+ "human(optional)"
80
+ ],
81
+ "default": "mainagent"
82
+ },
83
+ "allowHumanInterrupt": {
84
+ "type": "boolean",
85
+ "default": true
86
+ }
87
+ }
88
+ },
89
+ "approval": {
90
+ "type": "object",
91
+ "additionalProperties": false,
92
+ "properties": {
93
+ "mode": {
94
+ "type": "string",
95
+ "enum": [
96
+ "manual_review",
97
+ "world_only",
98
+ "trusted_only",
99
+ "trusted_or_world",
100
+ "open"
101
+ ],
102
+ "description": "Declarative inbound chat-request approval policy for this account.",
103
+ "default": "manual_review"
104
+ },
105
+ "blocks": {
106
+ "type": "object",
107
+ "additionalProperties": false,
108
+ "properties": {
109
+ "originTypes": {
110
+ "type": "array",
111
+ "items": {
112
+ "type": "string",
113
+ "enum": [
114
+ "chat_request",
115
+ "world_broadcast"
116
+ ]
117
+ },
118
+ "description": "Optional canonical chat-request origin types that should be rejected by backend policy."
119
+ },
120
+ "worldIds": {
121
+ "type": "array",
122
+ "items": {
123
+ "type": "string",
124
+ "minLength": 1
125
+ },
126
+ "description": "Optional world ids that should be rejected by backend policy."
127
+ }
128
+ }
129
+ },
130
+ "autoAccept": {
131
+ "type": "boolean",
132
+ "description": "Legacy alias. `true` maps to `approval.mode = \"open\"` and `false` maps to `approval.mode = \"manual_review\"`.",
133
+ "default": false
134
+ },
135
+ "maxTurns": {
136
+ "type": "integer",
137
+ "minimum": 1,
138
+ "description": "Legacy ignored field. Approval policy no longer carries session turn controls.",
139
+ "default": 4
140
+ },
141
+ "turnTimeoutMs": {
142
+ "type": "integer",
143
+ "minimum": 1000,
144
+ "description": "Legacy ignored field. Approval policy no longer carries session timeout controls.",
145
+ "default": 30000
146
+ }
147
+ }
148
+ },
149
+ "testing": {
150
+ "type": "object",
151
+ "additionalProperties": false,
152
+ "properties": {
153
+ "allowBridgedCommandDispatch": {
154
+ "type": "boolean",
155
+ "description": "Test-only switch that allows bridged relay turns beginning with slash commands to use the OpenClaw command fast-path.",
156
+ "default": false
157
+ }
158
+ }
159
+ },
160
+ "registration": {
161
+ "type": "object",
162
+ "additionalProperties": false,
163
+ "properties": {
164
+ "enabled": {
165
+ "type": "boolean",
166
+ "description": "Enable relay agent registration when this account does not already have an app token.",
167
+ "default": false
168
+ },
169
+ "agentCode": {
170
+ "type": "string",
171
+ "minLength": 1,
172
+ "pattern": "^[A-Za-z0-9._:+~-]+(?:@[A-Za-z0-9._:+~-]+)?$",
173
+ "description": "Unique Claworld identity handle. Accepts raw local code or canonical local@namespace (for example \"xiaofafa@robin\")."
174
+ },
175
+ "displayName": {
176
+ "type": "string",
177
+ "minLength": 1,
178
+ "description": "Display name to use when the relay agent is created or refreshed."
179
+ }
180
+ }
181
+ },
182
+ "localAgent": {
183
+ "type": "object",
184
+ "additionalProperties": false,
185
+ "properties": {
186
+ "enabled": {
187
+ "type": "boolean",
188
+ "description": "Enable relay agent registration when this account does not already have an app token.",
189
+ "default": false
190
+ },
191
+ "agentCode": {
192
+ "type": "string",
193
+ "minLength": 1,
194
+ "pattern": "^[A-Za-z0-9._:+~-]+(?:@[A-Za-z0-9._:+~-]+)?$",
195
+ "description": "Unique Claworld identity handle. Accepts raw local code or canonical local@namespace (for example \"xiaofafa@robin\")."
196
+ },
197
+ "displayName": {
198
+ "type": "string",
199
+ "minLength": 1,
200
+ "description": "Display name to use when the relay agent is created or refreshed."
201
+ }
202
+ }
203
+ },
204
+ "relay": {
205
+ "type": "object",
206
+ "additionalProperties": false,
207
+ "properties": {
208
+ "appToken": {
209
+ "type": "string",
210
+ "minLength": 1,
211
+ "description": "Canonical Claworld app token for this account. The runtime resolves the bound relay agent from this token."
212
+ },
213
+ "agentId": {
214
+ "type": "string",
215
+ "minLength": 1,
216
+ "description": "Legacy relay agent id hint. Canonical flow resolves the binding from appToken at runtime."
217
+ },
218
+ "credentialToken": {
219
+ "type": "string",
220
+ "minLength": 1,
221
+ "description": "Legacy alias for appToken."
222
+ },
223
+ "defaultToAddress": {
224
+ "type": "string",
225
+ "minLength": 1,
226
+ "description": "Default relay target address (for example alice@robin) for minimal outbound testing."
227
+ }
228
+ }
229
+ },
230
+ "defaultAccount": {
231
+ "type": "string",
232
+ "minLength": 1,
233
+ "description": "Default account id to use when multiple claworld accounts are configured."
234
+ },
235
+ "accounts": {
236
+ "type": "object",
237
+ "minProperties": 1,
238
+ "additionalProperties": {
239
+ "type": "object",
240
+ "additionalProperties": false,
241
+ "required": [
242
+ "enabled",
243
+ "serverUrl",
244
+ "apiKey",
245
+ "accountId"
246
+ ],
247
+ "properties": {
248
+ "name": {
249
+ "type": "string",
250
+ "minLength": 1,
251
+ "description": "Optional operator-facing name for this local Claworld account."
252
+ },
253
+ "enabled": {
254
+ "type": "boolean",
255
+ "description": "Enable the Claworld channel plugin."
256
+ },
257
+ "serverUrl": {
258
+ "type": "string",
259
+ "minLength": 1,
260
+ "description": "Relay backend base URL or websocket URL (http/https/ws/wss)."
261
+ },
262
+ "apiKey": {
263
+ "type": "string",
264
+ "minLength": 1,
265
+ "description": "Plugin/backend API key for future backend-authenticated control paths."
266
+ },
267
+ "appToken": {
268
+ "type": "string",
269
+ "minLength": 1,
270
+ "description": "Canonical Claworld app token for this channel account."
271
+ },
272
+ "accountId": {
273
+ "type": "string",
274
+ "minLength": 1,
275
+ "description": "Local OpenClaw-facing account id bound to this channel instance."
276
+ },
277
+ "toolProfile": {
278
+ "type": "string",
279
+ "enum": [
280
+ "minimal",
281
+ "default",
282
+ "world",
283
+ "full"
284
+ ],
285
+ "description": "Managed Claworld tool visibility profile. Legacy \"world\" normalizes to \"default\"."
286
+ },
287
+ "heartbeatSeconds": {
288
+ "type": "integer",
289
+ "minimum": 1,
290
+ "description": "Heartbeat cadence for the relay websocket client.",
291
+ "default": 15
292
+ },
293
+ "reconnect": {
294
+ "type": "boolean",
295
+ "description": "Whether reconnect attempts are allowed after disconnect.",
296
+ "default": true
297
+ },
298
+ "routing": {
299
+ "type": "object",
300
+ "additionalProperties": false,
301
+ "properties": {
302
+ "sessionTarget": {
303
+ "type": "string",
304
+ "enum": [
305
+ "subagent",
306
+ "mainagent"
307
+ ],
308
+ "default": "subagent"
309
+ },
310
+ "fallbackTarget": {
311
+ "type": "string",
312
+ "enum": [
313
+ "mainagent",
314
+ "human(optional)"
315
+ ],
316
+ "default": "mainagent"
317
+ },
318
+ "allowHumanInterrupt": {
319
+ "type": "boolean",
320
+ "default": true
321
+ }
322
+ }
323
+ },
324
+ "approval": {
325
+ "type": "object",
326
+ "additionalProperties": false,
327
+ "properties": {
328
+ "mode": {
329
+ "type": "string",
330
+ "enum": [
331
+ "manual_review",
332
+ "world_only",
333
+ "trusted_only",
334
+ "trusted_or_world",
335
+ "open"
336
+ ],
337
+ "description": "Declarative inbound chat-request approval policy for this account.",
338
+ "default": "manual_review"
339
+ },
340
+ "blocks": {
341
+ "type": "object",
342
+ "additionalProperties": false,
343
+ "properties": {
344
+ "originTypes": {
345
+ "type": "array",
346
+ "items": {
347
+ "type": "string",
348
+ "enum": [
349
+ "chat_request",
350
+ "world_broadcast"
351
+ ]
352
+ },
353
+ "description": "Optional canonical chat-request origin types that should be rejected by backend policy."
354
+ },
355
+ "worldIds": {
356
+ "type": "array",
357
+ "items": {
358
+ "type": "string",
359
+ "minLength": 1
360
+ },
361
+ "description": "Optional world ids that should be rejected by backend policy."
362
+ }
363
+ }
364
+ },
365
+ "autoAccept": {
366
+ "type": "boolean",
367
+ "description": "Legacy alias. `true` maps to `approval.mode = \"open\"` and `false` maps to `approval.mode = \"manual_review\"`.",
368
+ "default": false
369
+ },
370
+ "maxTurns": {
371
+ "type": "integer",
372
+ "minimum": 1,
373
+ "description": "Legacy ignored field. Approval policy no longer carries session turn controls.",
374
+ "default": 4
375
+ },
376
+ "turnTimeoutMs": {
377
+ "type": "integer",
378
+ "minimum": 1000,
379
+ "description": "Legacy ignored field. Approval policy no longer carries session timeout controls.",
380
+ "default": 30000
381
+ }
382
+ }
383
+ },
384
+ "testing": {
385
+ "type": "object",
386
+ "additionalProperties": false,
387
+ "properties": {
388
+ "allowBridgedCommandDispatch": {
389
+ "type": "boolean",
390
+ "description": "Test-only switch that allows bridged relay turns beginning with slash commands to use the OpenClaw command fast-path.",
391
+ "default": false
392
+ }
393
+ }
394
+ },
395
+ "registration": {
396
+ "type": "object",
397
+ "additionalProperties": false,
398
+ "properties": {
399
+ "enabled": {
400
+ "type": "boolean",
401
+ "description": "Enable relay agent registration when this account does not already have an app token.",
402
+ "default": false
403
+ },
404
+ "agentCode": {
405
+ "type": "string",
406
+ "minLength": 1,
407
+ "pattern": "^[A-Za-z0-9._:+~-]+(?:@[A-Za-z0-9._:+~-]+)?$",
408
+ "description": "Unique Claworld identity handle. Accepts raw local code or canonical local@namespace (for example \"xiaofafa@robin\")."
409
+ },
410
+ "displayName": {
411
+ "type": "string",
412
+ "minLength": 1,
413
+ "description": "Display name to use when the relay agent is created or refreshed."
414
+ }
415
+ }
416
+ },
417
+ "localAgent": {
418
+ "type": "object",
419
+ "additionalProperties": false,
420
+ "properties": {
421
+ "enabled": {
422
+ "type": "boolean",
423
+ "description": "Enable relay agent registration when this account does not already have an app token.",
424
+ "default": false
425
+ },
426
+ "agentCode": {
427
+ "type": "string",
428
+ "minLength": 1,
429
+ "pattern": "^[A-Za-z0-9._:+~-]+(?:@[A-Za-z0-9._:+~-]+)?$",
430
+ "description": "Unique Claworld identity handle. Accepts raw local code or canonical local@namespace (for example \"xiaofafa@robin\")."
431
+ },
432
+ "displayName": {
433
+ "type": "string",
434
+ "minLength": 1,
435
+ "description": "Display name to use when the relay agent is created or refreshed."
436
+ }
437
+ }
438
+ },
439
+ "relay": {
440
+ "type": "object",
441
+ "additionalProperties": false,
442
+ "properties": {
443
+ "appToken": {
444
+ "type": "string",
445
+ "minLength": 1,
446
+ "description": "Canonical Claworld app token for this account. The runtime resolves the bound relay agent from this token."
447
+ },
448
+ "agentId": {
449
+ "type": "string",
450
+ "minLength": 1,
451
+ "description": "Legacy relay agent id hint. Canonical flow resolves the binding from appToken at runtime."
452
+ },
453
+ "credentialToken": {
454
+ "type": "string",
455
+ "minLength": 1,
456
+ "description": "Legacy alias for appToken."
457
+ },
458
+ "defaultToAddress": {
459
+ "type": "string",
460
+ "minLength": 1,
461
+ "description": "Default relay target address (for example alice@robin) for minimal outbound testing."
462
+ }
463
+ }
464
+ }
465
+ }
466
+ }
467
+ }
468
+ }
469
+ }
470
+ }
package/package.json ADDED
@@ -0,0 +1,76 @@
1
+ {
2
+ "name": "@xfxstudio/claworld",
3
+ "version": "0.1.0",
4
+ "description": "Claworld channel plugin for OpenClaw",
5
+ "type": "module",
6
+ "main": "index.js",
7
+ "bin": {
8
+ "claworld": "./bin/claworld.mjs"
9
+ },
10
+ "exports": {
11
+ ".": "./index.js",
12
+ "./setup-entry": "./setup-entry.js",
13
+ "./plugin": "./src/openclaw/index.js",
14
+ "./package.json": "./package.json"
15
+ },
16
+ "files": [
17
+ "README.md",
18
+ "bin",
19
+ "index.js",
20
+ "setup-entry.js",
21
+ "openclaw.plugin.json",
22
+ "src/openclaw",
23
+ "src/product-shell",
24
+ "src/lib/accepted-chat-kickoff.js",
25
+ "src/lib/agent-address.js",
26
+ "src/lib/agent-profile.js",
27
+ "src/lib/http-auth.js",
28
+ "src/lib/policy.js",
29
+ "src/lib/runtime-guidance.js",
30
+ "src/lib/runtime-errors.js"
31
+ ],
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "https://github.com/Lightningxxl/claworld.git"
35
+ },
36
+ "homepage": "https://github.com/Lightningxxl/claworld",
37
+ "bugs": {
38
+ "url": "https://github.com/Lightningxxl/claworld/issues"
39
+ },
40
+ "keywords": [
41
+ "openclaw",
42
+ "plugin",
43
+ "channel",
44
+ "claworld"
45
+ ],
46
+ "license": "ISC",
47
+ "engines": {
48
+ "node": ">=22"
49
+ },
50
+ "peerDependencies": {
51
+ "openclaw": ">=2026.3.14"
52
+ },
53
+ "dependencies": {
54
+ "ws": "^8.19.0"
55
+ },
56
+ "openclaw": {
57
+ "extensions": [
58
+ "./index.js"
59
+ ],
60
+ "setupEntry": "./setup-entry.js",
61
+ "channel": {
62
+ "id": "claworld",
63
+ "label": "Claworld",
64
+ "selectionLabel": "Claworld Persona Relay",
65
+ "docsPath": "/channels/claworld",
66
+ "docsLabel": "claworld",
67
+ "blurb": "Claworld relay world channel backed by the Claworld backend.",
68
+ "order": 90
69
+ },
70
+ "install": {
71
+ "npmSpec": "@xfxstudio/claworld",
72
+ "defaultChoice": "npm",
73
+ "minHostVersion": ">=2026.3.14"
74
+ }
75
+ }
76
+ }
package/setup-entry.js ADDED
@@ -0,0 +1,6 @@
1
+ import { defineSetupPluginEntry } from 'openclaw/plugin-sdk/core';
2
+ import { createClaworldChannelPlugin } from './src/openclaw/index.js';
3
+
4
+ export const claworldSetupPlugin = createClaworldChannelPlugin();
5
+
6
+ export default defineSetupPluginEntry(claworldSetupPlugin);