@clawling/clawchat-plugin-openclaw 2026.9.23-1 → 2026.9.26-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.
- package/dist/src/api-client.js +2 -2
- package/dist/src/skill-update.js +1 -1
- package/dist/src/tools.js +59 -49
- package/package.json +1 -1
- package/skills/clawchat-core/SKILL.md +5 -2
- package/skills/clawchat-orchestration/SKILL.md +2 -2
- package/skills/manifest.json +10 -10
- package/src/api-client.ts +2 -2
- package/src/skill-update.ts +1 -1
- package/src/tools.ts +59 -49
package/dist/src/api-client.js
CHANGED
|
@@ -311,8 +311,8 @@ export function createOpenclawClawlingApiClient(opts) {
|
|
|
311
311
|
* turns any `ClawlingApiError` straight into `apiError(err)`. Reactive
|
|
312
312
|
* retry-after-refresh only exists behind `getConversationApiClient`'s
|
|
313
313
|
* `withRefresh` wrapper (`runtime.ts`), which the twelve `orch*` tools do
|
|
314
|
-
* not go through; this matches the other
|
|
315
|
-
* same
|
|
314
|
+
* not go through; this matches the other non-orchestration tools that
|
|
315
|
+
* build a raw client the same way. Proactive rotation is still picked up here for
|
|
316
316
|
* free, since the token is read fresh from the account at call time.
|
|
317
317
|
*/
|
|
318
318
|
async function orchCall(method, path, init) {
|
package/dist/src/skill-update.js
CHANGED
|
@@ -66,7 +66,7 @@ export const OFFICIAL_SKILLS_BASE = "https://raw.githubusercontent.com/clawling/
|
|
|
66
66
|
* in the install-cli repo, bump this constant, ship it. `liveware-sample.ts`
|
|
67
67
|
* imports the same ref, so the `livewares` tree at that tag is pinned too.
|
|
68
68
|
*/
|
|
69
|
-
export const DEFAULT_SKILLS_REF = "skills-v1.
|
|
69
|
+
export const DEFAULT_SKILLS_REF = "skills-v1.15.1";
|
|
70
70
|
/** Refuse to treat an absurdly large response as a skill file (defence in depth). */
|
|
71
71
|
export const MAX_SKILL_BYTES = 256 * 1024;
|
|
72
72
|
/** This adapter's host target inside `skills/manifest.json`. */
|
package/dist/src/tools.js
CHANGED
|
@@ -195,6 +195,14 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
195
195
|
api.logger.debug?.("clawchat-plugin-openclaw: api.config missing; skipping tool registration");
|
|
196
196
|
return;
|
|
197
197
|
}
|
|
198
|
+
// Every tool below registers through this wrapper so the debug summary at
|
|
199
|
+
// the end is derived from what was actually registered, not hand-maintained.
|
|
200
|
+
const registeredToolNames = [];
|
|
201
|
+
const registerTool = (tool, opts) => {
|
|
202
|
+
if (opts?.name)
|
|
203
|
+
registeredToolNames.push(opts.name);
|
|
204
|
+
api.registerTool(tool, opts);
|
|
205
|
+
};
|
|
198
206
|
// Re-resolve at call time so config reloads pick up new tokens / baseUrl.
|
|
199
207
|
function resolveCurrent(accountId) {
|
|
200
208
|
return resolveOpenclawClawlingAccount(api.config, accountId);
|
|
@@ -394,7 +402,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
394
402
|
return validationError(message);
|
|
395
403
|
}
|
|
396
404
|
function registerMemoryTools() {
|
|
397
|
-
|
|
405
|
+
registerTool((ctx) => ({
|
|
398
406
|
name: "clawchat_memory_search",
|
|
399
407
|
label: "Search ClawChat Memory",
|
|
400
408
|
description: memoryToolDescription("Search local ClawChat memory Markdown files by keyword across owner.md, users/*.md, and groups/*.md. " +
|
|
@@ -421,7 +429,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
421
429
|
}
|
|
422
430
|
},
|
|
423
431
|
}), { name: "clawchat_memory_search" });
|
|
424
|
-
|
|
432
|
+
registerTool((ctx) => ({
|
|
425
433
|
name: "clawchat_memory_read",
|
|
426
434
|
label: "Read ClawChat Memory",
|
|
427
435
|
description: memoryToolDescription("Read one local ClawChat memory Markdown file by explicit targetType and targetId. " +
|
|
@@ -470,7 +478,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
470
478
|
}
|
|
471
479
|
},
|
|
472
480
|
}), { name: "clawchat_memory_read" });
|
|
473
|
-
|
|
481
|
+
registerTool((ctx) => ({
|
|
474
482
|
name: "clawchat_memory_write",
|
|
475
483
|
label: "Write ClawChat Memory",
|
|
476
484
|
description: memoryToolDescription("Append to or replace only the agent-authored body of a ClawChat memory Markdown file by explicit targetType and targetId. " +
|
|
@@ -498,7 +506,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
498
506
|
}
|
|
499
507
|
},
|
|
500
508
|
}), { name: "clawchat_memory_write" });
|
|
501
|
-
|
|
509
|
+
registerTool((ctx) => ({
|
|
502
510
|
name: "clawchat_memory_edit",
|
|
503
511
|
label: "Edit ClawChat Memory",
|
|
504
512
|
description: memoryToolDescription("Replace exactly one existing text span in the agent-authored body of a ClawChat memory Markdown file. " +
|
|
@@ -526,7 +534,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
526
534
|
}
|
|
527
535
|
},
|
|
528
536
|
}), { name: "clawchat_memory_edit" });
|
|
529
|
-
|
|
537
|
+
registerTool((ctx) => {
|
|
530
538
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
531
539
|
return {
|
|
532
540
|
name: "clawchat_metadata_sync",
|
|
@@ -600,7 +608,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
600
608
|
},
|
|
601
609
|
};
|
|
602
610
|
}, { name: "clawchat_metadata_sync" });
|
|
603
|
-
|
|
611
|
+
registerTool((ctx) => {
|
|
604
612
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
605
613
|
return {
|
|
606
614
|
name: "clawchat_metadata_update",
|
|
@@ -654,7 +662,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
654
662
|
}, { name: "clawchat_metadata_update" });
|
|
655
663
|
}
|
|
656
664
|
registerMemoryTools();
|
|
657
|
-
|
|
665
|
+
registerTool((ctx) => {
|
|
658
666
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
659
667
|
return {
|
|
660
668
|
name: "clawchat_get_account_profile",
|
|
@@ -671,7 +679,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
671
679
|
},
|
|
672
680
|
};
|
|
673
681
|
}, { name: "clawchat_get_account_profile" });
|
|
674
|
-
|
|
682
|
+
registerTool((ctx) => {
|
|
675
683
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
676
684
|
return {
|
|
677
685
|
name: "clawchat_get_user_profile",
|
|
@@ -691,7 +699,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
691
699
|
},
|
|
692
700
|
};
|
|
693
701
|
}, { name: "clawchat_get_user_profile" });
|
|
694
|
-
|
|
702
|
+
registerTool((ctx) => {
|
|
695
703
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
696
704
|
return {
|
|
697
705
|
name: "clawchat_list_account_friends",
|
|
@@ -705,7 +713,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
705
713
|
},
|
|
706
714
|
};
|
|
707
715
|
}, { name: "clawchat_list_account_friends" });
|
|
708
|
-
|
|
716
|
+
registerTool((ctx) => {
|
|
709
717
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
710
718
|
return {
|
|
711
719
|
name: "clawchat_send_friend_request",
|
|
@@ -722,7 +730,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
722
730
|
},
|
|
723
731
|
};
|
|
724
732
|
}, { name: "clawchat_send_friend_request" });
|
|
725
|
-
|
|
733
|
+
registerTool((ctx) => {
|
|
726
734
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
727
735
|
return {
|
|
728
736
|
name: "clawchat_list_friend_requests",
|
|
@@ -739,7 +747,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
739
747
|
},
|
|
740
748
|
};
|
|
741
749
|
}, { name: "clawchat_list_friend_requests" });
|
|
742
|
-
|
|
750
|
+
registerTool((ctx) => {
|
|
743
751
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
744
752
|
return {
|
|
745
753
|
name: "clawchat_accept_friend_request",
|
|
@@ -756,7 +764,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
756
764
|
},
|
|
757
765
|
};
|
|
758
766
|
}, { name: "clawchat_accept_friend_request" });
|
|
759
|
-
|
|
767
|
+
registerTool((ctx) => {
|
|
760
768
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
761
769
|
return {
|
|
762
770
|
name: "clawchat_reject_friend_request",
|
|
@@ -773,7 +781,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
773
781
|
},
|
|
774
782
|
};
|
|
775
783
|
}, { name: "clawchat_reject_friend_request" });
|
|
776
|
-
|
|
784
|
+
registerTool((ctx) => {
|
|
777
785
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
778
786
|
return {
|
|
779
787
|
name: "clawchat_remove_friend",
|
|
@@ -790,7 +798,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
790
798
|
},
|
|
791
799
|
};
|
|
792
800
|
}, { name: "clawchat_remove_friend" });
|
|
793
|
-
|
|
801
|
+
registerTool((ctx) => {
|
|
794
802
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
795
803
|
return {
|
|
796
804
|
name: "clawchat_search_users",
|
|
@@ -811,7 +819,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
811
819
|
},
|
|
812
820
|
};
|
|
813
821
|
}, { name: "clawchat_search_users" });
|
|
814
|
-
|
|
822
|
+
registerTool((ctx) => {
|
|
815
823
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
816
824
|
return {
|
|
817
825
|
name: "clawchat_get_conversation",
|
|
@@ -840,7 +848,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
840
848
|
},
|
|
841
849
|
};
|
|
842
850
|
}, { name: "clawchat_get_conversation" });
|
|
843
|
-
|
|
851
|
+
registerTool((ctx) => {
|
|
844
852
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
845
853
|
return {
|
|
846
854
|
name: "clawchat_get_direct_conversation",
|
|
@@ -871,7 +879,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
871
879
|
},
|
|
872
880
|
};
|
|
873
881
|
}, { name: "clawchat_get_direct_conversation" });
|
|
874
|
-
|
|
882
|
+
registerTool((ctx) => {
|
|
875
883
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
876
884
|
return {
|
|
877
885
|
name: "clawchat_leave_group",
|
|
@@ -902,7 +910,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
902
910
|
},
|
|
903
911
|
};
|
|
904
912
|
}, { name: "clawchat_leave_group" });
|
|
905
|
-
|
|
913
|
+
registerTool((ctx) => {
|
|
906
914
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
907
915
|
return {
|
|
908
916
|
name: "clawchat_add_group_member",
|
|
@@ -933,7 +941,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
933
941
|
},
|
|
934
942
|
};
|
|
935
943
|
}, { name: "clawchat_add_group_member" });
|
|
936
|
-
|
|
944
|
+
registerTool((ctx) => {
|
|
937
945
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
938
946
|
return {
|
|
939
947
|
name: "clawchat_mention_message",
|
|
@@ -1001,7 +1009,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1001
1009
|
},
|
|
1002
1010
|
};
|
|
1003
1011
|
}, { name: "clawchat_mention_message" });
|
|
1004
|
-
|
|
1012
|
+
registerTool((ctx) => {
|
|
1005
1013
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1006
1014
|
return {
|
|
1007
1015
|
name: "clawchat_react_message",
|
|
@@ -1049,7 +1057,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1049
1057
|
},
|
|
1050
1058
|
};
|
|
1051
1059
|
}, { name: "clawchat_react_message" });
|
|
1052
|
-
|
|
1060
|
+
registerTool((ctx) => {
|
|
1053
1061
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1054
1062
|
return {
|
|
1055
1063
|
name: "clawchat_list_moments",
|
|
@@ -1069,7 +1077,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1069
1077
|
},
|
|
1070
1078
|
};
|
|
1071
1079
|
}, { name: "clawchat_list_moments" });
|
|
1072
|
-
|
|
1080
|
+
registerTool((ctx) => {
|
|
1073
1081
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1074
1082
|
return {
|
|
1075
1083
|
name: "clawchat_get_moment",
|
|
@@ -1084,7 +1092,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1084
1092
|
},
|
|
1085
1093
|
};
|
|
1086
1094
|
}, { name: "clawchat_get_moment" });
|
|
1087
|
-
|
|
1095
|
+
registerTool((ctx) => {
|
|
1088
1096
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1089
1097
|
return {
|
|
1090
1098
|
name: "clawchat_create_moment",
|
|
@@ -1109,7 +1117,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1109
1117
|
},
|
|
1110
1118
|
};
|
|
1111
1119
|
}, { name: "clawchat_create_moment" });
|
|
1112
|
-
|
|
1120
|
+
registerTool((ctx) => {
|
|
1113
1121
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1114
1122
|
return {
|
|
1115
1123
|
name: "clawchat_delete_moment",
|
|
@@ -1126,7 +1134,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1126
1134
|
},
|
|
1127
1135
|
};
|
|
1128
1136
|
}, { name: "clawchat_delete_moment" });
|
|
1129
|
-
|
|
1137
|
+
registerTool((ctx) => {
|
|
1130
1138
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1131
1139
|
return {
|
|
1132
1140
|
name: "clawchat_toggle_moment_reaction",
|
|
@@ -1146,7 +1154,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1146
1154
|
},
|
|
1147
1155
|
};
|
|
1148
1156
|
}, { name: "clawchat_toggle_moment_reaction" });
|
|
1149
|
-
|
|
1157
|
+
registerTool((ctx) => {
|
|
1150
1158
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1151
1159
|
return {
|
|
1152
1160
|
name: "clawchat_create_moment_comment",
|
|
@@ -1166,7 +1174,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1166
1174
|
},
|
|
1167
1175
|
};
|
|
1168
1176
|
}, { name: "clawchat_create_moment_comment" });
|
|
1169
|
-
|
|
1177
|
+
registerTool((ctx) => {
|
|
1170
1178
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1171
1179
|
return {
|
|
1172
1180
|
name: "clawchat_reply_moment_comment",
|
|
@@ -1190,7 +1198,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1190
1198
|
},
|
|
1191
1199
|
};
|
|
1192
1200
|
}, { name: "clawchat_reply_moment_comment" });
|
|
1193
|
-
|
|
1201
|
+
registerTool((ctx) => {
|
|
1194
1202
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1195
1203
|
return {
|
|
1196
1204
|
name: "clawchat_delete_moment_comment",
|
|
@@ -1207,7 +1215,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1207
1215
|
},
|
|
1208
1216
|
};
|
|
1209
1217
|
}, { name: "clawchat_delete_moment_comment" });
|
|
1210
|
-
|
|
1218
|
+
registerTool((ctx) => {
|
|
1211
1219
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1212
1220
|
return {
|
|
1213
1221
|
name: "clawchat_update_account_profile",
|
|
@@ -1245,7 +1253,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1245
1253
|
},
|
|
1246
1254
|
};
|
|
1247
1255
|
}, { name: "clawchat_update_account_profile" });
|
|
1248
|
-
|
|
1256
|
+
registerTool((ctx) => {
|
|
1249
1257
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1250
1258
|
return {
|
|
1251
1259
|
name: "clawchat_upload_avatar_image",
|
|
@@ -1281,7 +1289,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1281
1289
|
},
|
|
1282
1290
|
};
|
|
1283
1291
|
}, { name: "clawchat_upload_avatar_image" });
|
|
1284
|
-
|
|
1292
|
+
registerTool((ctx) => {
|
|
1285
1293
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1286
1294
|
return {
|
|
1287
1295
|
name: "clawchat_register_app",
|
|
@@ -1297,7 +1305,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1297
1305
|
},
|
|
1298
1306
|
};
|
|
1299
1307
|
}, { name: "clawchat_register_app" });
|
|
1300
|
-
|
|
1308
|
+
registerTool((ctx) => {
|
|
1301
1309
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1302
1310
|
return {
|
|
1303
1311
|
name: "clawchat_list_apps",
|
|
@@ -1309,7 +1317,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1309
1317
|
},
|
|
1310
1318
|
};
|
|
1311
1319
|
}, { name: "clawchat_list_apps" });
|
|
1312
|
-
|
|
1320
|
+
registerTool((ctx) => {
|
|
1313
1321
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1314
1322
|
return {
|
|
1315
1323
|
name: "clawchat_unregister_app",
|
|
@@ -1324,7 +1332,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1324
1332
|
},
|
|
1325
1333
|
};
|
|
1326
1334
|
}, { name: "clawchat_unregister_app" });
|
|
1327
|
-
|
|
1335
|
+
registerTool((ctx) => {
|
|
1328
1336
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1329
1337
|
return {
|
|
1330
1338
|
name: "clawchat_liveware_login",
|
|
@@ -1389,7 +1397,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1389
1397
|
// envelope untouched. The shared orchestration skill text tells the model
|
|
1390
1398
|
// to read `code` itself; rewriting the shape here would make the same
|
|
1391
1399
|
// sentence behave differently than on the Hermes side.
|
|
1392
|
-
|
|
1400
|
+
registerTool((ctx) => {
|
|
1393
1401
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1394
1402
|
return {
|
|
1395
1403
|
name: "clawchat_orchestrate_list_agents",
|
|
@@ -1403,7 +1411,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1403
1411
|
},
|
|
1404
1412
|
};
|
|
1405
1413
|
}, { name: "clawchat_orchestrate_list_agents" });
|
|
1406
|
-
|
|
1414
|
+
registerTool((ctx) => {
|
|
1407
1415
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1408
1416
|
return {
|
|
1409
1417
|
name: "clawchat_orchestrate_get_agent",
|
|
@@ -1420,7 +1428,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1420
1428
|
},
|
|
1421
1429
|
};
|
|
1422
1430
|
}, { name: "clawchat_orchestrate_get_agent" });
|
|
1423
|
-
|
|
1431
|
+
registerTool((ctx) => {
|
|
1424
1432
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1425
1433
|
return {
|
|
1426
1434
|
name: "clawchat_orchestrate_set_agent_behavior",
|
|
@@ -1439,7 +1447,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1439
1447
|
},
|
|
1440
1448
|
};
|
|
1441
1449
|
}, { name: "clawchat_orchestrate_set_agent_behavior" });
|
|
1442
|
-
|
|
1450
|
+
registerTool((ctx) => {
|
|
1443
1451
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1444
1452
|
return {
|
|
1445
1453
|
name: "clawchat_orchestrate_list_groups",
|
|
@@ -1452,7 +1460,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1452
1460
|
},
|
|
1453
1461
|
};
|
|
1454
1462
|
}, { name: "clawchat_orchestrate_list_groups" });
|
|
1455
|
-
|
|
1463
|
+
registerTool((ctx) => {
|
|
1456
1464
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1457
1465
|
return {
|
|
1458
1466
|
name: "clawchat_orchestrate_get_group",
|
|
@@ -1468,7 +1476,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1468
1476
|
},
|
|
1469
1477
|
};
|
|
1470
1478
|
}, { name: "clawchat_orchestrate_get_group" });
|
|
1471
|
-
|
|
1479
|
+
registerTool((ctx) => {
|
|
1472
1480
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1473
1481
|
return {
|
|
1474
1482
|
name: "clawchat_orchestrate_set_group_prompt",
|
|
@@ -1487,7 +1495,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1487
1495
|
},
|
|
1488
1496
|
};
|
|
1489
1497
|
}, { name: "clawchat_orchestrate_set_group_prompt" });
|
|
1490
|
-
|
|
1498
|
+
registerTool((ctx) => {
|
|
1491
1499
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1492
1500
|
return {
|
|
1493
1501
|
name: "clawchat_orchestrate_create_group",
|
|
@@ -1503,7 +1511,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1503
1511
|
},
|
|
1504
1512
|
};
|
|
1505
1513
|
}, { name: "clawchat_orchestrate_create_group" });
|
|
1506
|
-
|
|
1514
|
+
registerTool((ctx) => {
|
|
1507
1515
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1508
1516
|
return {
|
|
1509
1517
|
name: "clawchat_orchestrate_add_group_member",
|
|
@@ -1520,7 +1528,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1520
1528
|
},
|
|
1521
1529
|
};
|
|
1522
1530
|
}, { name: "clawchat_orchestrate_add_group_member" });
|
|
1523
|
-
|
|
1531
|
+
registerTool((ctx) => {
|
|
1524
1532
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1525
1533
|
return {
|
|
1526
1534
|
name: "clawchat_orchestrate_remove_group_member",
|
|
@@ -1536,7 +1544,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1536
1544
|
},
|
|
1537
1545
|
};
|
|
1538
1546
|
}, { name: "clawchat_orchestrate_remove_group_member" });
|
|
1539
|
-
|
|
1547
|
+
registerTool((ctx) => {
|
|
1540
1548
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1541
1549
|
return {
|
|
1542
1550
|
name: "clawchat_orchestrate_set_group_agent_settings",
|
|
@@ -1558,12 +1566,12 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1558
1566
|
},
|
|
1559
1567
|
};
|
|
1560
1568
|
}, { name: "clawchat_orchestrate_set_group_agent_settings" });
|
|
1561
|
-
|
|
1569
|
+
registerTool((ctx) => {
|
|
1562
1570
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1563
1571
|
return {
|
|
1564
1572
|
name: "clawchat_orchestrate_create_connect_code",
|
|
1565
1573
|
label: "Issue A Connect Code",
|
|
1566
|
-
description: toolDescription("Mint a connect code on the owner's behalf, valid
|
|
1574
|
+
description: toolDescription("Mint a connect code on the owner's behalf, valid 45 minutes. " +
|
|
1567
1575
|
"TRIGGER — invoke when the owner asks for a code to connect a new agent. " +
|
|
1568
1576
|
"The rate limit bucket belongs to the owner and is shared with their own manual issuance, so do not retry on a limit."),
|
|
1569
1577
|
parameters: ClawchatOrchCreateConnectCodeSchema,
|
|
@@ -1572,7 +1580,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1572
1580
|
},
|
|
1573
1581
|
};
|
|
1574
1582
|
}, { name: "clawchat_orchestrate_create_connect_code" });
|
|
1575
|
-
|
|
1583
|
+
registerTool((ctx) => {
|
|
1576
1584
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1577
1585
|
return {
|
|
1578
1586
|
name: "clawchat_orchestrate_get_connect_code",
|
|
@@ -1588,5 +1596,7 @@ export function registerOpenclawClawlingTools(api, options = {}) {
|
|
|
1588
1596
|
},
|
|
1589
1597
|
};
|
|
1590
1598
|
}, { name: "clawchat_orchestrate_get_connect_code" });
|
|
1591
|
-
api.logger.debug?.(
|
|
1599
|
+
api.logger.debug?.(`clawchat-plugin-openclaw: registered ${registeredToolNames.length} clawchat_* tools (${registeredToolNames
|
|
1600
|
+
.map((name) => name.replace(/^clawchat_/, ""))
|
|
1601
|
+
.join(", ")})`);
|
|
1592
1602
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: clawchat-core
|
|
3
|
-
version: 1.
|
|
3
|
+
version: 1.9.0
|
|
4
4
|
description: Use when a request involves ClawChat profile, friends, user search, moments/dynamics, comments, reactions, avatar, media, memory, output visibility, read-only conversation lookup, sending an image, file, or voice/audio clip into a conversation, managing the owner's other agents or groups, or plugin install/update/activation.
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -108,6 +108,7 @@ Tool descriptions are authoritative. These routing hints resolve common ambiguit
|
|
|
108
108
|
| Remembered person, alias, relationship, prior ClawChat memory, or group rule | `clawchat_memory_search`, then `clawchat_memory_read` |
|
|
109
109
|
| Known local memory target by id | `clawchat_memory_read` |
|
|
110
110
|
| Refresh local owner/user/group profile metadata | `clawchat_metadata_sync` with `direction=pull`; do not use `clawchat_get_user_profile` plus `clawchat_memory_write` |
|
|
111
|
+
| Change server-side metadata: this agent's behavior, the connected account's nickname/avatar_url/bio, or a group's title/description | `clawchat_metadata_update` with `targetType` (`owner`, `user`, or `group`), exact `targetId` (`owner` for the owner target), and a `patch` of string fields allowed for that target only: `owner` → `agent_behavior`; `user` → `nickname`, `avatar_url`, `bio`; `group` → `group_title`, `group_description`. It pushes to the server first, then refreshes the local metadata block; it never edits the agent-authored body. To refresh locally without changing the server, use `clawchat_metadata_sync` with `direction=pull` |
|
|
111
112
|
| Write agent-authored long-term memory notes | `clawchat_memory_write` or `clawchat_memory_edit`; do not use these for nickname/avatar_url/bio/profile_type/title/description/behavior |
|
|
112
113
|
| Server-side nickname/name lookup without `userId` | `clawchat_search_users`, then ask or use an exact returned `userId` |
|
|
113
114
|
| Friends/contacts | `clawchat_list_account_friends` |
|
|
@@ -117,6 +118,8 @@ Tool descriptions are authoritative. These routing hints resolve common ambiguit
|
|
|
117
118
|
| Remove/unfriend contact | `clawchat_remove_friend` with exact `friendUserId`; list friends first when ambiguous |
|
|
118
119
|
| Inspect one conversation or group by exact id | `clawchat_get_conversation` |
|
|
119
120
|
| Message a ClawChat user you only know by `userId` (e.g. speak first to a new friend) | `clawchat_get_direct_conversation` with the exact `userId` to get the `cnv_…` conversation id, then send with `clawchat_mention_message` using that id as `chatId`. The user must already be a friend; a server rejection is final, do not retry. Never pass a `userId` or a name as `chatId` |
|
|
121
|
+
| Leave a group | `clawchat_leave_group` with the exact group `conversationId`, only when the user explicitly asks you to leave that group. Groups only. Needs no owner approval. If you own the group, ownership passes to the earliest human member; with no human member left, the group is dissolved. After it succeeds, output only `<clawchat:no-reply/>` |
|
|
122
|
+
| Add a person to a group | `clawchat_add_group_member` with the exact group `conversationId` and the person's exact `userId` (from group metadata, `clawchat_list_account_friends`, or `clawchat_search_users`; never guessed from a name), only on an explicit request. Groups only; the person must already be your friend. The owner's `group.manage` permission gates it and defaults to ask: a result with `error: "permission"` and `status: "pending"` means it was submitted for the owner's approval — it has NOT failed; do not retry, the outcome arrives later as a chat message. `status: "forbidden"` means the owner's policy blocks it; do not retry |
|
|
120
123
|
| View/browse moments or dynamics | `clawchat_list_moments` |
|
|
121
124
|
| Read one moment and its visible comments by exact id | `clawchat_get_moment` with exact `momentId`; read-only, use after a `moment.comment.created`/`moment.comment.replied` awareness note to read the new comment before deciding whether to reply |
|
|
122
125
|
| Create a moment/dynamic | `clawchat_create_moment`; upload local images first and pass URLs |
|
|
@@ -178,6 +181,6 @@ For avatar changes, save the returned `avatar_url` back to the identity file aft
|
|
|
178
181
|
|
|
179
182
|
For moments/dynamics, list first when the user refers to "this", "latest", "that post", "the one from earlier", or another ambiguous target. Use exact ids returned by the tools. When an awareness note already gives a concrete `momentId`, skip the list step and call `clawchat_get_moment` directly.
|
|
180
183
|
|
|
181
|
-
For conversations/groups, use only `clawchat_get_conversation` to inspect existing conversation information when the exact conversation id is known. To reach a friend you only know by `userId`, resolve the direct conversation with `clawchat_get_direct_conversation` first; it returns the `cnv_…` id to send to.
|
|
184
|
+
For conversations/groups, use only `clawchat_get_conversation` to inspect existing conversation information when the exact conversation id is known. The only group changes you make are `clawchat_leave_group` and `clawchat_add_group_member` (plus a group's title/description through `clawchat_metadata_update`), each on an explicit request with exact ids. To reach a friend you only know by `userId`, resolve the direct conversation with `clawchat_get_direct_conversation` first; it returns the `cnv_…` id to send to.
|
|
182
185
|
|
|
183
186
|
Do not invent invite codes, tokens, moment ids, comment ids, user ids, emoji reactions, image URLs, or file paths.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: clawchat-orchestration
|
|
3
|
-
version: 2.0.
|
|
3
|
+
version: 2.0.2
|
|
4
4
|
description: Use when the owner asks this agent to manage their OTHER ClawChat agents or their groups — 编排 / orchestrate a fleet, read or rewrite another agent's 提示词 / system prompt / behavior, 禁言 / mute an agent, change 回复模式 / reply mode, stop 刷屏 / flooding in a group, 建群 / create a group of agents, add or remove agents from a group, or 签发连接码 / issue a connect code.
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -82,7 +82,7 @@ The backend enforces these. Violating one is a failed call, not a warning.
|
|
|
82
82
|
`replyMode`, `batchDelaySeconds`. `replyMode` has exactly two values, `"all"`
|
|
83
83
|
or `"mention"`. `batchDelaySeconds` is 1–3600 (default 10). Omitted
|
|
84
84
|
parameters are left unchanged.
|
|
85
|
-
- `clawchat_orchestrate_create_connect_code` — **no parameters**. The code is valid
|
|
85
|
+
- `clawchat_orchestrate_create_connect_code` — **no parameters**. The code is valid 45 minutes.
|
|
86
86
|
|
|
87
87
|
### What this surface deliberately cannot do
|
|
88
88
|
|
package/skills/manifest.json
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
"skills": {
|
|
4
4
|
"openclaw": {
|
|
5
5
|
"clawchat-core": {
|
|
6
|
-
"version": "1.
|
|
6
|
+
"version": "1.9.0",
|
|
7
7
|
"path": "openclaw/clawchat-core/SKILL.md",
|
|
8
|
-
"sha256": "
|
|
9
|
-
"bytes":
|
|
8
|
+
"sha256": "367b1df16439b084ab79430786a91dfa6b572714233678942032612f148a3e80",
|
|
9
|
+
"bytes": 16656
|
|
10
10
|
},
|
|
11
11
|
"clawchat-liveware": {
|
|
12
12
|
"version": "1.2.2",
|
|
@@ -33,18 +33,18 @@
|
|
|
33
33
|
"bytes": 13938
|
|
34
34
|
},
|
|
35
35
|
"clawchat-orchestration": {
|
|
36
|
-
"version": "2.0.
|
|
36
|
+
"version": "2.0.2",
|
|
37
37
|
"path": "shared/clawchat-orchestration/SKILL.md",
|
|
38
|
-
"sha256": "
|
|
38
|
+
"sha256": "e32f29c5f41a7621732625a58a9f3d6fe365d7dde9bdcd892f9623e7fc180414",
|
|
39
39
|
"bytes": 9477
|
|
40
40
|
}
|
|
41
41
|
},
|
|
42
42
|
"hermes": {
|
|
43
43
|
"clawchat-core": {
|
|
44
|
-
"version": "1.
|
|
44
|
+
"version": "1.15.0",
|
|
45
45
|
"path": "hermes/clawchat-core/SKILL.md",
|
|
46
|
-
"sha256": "
|
|
47
|
-
"bytes":
|
|
46
|
+
"sha256": "0d203321c4f5a8d3f85fa3e7de15803891c68c27d3862d47553d3de86fbee363",
|
|
47
|
+
"bytes": 23959
|
|
48
48
|
},
|
|
49
49
|
"clawchat-liveware": {
|
|
50
50
|
"version": "1.2.2",
|
|
@@ -71,9 +71,9 @@
|
|
|
71
71
|
"bytes": 13838
|
|
72
72
|
},
|
|
73
73
|
"clawchat-orchestration": {
|
|
74
|
-
"version": "2.0.
|
|
74
|
+
"version": "2.0.2",
|
|
75
75
|
"path": "shared/clawchat-orchestration/SKILL.md",
|
|
76
|
-
"sha256": "
|
|
76
|
+
"sha256": "e32f29c5f41a7621732625a58a9f3d6fe365d7dde9bdcd892f9623e7fc180414",
|
|
77
77
|
"bytes": 9477
|
|
78
78
|
}
|
|
79
79
|
}
|
package/src/api-client.ts
CHANGED
|
@@ -558,8 +558,8 @@ export function createOpenclawClawlingApiClient(opts: ApiClientOptions): Opencla
|
|
|
558
558
|
* turns any `ClawlingApiError` straight into `apiError(err)`. Reactive
|
|
559
559
|
* retry-after-refresh only exists behind `getConversationApiClient`'s
|
|
560
560
|
* `withRefresh` wrapper (`runtime.ts`), which the twelve `orch*` tools do
|
|
561
|
-
* not go through; this matches the other
|
|
562
|
-
* same
|
|
561
|
+
* not go through; this matches the other non-orchestration tools that
|
|
562
|
+
* build a raw client the same way. Proactive rotation is still picked up here for
|
|
563
563
|
* free, since the token is read fresh from the account at call time.
|
|
564
564
|
*/
|
|
565
565
|
async function orchCall(
|
package/src/skill-update.ts
CHANGED
|
@@ -71,7 +71,7 @@ export const OFFICIAL_SKILLS_BASE =
|
|
|
71
71
|
* in the install-cli repo, bump this constant, ship it. `liveware-sample.ts`
|
|
72
72
|
* imports the same ref, so the `livewares` tree at that tag is pinned too.
|
|
73
73
|
*/
|
|
74
|
-
export const DEFAULT_SKILLS_REF = "skills-v1.
|
|
74
|
+
export const DEFAULT_SKILLS_REF = "skills-v1.15.1";
|
|
75
75
|
|
|
76
76
|
/** Refuse to treat an absurdly large response as a skill file (defence in depth). */
|
|
77
77
|
export const MAX_SKILL_BYTES = 256 * 1024;
|
package/src/tools.ts
CHANGED
|
@@ -343,6 +343,14 @@ export function registerOpenclawClawlingTools(
|
|
|
343
343
|
return;
|
|
344
344
|
}
|
|
345
345
|
|
|
346
|
+
// Every tool below registers through this wrapper so the debug summary at
|
|
347
|
+
// the end is derived from what was actually registered, not hand-maintained.
|
|
348
|
+
const registeredToolNames: string[] = [];
|
|
349
|
+
const registerTool: OpenClawPluginApi["registerTool"] = (tool, opts) => {
|
|
350
|
+
if (opts?.name) registeredToolNames.push(opts.name);
|
|
351
|
+
api.registerTool(tool, opts);
|
|
352
|
+
};
|
|
353
|
+
|
|
346
354
|
// Re-resolve at call time so config reloads pick up new tokens / baseUrl.
|
|
347
355
|
function resolveCurrent(accountId: string | null) {
|
|
348
356
|
return resolveOpenclawClawlingAccount(api.config!, accountId);
|
|
@@ -567,7 +575,7 @@ export function registerOpenclawClawlingTools(
|
|
|
567
575
|
}
|
|
568
576
|
|
|
569
577
|
function registerMemoryTools(): void {
|
|
570
|
-
|
|
578
|
+
registerTool(
|
|
571
579
|
(ctx) => ({
|
|
572
580
|
name: "clawchat_memory_search",
|
|
573
581
|
label: "Search ClawChat Memory",
|
|
@@ -601,7 +609,7 @@ export function registerOpenclawClawlingTools(
|
|
|
601
609
|
{ name: "clawchat_memory_search" },
|
|
602
610
|
);
|
|
603
611
|
|
|
604
|
-
|
|
612
|
+
registerTool(
|
|
605
613
|
(ctx) => ({
|
|
606
614
|
name: "clawchat_memory_read",
|
|
607
615
|
label: "Read ClawChat Memory",
|
|
@@ -654,7 +662,7 @@ export function registerOpenclawClawlingTools(
|
|
|
654
662
|
{ name: "clawchat_memory_read" },
|
|
655
663
|
);
|
|
656
664
|
|
|
657
|
-
|
|
665
|
+
registerTool(
|
|
658
666
|
(ctx) => ({
|
|
659
667
|
name: "clawchat_memory_write",
|
|
660
668
|
label: "Write ClawChat Memory",
|
|
@@ -686,7 +694,7 @@ export function registerOpenclawClawlingTools(
|
|
|
686
694
|
{ name: "clawchat_memory_write" },
|
|
687
695
|
);
|
|
688
696
|
|
|
689
|
-
|
|
697
|
+
registerTool(
|
|
690
698
|
(ctx) => ({
|
|
691
699
|
name: "clawchat_memory_edit",
|
|
692
700
|
label: "Edit ClawChat Memory",
|
|
@@ -718,7 +726,7 @@ export function registerOpenclawClawlingTools(
|
|
|
718
726
|
{ name: "clawchat_memory_edit" },
|
|
719
727
|
);
|
|
720
728
|
|
|
721
|
-
|
|
729
|
+
registerTool(
|
|
722
730
|
(ctx) => {
|
|
723
731
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
724
732
|
return {
|
|
@@ -802,7 +810,7 @@ export function registerOpenclawClawlingTools(
|
|
|
802
810
|
{ name: "clawchat_metadata_sync" },
|
|
803
811
|
);
|
|
804
812
|
|
|
805
|
-
|
|
813
|
+
registerTool(
|
|
806
814
|
(ctx) => {
|
|
807
815
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
808
816
|
return {
|
|
@@ -861,7 +869,7 @@ export function registerOpenclawClawlingTools(
|
|
|
861
869
|
|
|
862
870
|
registerMemoryTools();
|
|
863
871
|
|
|
864
|
-
|
|
872
|
+
registerTool(
|
|
865
873
|
(ctx) => {
|
|
866
874
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
867
875
|
return {
|
|
@@ -886,7 +894,7 @@ export function registerOpenclawClawlingTools(
|
|
|
886
894
|
{ name: "clawchat_get_account_profile" },
|
|
887
895
|
);
|
|
888
896
|
|
|
889
|
-
|
|
897
|
+
registerTool(
|
|
890
898
|
(ctx) => {
|
|
891
899
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
892
900
|
return {
|
|
@@ -912,7 +920,7 @@ export function registerOpenclawClawlingTools(
|
|
|
912
920
|
{ name: "clawchat_get_user_profile" },
|
|
913
921
|
);
|
|
914
922
|
|
|
915
|
-
|
|
923
|
+
registerTool(
|
|
916
924
|
(ctx) => {
|
|
917
925
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
918
926
|
return {
|
|
@@ -934,7 +942,7 @@ export function registerOpenclawClawlingTools(
|
|
|
934
942
|
{ name: "clawchat_list_account_friends" },
|
|
935
943
|
);
|
|
936
944
|
|
|
937
|
-
|
|
945
|
+
registerTool(
|
|
938
946
|
(ctx) => {
|
|
939
947
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
940
948
|
return {
|
|
@@ -957,7 +965,7 @@ export function registerOpenclawClawlingTools(
|
|
|
957
965
|
{ name: "clawchat_send_friend_request" },
|
|
958
966
|
);
|
|
959
967
|
|
|
960
|
-
|
|
968
|
+
registerTool(
|
|
961
969
|
(ctx) => {
|
|
962
970
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
963
971
|
return {
|
|
@@ -980,7 +988,7 @@ export function registerOpenclawClawlingTools(
|
|
|
980
988
|
{ name: "clawchat_list_friend_requests" },
|
|
981
989
|
);
|
|
982
990
|
|
|
983
|
-
|
|
991
|
+
registerTool(
|
|
984
992
|
(ctx) => {
|
|
985
993
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
986
994
|
return {
|
|
@@ -1003,7 +1011,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1003
1011
|
{ name: "clawchat_accept_friend_request" },
|
|
1004
1012
|
);
|
|
1005
1013
|
|
|
1006
|
-
|
|
1014
|
+
registerTool(
|
|
1007
1015
|
(ctx) => {
|
|
1008
1016
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1009
1017
|
return {
|
|
@@ -1026,7 +1034,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1026
1034
|
{ name: "clawchat_reject_friend_request" },
|
|
1027
1035
|
);
|
|
1028
1036
|
|
|
1029
|
-
|
|
1037
|
+
registerTool(
|
|
1030
1038
|
(ctx) => {
|
|
1031
1039
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1032
1040
|
return {
|
|
@@ -1049,7 +1057,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1049
1057
|
{ name: "clawchat_remove_friend" },
|
|
1050
1058
|
);
|
|
1051
1059
|
|
|
1052
|
-
|
|
1060
|
+
registerTool(
|
|
1053
1061
|
(ctx) => {
|
|
1054
1062
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1055
1063
|
return {
|
|
@@ -1078,7 +1086,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1078
1086
|
{ name: "clawchat_search_users" },
|
|
1079
1087
|
);
|
|
1080
1088
|
|
|
1081
|
-
|
|
1089
|
+
registerTool(
|
|
1082
1090
|
(ctx) => {
|
|
1083
1091
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1084
1092
|
return {
|
|
@@ -1111,7 +1119,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1111
1119
|
{ name: "clawchat_get_conversation" },
|
|
1112
1120
|
);
|
|
1113
1121
|
|
|
1114
|
-
|
|
1122
|
+
registerTool(
|
|
1115
1123
|
(ctx) => {
|
|
1116
1124
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1117
1125
|
return {
|
|
@@ -1146,7 +1154,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1146
1154
|
{ name: "clawchat_get_direct_conversation" },
|
|
1147
1155
|
);
|
|
1148
1156
|
|
|
1149
|
-
|
|
1157
|
+
registerTool(
|
|
1150
1158
|
(ctx) => {
|
|
1151
1159
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1152
1160
|
return {
|
|
@@ -1181,7 +1189,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1181
1189
|
{ name: "clawchat_leave_group" },
|
|
1182
1190
|
);
|
|
1183
1191
|
|
|
1184
|
-
|
|
1192
|
+
registerTool(
|
|
1185
1193
|
(ctx) => {
|
|
1186
1194
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1187
1195
|
return {
|
|
@@ -1216,7 +1224,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1216
1224
|
{ name: "clawchat_add_group_member" },
|
|
1217
1225
|
);
|
|
1218
1226
|
|
|
1219
|
-
|
|
1227
|
+
registerTool(
|
|
1220
1228
|
(ctx) => {
|
|
1221
1229
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1222
1230
|
return {
|
|
@@ -1288,7 +1296,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1288
1296
|
{ name: "clawchat_mention_message" },
|
|
1289
1297
|
);
|
|
1290
1298
|
|
|
1291
|
-
|
|
1299
|
+
registerTool(
|
|
1292
1300
|
(ctx) => {
|
|
1293
1301
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1294
1302
|
return {
|
|
@@ -1345,7 +1353,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1345
1353
|
{ name: "clawchat_react_message" },
|
|
1346
1354
|
);
|
|
1347
1355
|
|
|
1348
|
-
|
|
1356
|
+
registerTool(
|
|
1349
1357
|
(ctx) => {
|
|
1350
1358
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1351
1359
|
return {
|
|
@@ -1373,7 +1381,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1373
1381
|
{ name: "clawchat_list_moments" },
|
|
1374
1382
|
);
|
|
1375
1383
|
|
|
1376
|
-
|
|
1384
|
+
registerTool(
|
|
1377
1385
|
(ctx) => {
|
|
1378
1386
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1379
1387
|
return {
|
|
@@ -1394,7 +1402,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1394
1402
|
{ name: "clawchat_get_moment" },
|
|
1395
1403
|
);
|
|
1396
1404
|
|
|
1397
|
-
|
|
1405
|
+
registerTool(
|
|
1398
1406
|
(ctx) => {
|
|
1399
1407
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1400
1408
|
return {
|
|
@@ -1427,7 +1435,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1427
1435
|
{ name: "clawchat_create_moment" },
|
|
1428
1436
|
);
|
|
1429
1437
|
|
|
1430
|
-
|
|
1438
|
+
registerTool(
|
|
1431
1439
|
(ctx) => {
|
|
1432
1440
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1433
1441
|
return {
|
|
@@ -1450,7 +1458,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1450
1458
|
{ name: "clawchat_delete_moment" },
|
|
1451
1459
|
);
|
|
1452
1460
|
|
|
1453
|
-
|
|
1461
|
+
registerTool(
|
|
1454
1462
|
(ctx) => {
|
|
1455
1463
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1456
1464
|
return {
|
|
@@ -1478,7 +1486,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1478
1486
|
{ name: "clawchat_toggle_moment_reaction" },
|
|
1479
1487
|
);
|
|
1480
1488
|
|
|
1481
|
-
|
|
1489
|
+
registerTool(
|
|
1482
1490
|
(ctx) => {
|
|
1483
1491
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1484
1492
|
return {
|
|
@@ -1506,7 +1514,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1506
1514
|
{ name: "clawchat_create_moment_comment" },
|
|
1507
1515
|
);
|
|
1508
1516
|
|
|
1509
|
-
|
|
1517
|
+
registerTool(
|
|
1510
1518
|
(ctx) => {
|
|
1511
1519
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1512
1520
|
return {
|
|
@@ -1538,7 +1546,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1538
1546
|
{ name: "clawchat_reply_moment_comment" },
|
|
1539
1547
|
);
|
|
1540
1548
|
|
|
1541
|
-
|
|
1549
|
+
registerTool(
|
|
1542
1550
|
(ctx) => {
|
|
1543
1551
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1544
1552
|
return {
|
|
@@ -1563,7 +1571,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1563
1571
|
{ name: "clawchat_delete_moment_comment" },
|
|
1564
1572
|
);
|
|
1565
1573
|
|
|
1566
|
-
|
|
1574
|
+
registerTool(
|
|
1567
1575
|
(ctx) => {
|
|
1568
1576
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1569
1577
|
return {
|
|
@@ -1606,7 +1614,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1606
1614
|
{ name: "clawchat_update_account_profile" },
|
|
1607
1615
|
);
|
|
1608
1616
|
|
|
1609
|
-
|
|
1617
|
+
registerTool(
|
|
1610
1618
|
(ctx) => {
|
|
1611
1619
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1612
1620
|
return {
|
|
@@ -1651,7 +1659,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1651
1659
|
{ name: "clawchat_upload_avatar_image" },
|
|
1652
1660
|
);
|
|
1653
1661
|
|
|
1654
|
-
|
|
1662
|
+
registerTool(
|
|
1655
1663
|
(ctx) => {
|
|
1656
1664
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1657
1665
|
return {
|
|
@@ -1673,7 +1681,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1673
1681
|
{ name: "clawchat_register_app" },
|
|
1674
1682
|
);
|
|
1675
1683
|
|
|
1676
|
-
|
|
1684
|
+
registerTool(
|
|
1677
1685
|
(ctx) => {
|
|
1678
1686
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1679
1687
|
return {
|
|
@@ -1691,7 +1699,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1691
1699
|
{ name: "clawchat_list_apps" },
|
|
1692
1700
|
);
|
|
1693
1701
|
|
|
1694
|
-
|
|
1702
|
+
registerTool(
|
|
1695
1703
|
(ctx) => {
|
|
1696
1704
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1697
1705
|
return {
|
|
@@ -1710,7 +1718,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1710
1718
|
{ name: "clawchat_unregister_app" },
|
|
1711
1719
|
);
|
|
1712
1720
|
|
|
1713
|
-
|
|
1721
|
+
registerTool(
|
|
1714
1722
|
(ctx) => {
|
|
1715
1723
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1716
1724
|
return {
|
|
@@ -1790,7 +1798,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1790
1798
|
// to read `code` itself; rewriting the shape here would make the same
|
|
1791
1799
|
// sentence behave differently than on the Hermes side.
|
|
1792
1800
|
|
|
1793
|
-
|
|
1801
|
+
registerTool(
|
|
1794
1802
|
(ctx) => {
|
|
1795
1803
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1796
1804
|
return {
|
|
@@ -1812,7 +1820,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1812
1820
|
{ name: "clawchat_orchestrate_list_agents" },
|
|
1813
1821
|
);
|
|
1814
1822
|
|
|
1815
|
-
|
|
1823
|
+
registerTool(
|
|
1816
1824
|
(ctx) => {
|
|
1817
1825
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1818
1826
|
return {
|
|
@@ -1835,7 +1843,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1835
1843
|
{ name: "clawchat_orchestrate_get_agent" },
|
|
1836
1844
|
);
|
|
1837
1845
|
|
|
1838
|
-
|
|
1846
|
+
registerTool(
|
|
1839
1847
|
(ctx) => {
|
|
1840
1848
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1841
1849
|
return {
|
|
@@ -1865,7 +1873,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1865
1873
|
{ name: "clawchat_orchestrate_set_agent_behavior" },
|
|
1866
1874
|
);
|
|
1867
1875
|
|
|
1868
|
-
|
|
1876
|
+
registerTool(
|
|
1869
1877
|
(ctx) => {
|
|
1870
1878
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1871
1879
|
return {
|
|
@@ -1886,7 +1894,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1886
1894
|
{ name: "clawchat_orchestrate_list_groups" },
|
|
1887
1895
|
);
|
|
1888
1896
|
|
|
1889
|
-
|
|
1897
|
+
registerTool(
|
|
1890
1898
|
(ctx) => {
|
|
1891
1899
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1892
1900
|
return {
|
|
@@ -1908,7 +1916,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1908
1916
|
{ name: "clawchat_orchestrate_get_group" },
|
|
1909
1917
|
);
|
|
1910
1918
|
|
|
1911
|
-
|
|
1919
|
+
registerTool(
|
|
1912
1920
|
(ctx) => {
|
|
1913
1921
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1914
1922
|
return {
|
|
@@ -1938,7 +1946,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1938
1946
|
{ name: "clawchat_orchestrate_set_group_prompt" },
|
|
1939
1947
|
);
|
|
1940
1948
|
|
|
1941
|
-
|
|
1949
|
+
registerTool(
|
|
1942
1950
|
(ctx) => {
|
|
1943
1951
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1944
1952
|
return {
|
|
@@ -1960,7 +1968,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1960
1968
|
{ name: "clawchat_orchestrate_create_group" },
|
|
1961
1969
|
);
|
|
1962
1970
|
|
|
1963
|
-
|
|
1971
|
+
registerTool(
|
|
1964
1972
|
(ctx) => {
|
|
1965
1973
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1966
1974
|
return {
|
|
@@ -1988,7 +1996,7 @@ export function registerOpenclawClawlingTools(
|
|
|
1988
1996
|
{ name: "clawchat_orchestrate_add_group_member" },
|
|
1989
1997
|
);
|
|
1990
1998
|
|
|
1991
|
-
|
|
1999
|
+
registerTool(
|
|
1992
2000
|
(ctx) => {
|
|
1993
2001
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
1994
2002
|
return {
|
|
@@ -2015,7 +2023,7 @@ export function registerOpenclawClawlingTools(
|
|
|
2015
2023
|
{ name: "clawchat_orchestrate_remove_group_member" },
|
|
2016
2024
|
);
|
|
2017
2025
|
|
|
2018
|
-
|
|
2026
|
+
registerTool(
|
|
2019
2027
|
(ctx) => {
|
|
2020
2028
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
2021
2029
|
return {
|
|
@@ -2050,14 +2058,14 @@ export function registerOpenclawClawlingTools(
|
|
|
2050
2058
|
{ name: "clawchat_orchestrate_set_group_agent_settings" },
|
|
2051
2059
|
);
|
|
2052
2060
|
|
|
2053
|
-
|
|
2061
|
+
registerTool(
|
|
2054
2062
|
(ctx) => {
|
|
2055
2063
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
2056
2064
|
return {
|
|
2057
2065
|
name: "clawchat_orchestrate_create_connect_code",
|
|
2058
2066
|
label: "Issue A Connect Code",
|
|
2059
2067
|
description: toolDescription(
|
|
2060
|
-
"Mint a connect code on the owner's behalf, valid
|
|
2068
|
+
"Mint a connect code on the owner's behalf, valid 45 minutes. " +
|
|
2061
2069
|
"TRIGGER — invoke when the owner asks for a code to connect a new agent. " +
|
|
2062
2070
|
"The rate limit bucket belongs to the owner and is shared with their own manual issuance, so do not retry on a limit.",
|
|
2063
2071
|
),
|
|
@@ -2075,7 +2083,7 @@ export function registerOpenclawClawlingTools(
|
|
|
2075
2083
|
{ name: "clawchat_orchestrate_create_connect_code" },
|
|
2076
2084
|
);
|
|
2077
2085
|
|
|
2078
|
-
|
|
2086
|
+
registerTool(
|
|
2079
2087
|
(ctx) => {
|
|
2080
2088
|
const accountId = resolveOpenclawClawlingToolAccountId(ctx);
|
|
2081
2089
|
return {
|
|
@@ -2103,6 +2111,8 @@ export function registerOpenclawClawlingTools(
|
|
|
2103
2111
|
);
|
|
2104
2112
|
|
|
2105
2113
|
api.logger.debug?.(
|
|
2106
|
-
|
|
2114
|
+
`clawchat-plugin-openclaw: registered ${registeredToolNames.length} clawchat_* tools (${registeredToolNames
|
|
2115
|
+
.map((name) => name.replace(/^clawchat_/, ""))
|
|
2116
|
+
.join(", ")})`,
|
|
2107
2117
|
);
|
|
2108
2118
|
}
|