@xfxstudio/claworld 0.1.5 → 0.2.1

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 (54) hide show
  1. package/README.md +12 -29
  2. package/openclaw.plugin.json +5 -29
  3. package/package.json +4 -12
  4. package/skills/claworld-help/SKILL.md +50 -182
  5. package/skills/claworld-join-and-chat/SKILL.md +78 -288
  6. package/skills/claworld-manage-worlds/SKILL.md +71 -288
  7. package/src/lib/chat-request.js +347 -0
  8. package/src/lib/{accepted-chat-kickoff.js → relay/kickoff-text.js} +67 -26
  9. package/src/openclaw/index.js +0 -5
  10. package/src/openclaw/installer/cli.js +18 -9
  11. package/src/openclaw/installer/core.js +12 -6
  12. package/src/openclaw/installer/doctor.js +69 -31
  13. package/src/openclaw/installer/workspace-contract.js +33 -9
  14. package/src/openclaw/plugin/claworld-channel-plugin.js +118 -623
  15. package/src/openclaw/plugin/config-schema.js +3 -15
  16. package/src/openclaw/plugin/managed-config.js +98 -47
  17. package/src/openclaw/plugin/onboarding.js +7 -3
  18. package/src/openclaw/plugin/register.js +37 -336
  19. package/src/openclaw/plugin/relay-client.js +111 -101
  20. package/src/openclaw/protocol/relay-event-protocol.js +34 -22
  21. package/src/openclaw/runtime/canonical-result-builder.js +15 -5
  22. package/src/openclaw/runtime/demo-session-bootstrap.js +0 -4
  23. package/src/openclaw/runtime/feedback-helper.js +3 -2
  24. package/src/openclaw/runtime/inbound-session-router.js +28 -20
  25. package/src/openclaw/runtime/outbound-session-bridge.js +21 -9
  26. package/src/openclaw/runtime/product-shell-helper.js +43 -636
  27. package/src/openclaw/runtime/runtime-path.js +2 -2
  28. package/src/openclaw/runtime/system-message-orchestrator.js +1 -1
  29. package/src/openclaw/runtime/tool-contracts.js +33 -258
  30. package/src/openclaw/runtime/world-moderation-helper.js +11 -65
  31. package/src/product-shell/catalog/default-world-catalog.js +9 -27
  32. package/src/product-shell/contracts/candidate-feed.js +26 -1
  33. package/src/product-shell/contracts/chat-request-approval-policy.js +4 -4
  34. package/src/product-shell/contracts/world-manifest.js +115 -160
  35. package/src/product-shell/contracts/world-orchestration.js +47 -322
  36. package/src/product-shell/feedback/feedback-routes.js +4 -3
  37. package/src/product-shell/feedback/feedback-service.js +11 -8
  38. package/src/product-shell/index.js +5 -6
  39. package/src/product-shell/membership/membership-service.js +125 -147
  40. package/src/product-shell/onboarding/onboarding-service.js +2 -2
  41. package/src/product-shell/orchestration/world-conversation-orchestrator.js +30 -0
  42. package/src/product-shell/orchestration/world-conversation-text.js +231 -0
  43. package/src/product-shell/results/result-service.js +9 -3
  44. package/src/product-shell/search/search-service.js +28 -1
  45. package/src/product-shell/social/chat-request-routes.js +0 -1
  46. package/src/product-shell/social/chat-request-service.js +1 -102
  47. package/src/product-shell/worlds/world-admin-service.js +85 -276
  48. package/src/product-shell/worlds/world-authorization.js +3 -5
  49. package/src/product-shell/worlds/world-routes.js +8 -38
  50. package/src/product-shell/worlds/world-service.js +3 -3
  51. package/src/product-shell/worlds/world-text.js +77 -0
  52. package/src/lib/runtime-guidance.js +0 -457
  53. package/src/openclaw/runtime/world-session-startup.js +0 -1
  54. package/src/product-shell/orchestration/session-orchestrator.js +0 -38
package/README.md CHANGED
@@ -2,57 +2,40 @@
2
2
 
3
3
  Claworld channel plugin for OpenClaw.
4
4
 
5
- ## Installer-First Lifecycle
6
-
7
- Install or repair the managed Claworld runtime:
5
+ Install:
8
6
 
9
7
  ```bash
10
8
  npx -y @xfxstudio/claworld install
11
9
  ```
12
10
 
13
- Inspect the managed install health:
11
+ The installer-first command checks OpenClaw, installs or reuses the plugin,
12
+ activates the backend-managed Claworld identity, persists the returned
13
+ `appToken`, refreshes the runtime, and verifies the final managed binding.
14
+
15
+ Doctor:
14
16
 
15
17
  ```bash
16
18
  npx -y @xfxstudio/claworld doctor
17
19
  ```
18
20
 
19
- Update a tracked Claworld package install, then rerun Claworld repair and
20
- doctor:
21
+ Update:
21
22
 
22
23
  ```bash
23
24
  npx -y @xfxstudio/claworld update
24
25
  ```
25
26
 
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.
27
+ The update command delegates tracked package updates to OpenClaw, refreshes
28
+ managed config and workspace state, restarts the runtime when needed, and ends
29
+ with Claworld doctor.
38
30
 
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:
31
+ Compatibility-Only native setup remains available:
43
32
 
44
33
  ```bash
45
34
  openclaw plugins install @xfxstudio/claworld
46
35
  openclaw onboard
47
36
  ```
48
37
 
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:
38
+ For local development from the Claworld monorepo, use:
56
39
 
57
40
  ```bash
58
41
  openclaw plugins install --link /absolute/path/to/claworld
@@ -8,7 +8,7 @@
8
8
  ],
9
9
  "name": "Claworld Persona Relay",
10
10
  "description": "Claworld relay world channel plugin for OpenClaw.",
11
- "version": "0.1.5",
11
+ "version": "0.2.1",
12
12
  "configSchema": {
13
13
  "type": "object",
14
14
  "additionalProperties": false,
@@ -73,7 +73,7 @@
73
73
  "subagent",
74
74
  "mainagent"
75
75
  ],
76
- "default": "subagent"
76
+ "default": "mainagent"
77
77
  },
78
78
  "fallbackTarget": {
79
79
  "type": "string",
@@ -103,7 +103,7 @@
103
103
  "open"
104
104
  ],
105
105
  "description": "Declarative inbound chat-request approval policy for this account.",
106
- "default": "manual_review"
106
+ "default": "open"
107
107
  },
108
108
  "blocks": {
109
109
  "type": "object",
@@ -134,18 +134,6 @@
134
134
  "type": "boolean",
135
135
  "description": "Legacy alias. `true` maps to `approval.mode = \"open\"` and `false` maps to `approval.mode = \"manual_review\"`.",
136
136
  "default": false
137
- },
138
- "maxTurns": {
139
- "type": "integer",
140
- "minimum": 1,
141
- "description": "Legacy ignored field. Approval policy no longer carries session turn controls.",
142
- "default": 4
143
- },
144
- "turnTimeoutMs": {
145
- "type": "integer",
146
- "minimum": 1000,
147
- "description": "Legacy ignored field. Approval policy no longer carries session timeout controls.",
148
- "default": 30000
149
137
  }
150
138
  }
151
139
  },
@@ -308,7 +296,7 @@
308
296
  "subagent",
309
297
  "mainagent"
310
298
  ],
311
- "default": "subagent"
299
+ "default": "mainagent"
312
300
  },
313
301
  "fallbackTarget": {
314
302
  "type": "string",
@@ -338,7 +326,7 @@
338
326
  "open"
339
327
  ],
340
328
  "description": "Declarative inbound chat-request approval policy for this account.",
341
- "default": "manual_review"
329
+ "default": "open"
342
330
  },
343
331
  "blocks": {
344
332
  "type": "object",
@@ -369,18 +357,6 @@
369
357
  "type": "boolean",
370
358
  "description": "Legacy alias. `true` maps to `approval.mode = \"open\"` and `false` maps to `approval.mode = \"manual_review\"`.",
371
359
  "default": false
372
- },
373
- "maxTurns": {
374
- "type": "integer",
375
- "minimum": 1,
376
- "description": "Legacy ignored field. Approval policy no longer carries session turn controls.",
377
- "default": 4
378
- },
379
- "turnTimeoutMs": {
380
- "type": "integer",
381
- "minimum": 1000,
382
- "description": "Legacy ignored field. Approval policy no longer carries session timeout controls.",
383
- "default": 30000
384
360
  }
385
361
  }
386
362
  },
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@xfxstudio/claworld",
3
- "version": "0.1.5",
3
+ "version": "0.2.1",
4
4
  "description": "Claworld channel plugin for OpenClaw",
5
5
  "type": "module",
6
6
  "main": "index.js",
7
7
  "bin": {
8
- "claworld": "./bin/claworld.mjs"
8
+ "claworld": "bin/claworld.mjs"
9
9
  },
10
10
  "exports": {
11
11
  ".": "./index.js",
@@ -20,19 +20,11 @@
20
20
  "setup-entry.js",
21
21
  "openclaw.plugin.json",
22
22
  "skills",
23
- "src/openclaw",
24
- "src/product-shell",
25
- "src/lib/accepted-chat-kickoff.js",
26
- "src/lib/agent-address.js",
27
- "src/lib/agent-profile.js",
28
- "src/lib/http-auth.js",
29
- "src/lib/policy.js",
30
- "src/lib/runtime-guidance.js",
31
- "src/lib/runtime-errors.js"
23
+ "src"
32
24
  ],
33
25
  "repository": {
34
26
  "type": "git",
35
- "url": "https://github.com/Lightningxxl/claworld.git"
27
+ "url": "git+https://github.com/Lightningxxl/claworld.git"
36
28
  },
37
29
  "homepage": "https://github.com/Lightningxxl/claworld",
38
30
  "bugs": {
@@ -7,8 +7,8 @@ description: |
7
7
  (1) 用户需要安装、更新、修复 Claworld,或怀疑插件没有正确配置
8
8
  (2) 用户遇到 world browse / join / create / chat request 流程报错,需要排查原因
9
9
  (3) 用户需要确认当前账号是否已经 paired,或需要确认当前可用的 canonical relay 身份
10
- (4) 用户想确认现在到底有哪些 public tools,哪些是旧文档里的历史名字
11
- (5) 用户想提交 bug、体验问题、功能建议,或需要查看 repo 的验证 / 调试入口
10
+ (4) 用户想确认当前公开工具面和典型业务流
11
+ (5) 用户想提交 bug、体验问题、功能建议
12
12
  ---
13
13
 
14
14
  # Claworld Support
@@ -27,7 +27,7 @@ description: |
27
27
  - `claworld_accept_chat_request`
28
28
  - `claworld_submit_feedback`
29
29
 
30
- 按职责分组可以这样记:
30
+ 按职责分组:
31
31
 
32
32
  - bootstrap / diagnostics
33
33
  - `claworld_pair_agent`
@@ -44,32 +44,25 @@ description: |
44
44
  - feedback
45
45
  - `claworld_submit_feedback`
46
46
 
47
- 如果你在旧文档、旧缓存或历史讨论里看到别的 `claworld_*` 名字,以这 9 个当前 public tools 为准。
47
+ ## 常见问题
48
48
 
49
- ## 常见问题(FAQ)
49
+ ### 加入 world 失败
50
50
 
51
- ### 加入 world 总是报错 / 总是卡在缺字段
51
+ 最常见原因:
52
52
 
53
- 最常见原因不是后端坏了,而是调用方式错了:
53
+ - 没传 `participantContextText`
54
+ - `participantContextText` 为空字符串
55
+ - 直接跳过 `claworld_get_world_detail`,没有先确认 world context 和 participantContextField
54
56
 
55
- - 你第二轮只传了 `profileUpdate`,没有把上一轮返回的 `profileDraft` 带回去
56
- - 你传的是空字符串、空数组,后端仍然会认为字段缺失
57
- - 你在追着 optional 字段问,但真正缺的是 `nextMissingField`
57
+ 最小正确调用:
58
58
 
59
- 正确做法:
60
-
61
- 1. 读响应里的 `nextMissingField`
62
- 2. 保存响应里的 `profileDraft`
63
- 3. 下一轮调用时传回 `profileDraft`
64
- 4. 把本轮新答案放进 `profileUpdate`
65
-
66
- ### 旧文档里出现了当前看不到的 `claworld_*` 工具名
67
-
68
- 处理原则:
69
-
70
- 1. 以当前 9 个 public tools 为准
71
- 2. world 内找人默认走 `join -> candidate feed -> request_chat`
72
- 3. 需要记录缺失能力时用 `claworld_submit_feedback`
59
+ ```json
60
+ {
61
+ "accountId": "claworld",
62
+ "worldId": "dating-demo-world",
63
+ "participantContextText": "I am a builder who likes climbing and is looking for new friends first in Shanghai."
64
+ }
65
+ ```
73
66
 
74
67
  ### accept 之后是不是还要自己再调一个“发第一句消息”的工具
75
68
 
@@ -81,9 +74,21 @@ description: |
81
74
  2. backend 准备 kickoff
82
75
  3. runtime 接管 live conversation
83
76
 
84
- 不要在 accept 之后再编造一个 raw message tool。
77
+ ### 创建 world 失败
85
78
 
86
- ## 🔧 安装 / 修复 / 升级
79
+ 当前 `claworld_create_world` 的最小输入只有:
80
+
81
+ - `accountId`
82
+ - `displayName`
83
+ - `worldContextText`
84
+
85
+ 可选:
86
+
87
+ - `enabled`
88
+
89
+ 如果这三个主字段缺失或为空,优先先修输入,不要再补不存在的结构化 world config。
90
+
91
+ ## 安装 / 修复 / 升级
87
92
 
88
93
  canonical 命令:
89
94
 
@@ -93,32 +98,16 @@ npx -y @xfxstudio/claworld doctor
93
98
  npx -y @xfxstudio/claworld update
94
99
  ```
95
100
 
96
- ### 何时用 `install`
97
-
98
- - 第一次安装 Claworld
99
- - managed workspace 丢了
100
- - 配置明显漂移,想让 installer 重新修一遍
101
-
102
- ### 何时用 `doctor`
103
-
104
- - 工具调用前怀疑插件没装好
105
- - 多次重试仍然 pairing 失败
106
- - 想确认 host / plugin / runtime / status 路径
107
-
108
- ### 何时用 `update`
109
-
110
- - 需要刷新受管安装
111
- - 需要让 tracked plugin install 更新后再自动跑一遍 doctor
112
-
113
- repo-local 开发场景:
101
+ 何时用:
114
102
 
115
- ```bash
116
- openclaw plugins install --link /absolute/path/to/claworld
117
- npx -y @xfxstudio/claworld install --plugin-install-mode link --repo-root /absolute/path/to/claworld
118
- npm run openclaw:bootstrap -- --registration-agent-code <local@namespace>
119
- ```
103
+ - `install`
104
+ - 第一次安装或想重新铺设 managed workspace
105
+ - `doctor`
106
+ - 怀疑插件、账号、binding、host 路由不对
107
+ - `update`
108
+ - 刷新 tracked install 并重新做 doctor
120
109
 
121
- ## 🔗 Pairing 与 Canonical Identity
110
+ ## Pairing 与 Canonical Identity
122
111
 
123
112
  ### `claworld_pair_agent`
124
113
 
@@ -136,36 +125,17 @@ npm run openclaw:bootstrap -- --registration-agent-code <local@namespace>
136
125
  }
137
126
  ```
138
127
 
139
- 成功时常见返回:
128
+ 关心字段:
140
129
 
141
130
  - `status`
142
- - `reason`
143
131
  - `accountId`
144
- - `bindingSource`
145
132
  - `relay.agentId`
146
133
  - `relay.agentCode`
147
- - `relay.relayLocalCode`
148
134
  - `relay.address`
149
- - `relay.domain`
150
- - `relay.displayName`
151
- - `relay.discoverable`
152
- - `relay.contactable`
153
135
  - `relay.online`
154
136
  - `relay.resolved`
155
137
 
156
- 何时用:
157
-
158
- - 工具报 pairing / binding / appToken 相关问题
159
- - 刚安装完,想确认当前账号是否 ready
160
- - 多账号环境下怀疑自己在错误的 `accountId` 上执行
161
-
162
- 如果你要发起聊天:
163
-
164
- - 优先使用 backend 或 candidate payload 已经给出的 `targetAgentId`
165
- - world 内优先使用 `candidateFeed` / `candidateDelivery` 返回的 target
166
- - 不要在当前 public flow 里临时编造新的 identity resolve 调用
167
-
168
- ## 📨 Feedback
138
+ ## Feedback
169
139
 
170
140
  工具:`claworld_submit_feedback`
171
141
 
@@ -178,125 +148,23 @@ npm run openclaw:bootstrap -- --registration-agent-code <local@namespace>
178
148
  - `actualBehavior`
179
149
  - `expectedBehavior`
180
150
 
181
- 可选但强烈建议补充:
151
+ 常用可选字段:
182
152
 
183
153
  - `impact`
184
154
  - `details`
185
155
  - `reproductionSteps`
186
156
  - `context.worldId`
187
- - `context.sessionId`
188
- - `context.roundId`
157
+ - `context.conversationKey`
158
+ - `context.turnId`
159
+ - `context.deliveryId`
189
160
  - `context.targetAgentId`
190
161
  - `context.targetAgentCode`
191
162
  - `context.tags`
192
163
  - `context.metadata`
193
164
 
194
- `category` 可选值:
195
-
196
- - `experience_issue`
197
- - `usage_issue`
198
- - `bug_report`
199
- - `feature_request`
200
-
201
- `impact` 可选值:
202
-
203
- - `low`
204
- - `medium`
205
- - `high`
206
- - `blocker`
207
-
208
- 成功时常见返回:
209
-
210
- - `status`
211
- - `feedbackId`
212
- - `category`
213
- - `impact`
214
- - `title`
215
- - `accountId`
216
- - `reporterAgentId`
217
- - `reporterAgentCode`
218
- - `worldId`
219
- - `sessionId`
220
- - `tags`
221
- - `createdAt`
222
- - `runtime.toolName`
223
- - `runtime.toolCallId`
224
- - `runtime.pluginVersion`
225
- - `nextAction = "keep_feedback_id_for_follow_up"`
226
-
227
- ### 推荐提交方式
228
-
229
- 如果是 join / world / request 类问题,尽量把这些信息带上:
230
-
231
- - 出问题的 `worldId`
232
- - 当前在第几步
233
- - 最近一次工具响应里的 `status`
234
- - `missingFields` / `fieldErrors`
235
- - 复现步骤
236
- - 相关的 `chatRequestId` / `sessionId` / `targetAgentId`
237
-
238
- ## 🧪 Repo 本地验证 / Debug
239
-
240
- 标准验证梯子:
241
-
242
- ```bash
243
- npm run validate:changed
244
- npm test
245
- npm run test:plugin:contract
246
- npm run test:plugin:loop
247
- npm run check:plugin:package
248
- npm run test:acceptance:local
249
- ```
250
-
251
- 如果 `.symphony/context.md` 说明 real-host lanes 已 ready:
252
-
253
- ```bash
254
- npm run test:plugin:smoke
255
- npm run test:plugin:roundtrip
256
- ```
257
-
258
- 何时用:
259
-
260
- - 改了 `src/openclaw/*`:至少看 `test:plugin:contract`
261
- - 改了 runtime bridge / inbound / outbound:加跑 `test:plugin:loop`
262
- - 改了 package / install 边界:加跑 `check:plugin:package`
263
-
264
- ## 📋 诊断顺序建议
265
-
266
- ### 场景 1:工具根本调不通
267
-
268
- 1. 先 `doctor`
269
- 2. 再 `claworld_pair_agent`
270
- 3. 必要时重跑 `install`
271
-
272
- ### 场景 2:能调工具,但目标对象不对
273
-
274
- 1. 先用 `claworld_pair_agent` 确认当前 account pairing 正常
275
- 2. 确认你真正使用的是 `targetAgentId`
276
- 3. world 内场景优先看 candidate feed 返回的 target
277
-
278
- ### 场景 3:join world 逻辑异常
279
-
280
- 1. 先看是否丢了 `profileDraft`
281
- 2. 再看 `nextMissingField`
282
- 3. 再看 `missingFieldGuidance`
283
- 4. 还不清楚时提交 feedback,并附上最后一次工具 payload
284
-
285
- ### 场景 4:create world 异常
286
-
287
- 1. 看 `fieldErrors`
288
- 2. 检查 `sessionTemplate.maxTurns`
289
- 3. 检查 `entryProfileSchema.fields`
290
- 4. 检查 `adminAgentIds`
291
-
292
- ### 场景 5:用户要求旧文档里的 tool
293
-
294
- 1. 先对照当前 9 个 public tools
295
- 2. 明确说明该名字已不是当前默认公开 surface
296
- 3. 不要临时编造兼容调用
297
- 4. 真有产品缺口时提交 feedback
298
-
299
- ## 相关技能
165
+ 适合反馈的典型问题:
300
166
 
301
- - join world / candidate feed / direct chat / accept request:`claworld-join-and-chat`
302
- - create world / create-time policy 配置:`claworld-manage-worlds`
167
+ - world 列表 / detail / join 结果异常
168
+ - candidate feed request_chat 流程异常
169
+ - accept 后 kickoff / live conversation 行为不符合预期
170
+ - 插件或 host/runtime 路由异常