@zhin.js/adapter-napcat 3.0.1 → 3.0.2

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 (181) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +0 -1
  3. package/agent/tools/ai_tts.ts +21 -0
  4. package/agent/tools/del_group_notice.ts +22 -0
  5. package/agent/tools/delete_essence_msg.ts +21 -0
  6. package/agent/tools/delete_friend.ts +20 -0
  7. package/agent/tools/download_file.ts +19 -0
  8. package/agent/tools/forward_single_msg.ts +32 -0
  9. package/agent/tools/get_ai_characters.ts +19 -0
  10. package/agent/tools/get_essence_list.ts +19 -0
  11. package/agent/tools/get_friend_msg_history.ts +20 -0
  12. package/agent/tools/get_group_file_url.ts +21 -0
  13. package/agent/tools/get_group_info_ex.ts +19 -0
  14. package/agent/tools/get_group_msg_history.ts +21 -0
  15. package/agent/tools/get_group_notice.ts +19 -0
  16. package/agent/tools/get_group_root_files.ts +19 -0
  17. package/agent/tools/get_group_shut_list.ts +19 -0
  18. package/agent/tools/get_mini_app_ark.ts +22 -0
  19. package/agent/tools/get_user_status.ts +18 -0
  20. package/agent/tools/group_sign.ts +20 -0
  21. package/agent/tools/mark_msg_as_read.ts +19 -0
  22. package/agent/tools/ocr_image.ts +18 -0
  23. package/agent/tools/send_forward_msg.ts +31 -0
  24. package/agent/tools/send_group_notice.ts +23 -0
  25. package/agent/tools/send_like.ts +20 -0
  26. package/agent/tools/send_poke.ts +20 -0
  27. package/agent/tools/set_avatar.ts +19 -0
  28. package/agent/tools/set_emoji_reaction.ts +20 -0
  29. package/agent/tools/set_essence_msg.ts +21 -0
  30. package/agent/tools/set_group_portrait.ts +22 -0
  31. package/agent/tools/set_online_status.ts +20 -0
  32. package/agent/tools/set_profile.ts +23 -0
  33. package/agent/tools/set_signature.ts +19 -0
  34. package/agent/tools/set_title.ts +23 -0
  35. package/agent/tools/translate.ts +18 -0
  36. package/agent/tools/upload_group_file.ts +23 -0
  37. package/lib/agent/tools/ai_tts.js +21 -0
  38. package/lib/agent/tools/ai_tts.js.map +1 -0
  39. package/lib/agent/tools/del_group_notice.js +22 -0
  40. package/lib/agent/tools/del_group_notice.js.map +1 -0
  41. package/lib/agent/tools/delete_essence_msg.js +21 -0
  42. package/lib/agent/tools/delete_essence_msg.js.map +1 -0
  43. package/lib/agent/tools/delete_friend.js +20 -0
  44. package/lib/agent/tools/delete_friend.js.map +1 -0
  45. package/lib/agent/tools/download_file.js +19 -0
  46. package/lib/agent/tools/download_file.js.map +1 -0
  47. package/lib/agent/tools/forward_single_msg.js +24 -0
  48. package/lib/agent/tools/forward_single_msg.js.map +1 -0
  49. package/lib/agent/tools/get_ai_characters.js +19 -0
  50. package/lib/agent/tools/get_ai_characters.js.map +1 -0
  51. package/lib/agent/tools/get_essence_list.js +19 -0
  52. package/lib/agent/tools/get_essence_list.js.map +1 -0
  53. package/lib/agent/tools/get_friend_msg_history.js +20 -0
  54. package/lib/agent/tools/get_friend_msg_history.js.map +1 -0
  55. package/lib/agent/tools/get_group_file_url.js +21 -0
  56. package/lib/agent/tools/get_group_file_url.js.map +1 -0
  57. package/lib/agent/tools/get_group_info_ex.js +19 -0
  58. package/lib/agent/tools/get_group_info_ex.js.map +1 -0
  59. package/lib/agent/tools/get_group_msg_history.js +21 -0
  60. package/lib/agent/tools/get_group_msg_history.js.map +1 -0
  61. package/lib/agent/tools/get_group_notice.js +19 -0
  62. package/lib/agent/tools/get_group_notice.js.map +1 -0
  63. package/lib/agent/tools/get_group_root_files.js +19 -0
  64. package/lib/agent/tools/get_group_root_files.js.map +1 -0
  65. package/lib/agent/tools/get_group_shut_list.js +19 -0
  66. package/lib/agent/tools/get_group_shut_list.js.map +1 -0
  67. package/lib/agent/tools/get_mini_app_ark.js +22 -0
  68. package/lib/agent/tools/get_mini_app_ark.js.map +1 -0
  69. package/lib/agent/tools/get_user_status.js +18 -0
  70. package/lib/agent/tools/get_user_status.js.map +1 -0
  71. package/lib/agent/tools/group_sign.js +20 -0
  72. package/lib/agent/tools/group_sign.js.map +1 -0
  73. package/lib/agent/tools/mark_msg_as_read.js +19 -0
  74. package/lib/agent/tools/mark_msg_as_read.js.map +1 -0
  75. package/lib/agent/tools/ocr_image.js +18 -0
  76. package/lib/agent/tools/ocr_image.js.map +1 -0
  77. package/lib/agent/tools/send_forward_msg.js +21 -0
  78. package/lib/agent/tools/send_forward_msg.js.map +1 -0
  79. package/lib/agent/tools/send_group_notice.js +23 -0
  80. package/lib/agent/tools/send_group_notice.js.map +1 -0
  81. package/lib/agent/tools/send_like.js +20 -0
  82. package/lib/agent/tools/send_like.js.map +1 -0
  83. package/lib/agent/tools/send_poke.js +20 -0
  84. package/lib/agent/tools/send_poke.js.map +1 -0
  85. package/lib/agent/tools/set_avatar.js +19 -0
  86. package/lib/agent/tools/set_avatar.js.map +1 -0
  87. package/lib/agent/tools/set_emoji_reaction.js +20 -0
  88. package/lib/agent/tools/set_emoji_reaction.js.map +1 -0
  89. package/lib/agent/tools/set_essence_msg.js +21 -0
  90. package/lib/agent/tools/set_essence_msg.js.map +1 -0
  91. package/lib/agent/tools/set_group_portrait.js +22 -0
  92. package/lib/agent/tools/set_group_portrait.js.map +1 -0
  93. package/lib/agent/tools/set_online_status.js +20 -0
  94. package/lib/agent/tools/set_online_status.js.map +1 -0
  95. package/lib/agent/tools/set_profile.js +23 -0
  96. package/lib/agent/tools/set_profile.js.map +1 -0
  97. package/lib/agent/tools/set_signature.js +19 -0
  98. package/lib/agent/tools/set_signature.js.map +1 -0
  99. package/lib/agent/tools/set_title.js +23 -0
  100. package/lib/agent/tools/set_title.js.map +1 -0
  101. package/lib/agent/tools/translate.js +18 -0
  102. package/lib/agent/tools/translate.js.map +1 -0
  103. package/lib/agent/tools/upload_group_file.js +23 -0
  104. package/lib/agent/tools/upload_group_file.js.map +1 -0
  105. package/lib/src/adapter.js.map +1 -0
  106. package/lib/src/agent-prompt.js.map +1 -0
  107. package/lib/{endpoint-base.js → src/endpoint-base.js} +23 -49
  108. package/lib/src/endpoint-base.js.map +1 -0
  109. package/lib/{endpoint-http.js → src/endpoint-http.js} +2 -2
  110. package/lib/src/endpoint-http.js.map +1 -0
  111. package/lib/{endpoint-ws-client.js → src/endpoint-ws-client.js} +2 -2
  112. package/lib/src/endpoint-ws-client.js.map +1 -0
  113. package/lib/{endpoint-ws-server.js → src/endpoint-ws-server.js} +3 -3
  114. package/lib/src/endpoint-ws-server.js.map +1 -0
  115. package/lib/{index.js → src/index.js} +3 -4
  116. package/lib/src/index.js.map +1 -0
  117. package/lib/src/napcat-agent-deps.js +19 -0
  118. package/lib/src/napcat-agent-deps.js.map +1 -0
  119. package/lib/src/napcat-inbound.js.map +1 -0
  120. package/lib/src/onebot-get-msg.js.map +1 -0
  121. package/lib/src/routes.js.map +1 -0
  122. package/lib/src/segment-mapper.js.map +1 -0
  123. package/lib/src/types.js.map +1 -0
  124. package/package.json +18 -13
  125. package/src/agent-prompt.ts +1 -2
  126. package/src/endpoint-base.ts +27 -51
  127. package/src/endpoint-http.ts +2 -2
  128. package/src/endpoint-ws-client.ts +2 -2
  129. package/src/endpoint-ws-server.ts +3 -3
  130. package/src/index.ts +4 -5
  131. package/src/napcat-agent-deps.ts +29 -0
  132. package/lib/adapter.d.ts +0 -36
  133. package/lib/adapter.d.ts.map +0 -1
  134. package/lib/adapter.js.map +0 -1
  135. package/lib/agent-prompt.d.ts +0 -3
  136. package/lib/agent-prompt.d.ts.map +0 -1
  137. package/lib/agent-prompt.js.map +0 -1
  138. package/lib/endpoint-base.d.ts +0 -144
  139. package/lib/endpoint-base.d.ts.map +0 -1
  140. package/lib/endpoint-base.js.map +0 -1
  141. package/lib/endpoint-http.d.ts +0 -17
  142. package/lib/endpoint-http.d.ts.map +0 -1
  143. package/lib/endpoint-http.js.map +0 -1
  144. package/lib/endpoint-ws-client.d.ts +0 -20
  145. package/lib/endpoint-ws-client.d.ts.map +0 -1
  146. package/lib/endpoint-ws-client.js.map +0 -1
  147. package/lib/endpoint-ws-server.d.ts +0 -20
  148. package/lib/endpoint-ws-server.d.ts.map +0 -1
  149. package/lib/endpoint-ws-server.js.map +0 -1
  150. package/lib/index.d.ts +0 -21
  151. package/lib/index.d.ts.map +0 -1
  152. package/lib/index.js.map +0 -1
  153. package/lib/napcat-inbound.d.ts +0 -21
  154. package/lib/napcat-inbound.d.ts.map +0 -1
  155. package/lib/napcat-inbound.js.map +0 -1
  156. package/lib/onebot-get-msg.d.ts +0 -3
  157. package/lib/onebot-get-msg.d.ts.map +0 -1
  158. package/lib/onebot-get-msg.js.map +0 -1
  159. package/lib/routes.d.ts +0 -4
  160. package/lib/routes.d.ts.map +0 -1
  161. package/lib/routes.js.map +0 -1
  162. package/lib/segment-mapper.d.ts +0 -2
  163. package/lib/segment-mapper.d.ts.map +0 -1
  164. package/lib/segment-mapper.js.map +0 -1
  165. package/lib/tools.d.ts +0 -8
  166. package/lib/tools.d.ts.map +0 -1
  167. package/lib/tools.js +0 -605
  168. package/lib/tools.js.map +0 -1
  169. package/lib/types.d.ts +0 -275
  170. package/lib/types.d.ts.map +0 -1
  171. package/lib/types.js.map +0 -1
  172. package/src/tools.ts +0 -632
  173. /package/{skills/napcat → agent}/PERMITS.md +0 -0
  174. /package/{skills/napcat/SKILL.md → agent/skills/napcat.md} +0 -0
  175. /package/lib/{adapter.js → src/adapter.js} +0 -0
  176. /package/lib/{agent-prompt.js → src/agent-prompt.js} +0 -0
  177. /package/lib/{napcat-inbound.js → src/napcat-inbound.js} +0 -0
  178. /package/lib/{onebot-get-msg.js → src/onebot-get-msg.js} +0 -0
  179. /package/lib/{routes.js → src/routes.js} +0 -0
  180. /package/lib/{segment-mapper.js → src/segment-mapper.js} +0 -0
  181. /package/lib/{types.js → src/types.js} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # @zhin.js/adapter-napcat
2
2
 
3
+ ## 3.0.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 872c583: Slack 适配器 Phase 1/2:mrkdwn 出站、长消息切分、斜杠/按钮 ephemeral 反馈、入站 mrkdwn→Markdown、editMessage 对齐 core。
8
+
9
+ Logger 表格日志与 string-width 列宽;Agent AI Handler 框线表格与 introspection/MCP 导出;Core side-event 归一化;Schedule 时区规划;多适配器 side-event 与 API surface 更新。
10
+
11
+ - 872c583: fix: 代码格式优化
12
+ - Updated dependencies [872c583]
13
+ - Updated dependencies [872c583]
14
+ - @zhin.js/agent@1.0.3
15
+ - @zhin.js/contract@1.0.3
16
+ - @zhin.js/host-api@2.0.5
17
+ - @zhin.js/host-router@2.0.3
18
+ - zhin.js@4.1.2
19
+
3
20
  ## 3.0.1
4
21
 
5
22
  ### Patch Changes
package/README.md CHANGED
@@ -120,7 +120,6 @@ endpoints:
120
120
 
121
121
  ## AI 工具
122
122
 
123
- 适配器自动注册 41 个 AI 工具(7 个群管理标准工具 + 34 个 NapCat 扩展工具),详见 `skills/napcat/SKILL.md`。
124
123
 
125
124
  ## full-bot L4 参考
126
125
 
@@ -0,0 +1,21 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getEndpoint } from '../../src/napcat-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; group_id: number; character: string; text: string }>({
6
+ description: 'AI 文字转语音,在群聊中发送 AI 语音消息。',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ group_id: z.number().describe('群号'),
10
+ character: z.string().describe('AI 语音角色 ID(可先用 napcat_get_ai_characters 查询)'),
11
+ text: z.string().describe('要转为语音的文字'),
12
+ }),
13
+ platforms: ['napcat'],
14
+ tags: ['napcat', 'qq'],
15
+ keywords: ['AI语音', 'TTS', '文字转语音', 'ai record'],
16
+ scopes: ['group'],
17
+ async execute({ endpoint_id, group_id, character, text }: { endpoint_id: string; group_id: number; character: string; text: string }) {
18
+ const endpoint = getEndpoint(endpoint_id);
19
+ return endpoint.sendGroupAiRecord(group_id, character, text);
20
+ },
21
+ });
@@ -0,0 +1,22 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getEndpoint } from '../../src/napcat-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; group_id: number; notice_id: string }>({
6
+ description: '删除群公告。',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ group_id: z.number().describe('群号'),
10
+ notice_id: z.string().describe('公告 ID'),
11
+ }),
12
+ platforms: ['napcat'],
13
+ tags: ['napcat', 'qq'],
14
+ keywords: ['删除公告', 'delete notice'],
15
+ permissions: ['platform(napcat,scene_admin)'],
16
+ scopes: ['group'],
17
+ async execute({ endpoint_id, group_id, notice_id }: { endpoint_id: string; group_id: number; notice_id: string }) {
18
+ const endpoint = getEndpoint(endpoint_id);
19
+ await endpoint.deleteGroupNotice(group_id, notice_id);
20
+ return { success: true };
21
+ },
22
+ });
@@ -0,0 +1,21 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getEndpoint } from '../../src/napcat-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; message_id: number }>({
6
+ description: '移除群精华消息。',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ message_id: z.number().describe('消息 ID'),
10
+ }),
11
+ platforms: ['napcat'],
12
+ tags: ['napcat', 'qq'],
13
+ keywords: ['取消精华', '移除精华', 'delete essence'],
14
+ permissions: ['platform(napcat,scene_admin)'],
15
+ scopes: ['group'],
16
+ async execute({ endpoint_id, message_id }: { endpoint_id: string; message_id: number }) {
17
+ const endpoint = getEndpoint(endpoint_id);
18
+ await endpoint.deleteEssenceMsg(message_id);
19
+ return { success: true };
20
+ },
21
+ });
@@ -0,0 +1,20 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getEndpoint } from '../../src/napcat-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; user_id: number }>({
6
+ description: '删除好友。',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ user_id: z.number().describe('好友 QQ 号'),
10
+ }),
11
+ platforms: ['napcat'],
12
+ tags: ['napcat', 'qq'],
13
+ keywords: ['删除好友', 'delete friend', '删好友'],
14
+ permissions: ['platform(napcat,scene_admin)'],
15
+ async execute({ endpoint_id, user_id }: { endpoint_id: string; user_id: number }) {
16
+ const endpoint = getEndpoint(endpoint_id);
17
+ await endpoint.deleteFriend(user_id);
18
+ return { success: true };
19
+ },
20
+ });
@@ -0,0 +1,19 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getEndpoint } from '../../src/napcat-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; url: string; thread_count?: number }>({
6
+ description: '下载文件到 NapCat 缓存目录,返回本地路径。',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ url: z.string().describe('文件 URL'),
10
+ thread_count: z.number().optional().describe('下载线程数(可选,默认 1)'),
11
+ }),
12
+ platforms: ['napcat'],
13
+ tags: ['napcat', 'qq'],
14
+ keywords: ['下载', 'download', '下载文件'],
15
+ async execute({ endpoint_id, url, thread_count }: { endpoint_id: string; url: string; thread_count?: number }) {
16
+ const endpoint = getEndpoint(endpoint_id);
17
+ return endpoint.downloadFile(url, thread_count || 1);
18
+ },
19
+ });
@@ -0,0 +1,32 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getEndpoint } from '../../src/napcat-agent-deps.js';
4
+
5
+ export default defineTool<{
6
+ endpoint_id: string;
7
+ target_type: 'friend' | 'group';
8
+ target_id: number;
9
+ message_id: number;
10
+ }>({
11
+ description: '转发单条消息到指定好友或群。',
12
+ inputSchema: z.object({
13
+ endpoint_id: z.string().describe('Endpoint 名称'),
14
+ target_type: z.enum(['friend', 'group']).describe('friend 或 group'),
15
+ target_id: z.number().describe('目标好友 QQ 号或群号'),
16
+ message_id: z.number().describe('要转发的消息 ID'),
17
+ }),
18
+ platforms: ['napcat'],
19
+ tags: ['napcat', 'qq'],
20
+ keywords: ['转发', 'forward', '单条转发'],
21
+ async execute({ endpoint_id, target_type, target_id, message_id }: {
22
+ endpoint_id: string;
23
+ target_type: 'friend' | 'group';
24
+ target_id: number;
25
+ message_id: number;
26
+ }) {
27
+ const endpoint = getEndpoint(endpoint_id);
28
+ if (target_type === 'friend') await endpoint.forwardFriendSingleMsg(target_id, message_id);
29
+ else await endpoint.forwardGroupSingleMsg(target_id, message_id);
30
+ return { success: true };
31
+ },
32
+ });
@@ -0,0 +1,19 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getEndpoint } from '../../src/napcat-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; group_id: number }>({
6
+ description: '获取 AI 语音角色列表,用于 napcat_ai_tts 的 character 参数。',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ group_id: z.number().describe('群号'),
10
+ }),
11
+ platforms: ['napcat'],
12
+ tags: ['napcat', 'qq'],
13
+ keywords: ['AI角色', 'ai characters', '语音角色'],
14
+ scopes: ['group'],
15
+ async execute({ endpoint_id, group_id }: { endpoint_id: string; group_id: number }) {
16
+ const endpoint = getEndpoint(endpoint_id);
17
+ return endpoint.getAiCharacters(group_id);
18
+ },
19
+ });
@@ -0,0 +1,19 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getEndpoint } from '../../src/napcat-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; group_id: number }>({
6
+ description: '获取群精华消息列表。',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ group_id: z.number().describe('群号'),
10
+ }),
11
+ platforms: ['napcat'],
12
+ tags: ['napcat', 'qq'],
13
+ keywords: ['精华列表', 'essence list'],
14
+ scopes: ['group'],
15
+ async execute({ endpoint_id, group_id }: { endpoint_id: string; group_id: number }) {
16
+ const endpoint = getEndpoint(endpoint_id);
17
+ return endpoint.getEssenceMsgList(group_id);
18
+ },
19
+ });
@@ -0,0 +1,20 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getEndpoint } from '../../src/napcat-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; user_id: number; message_seq?: number; count?: number }>({
6
+ description: '获取私聊消息历史记录。',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ user_id: z.number().describe('QQ 号'),
10
+ message_seq: z.number().optional().describe('起始消息序号(可选)'),
11
+ count: z.number().optional().describe('获取条数(可选)'),
12
+ }),
13
+ platforms: ['napcat'],
14
+ tags: ['napcat', 'qq'],
15
+ keywords: ['私聊记录', '好友聊天记录', 'friend history'],
16
+ async execute({ endpoint_id, user_id, message_seq, count }: { endpoint_id: string; user_id: number; message_seq?: number; count?: number }) {
17
+ const endpoint = getEndpoint(endpoint_id);
18
+ return endpoint.getFriendMsgHistory(user_id, message_seq, count);
19
+ },
20
+ });
@@ -0,0 +1,21 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getEndpoint } from '../../src/napcat-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; group_id: number; file_id: string; busid: number }>({
6
+ description: '获取群文件下载链接。',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ group_id: z.number().describe('群号'),
10
+ file_id: z.string().describe('文件 ID'),
11
+ busid: z.number().describe('文件类型 ID'),
12
+ }),
13
+ platforms: ['napcat'],
14
+ tags: ['napcat', 'qq'],
15
+ keywords: ['文件链接', 'file url', '下载文件'],
16
+ scopes: ['group'],
17
+ async execute({ endpoint_id, group_id, file_id, busid }: { endpoint_id: string; group_id: number; file_id: string; busid: number }) {
18
+ const endpoint = getEndpoint(endpoint_id);
19
+ return endpoint.getGroupFileUrl(group_id, file_id, busid);
20
+ },
21
+ });
@@ -0,0 +1,19 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getEndpoint } from '../../src/napcat-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; group_id: number }>({
6
+ description: '获取群组额外详细信息。',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ group_id: z.number().describe('群号'),
10
+ }),
11
+ platforms: ['napcat'],
12
+ tags: ['napcat', 'qq'],
13
+ keywords: ['群详情', '群额外信息', 'group info ex'],
14
+ scopes: ['group'],
15
+ async execute({ endpoint_id, group_id }: { endpoint_id: string; group_id: number }) {
16
+ const endpoint = getEndpoint(endpoint_id);
17
+ return endpoint.getGroupInfoEx(group_id);
18
+ },
19
+ });
@@ -0,0 +1,21 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getEndpoint } from '../../src/napcat-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; group_id: number; message_seq?: number; count?: number }>({
6
+ description: '获取群消息历史记录。',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ group_id: z.number().describe('群号'),
10
+ message_seq: z.number().optional().describe('起始消息序号(可选,不传从最新开始)'),
11
+ count: z.number().optional().describe('获取条数(可选)'),
12
+ }),
13
+ platforms: ['napcat'],
14
+ tags: ['napcat', 'qq'],
15
+ keywords: ['群消息历史', '聊天记录', 'message history'],
16
+ scopes: ['group'],
17
+ async execute({ endpoint_id, group_id, message_seq, count }: { endpoint_id: string; group_id: number; message_seq?: number; count?: number }) {
18
+ const endpoint = getEndpoint(endpoint_id);
19
+ return endpoint.getGroupMsgHistory(group_id, message_seq, count);
20
+ },
21
+ });
@@ -0,0 +1,19 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getEndpoint } from '../../src/napcat-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; group_id: number }>({
6
+ description: '获取群公告列表。',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ group_id: z.number().describe('群号'),
10
+ }),
11
+ platforms: ['napcat'],
12
+ tags: ['napcat', 'qq'],
13
+ keywords: ['群公告', '获取公告', 'get notice'],
14
+ scopes: ['group'],
15
+ async execute({ endpoint_id, group_id }: { endpoint_id: string; group_id: number }) {
16
+ const endpoint = getEndpoint(endpoint_id);
17
+ return endpoint.getGroupNotice(group_id);
18
+ },
19
+ });
@@ -0,0 +1,19 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getEndpoint } from '../../src/napcat-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; group_id: number }>({
6
+ description: '获取群根目录文件列表。',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ group_id: z.number().describe('群号'),
10
+ }),
11
+ platforms: ['napcat'],
12
+ tags: ['napcat', 'qq'],
13
+ keywords: ['群文件列表', 'group files'],
14
+ scopes: ['group'],
15
+ async execute({ endpoint_id, group_id }: { endpoint_id: string; group_id: number }) {
16
+ const endpoint = getEndpoint(endpoint_id);
17
+ return endpoint.getGroupRootFiles(group_id);
18
+ },
19
+ });
@@ -0,0 +1,19 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getEndpoint } from '../../src/napcat-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; group_id: number }>({
6
+ description: '获取群禁言列表。',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ group_id: z.number().describe('群号'),
10
+ }),
11
+ platforms: ['napcat'],
12
+ tags: ['napcat', 'qq'],
13
+ keywords: ['禁言列表', 'shut list', '被禁言'],
14
+ scopes: ['group'],
15
+ async execute({ endpoint_id, group_id }: { endpoint_id: string; group_id: number }) {
16
+ const endpoint = getEndpoint(endpoint_id);
17
+ return endpoint.getGroupShutList(group_id);
18
+ },
19
+ });
@@ -0,0 +1,22 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getEndpoint } from '../../src/napcat-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; type: string; title: string; desc: string; pic_url: string; jump_url: string }>({
6
+ description: '签名小程序卡片(如 B 站分享卡片等)。',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ type: z.string().describe('卡片类型'),
10
+ title: z.string().describe('标题'),
11
+ desc: z.string().describe('描述'),
12
+ pic_url: z.string().describe('图片 URL'),
13
+ jump_url: z.string().describe('跳转 URL'),
14
+ }),
15
+ platforms: ['napcat'],
16
+ tags: ['napcat', 'qq'],
17
+ keywords: ['小程序', 'mini app', '卡片', 'ark'],
18
+ async execute({ endpoint_id, type, title, desc, pic_url, jump_url }: { endpoint_id: string; type: string; title: string; desc: string; pic_url: string; jump_url: string }) {
19
+ const endpoint = getEndpoint(endpoint_id);
20
+ return endpoint.getMiniAppArk(type, title, desc, pic_url, jump_url);
21
+ },
22
+ });
@@ -0,0 +1,18 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getEndpoint } from '../../src/napcat-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; user_id: number }>({
6
+ description: '获取用户在线状态。',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ user_id: z.number().describe('目标 QQ 号'),
10
+ }),
11
+ platforms: ['napcat'],
12
+ tags: ['napcat', 'qq'],
13
+ keywords: ['在线状态', '用户状态', 'online status'],
14
+ async execute({ endpoint_id, user_id }: { endpoint_id: string; user_id: number }) {
15
+ const endpoint = getEndpoint(endpoint_id);
16
+ return endpoint.ncGetUserStatus(user_id);
17
+ },
18
+ });
@@ -0,0 +1,20 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getEndpoint } from '../../src/napcat-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; group_id: number }>({
6
+ description: '群签到/群打卡。',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ group_id: z.number().describe('群号'),
10
+ }),
11
+ platforms: ['napcat'],
12
+ tags: ['napcat', 'qq'],
13
+ keywords: ['签到', '打卡', 'sign', 'check in'],
14
+ scopes: ['group'],
15
+ async execute({ endpoint_id, group_id }: { endpoint_id: string; group_id: number }) {
16
+ const endpoint = getEndpoint(endpoint_id);
17
+ await endpoint.sendGroupSign(group_id);
18
+ return { success: true };
19
+ },
20
+ });
@@ -0,0 +1,19 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getEndpoint } from '../../src/napcat-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; message_id: number }>({
6
+ description: '标记消息为已读。',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ message_id: z.number().describe('消息 ID'),
10
+ }),
11
+ platforms: ['napcat'],
12
+ tags: ['napcat', 'qq'],
13
+ keywords: ['已读', 'mark read', '标记已读'],
14
+ async execute({ endpoint_id, message_id }: { endpoint_id: string; message_id: number }) {
15
+ const endpoint = getEndpoint(endpoint_id);
16
+ await endpoint.markMsgAsRead(message_id);
17
+ return { success: true };
18
+ },
19
+ });
@@ -0,0 +1,18 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getEndpoint } from '../../src/napcat-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; image: string }>({
6
+ description: '图片 OCR 文字识别。',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ image: z.string().describe('图片 file 参数(收到消息中的 file 字段或 URL)'),
10
+ }),
11
+ platforms: ['napcat'],
12
+ tags: ['napcat', 'qq'],
13
+ keywords: ['OCR', '文字识别', '图片识别', 'ocr'],
14
+ async execute({ endpoint_id, image }: { endpoint_id: string; image: string }) {
15
+ const endpoint = getEndpoint(endpoint_id);
16
+ return endpoint.ocrImage(image);
17
+ },
18
+ });
@@ -0,0 +1,31 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getEndpoint } from '../../src/napcat-agent-deps.js';
4
+
5
+ export default defineTool<{
6
+ endpoint_id: string;
7
+ message_type: 'private' | 'group';
8
+ id: number;
9
+ messages: string;
10
+ }>({
11
+ description: '发送合并转发消息(群聊或私聊)。messages 为转发节点数组。',
12
+ inputSchema: z.object({
13
+ endpoint_id: z.string().describe('Endpoint 名称'),
14
+ message_type: z.enum(['private', 'group']).describe('private 或 group'),
15
+ id: z.number().describe('群号或 QQ 号'),
16
+ messages: z.string().describe('转发节点 JSON(node 数组)'),
17
+ }),
18
+ platforms: ['napcat'],
19
+ tags: ['napcat', 'qq'],
20
+ keywords: ['合并转发', 'forward', '转发消息'],
21
+ async execute({ endpoint_id, message_type, id, messages }: {
22
+ endpoint_id: string;
23
+ message_type: 'private' | 'group';
24
+ id: number;
25
+ messages: string;
26
+ }) {
27
+ const endpoint = getEndpoint(endpoint_id);
28
+ const nodes = typeof messages === 'string' ? JSON.parse(messages) : messages;
29
+ return endpoint.sendForwardMsg(message_type, id, nodes);
30
+ },
31
+ });
@@ -0,0 +1,23 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getEndpoint } from '../../src/napcat-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; group_id: number; content: string; image?: string }>({
6
+ description: '发送群公告。',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ group_id: z.number().describe('群号'),
10
+ content: z.string().describe('公告内容'),
11
+ image: z.string().optional().describe('图片(URL 或 base64,可选)'),
12
+ }),
13
+ platforms: ['napcat'],
14
+ tags: ['napcat', 'qq'],
15
+ keywords: ['群公告', 'notice', '公告', '发公告'],
16
+ permissions: ['platform(napcat,scene_admin)'],
17
+ scopes: ['group'],
18
+ async execute({ endpoint_id, group_id, content, image }: { endpoint_id: string; group_id: number; content: string; image?: string }) {
19
+ const endpoint = getEndpoint(endpoint_id);
20
+ await endpoint.sendGroupNotice(group_id, content, image);
21
+ return { success: true };
22
+ },
23
+ });
@@ -0,0 +1,20 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getEndpoint } from '../../src/napcat-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; user_id: number; times?: number }>({
6
+ description: '给好友点赞(每人每天最多 10 次)。',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ user_id: z.number().describe('目标 QQ 号'),
10
+ times: z.number().optional().describe('点赞次数(1-10)'),
11
+ }),
12
+ platforms: ['napcat'],
13
+ tags: ['napcat', 'qq'],
14
+ keywords: ['点赞', 'like', '赞', '好友赞'],
15
+ async execute({ endpoint_id, user_id, times }: { endpoint_id: string; user_id: number; times?: number }) {
16
+ const endpoint = getEndpoint(endpoint_id);
17
+ await endpoint.sendLike(user_id, times || 1);
18
+ return { success: true, message: `已给 ${user_id} 点赞 ${times || 1} 次` };
19
+ },
20
+ });
@@ -0,0 +1,20 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getEndpoint } from '../../src/napcat-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; user_id: number; group_id?: number }>({
6
+ description: '戳一戳(群聊或私聊)。group_id 不传时为私聊戳一戳。',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ user_id: z.number().describe('目标用户 QQ 号'),
10
+ group_id: z.number().optional().describe('群号(不传则为私聊戳一戳)'),
11
+ }),
12
+ platforms: ['napcat'],
13
+ tags: ['napcat', 'qq'],
14
+ keywords: ['戳一戳', 'poke', '戳', '拍一拍'],
15
+ async execute({ endpoint_id, user_id, group_id }: { endpoint_id: string; user_id: number; group_id?: number }) {
16
+ const endpoint = getEndpoint(endpoint_id);
17
+ await endpoint.sendPoke(user_id, group_id);
18
+ return { success: true, message: `已戳 ${user_id}` };
19
+ },
20
+ });
@@ -0,0 +1,19 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getEndpoint } from '../../src/napcat-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; file: string }>({
6
+ description: '修改 QQ 头像。',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ file: z.string().describe('图片(URL 或 base64)'),
10
+ }),
11
+ platforms: ['napcat'],
12
+ tags: ['napcat', 'qq'],
13
+ keywords: ['头像', 'avatar', '设置头像', '换头像'],
14
+ async execute({ endpoint_id, file }: { endpoint_id: string; file: string }) {
15
+ const endpoint = getEndpoint(endpoint_id);
16
+ await endpoint.setQQAvatar(file);
17
+ return { success: true };
18
+ },
19
+ });
@@ -0,0 +1,20 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getEndpoint } from '../../src/napcat-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; message_id: number; emoji_id: string }>({
6
+ description: '为消息添加表情回应(贴表情)。',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ message_id: z.number().describe('消息 ID'),
10
+ emoji_id: z.string().describe('表情 ID'),
11
+ }),
12
+ platforms: ['napcat'],
13
+ tags: ['napcat', 'qq'],
14
+ keywords: ['表情回应', 'reaction', '贴表情', 'emoji'],
15
+ async execute({ endpoint_id, message_id, emoji_id }: { endpoint_id: string; message_id: number; emoji_id: string }) {
16
+ const endpoint = getEndpoint(endpoint_id);
17
+ await endpoint.setMsgEmojiLike(message_id, emoji_id);
18
+ return { success: true };
19
+ },
20
+ });
@@ -0,0 +1,21 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getEndpoint } from '../../src/napcat-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; message_id: number }>({
6
+ description: '设置群精华消息。',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ message_id: z.number().describe('消息 ID'),
10
+ }),
11
+ platforms: ['napcat'],
12
+ tags: ['napcat', 'qq'],
13
+ keywords: ['精华', 'essence', '设精', '加精'],
14
+ permissions: ['platform(napcat,scene_admin)'],
15
+ scopes: ['group'],
16
+ async execute({ endpoint_id, message_id }: { endpoint_id: string; message_id: number }) {
17
+ const endpoint = getEndpoint(endpoint_id);
18
+ await endpoint.setEssenceMsg(message_id);
19
+ return { success: true };
20
+ },
21
+ });