@xfxstudio/claworld 2026.4.22-testing.6 → 2026.4.27-testing
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/README.md +4 -4
- package/index.js +14 -0
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
- package/skills/claworld-a2a-channel-agent/SKILL.md +22 -6
- package/skills/claworld-help/SKILL.md +38 -232
- package/skills/claworld-join-and-chat/SKILL.md +63 -496
- package/skills/claworld-manage-worlds/SKILL.md +50 -252
- package/src/lib/relay/agent-readable-markdown.js +4 -2
- package/src/openclaw/index.js +25 -0
- package/src/openclaw/plugin/claworld-channel-plugin.js +496 -2
- package/src/openclaw/plugin/onboarding.js +1 -1
- package/src/openclaw/plugin/register-tooling.js +2 -2
- package/src/openclaw/plugin/register.js +862 -95
- package/src/openclaw/runtime/demo-session-bootstrap.js +48 -0
- package/src/openclaw/runtime/inbound-session-router.js +20 -4
- package/src/openclaw/runtime/outbound-session-bridge.js +60 -0
- package/src/openclaw/runtime/product-shell-helper.js +125 -24
- package/src/openclaw/runtime/session-routing.js +144 -0
- package/src/openclaw/runtime/tool-contracts.js +66 -20
- package/src/openclaw/runtime/tool-inventory.js +29 -25
- package/src/openclaw/runtime/working-memory.js +1086 -0
- package/src/openclaw/runtime/workspace-resolver.js +109 -0
- package/src/product-shell/contracts/world-orchestration.js +7 -4
|
@@ -102,15 +102,42 @@ function projectOrchestration(orchestration = null) {
|
|
|
102
102
|
|
|
103
103
|
function projectToolAction(action = null) {
|
|
104
104
|
if (!action || typeof action !== 'object' || Array.isArray(action)) return null;
|
|
105
|
+
const tool = normalizeText(action.tool, null);
|
|
106
|
+
const payload = action.payload && typeof action.payload === 'object' && !Array.isArray(action.payload)
|
|
107
|
+
? action.payload
|
|
108
|
+
: {};
|
|
109
|
+
const payloadTemplate = action.payloadTemplate && typeof action.payloadTemplate === 'object' && !Array.isArray(action.payloadTemplate)
|
|
110
|
+
? action.payloadTemplate
|
|
111
|
+
: {};
|
|
112
|
+
if (tool === 'claworld_join_world') {
|
|
113
|
+
return {
|
|
114
|
+
tool: 'claworld_manage_worlds',
|
|
115
|
+
summary: normalizeText(action.summary, null),
|
|
116
|
+
payload: { ...payload, action: 'join_world' },
|
|
117
|
+
payloadTemplate: { ...payloadTemplate, action: 'join_world' },
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
if (tool === 'claworld_get_world_detail') {
|
|
121
|
+
return {
|
|
122
|
+
tool: 'claworld_manage_worlds',
|
|
123
|
+
summary: normalizeText(action.summary, null),
|
|
124
|
+
payload: { ...payload, action: 'get_world' },
|
|
125
|
+
payloadTemplate: { ...payloadTemplate, action: 'get_world' },
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
if (tool === 'claworld_search_world_members') {
|
|
129
|
+
return {
|
|
130
|
+
tool: 'claworld_search',
|
|
131
|
+
summary: normalizeText(action.summary, null),
|
|
132
|
+
payload: { ...payload, scope: 'world_members' },
|
|
133
|
+
payloadTemplate: { ...payloadTemplate, scope: 'world_members' },
|
|
134
|
+
};
|
|
135
|
+
}
|
|
105
136
|
return {
|
|
106
|
-
tool
|
|
137
|
+
tool,
|
|
107
138
|
summary: normalizeText(action.summary, null),
|
|
108
|
-
payload
|
|
109
|
-
|
|
110
|
-
: {},
|
|
111
|
-
payloadTemplate: action.payloadTemplate && typeof action.payloadTemplate === 'object' && !Array.isArray(action.payloadTemplate)
|
|
112
|
-
? action.payloadTemplate
|
|
113
|
-
: {},
|
|
139
|
+
payload,
|
|
140
|
+
payloadTemplate,
|
|
114
141
|
};
|
|
115
142
|
}
|
|
116
143
|
|
|
@@ -118,7 +145,7 @@ function projectRequestChatPayload(
|
|
|
118
145
|
requestChat = null,
|
|
119
146
|
{
|
|
120
147
|
accountId = null,
|
|
121
|
-
requestToolName = '
|
|
148
|
+
requestToolName = 'claworld_manage_conversations',
|
|
122
149
|
} = {},
|
|
123
150
|
) {
|
|
124
151
|
if (!requestChat || typeof requestChat !== 'object' || Array.isArray(requestChat)) return null;
|
|
@@ -136,6 +163,7 @@ function projectRequestChatPayload(
|
|
|
136
163
|
requestTool: normalizeText(requestToolName, null),
|
|
137
164
|
requestPayload: {
|
|
138
165
|
...(normalizedAccountId ? { accountId: normalizedAccountId } : {}),
|
|
166
|
+
action: 'request',
|
|
139
167
|
worldId,
|
|
140
168
|
displayName,
|
|
141
169
|
agentCode,
|
|
@@ -147,7 +175,7 @@ function projectRequestChatAction(
|
|
|
147
175
|
requestChatAction = null,
|
|
148
176
|
{
|
|
149
177
|
accountId = null,
|
|
150
|
-
requestToolName = '
|
|
178
|
+
requestToolName = 'claworld_manage_conversations',
|
|
151
179
|
} = {},
|
|
152
180
|
) {
|
|
153
181
|
if (!requestChatAction || typeof requestChatAction !== 'object' || Array.isArray(requestChatAction)) return null;
|
|
@@ -163,6 +191,7 @@ function projectRequestChatAction(
|
|
|
163
191
|
requestTool: normalizeText(requestToolName, null),
|
|
164
192
|
requestPayloadTemplate: {
|
|
165
193
|
...(normalizedAccountId ? { accountId: normalizedAccountId } : {}),
|
|
194
|
+
action: 'request',
|
|
166
195
|
worldId,
|
|
167
196
|
displayName: ':displayName',
|
|
168
197
|
agentCode: ':agentCode',
|
|
@@ -176,7 +205,7 @@ function projectToolCandidateDeliverySummary(
|
|
|
176
205
|
candidateDelivery = {},
|
|
177
206
|
{
|
|
178
207
|
accountId = null,
|
|
179
|
-
requestToolName = '
|
|
208
|
+
requestToolName = 'claworld_manage_conversations',
|
|
180
209
|
} = {},
|
|
181
210
|
) {
|
|
182
211
|
if (!candidateDelivery || typeof candidateDelivery !== 'object' || Array.isArray(candidateDelivery)) return null;
|
|
@@ -313,12 +342,16 @@ export function projectToolWorldDetail(worldDetail = {}, { accountId = null } =
|
|
|
313
342
|
worldRole: projectWorldRole(worldDetail.worldRole, null),
|
|
314
343
|
enabled: normalizeOptionalBoolean(worldDetail.management?.enabled, normalizeOptionalBoolean(worldDetail.enabled, null)),
|
|
315
344
|
status: normalizeText(worldDetail.management?.status, normalizeText(worldDetail.statusLabel, null)),
|
|
345
|
+
broadcast: projectToolBroadcastConfig(
|
|
346
|
+
worldDetail.management?.broadcast || worldDetail.broadcast || worldDetail.world?.broadcast,
|
|
347
|
+
),
|
|
316
348
|
participantContextField: projectParticipantContextField(worldDetail.participantContextField),
|
|
317
349
|
memberSearchAction: {
|
|
318
|
-
tool: '
|
|
350
|
+
tool: 'claworld_search',
|
|
319
351
|
summary: 'After joining this world, search joined members by profile match or likes.',
|
|
320
352
|
payloadTemplate: {
|
|
321
353
|
...(normalizeText(accountId, null) ? { accountId: normalizeText(accountId, null) } : {}),
|
|
354
|
+
scope: 'world_members',
|
|
322
355
|
worldId: worldDetail.worldId,
|
|
323
356
|
query: ':query',
|
|
324
357
|
},
|
|
@@ -458,7 +491,7 @@ function projectToolCandidateFlowResponse(payload = {}, { accountId = null } = {
|
|
|
458
491
|
worldId: normalizeText(worldId, normalizeText(projectedDelivery?.worldId, null)),
|
|
459
492
|
nextAction: normalizeText(nextAction, normalizeText(projectedFeed?.nextAction, normalizeText(projectedDelivery?.nextAction, null))),
|
|
460
493
|
candidateFeed: projectedFeed,
|
|
461
|
-
requestChatTool: '
|
|
494
|
+
requestChatTool: 'claworld_manage_conversations',
|
|
462
495
|
candidateDelivery: projectedDelivery,
|
|
463
496
|
requestChatAction: projectedRequestChatAction,
|
|
464
497
|
};
|
|
@@ -479,15 +512,25 @@ export function projectToolCandidateFeedResponse(candidateFeedPayload = {}, { ac
|
|
|
479
512
|
};
|
|
480
513
|
}
|
|
481
514
|
|
|
515
|
+
|
|
516
|
+
function projectToolJoinAction(action = null, { accountId = null, requestToolName = null } = {}) {
|
|
517
|
+
if (!action || typeof action !== 'object' || Array.isArray(action)) return null;
|
|
518
|
+
const normalizedAccountId = normalizeText(accountId, null);
|
|
519
|
+
const requestTool = normalizeText(requestToolName, null);
|
|
520
|
+
return {
|
|
521
|
+
...action,
|
|
522
|
+
...(normalizedAccountId ? { accountId: normalizedAccountId } : {}),
|
|
523
|
+
...(requestTool ? { requestTool } : {}),
|
|
524
|
+
};
|
|
525
|
+
}
|
|
526
|
+
|
|
482
527
|
export function projectToolJoinWorldResponse(
|
|
483
528
|
joinResult = {},
|
|
484
529
|
{ accountId = null } = {},
|
|
485
530
|
) {
|
|
486
|
-
const candidateFlow = projectToolCandidateFlowResponse(joinResult, { accountId });
|
|
487
|
-
|
|
488
531
|
return {
|
|
489
532
|
status: joinResult.membershipStatus === 'active' ? 'joined' : 'accepted',
|
|
490
|
-
worldId: normalizeText(joinResult.worldId,
|
|
533
|
+
worldId: normalizeText(joinResult.worldId, null),
|
|
491
534
|
accountId: normalizeText(accountId, null),
|
|
492
535
|
worldRole: projectWorldRole(joinResult.worldRole, null),
|
|
493
536
|
membershipStatus: joinResult.membershipStatus || 'unknown',
|
|
@@ -495,11 +538,14 @@ export function projectToolJoinWorldResponse(
|
|
|
495
538
|
joinResult.participantContextText,
|
|
496
539
|
joinResult.membership?.participantContextText || null,
|
|
497
540
|
),
|
|
498
|
-
nextAction: normalizeText(joinResult.nextAction, '
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
requestChatAction:
|
|
541
|
+
nextAction: normalizeText(joinResult.nextAction, 'search_world_members_or_view_activity'),
|
|
542
|
+
memberSearchAction: projectToolJoinAction(joinResult.memberSearchAction, { accountId }),
|
|
543
|
+
worldActivityAction: projectToolJoinAction(joinResult.worldActivityAction, { accountId }),
|
|
544
|
+
subscribeWorldAction: projectToolJoinAction(joinResult.subscribeWorldAction, { accountId }),
|
|
545
|
+
requestChatAction: projectToolJoinAction(joinResult.requestChatAction, {
|
|
546
|
+
accountId,
|
|
547
|
+
requestToolName: 'claworld_manage_conversations',
|
|
548
|
+
}),
|
|
503
549
|
orchestration: projectOrchestration(joinResult.orchestration),
|
|
504
550
|
};
|
|
505
551
|
}
|
|
@@ -1,37 +1,31 @@
|
|
|
1
|
-
export const CLAWORLD_TOOL_CONTRACT_VERSION = '
|
|
2
|
-
|
|
3
|
-
export const CLAWORLD_CHAT_REQUEST_TOOL_NAMES = Object.freeze([
|
|
4
|
-
'claworld_request_chat',
|
|
5
|
-
'claworld_chat_inbox',
|
|
6
|
-
]);
|
|
1
|
+
export const CLAWORLD_TOOL_CONTRACT_VERSION = 'v2';
|
|
7
2
|
|
|
8
3
|
export const CLAWORLD_ACCOUNT_TOOL_NAMES = Object.freeze([
|
|
9
|
-
'
|
|
4
|
+
'claworld_manage_account',
|
|
10
5
|
]);
|
|
11
6
|
|
|
12
|
-
export const
|
|
13
|
-
'
|
|
7
|
+
export const CLAWORLD_SEARCH_TOOL_NAMES = Object.freeze([
|
|
8
|
+
'claworld_search',
|
|
9
|
+
'claworld_get_public_profile',
|
|
14
10
|
]);
|
|
15
11
|
|
|
16
12
|
export const CLAWORLD_WORLD_TOOL_NAMES = Object.freeze([
|
|
17
|
-
'
|
|
18
|
-
'claworld_list_worlds',
|
|
19
|
-
'claworld_get_world_detail',
|
|
20
|
-
'claworld_join_world',
|
|
21
|
-
'claworld_search_world_members',
|
|
22
|
-
'claworld_get_candidate_feed',
|
|
13
|
+
'claworld_manage_worlds',
|
|
23
14
|
]);
|
|
24
15
|
|
|
25
|
-
export const
|
|
26
|
-
'
|
|
27
|
-
|
|
16
|
+
export const CLAWORLD_CONVERSATION_TOOL_NAMES = Object.freeze([
|
|
17
|
+
'claworld_manage_conversations',
|
|
18
|
+
]);
|
|
19
|
+
|
|
20
|
+
export const CLAWORLD_FEEDBACK_TOOL_NAMES = Object.freeze([
|
|
21
|
+
'claworld_submit_feedback',
|
|
28
22
|
]);
|
|
29
23
|
|
|
30
24
|
export const CLAWORLD_REGISTERED_TOOL_NAMES = Object.freeze([
|
|
31
25
|
...CLAWORLD_ACCOUNT_TOOL_NAMES,
|
|
26
|
+
...CLAWORLD_SEARCH_TOOL_NAMES,
|
|
32
27
|
...CLAWORLD_WORLD_TOOL_NAMES,
|
|
33
|
-
...
|
|
34
|
-
...CLAWORLD_CHAT_REQUEST_TOOL_NAMES,
|
|
28
|
+
...CLAWORLD_CONVERSATION_TOOL_NAMES,
|
|
35
29
|
...CLAWORLD_FEEDBACK_TOOL_NAMES,
|
|
36
30
|
]);
|
|
37
31
|
|
|
@@ -39,6 +33,20 @@ export const CLAWORLD_PUBLIC_TOOL_NAMES = Object.freeze([
|
|
|
39
33
|
...CLAWORLD_REGISTERED_TOOL_NAMES,
|
|
40
34
|
]);
|
|
41
35
|
|
|
36
|
+
export const CLAWORLD_RETIRED_PUBLIC_TOOL_NAMES = Object.freeze([
|
|
37
|
+
'claworld_account',
|
|
38
|
+
'claworld_search_worlds',
|
|
39
|
+
'claworld_list_worlds',
|
|
40
|
+
'claworld_get_world_detail',
|
|
41
|
+
'claworld_join_world',
|
|
42
|
+
'claworld_search_world_members',
|
|
43
|
+
'claworld_get_candidate_feed',
|
|
44
|
+
'claworld_create_world',
|
|
45
|
+
'claworld_manage_world',
|
|
46
|
+
'claworld_request_chat',
|
|
47
|
+
'claworld_chat_inbox',
|
|
48
|
+
]);
|
|
49
|
+
|
|
42
50
|
export const CLAWORLD_MINIMAL_OPENCLAW_TOOL_NAMES = Object.freeze([
|
|
43
51
|
'session_status',
|
|
44
52
|
]);
|
|
@@ -52,11 +60,7 @@ export const CLAWORLD_READ_ONLY_OPENCLAW_TOOL_NAMES = Object.freeze([
|
|
|
52
60
|
]);
|
|
53
61
|
|
|
54
62
|
export const CLAWORLD_PLUGIN_SMOKE_REQUIRED_TOOL_NAMES = Object.freeze([
|
|
55
|
-
...
|
|
56
|
-
...CLAWORLD_WORLD_TOOL_NAMES,
|
|
57
|
-
...CLAWORLD_WORLD_ADMIN_PUBLIC_TOOL_NAMES,
|
|
58
|
-
...CLAWORLD_CHAT_REQUEST_TOOL_NAMES,
|
|
59
|
-
...CLAWORLD_FEEDBACK_TOOL_NAMES,
|
|
63
|
+
...CLAWORLD_REGISTERED_TOOL_NAMES,
|
|
60
64
|
]);
|
|
61
65
|
|
|
62
66
|
export const CLAWORLD_TOOL_PROFILES = Object.freeze({
|