@zhin.js/adapter-lark 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 +7 -3
  3. package/{skills/lark → agent}/PERMITS.md +1 -1
  4. package/agent/tools/add_members.ts +22 -0
  5. package/agent/tools/create_chat.ts +20 -0
  6. package/agent/tools/dissolve_chat.ts +18 -0
  7. package/agent/tools/get_user.ts +18 -0
  8. package/agent/tools/remove_managers.ts +22 -0
  9. package/agent/tools/set_managers.ts +22 -0
  10. package/agent/tools/update_chat.ts +23 -0
  11. package/agent/tools/upload_file.ts +27 -0
  12. package/lib/agent/tools/add_members.js +21 -0
  13. package/lib/agent/tools/add_members.js.map +1 -0
  14. package/lib/agent/tools/create_chat.js +20 -0
  15. package/lib/agent/tools/create_chat.js.map +1 -0
  16. package/lib/agent/tools/dissolve_chat.js +18 -0
  17. package/lib/agent/tools/dissolve_chat.js.map +1 -0
  18. package/lib/agent/tools/get_user.js +17 -0
  19. package/lib/agent/tools/get_user.js.map +1 -0
  20. package/lib/agent/tools/remove_managers.js +21 -0
  21. package/lib/agent/tools/remove_managers.js.map +1 -0
  22. package/lib/agent/tools/set_managers.js +21 -0
  23. package/lib/agent/tools/set_managers.js.map +1 -0
  24. package/lib/agent/tools/update_chat.js +22 -0
  25. package/lib/agent/tools/update_chat.js.map +1 -0
  26. package/lib/agent/tools/upload_file.js +19 -0
  27. package/lib/agent/tools/upload_file.js.map +1 -0
  28. package/lib/{adapter.js → src/adapter.js} +5 -4
  29. package/lib/src/adapter.js.map +1 -0
  30. package/lib/{endpoint.js → src/endpoint.js} +10 -6
  31. package/lib/src/endpoint.js.map +1 -0
  32. package/lib/src/index.js +43 -0
  33. package/lib/src/index.js.map +1 -0
  34. package/lib/src/lark-agent-deps.js +10 -0
  35. package/lib/src/lark-agent-deps.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 +17 -7
  42. package/src/adapter.ts +5 -4
  43. package/src/endpoint.ts +10 -6
  44. package/src/index.ts +13 -189
  45. package/src/lark-agent-deps.ts +18 -0
  46. package/src/platform-permit.ts +3 -4
  47. package/src/segment-mapper.ts +1 -0
  48. package/lib/adapter.d.ts +0 -19
  49. package/lib/adapter.d.ts.map +0 -1
  50. package/lib/adapter.js.map +0 -1
  51. package/lib/endpoint.d.ts +0 -84
  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 -216
  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 -63
  62. package/lib/types.d.ts.map +0 -1
  63. package/lib/types.js.map +0 -1
  64. /package/{skills/lark/SKILL.md → agent/skills/lark.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-lark
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
@@ -9,7 +9,7 @@ Zhin.js 飞书 / Lark 适配器,支持飞书机器人的消息收发和群管
9
9
  - Bearer Token 自动刷新
10
10
  - 消息加密和签名验证(可选)
11
11
  - URL 验证自动处理
12
- - 群管理 AI 工具(通过包内 `skills/lark/SKILL.md` 与 `addTool` 暴露给 AI)
12
+ - 群管理 AI 工具(`agent/tools/` 平台工具 + `agent/skills/lark.md`;群管标准工具由 `createSceneManagementTools` 注册)
13
13
 
14
14
  ## 安装
15
15
 
@@ -96,9 +96,13 @@ root.addMiddleware(async (message, next) => {
96
96
 
97
97
  ## AI 工具(Skill)
98
98
 
99
- 适配器内置群管理 Skill,自动注册以下工具供 AI 调用:
99
+ | 类别 | 路径 |
100
+ |------|------|
101
+ | Permit 词汇 | `agent/PERMITS.md` |
102
+ | 平台工具(8 个) | `agent/tools/`(`lark_*`:群聊、成员、文件等) |
103
+ | 技能说明 | `agent/skills/lark.md` |
104
+ | 群管标准工具 | `createSceneManagementTools()` |
100
105
 
101
- - 群聊管理(成员管理、群信息修改等)
102
106
 
103
107
  > 工具使用飞书的 `open_id` 和 `chat_id` 格式标识用户和群聊。
104
108
 
@@ -19,4 +19,4 @@
19
19
 
20
20
  ## 工厂映射
21
21
 
22
- `group_admin` → `chat_admin` · `group_owner` → `chat_owner`
22
+ `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 { getLarkAgentDeps } from '../../src/lark-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('用户 open_id 列表,逗号分隔'),
12
+ }),
13
+ platforms: ['lark'],
14
+ tags: ['lark'],
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 = getLarkAgentDeps().getEndpoint(endpoint_id);
18
+ const success = await endpoint.addChatMembers(chat_id, user_ids.split(','));
19
+ return { success, message: success ? '成员添加成功' : '添加失败' };
20
+ },
21
+ });
22
+
@@ -0,0 +1,20 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getLarkAgentDeps } from '../../src/lark-agent-deps.js';
4
+ export default defineTool<{ endpoint_id: string; name: string; members: string; owner?: string }>({
5
+ description: '创建飞书群聊',
6
+ inputSchema: z.object({
7
+ endpoint_id: z.string().describe('Endpoint 名称'),
8
+ name: z.string().describe('群名'),
9
+ members: z.string().describe('成员 open_id 列表,逗号分隔'),
10
+ owner: z.string().optional().describe('群主 open_id(可选)'),
11
+ }),
12
+ platforms: ['lark'],
13
+ tags: ['lark'],
14
+ async execute({ endpoint_id, name, members, owner }: { endpoint_id: string; name: string; members: string; owner?: string }) {
15
+ const endpoint = getLarkAgentDeps().getEndpoint(endpoint_id);
16
+ const chatId = await endpoint.createChat(name, members.split(','), owner);
17
+ return { success: !!chatId, chat_id: chatId, message: chatId ? `群聊创建成功: ${chatId}` : '创建失败' };
18
+ },
19
+ });
20
+
@@ -0,0 +1,18 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getLarkAgentDeps } from '../../src/lark-agent-deps.js';
4
+ export default defineTool<{ endpoint_id: string; chat_id: string }>({
5
+ description: '解散飞书群聊(需要群主权限)',
6
+ inputSchema: z.object({
7
+ endpoint_id: z.string().describe('Endpoint 名称'),
8
+ chat_id: z.string().describe('群聊 ID'),
9
+ }),
10
+ platforms: ['lark'],
11
+ tags: ['lark'],
12
+ async execute({ endpoint_id, chat_id }: { endpoint_id: string; chat_id: string }) {
13
+ const endpoint = getLarkAgentDeps().getEndpoint(endpoint_id);
14
+ const success = await endpoint.dissolveChat(chat_id);
15
+ return { success, message: success ? '群聊已解散' : '解散失败' };
16
+ },
17
+ });
18
+
@@ -0,0 +1,18 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getLarkAgentDeps } from '../../src/lark-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; user_id: string }>({
6
+ description: '获取飞书用户信息',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ user_id: z.string().describe('用户 ID (open_id)'),
10
+ }),
11
+ platforms: ['lark'],
12
+ tags: ['lark'],
13
+ async execute({ endpoint_id, user_id }: { endpoint_id: string; user_id: string }) {
14
+ const endpoint = getLarkAgentDeps().getEndpoint(endpoint_id);
15
+ return await endpoint.getUserInfo(user_id);
16
+ },
17
+ });
18
+
@@ -0,0 +1,22 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getLarkAgentDeps } from '../../src/lark-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('用户 open_id 列表,逗号分隔'),
12
+ }),
13
+ platforms: ['lark'],
14
+ tags: ['lark'],
15
+ permissions: [platformPermit('manage_managers')],
16
+ async execute({ endpoint_id, chat_id, user_ids }: { endpoint_id: string; chat_id: string; user_ids: string }) {
17
+ const endpoint = getLarkAgentDeps().getEndpoint(endpoint_id);
18
+ const success = await endpoint.removeChatManagers(chat_id, user_ids.split(','));
19
+ return { success, message: success ? '管理员移除成功' : '移除失败' };
20
+ },
21
+ });
22
+
@@ -0,0 +1,22 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getLarkAgentDeps } from '../../src/lark-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('用户 open_id 列表,逗号分隔'),
12
+ }),
13
+ platforms: ['lark'],
14
+ tags: ['lark'],
15
+ permissions: [platformPermit('manage_managers')],
16
+ async execute({ endpoint_id, chat_id, user_ids }: { endpoint_id: string; chat_id: string; user_ids: string }) {
17
+ const endpoint = getLarkAgentDeps().getEndpoint(endpoint_id);
18
+ const success = await endpoint.setChatManagers(chat_id, 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 { getLarkAgentDeps } from '../../src/lark-agent-deps.js';
4
+ import { platformPermit } from '../../src/platform-permit.js';
5
+
6
+ export default defineTool<{ endpoint_id: string; chat_id: string; name?: string; description?: string }>({
7
+ description: '更新飞书群聊信息(群名、描述)',
8
+ inputSchema: z.object({
9
+ endpoint_id: z.string().describe('Endpoint 名称'),
10
+ chat_id: z.string().describe('群聊 ID'),
11
+ name: z.string().optional().describe('新群名(可选)'),
12
+ description: z.string().optional().describe('新描述(可选)'),
13
+ }),
14
+ platforms: ['lark'],
15
+ tags: ['lark'],
16
+ permissions: [platformPermit('chat_admin')],
17
+ async execute({ endpoint_id, chat_id, name, description }: { endpoint_id: string; chat_id: string; name?: string; description?: string }) {
18
+ const endpoint = getLarkAgentDeps().getEndpoint(endpoint_id);
19
+ const success = await endpoint.updateChatInfo(chat_id, { name, description });
20
+ return { success, message: success ? '群信息更新成功' : '更新失败' };
21
+ },
22
+ });
23
+
@@ -0,0 +1,27 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getLarkAgentDeps } from '../../src/lark-agent-deps.js';
4
+
5
+ export default defineTool<{
6
+ endpoint_id: string;
7
+ file_path: string;
8
+ file_type: 'image' | 'file' | 'video' | 'audio';
9
+ }>({
10
+ description: '上传文件到飞书(image/file/video/audio)',
11
+ inputSchema: z.object({
12
+ endpoint_id: z.string().describe('Endpoint 名称'),
13
+ file_path: z.string().describe('本地文件路径'),
14
+ file_type: z.enum(['image', 'file', 'video', 'audio']).default('file').describe('飞书文件类型'),
15
+ }),
16
+ platforms: ['lark'],
17
+ tags: ['lark'],
18
+ async execute({ endpoint_id, file_path, file_type }: {
19
+ endpoint_id: string;
20
+ file_path: string;
21
+ file_type: 'image' | 'file' | 'video' | 'audio';
22
+ }) {
23
+ const endpoint = getLarkAgentDeps().getEndpoint(endpoint_id);
24
+ const result = await endpoint.uploadFile(file_path, file_type);
25
+ return { success: true, file_key: result, message: `文件已上传,file_key: ${result}` };
26
+ },
27
+ });
@@ -0,0 +1,21 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getLarkAgentDeps } from '../../src/lark-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('用户 open_id 列表,逗号分隔'),
11
+ }),
12
+ platforms: ['lark'],
13
+ tags: ['lark'],
14
+ permissions: [platformPermit('chat_admin')],
15
+ async execute({ endpoint_id, chat_id, user_ids }) {
16
+ const endpoint = getLarkAgentDeps().getEndpoint(endpoint_id);
17
+ const success = await endpoint.addChatMembers(chat_id, user_ids.split(','));
18
+ return { success, message: success ? '成员添加成功' : '添加失败' };
19
+ },
20
+ });
21
+ //# sourceMappingURL=add_members.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add_members.js","sourceRoot":"","sources":["../../../agent/tools/add_members.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,eAAe,UAAU,CAA6D;IACpF,WAAW,EAAE,SAAS;IACtB,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,oBAAoB,CAAC;KACpD,CAAC;IACF,SAAS,EAAE,CAAC,MAAM,CAAC;IACnB,IAAI,EAAE,CAAC,MAAM,CAAC;IACd,WAAW,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IAC3C,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAgE;QAC5G,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5E,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,20 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getLarkAgentDeps } from '../../src/lark-agent-deps.js';
4
+ export default defineTool({
5
+ description: '创建飞书群聊',
6
+ inputSchema: z.object({
7
+ endpoint_id: z.string().describe('Endpoint 名称'),
8
+ name: z.string().describe('群名'),
9
+ members: z.string().describe('成员 open_id 列表,逗号分隔'),
10
+ owner: z.string().optional().describe('群主 open_id(可选)'),
11
+ }),
12
+ platforms: ['lark'],
13
+ tags: ['lark'],
14
+ async execute({ endpoint_id, name, members, owner }) {
15
+ const endpoint = getLarkAgentDeps().getEndpoint(endpoint_id);
16
+ const chatId = await endpoint.createChat(name, members.split(','), owner);
17
+ return { success: !!chatId, chat_id: chatId, message: chatId ? `群聊创建成功: ${chatId}` : '创建失败' };
18
+ },
19
+ });
20
+ //# 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,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,eAAe,UAAU,CAAyE;IAChG,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,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QAClD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;KACxD,CAAC;IACF,SAAS,EAAE,CAAC,MAAM,CAAC;IACnB,IAAI,EAAE,CAAC,MAAM,CAAC;IACd,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAA4E;QAC3H,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,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,18 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getLarkAgentDeps } from '../../src/lark-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
+ }),
10
+ platforms: ['lark'],
11
+ tags: ['lark'],
12
+ async execute({ endpoint_id, chat_id }) {
13
+ const endpoint = getLarkAgentDeps().getEndpoint(endpoint_id);
14
+ const success = await endpoint.dissolveChat(chat_id);
15
+ return { success, message: success ? '群聊已解散' : '解散失败' };
16
+ },
17
+ });
18
+ //# sourceMappingURL=dissolve_chat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dissolve_chat.js","sourceRoot":"","sources":["../../../agent/tools/dissolve_chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,eAAe,UAAU,CAA2C;IAClE,WAAW,EAAE,gBAAgB;IAC7B,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,MAAM,CAAC;IACnB,IAAI,EAAE,CAAC,MAAM,CAAC;IACd,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,EAA8C;QAChF,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACrD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1D,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getLarkAgentDeps } from '../../src/lark-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 (open_id)'),
9
+ }),
10
+ platforms: ['lark'],
11
+ tags: ['lark'],
12
+ async execute({ endpoint_id, user_id }) {
13
+ const endpoint = getLarkAgentDeps().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,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,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,iBAAiB,CAAC;KAChD,CAAC;IACF,SAAS,EAAE,CAAC,MAAM,CAAC;IACnB,IAAI,EAAE,CAAC,MAAM,CAAC;IACd,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,EAA8C;QAChF,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC7D,OAAO,MAAM,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getLarkAgentDeps } from '../../src/lark-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('用户 open_id 列表,逗号分隔'),
11
+ }),
12
+ platforms: ['lark'],
13
+ tags: ['lark'],
14
+ permissions: [platformPermit('manage_managers')],
15
+ async execute({ endpoint_id, chat_id, user_ids }) {
16
+ const endpoint = getLarkAgentDeps().getEndpoint(endpoint_id);
17
+ const success = await endpoint.removeChatManagers(chat_id, user_ids.split(','));
18
+ return { success, message: success ? '管理员移除成功' : '移除失败' };
19
+ },
20
+ });
21
+ //# sourceMappingURL=remove_managers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove_managers.js","sourceRoot":"","sources":["../../../agent/tools/remove_managers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,eAAe,UAAU,CAA6D;IACpF,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;QACrC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;KACpD,CAAC;IACF,SAAS,EAAE,CAAC,MAAM,CAAC;IACnB,IAAI,EAAE,CAAC,MAAM,CAAC;IACd,WAAW,EAAE,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAChD,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAgE;QAC5G,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAChF,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,21 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getLarkAgentDeps } from '../../src/lark-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('用户 open_id 列表,逗号分隔'),
11
+ }),
12
+ platforms: ['lark'],
13
+ tags: ['lark'],
14
+ permissions: [platformPermit('manage_managers')],
15
+ async execute({ endpoint_id, chat_id, user_ids }) {
16
+ const endpoint = getLarkAgentDeps().getEndpoint(endpoint_id);
17
+ const success = await endpoint.setChatManagers(chat_id, user_ids.split(','));
18
+ return { success, message: success ? '管理员设置成功' : '设置失败' };
19
+ },
20
+ });
21
+ //# sourceMappingURL=set_managers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set_managers.js","sourceRoot":"","sources":["../../../agent/tools/set_managers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,eAAe,UAAU,CAA6D;IACpF,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;QACrC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;KACpD,CAAC;IACF,SAAS,EAAE,CAAC,MAAM,CAAC;IACnB,IAAI,EAAE,CAAC,MAAM,CAAC;IACd,WAAW,EAAE,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAChD,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAgE;QAC5G,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7E,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,22 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getLarkAgentDeps } from '../../src/lark-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
+ name: z.string().optional().describe('新群名(可选)'),
11
+ description: z.string().optional().describe('新描述(可选)'),
12
+ }),
13
+ platforms: ['lark'],
14
+ tags: ['lark'],
15
+ permissions: [platformPermit('chat_admin')],
16
+ async execute({ endpoint_id, chat_id, name, description }) {
17
+ const endpoint = getLarkAgentDeps().getEndpoint(endpoint_id);
18
+ const success = await endpoint.updateChatInfo(chat_id, { name, description });
19
+ return { success, message: success ? '群信息更新成功' : '更新失败' };
20
+ },
21
+ });
22
+ //# 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,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,eAAe,UAAU,CAAgF;IACvG,WAAW,EAAE,iBAAiB;IAC9B,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,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;KACvD,CAAC;IACF,SAAS,EAAE,CAAC,MAAM,CAAC;IACnB,IAAI,EAAE,CAAC,MAAM,CAAC;IACd,WAAW,EAAE,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IAC3C,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAmF;QACxI,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QAC9E,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,19 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getLarkAgentDeps } from '../../src/lark-agent-deps.js';
4
+ export default defineTool({
5
+ description: '上传文件到飞书(image/file/video/audio)',
6
+ inputSchema: z.object({
7
+ endpoint_id: z.string().describe('Endpoint 名称'),
8
+ file_path: z.string().describe('本地文件路径'),
9
+ file_type: z.enum(['image', 'file', 'video', 'audio']).default('file').describe('飞书文件类型'),
10
+ }),
11
+ platforms: ['lark'],
12
+ tags: ['lark'],
13
+ async execute({ endpoint_id, file_path, file_type }) {
14
+ const endpoint = getLarkAgentDeps().getEndpoint(endpoint_id);
15
+ const result = await endpoint.uploadFile(file_path, file_type);
16
+ return { success: true, file_key: result, message: `文件已上传,file_key: ${result}` };
17
+ },
18
+ });
19
+ //# sourceMappingURL=upload_file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload_file.js","sourceRoot":"","sources":["../../../agent/tools/upload_file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,eAAe,UAAU,CAItB;IACD,WAAW,EAAE,iCAAiC;IAC9C,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC/C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACxC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;KAC1F,CAAC;IACF,SAAS,EAAE,CAAC,MAAM,CAAC;IACnB,IAAI,EAAE,CAAC,MAAM,CAAC;IACd,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAIhD;QACC,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC/D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,MAAM,EAAE,EAAE,CAAC;IACnF,CAAC;CACF,CAAC,CAAC"}
@@ -6,6 +6,7 @@ import { LarkEndpoint } from "./endpoint.js";
6
6
  export class LarkAdapter extends Adapter {
7
7
  static capabilities = ['inbound', 'outbound'];
8
8
  static outboundRichSegmentPolicy = OUTBOUND_RICH_SEGMENT_POLICY_IM_FULL;
9
+ static interactivePolicy = 'native';
9
10
  #router;
10
11
  constructor(plugin, router) {
11
12
  super(plugin, 'lark', []);
@@ -14,8 +15,8 @@ export class LarkAdapter extends Adapter {
14
15
  createEndpoint(config) {
15
16
  return new LarkEndpoint(this, this.#router, config);
16
17
  }
17
- // ── IGroupManagement 标准群管方法 ──────────────────────────────────
18
- async kickMember(endpointId, sceneId, userId) {
18
+ // ── ISceneManagement 标准群管方法 ──────────────────────────────────
19
+ async removeMember(endpointId, sceneId, userId) {
19
20
  const endpoint = this.endpoints.get(endpointId);
20
21
  if (!endpoint)
21
22
  throw new Error(`Endpoint ${endpointId} 不存在`);
@@ -27,13 +28,13 @@ export class LarkAdapter extends Adapter {
27
28
  throw new Error(`Endpoint ${endpointId} 不存在`);
28
29
  return endpoint.getChatMembers(sceneId);
29
30
  }
30
- async getGroupInfo(endpointId, sceneId) {
31
+ async getSceneInfo(endpointId, sceneId) {
31
32
  const endpoint = this.endpoints.get(endpointId);
32
33
  if (!endpoint)
33
34
  throw new Error(`Endpoint ${endpointId} 不存在`);
34
35
  return endpoint.getChatInfo(sceneId);
35
36
  }
36
- async setGroupName(endpointId, sceneId, name) {
37
+ async renameScene(endpointId, sceneId, name) {
37
38
  const endpoint = this.endpoints.get(endpointId);
38
39
  if (!endpoint)
39
40
  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,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,MAAM,OAAO,WAAY,SAAQ,OAAqB;IACpD,MAAM,CAAmB,YAAY,GAAG,CAAC,SAAS,EAAE,UAAU,CAAU,CAAC;IACzE,MAAM,CAAU,yBAAyB,GAAG,oCAAoC,CAAC;IACjF,MAAM,CAAU,iBAAiB,GAAG,QAAiB,CAAC;IAEpD,OAAO,CAAM;IAEb,YAAY,MAAc,EAAE,MAAW;QACnC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,cAAc,CAAC,MAA0B;QACrC,OAAO,IAAI,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,gEAAgE;IAEhE,KAAK,CAAC,YAAY,CAAC,UAAkB,EAAE,OAAe,EAAE,MAAc;QAClE,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,iBAAiB,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,UAAkB,EAAE,OAAe;QACjD,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,cAAc,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,UAAkB,EAAE,OAAe;QAClD,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;IACzC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,UAAkB,EAAE,OAAe,EAAE,IAAY;QAC/D,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,cAAc,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,kEAAkE;IAElE,KAAK,CAAC,KAAK;QACP,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC"}
@@ -4,8 +4,9 @@
4
4
  import { registerFetchRoute } from "@zhin.js/host-router/router";
5
5
  import axios from "axios";
6
6
  import { createHash } from "crypto";
7
- import { formatCompact, Message, segment, } from 'zhin.js';
7
+ import { formatCompact, Message, segment, expandInteractiveSegmentsInContent, } from 'zhin.js';
8
8
  import { normalizeLarkSenderForPermit } from "./platform-permit.js";
9
+ import { fromCanonicalSegments, toCanonicalSegments } from './segment-mapper.js';
9
10
  export class LarkEndpoint {
10
11
  adapter;
11
12
  $config;
@@ -197,7 +198,8 @@ export class LarkEndpoint {
197
198
  // 消息格式化
198
199
  // ================================================================================================
199
200
  $formatMessage(msg, event) {
200
- const content = this.parseMessageContent(msg);
201
+ const wire = this.parseMessageContent(msg);
202
+ const content = toCanonicalSegments(wire);
201
203
  // 确定聊天类型
202
204
  const chatType = msg.chat_id?.startsWith('oc_') ? 'group' : 'private';
203
205
  return Message.from(msg, {
@@ -333,7 +335,9 @@ export class LarkEndpoint {
333
335
  // ================================================================================================
334
336
  async $sendMessage(options) {
335
337
  const chatId = options.id;
336
- const content = this.formatSendContent(options.content);
338
+ const canonical = expandInteractiveSegmentsInContent(options.content);
339
+ const wire = fromCanonicalSegments(canonical);
340
+ const content = this.formatSendContent(wire);
337
341
  try {
338
342
  const response = await this.axiosInstance.post('/im/v1/messages', {
339
343
  receive_id: chatId,
@@ -438,8 +442,8 @@ export class LarkEndpoint {
438
442
  // 获取 access token
439
443
  await this.refreshAccessToken();
440
444
  this.$connected = true;
441
- this.logger.info(formatCompact({ endpoint: this.$config.name }));
442
- this.logger.info(formatCompact({ op: 'webhook', path: this.$config.webhookPath }));
445
+ this.logger.debug(formatCompact({ endpoint: this.$config.name }));
446
+ this.logger.debug(formatCompact({ op: 'webhook', path: this.$config.webhookPath }));
443
447
  }
444
448
  catch (error) {
445
449
  this.logger.error('Failed to connect Lark bot:', error);
@@ -449,7 +453,7 @@ export class LarkEndpoint {
449
453
  async $disconnect() {
450
454
  try {
451
455
  this.$connected = false;
452
- this.logger.info(formatCompact({ op: 'disconnect', endpoint: this.$config.name }));
456
+ this.logger.debug(formatCompact({ op: 'disconnect', endpoint: this.$config.name }));
453
457
  }
454
458
  catch (error) {
455
459
  this.logger.error('Error disconnecting Lark bot:', error);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../src/endpoint.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,kBAAkB,EAAmC,MAAM,6BAA6B,CAAC;AAClG,OAAO,KAA6B,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,aAAa,EAAY,OAAO,EAAkB,OAAO,EAA4B,kCAAkC,GAAE,MAAM,SAAS,CAAC;AAGlJ,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAEjF,MAAM,OAAO,YAAY;IAcF;IAA0C;IAb7D,UAAU,CAAS;IACX,MAAM,CAAK;IACX,WAAW,CAAa;IACxB,aAAa,CAAe;IAEpC,IAAI,MAAM;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;IACpC,CAAC;IAED,IAAI,GAAG;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC7B,CAAC;IAED,YAAmB,OAAoB,EAAE,MAAW,EAAS,OAA2B;QAArE,YAAO,GAAP,OAAO,CAAa;QAAsB,YAAO,GAAP,OAAO,CAAoB;QACpF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;QAE9D,gBAAgB;QAChB,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACrD,kCAAkC,CAAC,CAAC;YACpC,sCAAsC,CACzC,CAAC;QAEF,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC;YAC9B,OAAO;YACP,OAAO,EAAE,KAAK;YACd,OAAO,EAAE;gBACL,cAAc,EAAE,iCAAiC;aACpD;SACJ,CAAC,CAAC;QAEH,4BAA4B;QAC5B,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACzD,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC/B,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;YACtC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YACrE,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,gBAAgB;QAChB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC7B,CAAC;IAEO,iBAAiB;QACrB,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,GAAkB,EAAE,EAAE;YACrF,KAAK,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,GAAkB;QAC1C,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;YAE9B,kBAAkB;YAClB,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;gBAC9C,IAAI,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;oBAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC,CAAC,CAAC;oBACpG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;oBACjB,GAAG,CAAC,IAAI,GAAG,WAAW,CAAC;oBACvB,OAAO;gBACX,CAAC;YACL,CAAC;YAED,kBAAkB;YAClB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;gBAC1B,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;gBACtD,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;gBAC9C,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;gBAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAErC,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;oBACpG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;oBAC3F,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;oBACjB,GAAG,CAAC,IAAI,GAAG,WAAW,CAAC;oBACvB,OAAO;gBACX,CAAC;YACL,CAAC;YAED,MAAM,KAAK,GAAG,IAAiB,CAAC;YAEhC,2BAA2B;YAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBACpC,GAAG,CAAC,IAAI,GAAG,EAAE,SAAS,EAAG,KAAa,CAAC,SAAS,EAAE,CAAC;gBACnD,OAAO;YACX,CAAC;YAED,SAAS;YACT,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBACjD,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACxC,CAAC;YAED,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;YACjB,GAAG,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;QAE3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;YAC3C,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;YACjB,GAAG,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,uBAAuB,EAAE,CAAC;QAC1D,CAAC;IACL,CAAC;IAEO,eAAe,CAAC,SAAiB,EAAE,KAAa,EAAE,IAAY,EAAE,SAAiB;QACrF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAE1C,IAAI,CAAC;YACD,MAAM,YAAY,GAAG,GAAG,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,EAAE,CAAC;YAC7E,MAAM,mBAAmB,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACpF,OAAO,mBAAmB,KAAK,SAAS,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;YAC1D,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAEO,eAAe,GAAG,IAAI,GAAG,EAAgE,CAAC;IAE1F,KAAK,CAAC,iBAAiB,CAAC,OAA6B,EAAE,GAAgB;QAC3E,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO;QAC9D,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;QAChD,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,OAA2B,CAAC;QAChC,IAAI,QAAQ,GAAa,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;YACrC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YACzB,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC/B,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC;gBACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACjD,OAAO,GAAG,IAAI,EAAE,QAAQ,CAAC;gBACzB,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtF,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC1E,CAAC;YAAC,MAAM,CAAC;gBACL,OAAO;YACX,CAAC;QACL,CAAC;QACD,MAAM,MAAM,GAAG,4BAA4B,CAAC;YACxC,OAAO,EAAE,OAAO,KAAK,QAAQ;YAC7B,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;SACvC,CAAC,CAAC;QACH,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACnC,OAAO,CAAC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IACrD,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,KAAU;QAChC,SAAS;QACT,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC1D,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACrD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;YAC9C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAE;gBAC/B,EAAE,EAAE,MAAM;gBACV,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;gBAC3B,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAC9B,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE;gBACvB,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM;aAC1C,CAAC,CAAC,CAAC;QACR,CAAC;IACL,CAAC;IAED,mGAAmG;IACnG,WAAW;IACX,mGAAmG;IAE3F,KAAK,CAAC,iBAAiB;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,kBAAkB;QAClB,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;YAC5G,OAAO;QACX,CAAC;QAED,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACpC,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC5B,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAC7B,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAClD,kCAAkC,CAAC,CAAC;gBACpC,sCAAsC,CACzC,uCAAuC,EACxC;gBACI,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;gBAC1B,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;aACrC,CACJ,CAAC;YAEF,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,WAAW,GAAG;oBACf,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,mBAAmB;oBACxC,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM;oBAChC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;iBACxB,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACxE,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;YAC5D,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAED,mGAAmG;IACnG,QAAQ;IACR,mGAAmG;IAEnG,cAAc,CAAC,GAAgB,EAAE,KAAW;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAE1C,SAAS;QACT,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAEtE,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;YACrB,GAAG,EAAE,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;YAC5C,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YAC5B,OAAO,EAAE;gBACL,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,IAAI,SAAS;gBAC/C,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,IAAI,cAAc;aAC3F;YACD,QAAQ,EAAE;gBACN,EAAE,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS;gBAC5B,IAAI,EAAE,QAAe;aACxB;YACD,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;YACzB,UAAU,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACpE,OAAO,EAAE,KAAK,IAAI,EAAE;gBAChB,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;YACpD,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,OAAoB,EAAmB,EAAE;gBACpD,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;oBAClC,OAAO,EAAE,MAAM;oBACf,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;oBAC3B,EAAE,EAAE,GAAG,CAAC,OAAO,IAAI,SAAS;oBAC5B,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,OAAO;iBACnB,CAAC,CAAC;YACP,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAEO,mBAAmB,CAAC,GAAgB;QACxC,MAAM,OAAO,GAAqB,EAAE,CAAC;QAErC,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YACpC,OAAO,OAAO,CAAC;QACnB,CAAC;QAED,IAAI,CAAC;YACD,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAE/C,QAAQ,GAAG,CAAC,YAAY,EAAE,CAAC;gBACvB,KAAK,MAAM;oBACP,IAAI,cAAc,CAAC,IAAI,EAAE,CAAC;wBACtB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;wBAEhE,SAAS;wBACT,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;4BACf,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gCACjC,IAAI,OAAO,CAAC,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oCAC3D,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;wCACvB,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO;wCACvB,IAAI,EAAE,OAAO,CAAC,IAAI;qCACrB,CAAC,CAAC,CAAC;gCACR,CAAC;4BACL,CAAC;wBACL,CAAC;oBACL,CAAC;oBACD,MAAM;gBAEV,KAAK,OAAO;oBACR,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;wBAC1B,QAAQ,EAAE,cAAc,CAAC,SAAS;wBAClC,GAAG,EAAE,mDAAmD,GAAG,CAAC,UAAU,cAAc,cAAc,CAAC,SAAS,EAAE;qBACjH,CAAC,CAAC,CAAC;oBACJ,MAAM;gBAEV,KAAK,MAAM;oBACP,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;wBACzB,QAAQ,EAAE,cAAc,CAAC,QAAQ;wBACjC,SAAS,EAAE,cAAc,CAAC,SAAS;wBACnC,SAAS,EAAE,cAAc,CAAC,SAAS;qBACtC,CAAC,CAAC,CAAC;oBACJ,MAAM;gBAEV,KAAK,OAAO;oBACR,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;wBAC1B,QAAQ,EAAE,cAAc,CAAC,QAAQ;wBACjC,QAAQ,EAAE,cAAc,CAAC,QAAQ;qBACpC,CAAC,CAAC,CAAC;oBACJ,MAAM;gBAEV,KAAK,OAAO;oBACR,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;wBAC1B,QAAQ,EAAE,cAAc,CAAC,QAAQ;wBACjC,QAAQ,EAAE,cAAc,CAAC,QAAQ;wBACjC,KAAK,EAAE,cAAc,CAAC,KAAK;wBAC3B,MAAM,EAAE,cAAc,CAAC,MAAM;qBAChC,CAAC,CAAC,CAAC;oBACJ,MAAM;gBAEV,KAAK,SAAS;oBACV,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;wBAC5B,QAAQ,EAAE,cAAc,CAAC,QAAQ;qBACpC,CAAC,CAAC,CAAC;oBACJ,MAAM;gBAEV,KAAK,WAAW;oBACZ,cAAc;oBACd,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;wBACzB,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC/D,CAAC;oBACD,MAAM;gBAEV,KAAK,MAAM;oBACP,SAAS;oBACT,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;oBAC9C,MAAM;gBAEV;oBACI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC,CAAC;oBAC9E,MAAM;YACd,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;YAC7D,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,oBAAoB,CAAC,WAAgB,EAAE,OAAyB;QACpE,WAAW;QACX,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;gBAC9B,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACrC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC3D,CAAC;qBAAM,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACzC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;wBACzB,GAAG,EAAE,KAAK,CAAC,IAAI;wBACf,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI;qBACjC,CAAC,CAAC,CAAC;gBACR,CAAC;qBAAM,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBAC7C,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;wBACvB,EAAE,EAAE,KAAK,CAAC,OAAO;wBACjB,IAAI,EAAE,KAAK,CAAC,SAAS;qBACxB,CAAC,CAAC,CAAC;gBACR,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,mGAAmG;IACnG,OAAO;IACP,mGAAmG;IAEnG,KAAK,CAAC,YAAY,CAAC,OAAoB;QACnC,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,kCAAkC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACtE,MAAM,IAAI,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAE7C,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,EAAE;gBAC9D,UAAU,EAAE,MAAM;gBAClB,eAAe,EAAE,SAAS;gBAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;aAC3B,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACpE,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAChF,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,IAAI,EAAE,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YACpD,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IACD,KAAK,CAAC,cAAc,CAAC,EAAS;QAC1B,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACpD,UAAU,EAAE,EAAE;SACjB,CAAC,CAAC;IACP,CAAC;IAEO,iBAAiB,CAAC,OAAoB;QAC1C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO;gBACH,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;aAC7C,CAAC;QACN,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,MAAM,SAAS,GAAa,EAAE,CAAC;YAC/B,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,YAAY,GAAQ,IAAI,CAAC;YAE7B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;gBACzB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC3B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzB,CAAC;qBAAM,CAAC;oBACJ,MAAM,OAAO,GAAG,IAAsB,CAAC;oBACvC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;wBACnB,KAAK,MAAM;4BACP,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;4BAChE,MAAM;wBAEV,KAAK,IAAI;4BACL,SAAS,CAAC,IAAI,CAAC,gBAAgB,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;4BAChG,MAAM;wBAEV,KAAK,OAAO;4BACR,IAAI,CAAC,QAAQ,EAAE,CAAC;gCACZ,QAAQ,GAAG,IAAI,CAAC;gCAChB,YAAY,GAAG;oCACX,QAAQ,EAAE,OAAO;oCACjB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;wCACpB,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG;qCACvD,CAAC;iCACL,CAAC;4BACN,CAAC;4BACD,MAAM;wBAEV,KAAK,MAAM;4BACP,IAAI,CAAC,QAAQ,EAAE,CAAC;gCACZ,QAAQ,GAAG,IAAI,CAAC;gCAChB,YAAY,GAAG;oCACX,QAAQ,EAAE,MAAM;oCAChB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;wCACpB,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG;qCACtD,CAAC;iCACL,CAAC;4BACN,CAAC;4BACD,MAAM;wBAEV,KAAK,MAAM;4BACP,IAAI,CAAC,QAAQ,EAAE,CAAC;gCACZ,QAAQ,GAAG,IAAI,CAAC;gCAChB,YAAY,GAAG;oCACX,QAAQ,EAAE,aAAa;oCACvB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;iCACxC,CAAC;4BACN,CAAC;4BACD,MAAM;oBACd,CAAC;gBACL,CAAC;YACL,CAAC;YAED,WAAW;YACX,IAAI,QAAQ,IAAI,YAAY,EAAE,CAAC;gBAC3B,OAAO,YAAY,CAAC;YACxB,CAAC;YAED,WAAW;YACX,OAAO;gBACH,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;aACxD,CAAC;QACN,CAAC;QAED,OAAO;YACH,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;SACrD,CAAC;IACN,CAAC;IAED,mGAAmG;IACnG,gBAAgB;IAChB,mGAAmG;IAEnG,KAAK,CAAC,QAAQ;QACV,IAAI,CAAC;YACD,kBAAkB;YAClB,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAEhC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAClE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAEzF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACxD,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAED,KAAK,CAAC,WAAW;QACb,IAAI,CAAC;YACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAE,EAAE,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACzF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QAC9D,CAAC;IACL,CAAC;IAED,mGAAmG;IACnG,OAAO;IACP,mGAAmG;IAEnG,SAAS;IACT,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,aAAiD,SAAS;QACxF,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,qBAAqB,MAAM,EAAE,EAAE;gBACzE,MAAM,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE;aACvC,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED,SAAS;IACT,KAAK,CAAC,WAAW,CAAC,MAAc;QAC5B,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,gBAAgB,MAAM,EAAE,CAAC,CAAC;YACxE,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED,OAAO;IACP,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,WAAiD,MAAM;QACtF,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;YACtC,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAEzB,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAEnC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE;gBACjE,OAAO,EAAE;oBACL,GAAG,IAAI,CAAC,UAAU,EAAE;iBACvB;aACJ,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;YACvC,CAAC;YAED,MAAM,IAAI,KAAK,CAAC,kBAAkB,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED,qDAAqD;IAErD;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,OAAiB,EAAE,OAAgB;QAC9D,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE;gBAC3D,IAAI;gBACJ,YAAY,EAAE,OAAO;gBACrB,QAAQ,EAAE,OAAO;aACpB,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAE,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC3F,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACtC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAAC,MAAc,EAAE,OAGpC;QACG,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,gBAAgB,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;YAEjF,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAE,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;gBACvE,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAAC,MAAc,EAAE,OAAiB;QAClD,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,MAAM,UAAU,EAAE;gBAC7E,OAAO,EAAE,OAAO;aACnB,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAE,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;gBACtE,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACxD,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,iBAAiB,CAAC,MAAc,EAAE,OAAiB;QACrD,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,gBAAgB,MAAM,UAAU,EAAE;gBAC/E,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;aAC7B,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAE,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;gBACzE,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACtE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;YAC3D,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc,CAAC,MAAc;QAC/B,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,gBAAgB,MAAM,UAAU,CAAC,CAAC;YAEhF,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC3B,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAC1C,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACxD,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,MAAc;QAC7B,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,gBAAgB,MAAM,EAAE,CAAC,CAAC;YAE3E,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAE,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;gBACvE,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YACrD,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,eAAe,CAAC,MAAc,EAAE,OAAiB;QACnD,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,MAAM,wBAAwB,EAAE;gBAC3F,WAAW,EAAE,OAAO;aACvB,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAE,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;gBACrE,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACpE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;YACzD,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,kBAAkB,CAAC,MAAc,EAAE,OAAiB;QACtD,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,MAAM,2BAA2B,EAAE;gBAC9F,WAAW,EAAE,OAAO;aACvB,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAE,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;gBACxE,OAAO,IAAI,CAAC;YAChB,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;YAC5D,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;CACJ;AAED,eAAe"}