@zhin.js/core 1.2.0 → 1.3.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.
Files changed (143) hide show
  1. package/README.md +9 -9
  2. package/lib/adapter.d.ts +20 -18
  3. package/lib/adapter.d.ts.map +1 -1
  4. package/lib/adapter.js +64 -60
  5. package/lib/adapter.js.map +1 -1
  6. package/lib/agent-prompt.d.ts +3 -3
  7. package/lib/agent-prompt.d.ts.map +1 -1
  8. package/lib/built/adapter-process.d.ts +5 -4
  9. package/lib/built/adapter-process.d.ts.map +1 -1
  10. package/lib/built/adapter-process.js +6 -5
  11. package/lib/built/adapter-process.js.map +1 -1
  12. package/lib/built/agent-preset.d.ts +1 -1
  13. package/lib/built/agent-preset.d.ts.map +1 -1
  14. package/lib/built/agent-preset.js +1 -1
  15. package/lib/built/agent-preset.js.map +1 -1
  16. package/lib/built/ai-trigger.d.ts +13 -13
  17. package/lib/built/ai-trigger.d.ts.map +1 -1
  18. package/lib/built/ai-trigger.js +37 -49
  19. package/lib/built/ai-trigger.js.map +1 -1
  20. package/lib/built/authorization.d.ts +11 -0
  21. package/lib/built/authorization.d.ts.map +1 -0
  22. package/lib/built/authorization.js +53 -0
  23. package/lib/built/authorization.js.map +1 -0
  24. package/lib/built/common-adapter-tools.d.ts +21 -14
  25. package/lib/built/common-adapter-tools.d.ts.map +1 -1
  26. package/lib/built/common-adapter-tools.js +58 -41
  27. package/lib/built/common-adapter-tools.js.map +1 -1
  28. package/lib/built/connect-endpoint-instance.d.ts +18 -0
  29. package/lib/built/connect-endpoint-instance.d.ts.map +1 -0
  30. package/lib/built/connect-endpoint-instance.js +41 -0
  31. package/lib/built/connect-endpoint-instance.js.map +1 -0
  32. package/lib/built/database.d.ts +4 -0
  33. package/lib/built/database.d.ts.map +1 -1
  34. package/lib/built/database.js +8 -0
  35. package/lib/built/database.js.map +1 -1
  36. package/lib/built/dispatcher.d.ts.map +1 -1
  37. package/lib/built/dispatcher.js +3 -0
  38. package/lib/built/dispatcher.js.map +1 -1
  39. package/lib/built/endpoint-lifecycle.d.ts +28 -0
  40. package/lib/built/endpoint-lifecycle.d.ts.map +1 -0
  41. package/lib/built/endpoint-lifecycle.js +36 -0
  42. package/lib/built/endpoint-lifecycle.js.map +1 -0
  43. package/lib/built/inbound-pipeline.d.ts +38 -0
  44. package/lib/built/inbound-pipeline.d.ts.map +1 -0
  45. package/lib/built/inbound-pipeline.js +65 -0
  46. package/lib/built/inbound-pipeline.js.map +1 -0
  47. package/lib/built/login-assist.d.ts +4 -4
  48. package/lib/built/login-assist.d.ts.map +1 -1
  49. package/lib/built/login-assist.js +5 -5
  50. package/lib/built/login-assist.js.map +1 -1
  51. package/lib/built/message-enrich.d.ts +40 -0
  52. package/lib/built/message-enrich.d.ts.map +1 -0
  53. package/lib/built/message-enrich.js +84 -0
  54. package/lib/built/message-enrich.js.map +1 -0
  55. package/lib/built/message-filter.d.ts +4 -4
  56. package/lib/built/message-filter.d.ts.map +1 -1
  57. package/lib/built/message-filter.js +4 -4
  58. package/lib/built/message-filter.js.map +1 -1
  59. package/lib/built/permission.d.ts +3 -2
  60. package/lib/built/permission.d.ts.map +1 -1
  61. package/lib/built/permission.js +38 -45
  62. package/lib/built/permission.js.map +1 -1
  63. package/lib/built/permit-check.d.ts +8 -0
  64. package/lib/built/permit-check.d.ts.map +1 -0
  65. package/lib/built/permit-check.js +36 -0
  66. package/lib/built/permit-check.js.map +1 -0
  67. package/lib/built/permit-parse.d.ts +17 -0
  68. package/lib/built/permit-parse.d.ts.map +1 -0
  69. package/lib/built/permit-parse.js +33 -0
  70. package/lib/built/permit-parse.js.map +1 -0
  71. package/lib/built/platform-permit.d.ts +21 -0
  72. package/lib/built/platform-permit.d.ts.map +1 -0
  73. package/lib/built/platform-permit.js +67 -0
  74. package/lib/built/platform-permit.js.map +1 -0
  75. package/lib/built/prepend-quote-context.d.ts +2 -2
  76. package/lib/built/prepend-quote-context.d.ts.map +1 -1
  77. package/lib/built/prepend-quote-context.js +11 -11
  78. package/lib/built/prepend-quote-context.js.map +1 -1
  79. package/lib/built/queue-im-field-contract.d.ts +1 -1
  80. package/lib/built/queue-im-field-contract.d.ts.map +1 -1
  81. package/lib/built/queue-im-field-contract.js +3 -3
  82. package/lib/built/queue-im-field-contract.js.map +1 -1
  83. package/lib/built/roles.d.ts +4 -4
  84. package/lib/built/roles.d.ts.map +1 -1
  85. package/lib/built/roles.js +4 -4
  86. package/lib/built/roles.js.map +1 -1
  87. package/lib/built/tool.d.ts +12 -12
  88. package/lib/built/tool.d.ts.map +1 -1
  89. package/lib/built/tool.js +38 -22
  90. package/lib/built/tool.js.map +1 -1
  91. package/lib/command.d.ts.map +1 -1
  92. package/lib/command.js +11 -2
  93. package/lib/command.js.map +1 -1
  94. package/lib/component.js +1 -1
  95. package/lib/component.js.map +1 -1
  96. package/lib/endpoint-capabilities.d.ts +45 -0
  97. package/lib/endpoint-capabilities.d.ts.map +1 -0
  98. package/lib/endpoint-capabilities.js +56 -0
  99. package/lib/endpoint-capabilities.js.map +1 -0
  100. package/lib/endpoint.d.ts +15 -0
  101. package/lib/endpoint.d.ts.map +1 -0
  102. package/lib/endpoint.js +2 -0
  103. package/lib/endpoint.js.map +1 -0
  104. package/lib/errors.d.ts +2 -2
  105. package/lib/errors.d.ts.map +1 -1
  106. package/lib/errors.js +4 -4
  107. package/lib/errors.js.map +1 -1
  108. package/lib/index.d.ts +12 -3
  109. package/lib/index.d.ts.map +1 -1
  110. package/lib/index.js +9 -3
  111. package/lib/index.js.map +1 -1
  112. package/lib/message.d.ts +3 -3
  113. package/lib/message.d.ts.map +1 -1
  114. package/lib/notice.d.ts +4 -3
  115. package/lib/notice.d.ts.map +1 -1
  116. package/lib/notice.js.map +1 -1
  117. package/lib/plugin-context.d.ts +19 -0
  118. package/lib/plugin-context.d.ts.map +1 -0
  119. package/lib/plugin-context.js +51 -0
  120. package/lib/plugin-context.js.map +1 -0
  121. package/lib/plugin.d.ts +7 -10
  122. package/lib/plugin.d.ts.map +1 -1
  123. package/lib/plugin.js +27 -50
  124. package/lib/plugin.js.map +1 -1
  125. package/lib/prompt.d.ts.map +1 -1
  126. package/lib/prompt.js +8 -4
  127. package/lib/prompt.js.map +1 -1
  128. package/lib/request.d.ts +3 -3
  129. package/lib/request.d.ts.map +1 -1
  130. package/lib/tool-zod.d.ts +3 -2
  131. package/lib/tool-zod.d.ts.map +1 -1
  132. package/lib/tool-zod.js +3 -3
  133. package/lib/tool-zod.js.map +1 -1
  134. package/lib/types.d.ts +19 -59
  135. package/lib/types.d.ts.map +1 -1
  136. package/lib/utils.d.ts.map +1 -1
  137. package/lib/utils.js +2 -1
  138. package/lib/utils.js.map +1 -1
  139. package/package.json +6 -6
  140. package/lib/bot.d.ts +0 -38
  141. package/lib/bot.d.ts.map +0 -1
  142. package/lib/bot.js +0 -2
  143. package/lib/bot.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ai-trigger.d.ts","sourceRoot":"","sources":["../../src/built/ai-trigger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-trigger.d.ts","sourceRoot":"","sources":["../../src/built/ai-trigger.ts"],"names":[],"mappings":"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"}
@@ -31,8 +31,8 @@ export const DEFAULT_AI_TRIGGER_CONFIG = {
31
31
  // ============================================================================
32
32
  // 工具函数
33
33
  // ============================================================================
34
- function normalizeAtIds(botAtIds) {
35
- const ids = botAtIds?.length ? botAtIds : [];
34
+ function normalizeAtIds(endpointAtIds) {
35
+ const ids = endpointAtIds?.length ? endpointAtIds : [];
36
36
  return [...new Set(ids.map((id) => String(id)).filter(Boolean))];
37
37
  }
38
38
  function segmentAtUserId(seg) {
@@ -43,33 +43,33 @@ function segmentAtUserId(seg) {
43
43
  const raw = record.user_id ?? record.qq ?? record.id;
44
44
  return raw == null ? '' : String(raw);
45
45
  }
46
- function isAtSegmentForBot(seg, botIds) {
46
+ function isAtSegmentForEndpoint(seg, endpointIds) {
47
47
  if (seg.type !== 'at' && seg.type !== 'mention')
48
48
  return false;
49
49
  const uid = segmentAtUserId(seg);
50
- return uid !== '' && botIds.includes(uid);
50
+ return uid !== '' && endpointIds.includes(uid);
51
51
  }
52
- function textMentionsBot(text, botIds) {
53
- for (const id of botIds) {
52
+ function textMentionsEndpoint(text, endpointIds) {
53
+ for (const id of endpointIds) {
54
54
  const re = new RegExp(`@${id.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}(?:\\s|$|[\\u200b\\uFEFF])`);
55
55
  if (re.test(text))
56
56
  return true;
57
57
  }
58
58
  return false;
59
59
  }
60
- function stripTextAtBot(text, botIds) {
60
+ function stripTextAtEndpoint(text, endpointIds) {
61
61
  let result = text;
62
- for (const id of botIds) {
62
+ for (const id of endpointIds) {
63
63
  const re = new RegExp(`@${id.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}(?:\\s|[\\u200b\\uFEFF])?`, 'g');
64
64
  result = result.replace(re, '');
65
65
  }
66
66
  return result;
67
67
  }
68
68
  /**
69
- * 收集用于 @ 匹配的 bot 标识符
69
+ * 收集用于 @ 匹配的 Endpoint 标识符
70
70
  */
71
- export function collectBotAtIds(message, extraIds) {
72
- const ids = new Set([String(message.$bot)]);
71
+ export function collectEndpointAtIds(message, extraIds) {
72
+ const ids = new Set([String(message.$endpoint)]);
73
73
  for (const id of extraIds ?? []) {
74
74
  if (id)
75
75
  ids.add(String(id));
@@ -77,15 +77,15 @@ export function collectBotAtIds(message, extraIds) {
77
77
  return [...ids];
78
78
  }
79
79
  /**
80
- * 检查消息是否 @ 了机器人
80
+ * 检查消息是否 @ 了 Endpoint
81
81
  */
82
- export function isAtBot(message, botAtIds) {
83
- const botIds = normalizeAtIds(botAtIds?.length ? botAtIds : collectBotAtIds(message));
84
- if (message.$content.some((seg) => isAtSegmentForBot(seg, botIds))) {
82
+ export function isAtEndpoint(message, endpointAtIds) {
83
+ const endpointIds = normalizeAtIds(endpointAtIds?.length ? endpointAtIds : collectEndpointAtIds(message));
84
+ if (message.$content.some((seg) => isAtSegmentForEndpoint(seg, endpointIds))) {
85
85
  return true;
86
86
  }
87
87
  for (const seg of message.$content) {
88
- if (seg.type === 'text' && seg.data?.text && textMentionsBot(seg.data.text, botIds)) {
88
+ if (seg.type === 'text' && seg.data?.text && textMentionsEndpoint(seg.data.text, endpointIds)) {
89
89
  return true;
90
90
  }
91
91
  }
@@ -118,23 +118,23 @@ export function parseRichMediaContent(content) {
118
118
  }
119
119
  }
120
120
  /**
121
- * 移除 @ 机器人的部分
121
+ * 移除 @ Endpoint 的部分
122
122
  */
123
- export function removeAtBot(message, botAtIds) {
124
- const botIds = normalizeAtIds(botAtIds?.length ? botAtIds : collectBotAtIds(message));
123
+ export function removeAtEndpoint(message, endpointAtIds) {
124
+ const endpointIds = normalizeAtIds(endpointAtIds?.length ? endpointAtIds : collectEndpointAtIds(message));
125
125
  return message.$content
126
- .filter((seg) => !isAtSegmentForBot(seg, botIds))
126
+ .filter((seg) => !isAtSegmentForEndpoint(seg, endpointIds))
127
127
  .map((seg) => {
128
128
  if (seg.type !== 'text' || !seg.data?.text)
129
129
  return seg;
130
- const stripped = stripTextAtBot(seg.data.text, botIds).trim();
130
+ const stripped = stripTextAtEndpoint(seg.data.text, endpointIds).trim();
131
131
  if (!stripped)
132
132
  return null;
133
133
  return { ...seg, data: { ...seg.data, text: stripped } };
134
134
  })
135
135
  .filter((seg) => seg != null);
136
136
  }
137
- function normalizeBotIdList(input) {
137
+ function normalizeEndpointIdList(input) {
138
138
  if (Array.isArray(input))
139
139
  return input.map((v) => String(v)).filter(Boolean);
140
140
  if (typeof input === 'string') {
@@ -142,15 +142,15 @@ function normalizeBotIdList(input) {
142
142
  }
143
143
  return [];
144
144
  }
145
- function collectBotTrustedIds(botConfig) {
146
- if (!botConfig)
145
+ function collectEndpointTrustedIds(endpointConfig) {
146
+ if (!endpointConfig)
147
147
  return [];
148
- return normalizeBotIdList(botConfig.trusted);
148
+ return normalizeEndpointIdList(endpointConfig.trusted);
149
149
  }
150
150
  /**
151
- * 解析发送者角色集合(IM 群角色 + trigger + bots[].$config)
151
+ * 解析发送者角色集合(IM 群角色 + trigger + endpoints[].$config)
152
152
  */
153
- export function resolveSenderRoles(message, config, botConfig) {
153
+ export function resolveSenderRoles(message, config, endpointConfig) {
154
154
  const scope = message.$channel?.type || 'private';
155
155
  // process 适配器(stdin/本机 CLI):操作者即宿主用户,恒为 master
156
156
  if (message.$adapter === 'process') {
@@ -160,36 +160,24 @@ export function resolveSenderRoles(message, config, botConfig) {
160
160
  };
161
161
  }
162
162
  const senderId = String(message.$sender.id);
163
- const senderPermissions = message.$sender.permissions || [];
164
163
  const roles = [];
165
164
  const masters = config.masters || [];
166
165
  const globalTrusted = config.trusted || [];
167
- const cfg = botConfig;
168
- const botMaster = cfg?.master != null ? String(cfg.master) : undefined;
169
- const botTrustedIds = collectBotTrustedIds(cfg);
170
- if (masters.includes(senderId) || (botMaster != null && senderId === botMaster)) {
166
+ const cfg = endpointConfig;
167
+ const endpointMaster = cfg?.master != null ? String(cfg.master) : undefined;
168
+ const endpointTrustedIds = collectEndpointTrustedIds(cfg);
169
+ if (masters.includes(senderId) || (endpointMaster != null && senderId === endpointMaster)) {
171
170
  roles.push('master');
172
171
  }
173
- else if (globalTrusted.includes(senderId) || botTrustedIds.includes(senderId)) {
172
+ else if (globalTrusted.includes(senderId) || endpointTrustedIds.includes(senderId)) {
174
173
  roles.push('trusted');
175
174
  }
176
- const isGroupOwner = senderPermissions.includes('owner')
177
- || senderPermissions.includes('group_owner')
178
- || message.$sender?.role === 'owner';
179
- const isGroupAdmin = isGroupOwner
180
- || senderPermissions.includes('admin')
181
- || senderPermissions.includes('group_admin')
182
- || message.$sender?.role === 'admin';
183
- if (isGroupOwner)
184
- roles.push('group_owner');
185
- else if (isGroupAdmin)
186
- roles.push('group_admin');
187
175
  return {
188
176
  scope,
189
177
  roles: normalizeSenderRoles(roles),
190
178
  };
191
179
  }
192
- /** 从 IM 消息生成 sessionId(platform:botId:type:sceneId) */
180
+ /** 从 IM 消息生成 sessionId(platform:endpointId:type:sceneId) */
193
181
  export function resolveIMSessionIdFromMessage(message) {
194
182
  const scope = (message.$channel?.type || 'private');
195
183
  const sceneId = scope === 'private'
@@ -197,7 +185,7 @@ export function resolveIMSessionIdFromMessage(message) {
197
185
  : String(message.$channel?.id || message.$sender.id);
198
186
  return resolveIMSessionId({
199
187
  platform: message.$adapter,
200
- botId: message.$bot,
188
+ endpointId: message.$endpoint,
201
189
  scope,
202
190
  sceneId,
203
191
  });
@@ -207,7 +195,7 @@ export function resolveIMSessionIdFromMessage(message) {
207
195
  */
208
196
  export function shouldTriggerAI(message, config, options) {
209
197
  const fullConfig = { ...DEFAULT_AI_TRIGGER_CONFIG, ...config };
210
- const botAtIds = collectBotAtIds(message, options?.botAtIds);
198
+ const endpointAtIds = collectEndpointAtIds(message, options?.endpointAtIds);
211
199
  if (!fullConfig.enabled) {
212
200
  return { triggered: false, content: '' };
213
201
  }
@@ -229,8 +217,8 @@ export function shouldTriggerAI(message, config, options) {
229
217
  }
230
218
  }
231
219
  // 2. 检查 @ 触发(群/频道主路径;仅 @ 无正文时也触发,由 Agent 处理空输入)
232
- if (fullConfig.respondToAt && isAtBot(message, botAtIds)) {
233
- const content = removeAtBot(message, botAtIds);
220
+ if (fullConfig.respondToAt && isAtEndpoint(message, endpointAtIds)) {
221
+ const content = removeAtEndpoint(message, endpointAtIds);
234
222
  return {
235
223
  triggered: true,
236
224
  content: content.length ? segment.toString(content).trim() : '',
@@ -1 +1 @@
1
- {"version":3,"file":"ai-trigger.js","sourceRoot":"","sources":["../../src/built/ai-trigger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-trigger.js","sourceRoot":"","sources":["../../src/built/ai-trigger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * 授权重算 — ConfigFeature + Message 为单一真相源($sender.isMaster/isTrusted 为 enrich 快照)
3
+ */
4
+ import type { Plugin } from '../plugin.js';
5
+ import type { Message } from '../message.js';
6
+ import { type SenderRolesResult } from './ai-trigger.js';
7
+ /**
8
+ * 从 ConfigFeature + Message 重算发送者角色(含群角色与 master/trusted)
9
+ */
10
+ export declare function resolveSubjectRoles(plugin: Plugin, message: Message<any>): SenderRolesResult;
11
+ //# sourceMappingURL=authorization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authorization.d.ts","sourceRoot":"","sources":["../../src/built/authorization.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAC;AAsEzB;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAI5F"}
@@ -0,0 +1,53 @@
1
+ import { mergeAITriggerConfig, resolveSenderRoles, } from './ai-trigger.js';
2
+ import { formatCompact, Logger } from '@zhin.js/logger';
3
+ const logger = new Logger(null, 'Authorization');
4
+ function findEndpointEntryFromConfig(config, adapter, endpointId) {
5
+ const endpoints = config.endpoints;
6
+ if (!Array.isArray(endpoints))
7
+ return undefined;
8
+ return endpoints.find((b) => b.context === adapter && String(b.name) === endpointId);
9
+ }
10
+ function readTriggerConfig(plugin) {
11
+ const root = plugin.root ?? plugin;
12
+ try {
13
+ const ai = root.inject('ai');
14
+ if (ai?.getTriggerConfig)
15
+ return ai.getTriggerConfig();
16
+ }
17
+ catch (e) {
18
+ logger.debug(formatCompact({ auth: 'trigger_config_fallback', reason: 'ai_not_ready' }));
19
+ }
20
+ try {
21
+ const configSvc = root.inject('config');
22
+ const primary = configSvc?.getPrimary?.();
23
+ return primary?.ai?.trigger ?? {};
24
+ }
25
+ catch (e) {
26
+ logger.debug(formatCompact({ auth: 'trigger_config_read_error' }));
27
+ return {};
28
+ }
29
+ }
30
+ function readEndpointConfig(plugin, message) {
31
+ const root = plugin.root ?? plugin;
32
+ try {
33
+ const configSvc = root.inject('config');
34
+ const primary = configSvc?.getPrimary?.();
35
+ if (!primary)
36
+ return undefined;
37
+ const entry = findEndpointEntryFromConfig(primary, String(message.$adapter), String(message.$endpoint));
38
+ return entry;
39
+ }
40
+ catch (e) {
41
+ logger.debug(formatCompact({ auth: 'endpoint_config_read_error' }));
42
+ return undefined;
43
+ }
44
+ }
45
+ /**
46
+ * 从 ConfigFeature + Message 重算发送者角色(含群角色与 master/trusted)
47
+ */
48
+ export function resolveSubjectRoles(plugin, message) {
49
+ const triggerConfig = mergeAITriggerConfig(readTriggerConfig(plugin));
50
+ const endpointConfig = readEndpointConfig(plugin, message);
51
+ return resolveSenderRoles(message, triggerConfig, endpointConfig);
52
+ }
53
+ //# sourceMappingURL=authorization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authorization.js","sourceRoot":"","sources":["../../src/built/authorization.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,oBAAoB,EACpB,kBAAkB,GAGnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;AAejD,SAAS,2BAA2B,CAClC,MAAqB,EACrB,OAAe,EACf,UAAkB;IAElB,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAChD,OAAO,SAAS,CAAC,IAAI,CACnB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,UAAU,CAC9D,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAc;IACvC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAA6D,CAAC;QACzF,IAAI,EAAE,EAAE,gBAAgB;YAAE,OAAO,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACzD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,yBAAyB,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAEzB,CAAC;QACd,MAAM,OAAO,GAAG,SAAS,EAAE,UAAU,EAAE,EAA+B,CAAC;QACvE,OAAO,OAAO,EAAE,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC;IACpC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE,CAAC,CAAC,CAAC;QACnE,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAc,EAAE,OAAqB;IAC/D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAEzB,CAAC;QACd,MAAM,OAAO,GAAG,SAAS,EAAE,UAAU,EAAE,EAA+B,CAAC;QACvE,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAC/B,MAAM,KAAK,GAAG,2BAA2B,CACvC,OAAO,EACP,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EACxB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAC1B,CAAC;QACF,OAAO,KAA4C,CAAC;IACtD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,CAAC,CAAC;QACpE,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,OAAqB;IACvE,MAAM,aAAa,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;IACtE,MAAM,cAAc,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3D,OAAO,kBAAkB,CAAC,OAAO,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;AACpE,CAAC"}
@@ -12,29 +12,29 @@
12
12
  * tools.forEach(t => this.addTool(t));
13
13
  * // 另:包内 skills/<name>/SKILL.md 供 Agent 发现
14
14
  */
15
- import type { Tool, SenderRole } from '../types.js';
15
+ import type { Tool } from '../types.js';
16
16
  /**
17
17
  * 群管理能力接口。
18
18
  * Adapter 基类通过此接口声明方法签名,子类选择性覆写。
19
19
  */
20
20
  export interface IGroupManagement {
21
- kickMember?(botId: string, sceneId: string, userId: string): Promise<any>;
22
- muteMember?(botId: string, sceneId: string, userId: string, duration?: number): Promise<any>;
23
- setMemberNickname?(botId: string, sceneId: string, userId: string, nickname: string): Promise<any>;
24
- setAdmin?(botId: string, sceneId: string, userId: string, enable?: boolean): Promise<any>;
25
- listMembers?(botId: string, sceneId: string): Promise<any>;
26
- banMember?(botId: string, sceneId: string, userId: string, reason?: string): Promise<any>;
27
- unbanMember?(botId: string, sceneId: string, userId: string): Promise<any>;
28
- setGroupName?(botId: string, sceneId: string, name: string): Promise<any>;
29
- muteAll?(botId: string, sceneId: string, enable?: boolean): Promise<any>;
30
- getGroupInfo?(botId: string, sceneId: string): Promise<any>;
21
+ kickMember?(endpointId: string, sceneId: string, userId: string): Promise<any>;
22
+ muteMember?(endpointId: string, sceneId: string, userId: string, duration?: number): Promise<any>;
23
+ setMemberNickname?(endpointId: string, sceneId: string, userId: string, nickname: string): Promise<any>;
24
+ setAdmin?(endpointId: string, sceneId: string, userId: string, enable?: boolean): Promise<any>;
25
+ listMembers?(endpointId: string, sceneId: string): Promise<any>;
26
+ banMember?(endpointId: string, sceneId: string, userId: string, reason?: string): Promise<any>;
27
+ unbanMember?(endpointId: string, sceneId: string, userId: string): Promise<any>;
28
+ setGroupName?(endpointId: string, sceneId: string, name: string): Promise<any>;
29
+ muteAll?(endpointId: string, sceneId: string, enable?: boolean): Promise<any>;
30
+ getGroupInfo?(endpointId: string, sceneId: string): Promise<any>;
31
31
  }
32
32
  export interface GroupMethodSpec {
33
33
  method: keyof IGroupManagement;
34
34
  toolSuffix: string;
35
35
  description: string;
36
36
  keywords: string[];
37
- requiredAnyRole?: SenderRole[];
37
+ permit?: string;
38
38
  extraParams: Record<string, {
39
39
  type: string;
40
40
  description: string;
@@ -49,7 +49,14 @@ export declare const GROUP_MANAGEMENT_SKILL_KEYWORDS: string[];
49
49
  export interface GroupManagementToolFactory<T> {
50
50
  (spec: GroupMethodSpec, prefix: string, execute: (args: Record<string, any>) => Promise<any>): T;
51
51
  }
52
- export declare function createGroupManagementTools(adapter: IGroupManagement, prefix: string): Tool[];
52
+ export declare function defaultQqGroupPermitResolver(adapterPrefix: string): (logicalPerm: string) => string;
53
+ export interface CreateGroupManagementToolsOptions {
54
+ /** 将 GROUP_METHOD_SPECS 逻辑 perm(group_admin/group_owner)映射为 platform(...) 字符串 */
55
+ permitResolver?: (logicalPerm: string) => string | undefined;
56
+ /** 是否注册默认 QQ 系 group checker(默认 true) */
57
+ registerChecker?: boolean;
58
+ }
59
+ export declare function createGroupManagementTools(adapter: IGroupManagement, prefix: string, options?: CreateGroupManagementToolsOptions): Tool[];
53
60
  export declare function createGroupManagementToolsRaw<T>(adapter: IGroupManagement, prefix: string, factory: GroupManagementToolFactory<T>): T[];
54
- export declare function buildMethodArgs(method: keyof IGroupManagement, botId: string, sceneId: string, rest: Record<string, any>): any[];
61
+ export declare function buildMethodArgs(method: keyof IGroupManagement, endpointId: string, sceneId: string, rest: Record<string, any>): any[];
55
62
  //# sourceMappingURL=common-adapter-tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"common-adapter-tools.d.ts","sourceRoot":"","sources":["../../src/built/common-adapter-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common-adapter-tools.d.ts","sourceRoot":"","sources":["../../src/built/common-adapter-tools.ts"],"names":[],"mappings":"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"}
@@ -12,13 +12,14 @@
12
12
  * tools.forEach(t => this.addTool(t));
13
13
  * // 另:包内 skills/<name>/SKILL.md 供 Agent 发现
14
14
  */
15
+ import { registerDefaultGroupPlatformPermitChecker } from './platform-permit.js';
15
16
  export const GROUP_METHOD_SPECS = [
16
17
  {
17
18
  method: 'kickMember',
18
19
  toolSuffix: 'kick_member',
19
20
  description: '将成员踢出群/服务器。适用于严重违规、广告号等需要移除的场景。踢出后该成员将无法再进入群聊(部分平台可重新邀请)。如果只需要用户名而没有 user_id,请先调用 list_members 查询',
20
21
  keywords: ['踢', 'kick', '移除', '踢出'],
21
- requiredAnyRole: ['group_admin'],
22
+ permit: 'group_admin',
22
23
  extraParams: {
23
24
  user_id: { type: 'string', description: '目标用户 ID(如果只有昵称,先用 list_members 查询获取)' },
24
25
  },
@@ -29,7 +30,7 @@ export const GROUP_METHOD_SPECS = [
29
30
  toolSuffix: 'mute_member',
30
31
  description: '禁言或解除禁言群成员。适用于违规发言、刷屏、骚扰他人等需要临时限制发言的场景。duration 单位为秒,传 0 表示解除禁言。默认禁言 10 分钟(600秒)。如果只有昵称而没有 user_id,请先调用 list_members 查询',
31
32
  keywords: ['禁言', 'mute', '静音', '解除禁言', '解禁', '闭嘴'],
32
- requiredAnyRole: ['group_admin'],
33
+ permit: 'group_admin',
33
34
  extraParams: {
34
35
  user_id: { type: 'string', description: '目标用户 ID(如果只有昵称,先用 list_members 查询获取)' },
35
36
  duration: { type: 'number', description: '禁言时长(秒),0=解除禁言,默认600(10分钟)。常用值:60=1分钟, 600=10分钟, 3600=1小时, 86400=1天', default: 600 },
@@ -41,7 +42,7 @@ export const GROUP_METHOD_SPECS = [
41
42
  toolSuffix: 'set_nickname',
42
43
  description: '设置群成员的群昵称/名片。仅修改群内显示名称,不影响用户的全局昵称。如果只有昵称而没有 user_id,请先调用 list_members 查询',
43
44
  keywords: ['昵称', '名片', 'nickname', 'card', '改名片'],
44
- requiredAnyRole: ['group_admin'],
45
+ permit: 'group_admin',
45
46
  extraParams: {
46
47
  user_id: { type: 'string', description: '目标用户 ID(如果只有昵称,先用 list_members 查询获取)' },
47
48
  nickname: { type: 'string', description: '新的群昵称/名片' },
@@ -53,7 +54,7 @@ export const GROUP_METHOD_SPECS = [
53
54
  toolSuffix: 'set_admin',
54
55
  description: '设置或取消群管理员。注意:此操作需要群主权限,普通管理员无法执行。enable=true 为设置管理员,enable=false 为取消管理员。如果只有昵称而没有 user_id,请先调用 list_members 查询',
55
56
  keywords: ['管理员', 'admin', '设置管理', '取消管理', '提升管理', '撤销管理'],
56
- requiredAnyRole: ['group_owner'],
57
+ permit: 'group_owner',
57
58
  extraParams: {
58
59
  user_id: { type: 'string', description: '目标用户 ID(如果只有昵称,先用 list_members 查询获取)' },
59
60
  enable: { type: 'boolean', description: 'true=设置为管理员,false=取消管理员身份', default: true },
@@ -73,7 +74,7 @@ export const GROUP_METHOD_SPECS = [
73
74
  toolSuffix: 'ban_member',
74
75
  description: '永久封禁成员(拉入黑名单)。与踢人(kick)不同,封禁后该成员无法再加入群聊。适用于恶意用户、严重违规等需要永久禁止的场景。如果只有昵称而没有 user_id,请先调用 list_members 查询',
75
76
  keywords: ['封禁', 'ban', '拉黑', '黑名单'],
76
- requiredAnyRole: ['group_admin'],
77
+ permit: 'group_admin',
77
78
  extraParams: {
78
79
  user_id: { type: 'string', description: '目标用户 ID(如果只有昵称,先用 list_members 查询获取)' },
79
80
  reason: { type: 'string', description: '封禁原因(将记录在封禁日志中)' },
@@ -85,7 +86,7 @@ export const GROUP_METHOD_SPECS = [
85
86
  toolSuffix: 'unban_member',
86
87
  description: '解除封禁,将成员从黑名单中移除。解除后该成员可以重新加入群聊。如果只有昵称而没有 user_id,请先调用 list_members 查询',
87
88
  keywords: ['解封', 'unban', '解除封禁', '移出黑名单'],
88
- requiredAnyRole: ['group_admin'],
89
+ permit: 'group_admin',
89
90
  extraParams: {
90
91
  user_id: { type: 'string', description: '目标用户 ID(如果只有昵称,先用 list_members 查询获取)' },
91
92
  },
@@ -96,7 +97,7 @@ export const GROUP_METHOD_SPECS = [
96
97
  toolSuffix: 'set_group_name',
97
98
  description: '修改群/服务器名称。修改后所有成员立即可见新群名',
98
99
  keywords: ['群名', '改名', 'group name', '修改群名'],
99
- requiredAnyRole: ['group_admin'],
100
+ permit: 'group_admin',
100
101
  extraParams: {
101
102
  name: { type: 'string', description: '新群名称' },
102
103
  },
@@ -107,7 +108,7 @@ export const GROUP_METHOD_SPECS = [
107
108
  toolSuffix: 'mute_all',
108
109
  description: '开启或关闭全员禁言。开启后除管理员外所有成员都无法发言。适用于紧急维护、重要通知、聊天秩序混乱等场景。enable=true 开启,enable=false 解除',
109
110
  keywords: ['全员禁言', 'mute all', '全体禁言', '全体解禁'],
110
- requiredAnyRole: ['group_admin'],
111
+ permit: 'group_admin',
111
112
  extraParams: {
112
113
  enable: { type: 'boolean', description: 'true=开启全员禁言,false=解除全员禁言', default: true },
113
114
  },
@@ -129,26 +130,42 @@ export const GROUP_MANAGEMENT_SKILL_KEYWORDS = [
129
130
  '群管理', '踢人', '禁言', '封禁', '管理员', '群名',
130
131
  '成员', 'kick', 'mute', 'ban', 'admin', 'members',
131
132
  ];
132
- export function createGroupManagementTools(adapter, prefix) {
133
- return createGroupManagementToolsRaw(adapter, prefix, (spec, prefix, execute) => ({
134
- name: `${prefix}_${spec.toolSuffix}`,
135
- description: `${spec.description} (${prefix})`,
136
- parameters: {
137
- type: 'object',
138
- properties: {
139
- bot_id: { type: 'string', description: 'Bot ID', contextKey: 'botId' },
140
- scene_id: { type: 'string', description: '群/服务器 ID', contextKey: 'sceneId' },
141
- ...Object.fromEntries(Object.entries(spec.extraParams)),
133
+ export function defaultQqGroupPermitResolver(adapterPrefix) {
134
+ return (logicalPerm) => `platform(${adapterPrefix},${logicalPerm})`;
135
+ }
136
+ function resolveSpecPermit(specPerm, prefix, permitResolver) {
137
+ if (!specPerm)
138
+ return undefined;
139
+ const resolved = permitResolver(specPerm);
140
+ return resolved ? [resolved] : undefined;
141
+ }
142
+ export function createGroupManagementTools(adapter, prefix, options = {}) {
143
+ const permitResolver = options.permitResolver ?? defaultQqGroupPermitResolver(prefix);
144
+ if (options.registerChecker !== false) {
145
+ registerDefaultGroupPlatformPermitChecker(prefix);
146
+ }
147
+ return createGroupManagementToolsRaw(adapter, prefix, (spec, prefix, execute) => {
148
+ const specPermissions = resolveSpecPermit(spec.permit, prefix, permitResolver);
149
+ return {
150
+ name: `${prefix}_${spec.toolSuffix}`,
151
+ description: `${spec.description} (${prefix})`,
152
+ parameters: {
153
+ type: 'object',
154
+ properties: {
155
+ endpoint_id: { type: 'string', description: 'Endpoint ID', contextKey: 'endpointId' },
156
+ scene_id: { type: 'string', description: '群/服务器 ID', contextKey: 'sceneId' },
157
+ ...Object.fromEntries(Object.entries(spec.extraParams)),
158
+ },
159
+ required: ['endpoint_id', 'scene_id', ...(spec.extraRequired ?? [])],
142
160
  },
143
- required: ['bot_id', 'scene_id', ...(spec.extraRequired ?? [])],
144
- },
145
- execute,
146
- tags: ['group', 'management', prefix],
147
- keywords: spec.keywords,
148
- ...(spec.requiredAnyRole?.length ? { requiredAnyRole: spec.requiredAnyRole } : {}),
149
- scopes: ['group', 'channel'],
150
- preExecutable: spec.preExecutable,
151
- }));
161
+ execute,
162
+ tags: ['group', 'management', prefix],
163
+ keywords: spec.keywords,
164
+ ...(specPermissions ? { permissions: specPermissions } : {}),
165
+ scopes: ['group', 'channel'],
166
+ preExecutable: spec.preExecutable,
167
+ };
168
+ });
152
169
  }
153
170
  export function createGroupManagementToolsRaw(adapter, prefix, factory) {
154
171
  const tools = [];
@@ -158,8 +175,8 @@ export function createGroupManagementToolsRaw(adapter, prefix, factory) {
158
175
  continue;
159
176
  const boundFn = fn.bind(adapter);
160
177
  const execute = async (args) => {
161
- const { bot_id, scene_id, ...rest } = args;
162
- const methodArgs = buildMethodArgs(spec.method, bot_id, scene_id, rest);
178
+ const { endpoint_id, scene_id, ...rest } = args;
179
+ const methodArgs = buildMethodArgs(spec.method, endpoint_id, scene_id, rest);
163
180
  return boundFn.apply(adapter, methodArgs);
164
181
  };
165
182
  tools.push(factory(spec, prefix, execute));
@@ -169,19 +186,19 @@ export function createGroupManagementToolsRaw(adapter, prefix, factory) {
169
186
  // ============================================================================
170
187
  // 参数映射(method → 有序参数列表)
171
188
  // ============================================================================
172
- export function buildMethodArgs(method, botId, sceneId, rest) {
189
+ export function buildMethodArgs(method, endpointId, sceneId, rest) {
173
190
  switch (method) {
174
- case 'kickMember': return [botId, sceneId, rest.user_id];
175
- case 'muteMember': return [botId, sceneId, rest.user_id, rest.duration ?? 600];
176
- case 'setMemberNickname': return [botId, sceneId, rest.user_id, rest.nickname];
177
- case 'setAdmin': return [botId, sceneId, rest.user_id, rest.enable ?? true];
178
- case 'listMembers': return [botId, sceneId];
179
- case 'banMember': return [botId, sceneId, rest.user_id, rest.reason];
180
- case 'unbanMember': return [botId, sceneId, rest.user_id];
181
- case 'setGroupName': return [botId, sceneId, rest.name];
182
- case 'muteAll': return [botId, sceneId, rest.enable ?? true];
183
- case 'getGroupInfo': return [botId, sceneId];
184
- default: return [botId, sceneId, ...Object.values(rest)];
191
+ case 'kickMember': return [endpointId, sceneId, rest.user_id];
192
+ case 'muteMember': return [endpointId, sceneId, rest.user_id, rest.duration ?? 600];
193
+ case 'setMemberNickname': return [endpointId, sceneId, rest.user_id, rest.nickname];
194
+ case 'setAdmin': return [endpointId, sceneId, rest.user_id, rest.enable ?? true];
195
+ case 'listMembers': return [endpointId, sceneId];
196
+ case 'banMember': return [endpointId, sceneId, rest.user_id, rest.reason];
197
+ case 'unbanMember': return [endpointId, sceneId, rest.user_id];
198
+ case 'setGroupName': return [endpointId, sceneId, rest.name];
199
+ case 'muteAll': return [endpointId, sceneId, rest.enable ?? true];
200
+ case 'getGroupInfo': return [endpointId, sceneId];
201
+ default: return [endpointId, sceneId, ...Object.values(rest)];
185
202
  }
186
203
  }
187
204
  //# sourceMappingURL=common-adapter-tools.js.map