@zhin.js/adapter-dingtalk 4.0.0 → 4.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 (65) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +10 -0
  3. package/{skills/dingtalk → agent}/PERMITS.md +1 -1
  4. package/agent/tools/add_chat_members.ts +22 -0
  5. package/agent/tools/create_chat.ts +23 -0
  6. package/agent/tools/dept_info.ts +17 -0
  7. package/agent/tools/get_dept_users.ts +18 -0
  8. package/agent/tools/get_user.ts +17 -0
  9. package/agent/tools/list_departments.ts +18 -0
  10. package/agent/tools/send_work_notice.ts +20 -0
  11. package/agent/tools/update_chat.ts +27 -0
  12. package/lib/agent/tools/add_chat_members.js +21 -0
  13. package/lib/agent/tools/add_chat_members.js.map +1 -0
  14. package/lib/agent/tools/create_chat.js +22 -0
  15. package/lib/agent/tools/create_chat.js.map +1 -0
  16. package/lib/agent/tools/dept_info.js +17 -0
  17. package/lib/agent/tools/dept_info.js.map +1 -0
  18. package/lib/agent/tools/get_dept_users.js +18 -0
  19. package/lib/agent/tools/get_dept_users.js.map +1 -0
  20. package/lib/agent/tools/get_user.js +17 -0
  21. package/lib/agent/tools/get_user.js.map +1 -0
  22. package/lib/agent/tools/list_departments.js +18 -0
  23. package/lib/agent/tools/list_departments.js.map +1 -0
  24. package/lib/agent/tools/send_work_notice.js +20 -0
  25. package/lib/agent/tools/send_work_notice.js.map +1 -0
  26. package/lib/agent/tools/update_chat.js +31 -0
  27. package/lib/agent/tools/update_chat.js.map +1 -0
  28. package/lib/{adapter.js → src/adapter.js} +4 -3
  29. package/lib/src/adapter.js.map +1 -0
  30. package/lib/src/dingtalk-agent-deps.js +10 -0
  31. package/lib/src/dingtalk-agent-deps.js.map +1 -0
  32. package/lib/{endpoint.js → src/endpoint.js} +10 -6
  33. package/lib/src/endpoint.js.map +1 -0
  34. package/lib/src/index.js +43 -0
  35. package/lib/src/index.js.map +1 -0
  36. package/lib/{platform-permit.js → src/platform-permit.js} +5 -2
  37. package/lib/src/platform-permit.js.map +1 -0
  38. package/lib/src/segment-mapper.js +2 -0
  39. package/lib/src/segment-mapper.js.map +1 -0
  40. package/lib/src/types.js.map +1 -0
  41. package/package.json +18 -8
  42. package/src/adapter.ts +4 -3
  43. package/src/dingtalk-agent-deps.ts +18 -0
  44. package/src/endpoint.ts +10 -6
  45. package/src/index.ts +13 -188
  46. package/src/platform-permit.ts +3 -4
  47. package/src/segment-mapper.ts +1 -0
  48. package/lib/adapter.d.ts +0 -18
  49. package/lib/adapter.d.ts.map +0 -1
  50. package/lib/adapter.js.map +0 -1
  51. package/lib/endpoint.d.ts +0 -46
  52. package/lib/endpoint.d.ts.map +0 -1
  53. package/lib/endpoint.js.map +0 -1
  54. package/lib/index.d.ts +0 -15
  55. package/lib/index.d.ts.map +0 -1
  56. package/lib/index.js +0 -219
  57. package/lib/index.js.map +0 -1
  58. package/lib/platform-permit.d.ts +0 -16
  59. package/lib/platform-permit.d.ts.map +0 -1
  60. package/lib/platform-permit.js.map +0 -1
  61. package/lib/types.d.ts +0 -58
  62. package/lib/types.d.ts.map +0 -1
  63. package/lib/types.js.map +0 -1
  64. /package/{skills/dingtalk/SKILL.md → agent/skills/dingtalk.md} +0 -0
  65. /package/lib/{types.js → src/types.js} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,31 @@
1
1
  # @zhin.js/adapter-dingtalk
2
2
 
3
+ ## 4.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/host-router@2.0.3
16
+ - zhin.js@4.1.2
17
+
18
+ ## 4.0.1
19
+
20
+ ### Patch Changes
21
+
22
+ - 5cc9c03: fix: ai 优化
23
+ - b9b3881: fix: 增加游戏引擎以及部分游戏
24
+ - Updated dependencies [5cc9c03]
25
+ - Updated dependencies [7700903]
26
+ - @zhin.js/host-router@2.0.2
27
+ - zhin.js@4.1.1
28
+
3
29
  ## 4.0.0
4
30
 
5
31
  ### Patch Changes
package/README.md CHANGED
@@ -355,6 +355,16 @@ A: 确保:
355
355
  - [钉钉机器人开发文档](https://open.dingtalk.com/document/robots/robot-overview)
356
356
  - [Zhin.js 官方文档](https://github.com/zhinjs/zhin)
357
357
 
358
+ ## AI 工具
359
+
360
+ | 类别 | 路径 |
361
+ |------|------|
362
+ | Permit 词汇 | `agent/PERMITS.md` |
363
+ | 平台工具(8 个) | `agent/tools/`(`dingtalk_*`:部门、用户、群聊、工作通知等) |
364
+ | 技能说明 | `agent/skills/dingtalk.md` |
365
+ | 群管标准工具 | `createSceneManagementTools()` |
366
+
367
+
358
368
  ## 许可证
359
369
 
360
370
  MIT License
@@ -16,4 +16,4 @@
16
16
 
17
17
  ## 工厂映射
18
18
 
19
- `group_admin` → `chat_admin` · `group_owner` → `chat_owner`
19
+ `scene_admin` → `chat_admin` · `scene_owner` → `chat_owner`
@@ -0,0 +1,22 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getDingtalkAgentDeps } from '../../src/dingtalk-agent-deps.js';
4
+ import { platformPermit } from '../../src/platform-permit.js';
5
+
6
+ export default defineTool<{ endpoint_id: string; chat_id: string; user_ids: string }>({
7
+ description: '向钉钉群聊添加成员',
8
+ inputSchema: z.object({
9
+ endpoint_id: z.string().describe('Endpoint 名称'),
10
+ chat_id: z.string().describe('群聊 ID'),
11
+ user_ids: z.string().describe('要添加的用户 ID 列表,逗号分隔'),
12
+ }),
13
+ platforms: ['dingtalk'],
14
+ tags: ['dingtalk'],
15
+ permissions: [platformPermit('chat_admin')],
16
+ async execute({ endpoint_id, chat_id, user_ids }: { endpoint_id: string; chat_id: string; user_ids: string }) {
17
+ const endpoint = getDingtalkAgentDeps().getEndpoint(endpoint_id);
18
+ const success = await endpoint.updateChat(chat_id, { add_useridlist: user_ids.split(',') });
19
+ return { success, message: success ? '成员添加成功' : '添加失败' };
20
+ },
21
+ });
22
+
@@ -0,0 +1,23 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getDingtalkAgentDeps } from '../../src/dingtalk-agent-deps.js';
4
+ import { platformPermit } from '../../src/platform-permit.js';
5
+
6
+ export default defineTool<{ endpoint_id: string; name: string; owner: string; members: string }>({
7
+ description: '创建钉钉群聊',
8
+ inputSchema: z.object({
9
+ endpoint_id: z.string().describe('Endpoint 名称'),
10
+ name: z.string().describe('群名'),
11
+ owner: z.string().describe('群主用户 ID'),
12
+ members: z.string().describe('成员用户 ID 列表,逗号分隔'),
13
+ }),
14
+ platforms: ['dingtalk'],
15
+ tags: ['dingtalk'],
16
+ permissions: [platformPermit('chat_owner')],
17
+ async execute({ endpoint_id, name, owner, members }: { endpoint_id: string; name: string; owner: string; members: string }) {
18
+ const endpoint = getDingtalkAgentDeps().getEndpoint(endpoint_id);
19
+ const chatId = await endpoint.createChat(name, owner, members.split(','));
20
+ return { success: !!chatId, chat_id: chatId, message: chatId ? `群聊创建成功: ${chatId}` : '创建失败' };
21
+ },
22
+ });
23
+
@@ -0,0 +1,17 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getDingtalkAgentDeps } from '../../src/dingtalk-agent-deps.js';
4
+ export default defineTool<{ endpoint_id: string; dept_id: string }>({
5
+ description: '获取钉钉部门详细信息',
6
+ inputSchema: z.object({
7
+ endpoint_id: z.string().describe('Endpoint 名称'),
8
+ dept_id: z.string().describe('部门 ID'),
9
+ }),
10
+ platforms: ['dingtalk'],
11
+ tags: ['dingtalk'],
12
+ async execute({ endpoint_id, dept_id }: { endpoint_id: string; dept_id: string }) {
13
+ const endpoint = getDingtalkAgentDeps().getEndpoint(endpoint_id);
14
+ return await endpoint.getDepartmentInfo(Number(dept_id));
15
+ },
16
+ });
17
+
@@ -0,0 +1,18 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getDingtalkAgentDeps } from '../../src/dingtalk-agent-deps.js';
4
+ export default defineTool<{ endpoint_id: string; dept_id: string }>({
5
+ description: '获取钉钉部门用户列表',
6
+ inputSchema: z.object({
7
+ endpoint_id: z.string().describe('Endpoint 名称'),
8
+ dept_id: z.string().describe('部门 ID'),
9
+ }),
10
+ platforms: ['dingtalk'],
11
+ tags: ['dingtalk'],
12
+ async execute({ endpoint_id, dept_id }: { endpoint_id: string; dept_id: string }) {
13
+ const endpoint = getDingtalkAgentDeps().getEndpoint(endpoint_id);
14
+ const users = await endpoint.getDepartmentUsers(Number(dept_id));
15
+ return { users, count: users.length };
16
+ },
17
+ });
18
+
@@ -0,0 +1,17 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getDingtalkAgentDeps } from '../../src/dingtalk-agent-deps.js';
4
+ export default defineTool<{ endpoint_id: string; user_id: string }>({
5
+ description: '获取钉钉用户信息',
6
+ inputSchema: z.object({
7
+ endpoint_id: z.string().describe('Endpoint 名称'),
8
+ user_id: z.string().describe('用户 ID'),
9
+ }),
10
+ platforms: ['dingtalk'],
11
+ tags: ['dingtalk'],
12
+ async execute({ endpoint_id, user_id }: { endpoint_id: string; user_id: string }) {
13
+ const endpoint = getDingtalkAgentDeps().getEndpoint(endpoint_id);
14
+ return await endpoint.getUserInfo(user_id);
15
+ },
16
+ });
17
+
@@ -0,0 +1,18 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getDingtalkAgentDeps } from '../../src/dingtalk-agent-deps.js';
4
+ export default defineTool<{ endpoint_id: string; dept_id?: string }>({
5
+ description: '获取钉钉部门列表',
6
+ inputSchema: z.object({
7
+ endpoint_id: z.string().describe('Endpoint 名称'),
8
+ dept_id: z.string().optional().describe('父部门 ID,默认 1(根部门)'),
9
+ }),
10
+ platforms: ['dingtalk'],
11
+ tags: ['dingtalk'],
12
+ async execute({ endpoint_id, dept_id }: { endpoint_id: string; dept_id?: string }) {
13
+ const endpoint = getDingtalkAgentDeps().getEndpoint(endpoint_id);
14
+ const departments = await endpoint.getDepartmentList(Number(dept_id || '1'));
15
+ return { departments, count: departments.length };
16
+ },
17
+ });
18
+
@@ -0,0 +1,20 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getDingtalkAgentDeps } from '../../src/dingtalk-agent-deps.js';
4
+ export default defineTool<{ endpoint_id: string; user_ids: string; content: string }>({
5
+ description: '向指定用户发送钉钉工作通知',
6
+ inputSchema: z.object({
7
+ endpoint_id: z.string().describe('Endpoint 名称'),
8
+ user_ids: z.string().describe('用户 ID 列表,逗号分隔'),
9
+ content: z.string().describe('通知内容'),
10
+ }),
11
+ platforms: ['dingtalk'],
12
+ tags: ['dingtalk'],
13
+ async execute({ endpoint_id, user_ids, content }: { endpoint_id: string; user_ids: string; content: string }) {
14
+ const endpoint = getDingtalkAgentDeps().getEndpoint(endpoint_id);
15
+ const msgContent = { msgtype: 'text', text: { content } };
16
+ const success = await endpoint.sendWorkNotice(user_ids.split(','), msgContent);
17
+ return { success, message: success ? '工作通知已发送' : '发送失败' };
18
+ },
19
+ });
20
+
@@ -0,0 +1,27 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getDingtalkAgentDeps } from '../../src/dingtalk-agent-deps.js';
4
+ export default defineTool<{ endpoint_id: string; chat_id: string; name?: string; owner?: string; add_members?: string; remove_members?: string }>({
5
+ description: '更新钉钉群聊设置(改名、换群主、增减成员)',
6
+ inputSchema: z.object({
7
+ endpoint_id: z.string().describe('Endpoint 名称'),
8
+ chat_id: z.string().describe('群聊 ID'),
9
+ name: z.string().optional().describe('新群名(可选)'),
10
+ owner: z.string().optional().describe('新群主 userId(可选)'),
11
+ add_members: z.string().optional().describe('要添加的成员 userId,逗号分隔(可选)'),
12
+ remove_members: z.string().optional().describe('要移除的成员 userId,逗号分隔(可选)'),
13
+ }),
14
+ platforms: ['dingtalk'],
15
+ tags: ['dingtalk'],
16
+ async execute({ endpoint_id, chat_id, name, owner, add_members, remove_members }: { endpoint_id: string; chat_id: string; name?: string; owner?: string; add_members?: string; remove_members?: string }) {
17
+ const endpoint = getDingtalkAgentDeps().getEndpoint(endpoint_id);
18
+ const options: Record<string, unknown> = {};
19
+ if (name) options.name = name;
20
+ if (owner) options.owner = owner;
21
+ if (add_members) options.add_useridlist = add_members.split(',').map((s: string) => s.trim());
22
+ if (remove_members) options.del_useridlist = remove_members.split(',').map((s: string) => s.trim());
23
+ await endpoint.updateChat(chat_id, options);
24
+ return { success: true, message: '群聊设置已更新' };
25
+ },
26
+ });
27
+
@@ -0,0 +1,21 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getDingtalkAgentDeps } from '../../src/dingtalk-agent-deps.js';
4
+ import { platformPermit } from '../../src/platform-permit.js';
5
+ export default defineTool({
6
+ description: '向钉钉群聊添加成员',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ chat_id: z.string().describe('群聊 ID'),
10
+ user_ids: z.string().describe('要添加的用户 ID 列表,逗号分隔'),
11
+ }),
12
+ platforms: ['dingtalk'],
13
+ tags: ['dingtalk'],
14
+ permissions: [platformPermit('chat_admin')],
15
+ async execute({ endpoint_id, chat_id, user_ids }) {
16
+ const endpoint = getDingtalkAgentDeps().getEndpoint(endpoint_id);
17
+ const success = await endpoint.updateChat(chat_id, { add_useridlist: user_ids.split(',') });
18
+ return { success, message: success ? '成员添加成功' : '添加失败' };
19
+ },
20
+ });
21
+ //# sourceMappingURL=add_chat_members.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add_chat_members.js","sourceRoot":"","sources":["../../../agent/tools/add_chat_members.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,eAAe,UAAU,CAA6D;IACpF,WAAW,EAAE,WAAW;IACxB,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;QACrC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;KACnD,CAAC;IACF,SAAS,EAAE,CAAC,UAAU,CAAC;IACvB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,WAAW,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IAC3C,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAiE;QAC7G,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5F,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC3D,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getDingtalkAgentDeps } from '../../src/dingtalk-agent-deps.js';
4
+ import { platformPermit } from '../../src/platform-permit.js';
5
+ export default defineTool({
6
+ description: '创建钉钉群聊',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ name: z.string().describe('群名'),
10
+ owner: z.string().describe('群主用户 ID'),
11
+ members: z.string().describe('成员用户 ID 列表,逗号分隔'),
12
+ }),
13
+ platforms: ['dingtalk'],
14
+ tags: ['dingtalk'],
15
+ permissions: [platformPermit('chat_owner')],
16
+ async execute({ endpoint_id, name, owner, members }) {
17
+ const endpoint = getDingtalkAgentDeps().getEndpoint(endpoint_id);
18
+ const chatId = await endpoint.createChat(name, owner, members.split(','));
19
+ return { success: !!chatId, chat_id: chatId, message: chatId ? `群聊创建成功: ${chatId}` : '创建失败' };
20
+ },
21
+ });
22
+ //# sourceMappingURL=create_chat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create_chat.js","sourceRoot":"","sources":["../../../agent/tools/create_chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,eAAe,UAAU,CAAwE;IAC/F,WAAW,EAAE,QAAQ;IACrB,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC/C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QACrC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;KAChD,CAAC;IACF,SAAS,EAAE,CAAC,UAAU,CAAC;IACvB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,WAAW,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IAC3C,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAA4E;QAC3H,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1E,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChG,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getDingtalkAgentDeps } from '../../src/dingtalk-agent-deps.js';
4
+ export default defineTool({
5
+ description: '获取钉钉部门详细信息',
6
+ inputSchema: z.object({
7
+ endpoint_id: z.string().describe('Endpoint 名称'),
8
+ dept_id: z.string().describe('部门 ID'),
9
+ }),
10
+ platforms: ['dingtalk'],
11
+ tags: ['dingtalk'],
12
+ async execute({ endpoint_id, dept_id }) {
13
+ const endpoint = getDingtalkAgentDeps().getEndpoint(endpoint_id);
14
+ return await endpoint.getDepartmentInfo(Number(dept_id));
15
+ },
16
+ });
17
+ //# sourceMappingURL=dept_info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dept_info.js","sourceRoot":"","sources":["../../../agent/tools/dept_info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,eAAe,UAAU,CAA2C;IAClE,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;KACtC,CAAC;IACF,SAAS,EAAE,CAAC,UAAU,CAAC;IACvB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,EAA+C;QACjF,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACjE,OAAO,MAAM,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getDingtalkAgentDeps } from '../../src/dingtalk-agent-deps.js';
4
+ export default defineTool({
5
+ description: '获取钉钉部门用户列表',
6
+ inputSchema: z.object({
7
+ endpoint_id: z.string().describe('Endpoint 名称'),
8
+ dept_id: z.string().describe('部门 ID'),
9
+ }),
10
+ platforms: ['dingtalk'],
11
+ tags: ['dingtalk'],
12
+ async execute({ endpoint_id, dept_id }) {
13
+ const endpoint = getDingtalkAgentDeps().getEndpoint(endpoint_id);
14
+ const users = await endpoint.getDepartmentUsers(Number(dept_id));
15
+ return { users, count: users.length };
16
+ },
17
+ });
18
+ //# sourceMappingURL=get_dept_users.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get_dept_users.js","sourceRoot":"","sources":["../../../agent/tools/get_dept_users.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,eAAe,UAAU,CAA2C;IAClE,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;KACtC,CAAC;IACF,SAAS,EAAE,CAAC,UAAU,CAAC;IACvB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,EAA+C;QACjF,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACjE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;IACxC,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getDingtalkAgentDeps } from '../../src/dingtalk-agent-deps.js';
4
+ export default defineTool({
5
+ description: '获取钉钉用户信息',
6
+ inputSchema: z.object({
7
+ endpoint_id: z.string().describe('Endpoint 名称'),
8
+ user_id: z.string().describe('用户 ID'),
9
+ }),
10
+ platforms: ['dingtalk'],
11
+ tags: ['dingtalk'],
12
+ async execute({ endpoint_id, user_id }) {
13
+ const endpoint = getDingtalkAgentDeps().getEndpoint(endpoint_id);
14
+ return await endpoint.getUserInfo(user_id);
15
+ },
16
+ });
17
+ //# sourceMappingURL=get_user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get_user.js","sourceRoot":"","sources":["../../../agent/tools/get_user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,eAAe,UAAU,CAA2C;IAClE,WAAW,EAAE,UAAU;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;KACtC,CAAC;IACF,SAAS,EAAE,CAAC,UAAU,CAAC;IACvB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,EAA+C;QACjF,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACjE,OAAO,MAAM,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getDingtalkAgentDeps } from '../../src/dingtalk-agent-deps.js';
4
+ export default defineTool({
5
+ description: '获取钉钉部门列表',
6
+ inputSchema: z.object({
7
+ endpoint_id: z.string().describe('Endpoint 名称'),
8
+ dept_id: z.string().optional().describe('父部门 ID,默认 1(根部门)'),
9
+ }),
10
+ platforms: ['dingtalk'],
11
+ tags: ['dingtalk'],
12
+ async execute({ endpoint_id, dept_id }) {
13
+ const endpoint = getDingtalkAgentDeps().getEndpoint(endpoint_id);
14
+ const departments = await endpoint.getDepartmentList(Number(dept_id || '1'));
15
+ return { departments, count: departments.length };
16
+ },
17
+ });
18
+ //# sourceMappingURL=list_departments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list_departments.js","sourceRoot":"","sources":["../../../agent/tools/list_departments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,eAAe,UAAU,CAA4C;IACnE,WAAW,EAAE,UAAU;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;KAC5D,CAAC;IACF,SAAS,EAAE,CAAC,UAAU,CAAC;IACvB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,EAAgD;QAClF,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC;QAC7E,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC;IACpD,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getDingtalkAgentDeps } from '../../src/dingtalk-agent-deps.js';
4
+ export default defineTool({
5
+ description: '向指定用户发送钉钉工作通知',
6
+ inputSchema: z.object({
7
+ endpoint_id: z.string().describe('Endpoint 名称'),
8
+ user_ids: z.string().describe('用户 ID 列表,逗号分隔'),
9
+ content: z.string().describe('通知内容'),
10
+ }),
11
+ platforms: ['dingtalk'],
12
+ tags: ['dingtalk'],
13
+ async execute({ endpoint_id, user_ids, content }) {
14
+ const endpoint = getDingtalkAgentDeps().getEndpoint(endpoint_id);
15
+ const msgContent = { msgtype: 'text', text: { content } };
16
+ const success = await endpoint.sendWorkNotice(user_ids.split(','), msgContent);
17
+ return { success, message: success ? '工作通知已发送' : '发送失败' };
18
+ },
19
+ });
20
+ //# sourceMappingURL=send_work_notice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send_work_notice.js","sourceRoot":"","sources":["../../../agent/tools/send_work_notice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,eAAe,UAAU,CAA6D;IACpF,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC/C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC9C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;KACrC,CAAC;IACF,SAAS,EAAE,CAAC,UAAU,CAAC;IACvB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAiE;QAC7G,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACjE,MAAM,UAAU,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;QAC/E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5D,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getDingtalkAgentDeps } from '../../src/dingtalk-agent-deps.js';
4
+ export default defineTool({
5
+ description: '更新钉钉群聊设置(改名、换群主、增减成员)',
6
+ inputSchema: z.object({
7
+ endpoint_id: z.string().describe('Endpoint 名称'),
8
+ chat_id: z.string().describe('群聊 ID'),
9
+ name: z.string().optional().describe('新群名(可选)'),
10
+ owner: z.string().optional().describe('新群主 userId(可选)'),
11
+ add_members: z.string().optional().describe('要添加的成员 userId,逗号分隔(可选)'),
12
+ remove_members: z.string().optional().describe('要移除的成员 userId,逗号分隔(可选)'),
13
+ }),
14
+ platforms: ['dingtalk'],
15
+ tags: ['dingtalk'],
16
+ async execute({ endpoint_id, chat_id, name, owner, add_members, remove_members }) {
17
+ const endpoint = getDingtalkAgentDeps().getEndpoint(endpoint_id);
18
+ const options = {};
19
+ if (name)
20
+ options.name = name;
21
+ if (owner)
22
+ options.owner = owner;
23
+ if (add_members)
24
+ options.add_useridlist = add_members.split(',').map((s) => s.trim());
25
+ if (remove_members)
26
+ options.del_useridlist = remove_members.split(',').map((s) => s.trim());
27
+ await endpoint.updateChat(chat_id, options);
28
+ return { success: true, message: '群聊设置已更新' };
29
+ },
30
+ });
31
+ //# sourceMappingURL=update_chat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update_chat.js","sourceRoot":"","sources":["../../../agent/tools/update_chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,eAAe,UAAU,CAAyH;IAChJ,WAAW,EAAE,uBAAuB;IACpC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;QACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC/C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QACvD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QACrE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;KACzE,CAAC;IACF,SAAS,EAAE,CAAC,UAAU,CAAC;IACvB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,EAA6H;QACzM,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACjE,MAAM,OAAO,GAA4B,EAAE,CAAC;QAC5C,IAAI,IAAI;YAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QAC9B,IAAI,KAAK;YAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QACjC,IAAI,WAAW;YAAE,OAAO,CAAC,cAAc,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9F,IAAI,cAAc;YAAE,OAAO,CAAC,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACpG,MAAM,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAC/C,CAAC;CACF,CAAC,CAAC"}
@@ -6,6 +6,7 @@ import { DingTalkEndpoint } from "./endpoint.js";
6
6
  export class DingTalkAdapter extends Adapter {
7
7
  static capabilities = ['inbound', 'outbound'];
8
8
  static outboundRichSegmentPolicy = OUTBOUND_RICH_SEGMENT_POLICY_IM_FULL;
9
+ static interactivePolicy = 'text';
9
10
  #router;
10
11
  constructor(plugin, router) {
11
12
  super(plugin, "dingtalk", []);
@@ -14,19 +15,19 @@ export class DingTalkAdapter extends Adapter {
14
15
  createEndpoint(config) {
15
16
  return new DingTalkEndpoint(this, this.#router, config);
16
17
  }
17
- async kickMember(endpointId, sceneId, userId) {
18
+ async removeMember(endpointId, sceneId, userId) {
18
19
  const endpoint = this.endpoints.get(endpointId);
19
20
  if (!endpoint)
20
21
  throw new Error(`Endpoint ${endpointId} 不存在`);
21
22
  return endpoint.updateChat(sceneId, { del_useridlist: [userId] });
22
23
  }
23
- async setGroupName(endpointId, sceneId, name) {
24
+ async renameScene(endpointId, sceneId, name) {
24
25
  const endpoint = this.endpoints.get(endpointId);
25
26
  if (!endpoint)
26
27
  throw new Error(`Endpoint ${endpointId} 不存在`);
27
28
  return endpoint.updateChat(sceneId, { name });
28
29
  }
29
- async getGroupInfo(endpointId, sceneId) {
30
+ async getSceneInfo(endpointId, sceneId) {
30
31
  const endpoint = this.endpoints.get(endpointId);
31
32
  if (!endpoint)
32
33
  throw new Error(`Endpoint ${endpointId} 不存在`);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EACN,oCAAoC,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGjD,MAAM,OAAO,eAAgB,SAAQ,OAAyB;IAC5D,MAAM,CAAmB,YAAY,GAAG,CAAC,SAAS,EAAE,UAAU,CAAU,CAAC;IACzE,MAAM,CAAU,yBAAyB,GAAG,oCAAoC,CAAC;IACjF,MAAM,CAAU,iBAAiB,GAAG,MAAe,CAAC;IAEpD,OAAO,CAAM;IAEb,YAAY,MAAc,EAAE,MAAW;QACrC,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,cAAc,CAAC,MAA8B;QAC3C,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,UAAkB,EAAE,OAAe,EAAE,MAAc;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,YAAY,UAAU,MAAM,CAAC,CAAC;QAC7D,OAAO,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,UAAkB,EAAE,OAAe,EAAE,IAAY;QACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,YAAY,UAAU,MAAM,CAAC,CAAC;QAC7D,OAAO,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,UAAkB,EAAE,OAAe;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,YAAY,UAAU,MAAM,CAAC,CAAC;QAC7D,OAAO,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC"}
@@ -0,0 +1,10 @@
1
+ let _deps = null;
2
+ export function setDingtalkAgentDeps(deps) {
3
+ _deps = deps;
4
+ }
5
+ export function getDingtalkAgentDeps() {
6
+ if (!_deps)
7
+ throw new Error('dingtalk agent deps not initialized');
8
+ return _deps;
9
+ }
10
+ //# sourceMappingURL=dingtalk-agent-deps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dingtalk-agent-deps.js","sourceRoot":"","sources":["../../src/dingtalk-agent-deps.ts"],"names":[],"mappings":"AAQA,IAAI,KAAK,GAA6B,IAAI,CAAC;AAE3C,MAAM,UAAU,oBAAoB,CAAC,IAAuB;IAC1D,KAAK,GAAG,IAAI,CAAC;AACf,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACnE,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,10 +1,11 @@
1
1
  /**
2
2
  * 钉钉 Endpoint 实现
3
3
  */
4
- import { formatCompact, Message, segment, } from 'zhin.js';
4
+ import { formatCompact, Message, segment, expandInteractiveSegmentsInContent, } from 'zhin.js';
5
5
  import { registerFetchRoute } from "@zhin.js/host-router/router";
6
6
  import { createHmac } from "crypto";
7
7
  import { normalizeDingtalkSenderForPermit } from "./platform-permit.js";
8
+ import { fromCanonicalSegments, toCanonicalSegments } from './segment-mapper.js';
8
9
  export class DingTalkEndpoint {
9
10
  adapter;
10
11
  $config;
@@ -144,7 +145,8 @@ export class DingTalkEndpoint {
144
145
  }
145
146
  }
146
147
  $formatMessage(msg) {
147
- const content = this.parseMessageContent(msg);
148
+ const wire = this.parseMessageContent(msg);
149
+ const content = toCanonicalSegments(wire);
148
150
  const chatType = msg.conversationType === "2" ? "group" : "private";
149
151
  const permit = normalizeDingtalkSenderForPermit({ isAdmin: msg.isAdmin === true });
150
152
  return Message.from(msg, {
@@ -265,7 +267,9 @@ export class DingTalkEndpoint {
265
267
  }
266
268
  async $sendMessage(options) {
267
269
  const conversationId = options.id;
268
- const content = this.formatSendContent(options.content);
270
+ const canonical = expandInteractiveSegmentsInContent(options.content);
271
+ const wire = fromCanonicalSegments(canonical);
272
+ const content = this.formatSendContent(wire);
269
273
  try {
270
274
  const sessionWebhook = this.sessionWebhooks.get(conversationId);
271
275
  if (sessionWebhook) {
@@ -387,8 +391,8 @@ export class DingTalkEndpoint {
387
391
  try {
388
392
  await this.refreshAccessToken();
389
393
  this.$connected = true;
390
- this.logger.info(formatCompact({ endpoint: this.$config.name }));
391
- this.logger.info(formatCompact({ op: "webhook", path: this.$config.webhookPath }));
394
+ this.logger.debug(formatCompact({ endpoint: this.$config.name }));
395
+ this.logger.debug(formatCompact({ op: "webhook", path: this.$config.webhookPath }));
392
396
  }
393
397
  catch (error) {
394
398
  this.logger.error("Failed to connect DingTalk bot:", error);
@@ -399,7 +403,7 @@ export class DingTalkEndpoint {
399
403
  try {
400
404
  this.sessionWebhooks.clear();
401
405
  this.$connected = false;
402
- this.logger.info(formatCompact({ op: "disconnect", endpoint: this.$config.name }));
406
+ this.logger.debug(formatCompact({ op: "disconnect", endpoint: this.$config.name }));
403
407
  }
404
408
  catch (error) {
405
409
  this.logger.error("Error disconnecting DingTalk bot:", error);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../src/endpoint.ts"],"names":[],"mappings":"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"}