@xfxstudio/claworld 2026.4.22-testing.7 → 2026.4.27-testing.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.
@@ -8,7 +8,7 @@
8
8
  ],
9
9
  "name": "Claworld Persona Relay",
10
10
  "description": "Claworld relay world channel plugin for OpenClaw.",
11
- "version": "2026.4.22-testing.7",
11
+ "version": "2026.4.27-testing.1",
12
12
  "configSchema": {
13
13
  "type": "object",
14
14
  "additionalProperties": false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xfxstudio/claworld",
3
- "version": "2026.4.22-testing.7",
3
+ "version": "2026.4.27-testing.1",
4
4
  "description": "Claworld channel plugin for OpenClaw",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -27,12 +27,12 @@ description: |
27
27
 
28
28
  对应 public tool 是 `claworld_manage_account`。除非已经明确是插件未安装 / channel 未添加 / bind 未建立,不要一上来跑 CLI。
29
29
 
30
- ## Account / Policy / Feedback 工具
30
+ ## Account / Policy 工具与反馈路径
31
31
 
32
32
  - `claworld_manage_account(action=view_account)`:主诊断入口。
33
33
  - `claworld_manage_account(action=activate_account|update_display_name|update_human_profile|update_agent_profile)`:身份与 profile 初始化。
34
34
  - `claworld_manage_account(action=set_discoverability|set_contactability|set_chat_policy|set_proactivity)`:账户级策略。
35
- - `claworld_submit_feedback`:结构化产品/runtime 反馈;diagnostics 由 helper 自动补齐。
35
+ - 结构化产品/runtime 反馈通过 Claworld runtime feedback helper / backend route 提交;它不是 Agent-facing terminal public tool,diagnostics 由 helper 自动补齐。
36
36
 
37
37
  ## 插件生命周期规则
38
38
 
@@ -94,7 +94,7 @@ openclaw gateway restart
94
94
 
95
95
  ## 反馈
96
96
 
97
- 如果确认是产品/runtime 缺口,而不是操作问题,提交 `claworld_submit_feedback`。
97
+ 如果确认是产品/runtime 缺口,而不是操作问题,通过 Claworld runtime feedback helper / backend route 提交结构化反馈;不要调用或恢复任何 Agent-facing terminal public feedback tool。
98
98
 
99
99
  必填:
100
100
 
@@ -69,8 +69,6 @@ export {
69
69
  resolveWorldSelection,
70
70
  fetchWorldDetail,
71
71
  joinWorld,
72
- fetchWorldCandidateFeed,
73
- buildCandidateDeliverySummary,
74
72
  resolveWorldSelectionFlow,
75
73
  } from './runtime/product-shell-helper.js';
76
74
  export { submitFeedbackReport } from './runtime/feedback-helper.js';
@@ -47,11 +47,11 @@ import {
47
47
  import { submitFeedbackReport } from '../runtime/feedback-helper.js';
48
48
  import {
49
49
  buildWorldSelectionPrompt,
50
- buildCandidateDeliverySummary,
51
50
  buildPostSetupWorldDirectory,
52
- fetchWorldCandidateFeed,
53
51
  fetchWorldDetail,
52
+ getPublicProfile,
54
53
  joinWorld,
54
+ lookupPublicProfile,
55
55
  search,
56
56
  searchWorldMembers,
57
57
  searchWorlds,
@@ -3363,6 +3363,13 @@ async function generateRuntimeProfileCard(context = {}) {
3363
3363
  accountId: resolvedContext.accountId || null,
3364
3364
  runtimeConfig: resolvedContext.runtimeConfig || null,
3365
3365
  query: context.query ?? context.queryText ?? null,
3366
+ keywords: context.keywords || [],
3367
+ topics: context.topics || [],
3368
+ location: context.location || null,
3369
+ timeWindow: context.timeWindow || null,
3370
+ intent: context.intent || null,
3371
+ desiredInteraction: context.desiredInteraction || null,
3372
+ constraints: context.constraints || [],
3366
3373
  limit: context.limit ?? null,
3367
3374
  sort: context.sort || null,
3368
3375
  page: context.page ?? null,
@@ -3392,30 +3399,23 @@ async function generateRuntimeProfileCard(context = {}) {
3392
3399
  worldId: context.worldId || null,
3393
3400
  agentId: resolvedContext.agentId || null,
3394
3401
  query: context.query ?? context.queryText ?? null,
3402
+ keywords: context.keywords || [],
3403
+ topics: context.topics || [],
3404
+ location: context.location || null,
3405
+ timeWindow: context.timeWindow || null,
3406
+ intent: context.intent || null,
3407
+ desiredInteraction: context.desiredInteraction || null,
3408
+ constraints: context.constraints || [],
3395
3409
  sort: context.sort || null,
3396
3410
  limit: context.limit ?? null,
3397
3411
  fetchImpl,
3398
3412
  logger,
3399
3413
  });
3400
3414
  },
3401
- fetchWorldCandidateFeed: async (context = {}) => {
3402
- const resolvedContext = await resolveBoundRuntimeContext(context);
3403
- return fetchWorldCandidateFeed({
3404
- cfg: resolvedContext.cfg || {},
3405
- accountId: resolvedContext.accountId || null,
3406
- runtimeConfig: resolvedContext.runtimeConfig || null,
3407
- worldId: context.worldId || null,
3408
- agentId: resolvedContext.agentId || null,
3409
- limit: context.limit ?? context.candidateLimit ?? null,
3410
- fetchImpl,
3411
- logger,
3412
- });
3413
- },
3414
3415
  resolveWorldSelection: (context = {}) => resolveWorldSelection(
3415
3416
  context.worldDirectory || {},
3416
3417
  context.selection ?? context.userChoice ?? null,
3417
3418
  ),
3418
- buildCandidateDeliverySummary,
3419
3419
  resolveWorldSelectionFlow: async (context = {}) => {
3420
3420
  const resolvedContext = await resolveBoundRuntimeContext(context);
3421
3421
  return resolveWorldSelectionFlow({
@@ -3464,6 +3464,32 @@ async function generateRuntimeProfileCard(context = {}) {
3464
3464
  });
3465
3465
  },
3466
3466
  },
3467
+ publicProfiles: {
3468
+ getPublicProfile: async (context = {}) => {
3469
+ const resolvedContext = await resolveBoundRuntimeContext(context);
3470
+ return getPublicProfile({
3471
+ cfg: resolvedContext.cfg || {},
3472
+ accountId: resolvedContext.accountId || null,
3473
+ runtimeConfig: resolvedContext.runtimeConfig || null,
3474
+ agentId: context.agentId || resolvedContext.agentId || null,
3475
+ viewerAgentId: resolvedContext.agentId || null,
3476
+ fetchImpl,
3477
+ logger,
3478
+ });
3479
+ },
3480
+ lookupPublicProfile: async (context = {}) => {
3481
+ const resolvedContext = await resolveBoundRuntimeContext(context);
3482
+ return lookupPublicProfile({
3483
+ cfg: resolvedContext.cfg || {},
3484
+ accountId: resolvedContext.accountId || null,
3485
+ runtimeConfig: resolvedContext.runtimeConfig || null,
3486
+ identity: context.identity || null,
3487
+ viewerAgentId: resolvedContext.agentId || null,
3488
+ fetchImpl,
3489
+ logger,
3490
+ });
3491
+ },
3492
+ },
3467
3493
  activity: {
3468
3494
  listWorldActivity: async (context = {}) => {
3469
3495
  const resolvedContext = await resolveBoundRuntimeContext(context);
@@ -3488,6 +3514,10 @@ async function generateRuntimeProfileCard(context = {}) {
3488
3514
  worldContextText: context.worldContextText || null,
3489
3515
  participantContextText: context.participantContextText || null,
3490
3516
  enabled: typeof context.enabled === 'boolean' ? context.enabled : true,
3517
+ visibility: context.visibility || null,
3518
+ identityMode: context.identityMode || null,
3519
+ joinPolicy: context.joinPolicy || null,
3520
+ approvalPolicy: context.approvalPolicy || null,
3491
3521
  fetchImpl,
3492
3522
  logger,
3493
3523
  });
@@ -3685,6 +3715,13 @@ async function generateRuntimeProfileCard(context = {}) {
3685
3715
  worldId: context.worldId || null,
3686
3716
  agentId: resolvedContext.agentId || null,
3687
3717
  query: context.query ?? context.queryText ?? null,
3718
+ keywords: context.keywords || [],
3719
+ topics: context.topics || [],
3720
+ location: context.location || null,
3721
+ timeWindow: context.timeWindow || null,
3722
+ intent: context.intent || null,
3723
+ desiredInteraction: context.desiredInteraction || null,
3724
+ constraints: context.constraints || [],
3688
3725
  limit: context.limit ?? null,
3689
3726
  sort: context.sort || null,
3690
3727
  page: context.page ?? null,
@@ -3714,27 +3751,20 @@ async function generateRuntimeProfileCard(context = {}) {
3714
3751
  worldId: context.worldId || null,
3715
3752
  agentId: resolvedContext.agentId || null,
3716
3753
  query: context.query ?? context.queryText ?? null,
3754
+ keywords: context.keywords || [],
3755
+ topics: context.topics || [],
3756
+ location: context.location || null,
3757
+ timeWindow: context.timeWindow || null,
3758
+ intent: context.intent || null,
3759
+ desiredInteraction: context.desiredInteraction || null,
3760
+ constraints: context.constraints || [],
3717
3761
  sort: context.sort || null,
3718
3762
  limit: context.limit ?? null,
3719
3763
  fetchImpl,
3720
3764
  logger,
3721
3765
  });
3722
3766
  },
3723
- fetchWorldCandidateFeed: async (context = {}) => {
3724
- const resolvedContext = await resolveBoundRuntimeContext(context);
3725
- return fetchWorldCandidateFeed({
3726
- cfg: resolvedContext.cfg || {},
3727
- accountId: resolvedContext.accountId || null,
3728
- runtimeConfig: resolvedContext.runtimeConfig || null,
3729
- worldId: context.worldId || null,
3730
- agentId: resolvedContext.agentId || null,
3731
- limit: context.limit ?? context.candidateLimit ?? null,
3732
- fetchImpl,
3733
- logger,
3734
- });
3735
- },
3736
3767
  resolveWorldSelection,
3737
- buildCandidateDeliverySummary,
3738
3768
  resolveWorldSelectionFlow: async (context = {}) => {
3739
3769
  const resolvedContext = await resolveBoundRuntimeContext(context);
3740
3770
  return resolveWorldSelectionFlow({
@@ -3748,6 +3778,32 @@ async function generateRuntimeProfileCard(context = {}) {
3748
3778
  logger,
3749
3779
  });
3750
3780
  },
3781
+ publicProfiles: {
3782
+ getPublicProfile: async (context = {}) => {
3783
+ const resolvedContext = await resolveBoundRuntimeContext(context);
3784
+ return getPublicProfile({
3785
+ cfg: resolvedContext.cfg || {},
3786
+ accountId: resolvedContext.accountId || null,
3787
+ runtimeConfig: resolvedContext.runtimeConfig || null,
3788
+ agentId: context.agentId || resolvedContext.agentId || null,
3789
+ viewerAgentId: resolvedContext.agentId || null,
3790
+ fetchImpl,
3791
+ logger,
3792
+ });
3793
+ },
3794
+ lookupPublicProfile: async (context = {}) => {
3795
+ const resolvedContext = await resolveBoundRuntimeContext(context);
3796
+ return lookupPublicProfile({
3797
+ cfg: resolvedContext.cfg || {},
3798
+ accountId: resolvedContext.accountId || null,
3799
+ runtimeConfig: resolvedContext.runtimeConfig || null,
3800
+ identity: context.identity || null,
3801
+ viewerAgentId: resolvedContext.agentId || null,
3802
+ fetchImpl,
3803
+ logger,
3804
+ });
3805
+ },
3806
+ },
3751
3807
  subscriptions: {
3752
3808
  listSubscriptions: async (context = {}) => {
3753
3809
  const resolvedContext = await resolveBoundRuntimeContext(context);
@@ -3832,6 +3888,10 @@ async function generateRuntimeProfileCard(context = {}) {
3832
3888
  worldContextText: context.worldContextText || null,
3833
3889
  participantContextText: context.participantContextText || null,
3834
3890
  enabled: typeof context.enabled === 'boolean' ? context.enabled : true,
3891
+ visibility: context.visibility || null,
3892
+ identityMode: context.identityMode || null,
3893
+ joinPolicy: context.joinPolicy || null,
3894
+ approvalPolicy: context.approvalPolicy || null,
3835
3895
  fetchImpl,
3836
3896
  logger,
3837
3897
  });
@@ -409,6 +409,10 @@ export function inferManageWorldAction(params = {}) {
409
409
  normalizeText(params.worldContextText, null)
410
410
  || normalizeText(params.displayName, null)
411
411
  || normalizeObject(params.broadcast, null)
412
+ || normalizeText(params.visibility, null)
413
+ || normalizeText(params.identityMode, null)
414
+ || normalizeText(params.joinPolicy, null)
415
+ || normalizeText(params.approvalPolicy, null)
412
416
  ) {
413
417
  return 'update_context';
414
418
  }