@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.
- package/CHANGELOG.md +26 -0
- package/README.md +10 -0
- package/{skills/dingtalk → agent}/PERMITS.md +1 -1
- package/agent/tools/add_chat_members.ts +22 -0
- package/agent/tools/create_chat.ts +23 -0
- package/agent/tools/dept_info.ts +17 -0
- package/agent/tools/get_dept_users.ts +18 -0
- package/agent/tools/get_user.ts +17 -0
- package/agent/tools/list_departments.ts +18 -0
- package/agent/tools/send_work_notice.ts +20 -0
- package/agent/tools/update_chat.ts +27 -0
- package/lib/agent/tools/add_chat_members.js +21 -0
- package/lib/agent/tools/add_chat_members.js.map +1 -0
- package/lib/agent/tools/create_chat.js +22 -0
- package/lib/agent/tools/create_chat.js.map +1 -0
- package/lib/agent/tools/dept_info.js +17 -0
- package/lib/agent/tools/dept_info.js.map +1 -0
- package/lib/agent/tools/get_dept_users.js +18 -0
- package/lib/agent/tools/get_dept_users.js.map +1 -0
- package/lib/agent/tools/get_user.js +17 -0
- package/lib/agent/tools/get_user.js.map +1 -0
- package/lib/agent/tools/list_departments.js +18 -0
- package/lib/agent/tools/list_departments.js.map +1 -0
- package/lib/agent/tools/send_work_notice.js +20 -0
- package/lib/agent/tools/send_work_notice.js.map +1 -0
- package/lib/agent/tools/update_chat.js +31 -0
- package/lib/agent/tools/update_chat.js.map +1 -0
- package/lib/{adapter.js → src/adapter.js} +4 -3
- package/lib/src/adapter.js.map +1 -0
- package/lib/src/dingtalk-agent-deps.js +10 -0
- package/lib/src/dingtalk-agent-deps.js.map +1 -0
- package/lib/{endpoint.js → src/endpoint.js} +10 -6
- package/lib/src/endpoint.js.map +1 -0
- package/lib/src/index.js +43 -0
- package/lib/src/index.js.map +1 -0
- package/lib/{platform-permit.js → src/platform-permit.js} +5 -2
- package/lib/src/platform-permit.js.map +1 -0
- package/lib/src/segment-mapper.js +2 -0
- package/lib/src/segment-mapper.js.map +1 -0
- package/lib/src/types.js.map +1 -0
- package/package.json +18 -8
- package/src/adapter.ts +4 -3
- package/src/dingtalk-agent-deps.ts +18 -0
- package/src/endpoint.ts +10 -6
- package/src/index.ts +13 -188
- package/src/platform-permit.ts +3 -4
- package/src/segment-mapper.ts +1 -0
- package/lib/adapter.d.ts +0 -18
- package/lib/adapter.d.ts.map +0 -1
- package/lib/adapter.js.map +0 -1
- package/lib/endpoint.d.ts +0 -46
- package/lib/endpoint.d.ts.map +0 -1
- package/lib/endpoint.js.map +0 -1
- package/lib/index.d.ts +0 -15
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -219
- package/lib/index.js.map +0 -1
- package/lib/platform-permit.d.ts +0 -16
- package/lib/platform-permit.d.ts.map +0 -1
- package/lib/platform-permit.js.map +0 -1
- package/lib/types.d.ts +0 -58
- package/lib/types.d.ts.map +0 -1
- package/lib/types.js.map +0 -1
- /package/{skills/dingtalk/SKILL.md → agent/skills/dingtalk.md} +0 -0
- /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
|
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
391
|
-
this.logger.
|
|
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.
|
|
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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"}
|