@dhfpub/clawpool-admin 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -148,6 +148,8 @@ Typed group governance tool with these actions:
148
148
  - `add_members`
149
149
  - `remove_members`
150
150
  - `update_member_role`
151
+ - `update_all_members_muted`
152
+ - `update_member_speaking`
151
153
  - `dissolve`
152
154
 
153
155
  ### `clawpool_agent_admin`
package/dist/index.js CHANGED
@@ -87,6 +87,32 @@ function readRequiredInt(params, key) {
87
87
  }
88
88
  return value;
89
89
  }
90
+ function readOptionalBool(params, key) {
91
+ const raw = readRawParam(params, key);
92
+ if (raw == null) {
93
+ return void 0;
94
+ }
95
+ if (typeof raw === "boolean") {
96
+ return raw;
97
+ }
98
+ if (typeof raw === "number") {
99
+ if (raw === 1) return true;
100
+ if (raw === 0) return false;
101
+ }
102
+ if (typeof raw === "string") {
103
+ const normalized = raw.trim().toLowerCase();
104
+ if (normalized === "true" || normalized === "1") return true;
105
+ if (normalized === "false" || normalized === "0") return false;
106
+ }
107
+ throw new Error(`Clawpool action ${key} must be a boolean.`);
108
+ }
109
+ function readRequiredBool(params, key) {
110
+ const value = readOptionalBool(params, key);
111
+ if (value == null) {
112
+ throw new Error(`Clawpool action requires ${key}.`);
113
+ }
114
+ return value;
115
+ }
90
116
  function ensureMemberTypes(types) {
91
117
  for (const memberType of types) {
92
118
  if (memberType !== 1 && memberType !== 2) {
@@ -99,6 +125,11 @@ function ensureMemberType(memberType) {
99
125
  throw new Error("Clawpool action member_type only supports 1 for role update.");
100
126
  }
101
127
  }
128
+ function ensureSpeakingMemberType(memberType) {
129
+ if (memberType !== 1 && memberType !== 2) {
130
+ throw new Error("Clawpool action member_type only supports 1 (human) or 2 (agent).");
131
+ }
132
+ }
102
133
  function buildGroupCreateRequest(params) {
103
134
  const name = readRequiredStringParam(params, "name");
104
135
  const memberIDs = readNumericIDArray(params, "memberIds", false);
@@ -206,6 +237,52 @@ function buildGroupDissolveRequest(params) {
206
237
  }
207
238
  };
208
239
  }
240
+ function buildGroupAllMembersMutedUpdateRequest(params) {
241
+ const sessionID = readRequiredStringParam(params, "sessionId");
242
+ const allMembersMuted = readRequiredBool(params, "allMembersMuted");
243
+ return {
244
+ actionName: "group_all_members_muted_update",
245
+ method: "POST",
246
+ path: "/sessions/speaking/all_muted",
247
+ body: {
248
+ session_id: sessionID,
249
+ all_members_muted: allMembersMuted
250
+ }
251
+ };
252
+ }
253
+ function buildGroupMemberSpeakingUpdateRequest(params) {
254
+ const sessionID = readRequiredStringParam(params, "sessionId");
255
+ const memberID = readRequiredStringParam(params, "memberId");
256
+ if (!/^\d+$/.test(memberID)) {
257
+ throw new Error("Clawpool action memberId must be numeric.");
258
+ }
259
+ const memberType = readOptionalInt(params, "memberType") ?? 1;
260
+ ensureSpeakingMemberType(memberType);
261
+ const isSpeakMuted = readOptionalBool(params, "isSpeakMuted");
262
+ const canSpeakWhenAllMuted = readOptionalBool(params, "canSpeakWhenAllMuted");
263
+ if (isSpeakMuted == null && canSpeakWhenAllMuted == null) {
264
+ throw new Error(
265
+ "Clawpool action update_member_speaking requires isSpeakMuted or canSpeakWhenAllMuted."
266
+ );
267
+ }
268
+ const body = {
269
+ session_id: sessionID,
270
+ member_id: memberID,
271
+ member_type: memberType
272
+ };
273
+ if (isSpeakMuted != null) {
274
+ body.is_speak_muted = isSpeakMuted;
275
+ }
276
+ if (canSpeakWhenAllMuted != null) {
277
+ body.can_speak_when_all_muted = canSpeakWhenAllMuted;
278
+ }
279
+ return {
280
+ actionName: "group_member_speaking_update",
281
+ method: "POST",
282
+ path: "/sessions/members/speaking",
283
+ body
284
+ };
285
+ }
209
286
  function buildGroupDetailReadRequest(params) {
210
287
  const sessionID = readRequiredStringParam(params, "sessionId");
211
288
  return {
@@ -246,6 +323,10 @@ function buildAgentHTTPRequest(action, params) {
246
323
  return buildGroupMemberRemoveRequest(params);
247
324
  case "group_member_role_update":
248
325
  return buildGroupMemberRoleUpdateRequest(params);
326
+ case "group_all_members_muted_update":
327
+ return buildGroupAllMembersMutedUpdateRequest(params);
328
+ case "group_member_speaking_update":
329
+ return buildGroupMemberSpeakingUpdateRequest(params);
249
330
  case "group_dissolve":
250
331
  return buildGroupDissolveRequest(params);
251
332
  case "group_detail_read":
@@ -668,6 +749,10 @@ function mapGroupActionToRequestAction(action) {
668
749
  return "group_member_remove";
669
750
  case "update_member_role":
670
751
  return "group_member_role_update";
752
+ case "update_all_members_muted":
753
+ return "group_all_members_muted_update";
754
+ case "update_member_speaking":
755
+ return "group_member_speaking_update";
671
756
  case "dissolve":
672
757
  return "group_dissolve";
673
758
  default:
@@ -770,6 +855,35 @@ var ClawpoolGroupToolSchema = {
770
855
  },
771
856
  required: ["action", "sessionId", "memberId", "role"]
772
857
  },
858
+ {
859
+ type: "object",
860
+ additionalProperties: false,
861
+ properties: {
862
+ action: { const: "update_all_members_muted" },
863
+ accountId: { type: "string", minLength: 1 },
864
+ sessionId: { type: "string", minLength: 1 },
865
+ allMembersMuted: { type: "boolean" }
866
+ },
867
+ required: ["action", "sessionId", "allMembersMuted"]
868
+ },
869
+ {
870
+ type: "object",
871
+ additionalProperties: false,
872
+ properties: {
873
+ action: { const: "update_member_speaking" },
874
+ accountId: { type: "string", minLength: 1 },
875
+ sessionId: { type: "string", minLength: 1 },
876
+ memberId: numericIdSchema,
877
+ memberType: { type: "integer", enum: [1, 2] },
878
+ isSpeakMuted: { type: "boolean" },
879
+ canSpeakWhenAllMuted: { type: "boolean" }
880
+ },
881
+ required: ["action", "sessionId", "memberId"],
882
+ anyOf: [
883
+ { required: ["isSpeakMuted"] },
884
+ { required: ["canSpeakWhenAllMuted"] }
885
+ ]
886
+ },
773
887
  {
774
888
  type: "object",
775
889
  additionalProperties: false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dhfpub/clawpool-admin",
3
- "version": "0.1.2",
3
+ "version": "0.2.0",
4
4
  "description": "OpenClaw admin tools plugin for ClawPool",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -29,6 +29,8 @@ Use the native `clawpool_group` tool with typed fields:
29
29
  | `add_members` | `group_member_add` | `sessionId`, `memberIds` |
30
30
  | `remove_members` | `group_member_remove` | `sessionId`, `memberIds` |
31
31
  | `update_member_role` | `group_member_role_update` | `sessionId`, `memberId`, `role` |
32
+ | `update_all_members_muted` | `group_all_members_muted_update` | `sessionId`, `allMembersMuted` |
33
+ | `update_member_speaking` | `group_member_speaking_update` | `sessionId`, `memberId`, `isSpeakMuted` or `canSpeakWhenAllMuted` |
32
34
  | `dissolve` | `group_dissolve` | `sessionId` |
33
35
 
34
36
  ## Payload Templates