dingtalk-mcp 1.0.15 → 1.1.1

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.
@@ -1,57 +0,0 @@
1
- /**
2
- * ServiceWindow Message Builder - 核心特色功能
3
- * 简化复杂的服务窗消息格式构建
4
- */
5
- import type { ServiceWindowMessage, DingTalkMessageBody } from '../types.js';
6
- export declare class ServiceWindowMessageBuilder {
7
- private static readonly VALIDATION_RULES;
8
- /**
9
- * 构建服务窗消息体
10
- * @param message 用户友好的消息参数
11
- * @returns 钉钉API标准格式的消息体
12
- */
13
- static buildMessage(message: ServiceWindowMessage): {
14
- msgType: string;
15
- messageBody: DingTalkMessageBody;
16
- };
17
- /**
18
- * 构建文本消息
19
- */
20
- private static buildTextMessage;
21
- /**
22
- * 构建链接消息
23
- */
24
- private static buildLinkMessage;
25
- /**
26
- * 构建Markdown消息
27
- */
28
- private static buildMarkdownMessage;
29
- /**
30
- * 验证字段值
31
- */
32
- private static validateField;
33
- /**
34
- * 验证字符串长度
35
- */
36
- private static validateStringLength;
37
- /**
38
- * 验证URL格式
39
- */
40
- private static validateUrl;
41
- /**
42
- * 生成唯一的消息ID
43
- */
44
- static generateMessageUuid(): string;
45
- /**
46
- * 验证消息参数完整性
47
- */
48
- static validateMessage(message: ServiceWindowMessage): {
49
- valid: boolean;
50
- errors: string[];
51
- };
52
- /**
53
- * 获取消息类型的帮助信息
54
- */
55
- static getMessageTypeHelp(messageType: string): string;
56
- }
57
- //# sourceMappingURL=messageBuilder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"messageBuilder.d.ts","sourceRoot":"","sources":["../../src/utils/messageBuilder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EAMpB,MAAM,aAAa,CAAC;AAErB,qBAAa,2BAA2B;IACtC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAqBtC;IAEF;;;;OAIG;WACW,YAAY,CAAC,OAAO,EAAE,oBAAoB,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,mBAAmB,CAAA;KAAE;IAuBhH;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAW/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAmB/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAYnC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IA0B5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAkBnC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAgB1B;;OAEG;WACW,mBAAmB,IAAI,MAAM;IAI3C;;OAEG;WACW,eAAe,CAAC,OAAO,EAAE,oBAAoB,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IAYlG;;OAEG;WACW,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;CA2B9D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"messageBuilder.js","sourceRoot":"","sources":["../../src/utils/messageBuilder.ts"],"names":[],"mappings":"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"}
@@ -1,36 +0,0 @@
1
- /**
2
- * Message Processor - 统一消息处理逻辑
3
- * 负责消息体验证、格式转换和类型推断
4
- */
5
- import type { DingTalkMessageBody } from '../types.js';
6
- export interface ProcessedMessage {
7
- msgType: string;
8
- messageBody: DingTalkMessageBody;
9
- uuid: string;
10
- }
11
- export interface MessageProcessingResult {
12
- success: boolean;
13
- data?: ProcessedMessage;
14
- error?: string;
15
- }
16
- export declare class MessageProcessor {
17
- /**
18
- * 处理和验证消息体
19
- * @param rawMessageBody 原始消息体(可能是嵌套格式)
20
- * @returns 处理结果
21
- */
22
- static processMessageBody(rawMessageBody: any): MessageProcessingResult;
23
- /**
24
- * 验证并推断消息类型
25
- */
26
- private static validateAndInferMessageType;
27
- /**
28
- * 验证消息体完整性(用于调试)
29
- */
30
- static validateMessageBodyIntegrity(messageBody: any): {
31
- isValid: boolean;
32
- issues: string[];
33
- suggestions: string[];
34
- };
35
- }
36
- //# sourceMappingURL=messageProcessor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"messageProcessor.d.ts","sourceRoot":"","sources":["../../src/utils/messageProcessor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGvD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,mBAAmB,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,gBAAgB;IAC3B;;;;OAIG;WACW,kBAAkB,CAAC,cAAc,EAAE,GAAG,GAAG,uBAAuB;IAkD9E;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAmD1C;;OAEG;WACW,4BAA4B,CAAC,WAAW,EAAE,GAAG,GAAG;QAC5D,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB;CAsCF"}
@@ -1,145 +0,0 @@
1
- /**
2
- * Message Processor - 统一消息处理逻辑
3
- * 负责消息体验证、格式转换和类型推断
4
- */
5
- import { ServiceWindowMessageBuilder } from './messageBuilder.js';
6
- export class MessageProcessor {
7
- /**
8
- * 处理和验证消息体
9
- * @param rawMessageBody 原始消息体(可能是嵌套格式)
10
- * @returns 处理结果
11
- */
12
- static processMessageBody(rawMessageBody) {
13
- try {
14
- // 🔧 消息体格式检查和自动修复
15
- let processedMessageBody = rawMessageBody;
16
- // 检查是否是嵌套结构(来自buildServiceWindowMessage的输出)
17
- if (processedMessageBody && typeof processedMessageBody === 'object' &&
18
- processedMessageBody.messageBody && typeof processedMessageBody.messageBody === 'object') {
19
- console.error('检测到嵌套消息体格式,自动提取内层结构...');
20
- processedMessageBody = processedMessageBody.messageBody;
21
- }
22
- // 验证消息体格式
23
- if (!processedMessageBody || typeof processedMessageBody !== 'object') {
24
- return {
25
- success: false,
26
- error: `❌ 消息体格式错误\n\n` +
27
- `🔍 期望格式:\n` +
28
- `• text消息: { "text": { "content": "消息内容" } }\n` +
29
- `• link消息: { "link": { "title": "标题", "text": "描述", "messageUrl": "链接", "picUrl": "图片" } }\n` +
30
- `• markdown消息: { "markdown": { "title": "标题", "text": "markdown内容" } }`
31
- };
32
- }
33
- // 推断消息类型并验证
34
- const typeValidation = this.validateAndInferMessageType(processedMessageBody);
35
- if (!typeValidation.success) {
36
- return typeValidation;
37
- }
38
- // 生成UUID
39
- const uuid = ServiceWindowMessageBuilder.generateMessageUuid();
40
- return {
41
- success: true,
42
- data: {
43
- msgType: typeValidation.msgType,
44
- messageBody: processedMessageBody,
45
- uuid
46
- }
47
- };
48
- }
49
- catch (error) {
50
- return {
51
- success: false,
52
- error: `消息处理失败: ${error.message}`
53
- };
54
- }
55
- }
56
- /**
57
- * 验证并推断消息类型
58
- */
59
- static validateAndInferMessageType(messageBody) {
60
- if (messageBody.text) {
61
- if (!messageBody.text.content) {
62
- return {
63
- success: false,
64
- error: 'text类型消息缺少content字段'
65
- };
66
- }
67
- return { success: true, msgType: 'text' };
68
- }
69
- else if (messageBody.link) {
70
- const requiredFields = ['title', 'text', 'messageUrl', 'picUrl'];
71
- const missingFields = requiredFields.filter(field => !messageBody.link[field]);
72
- if (missingFields.length > 0) {
73
- return {
74
- success: false,
75
- error: `link类型消息缺少必填字段: ${missingFields.join(', ')}`
76
- };
77
- }
78
- return { success: true, msgType: 'link' };
79
- }
80
- else if (messageBody.markdown) {
81
- const requiredFields = ['title', 'text'];
82
- const missingFields = requiredFields.filter(field => !messageBody.markdown[field]);
83
- if (missingFields.length > 0) {
84
- return {
85
- success: false,
86
- error: `markdown类型消息缺少必填字段: ${missingFields.join(', ')}`
87
- };
88
- }
89
- return { success: true, msgType: 'markdown' };
90
- }
91
- else if (messageBody.actionCard || messageBody.action_card) {
92
- return {
93
- success: false,
94
- error: `❌ 不支持的消息类型\n\n` +
95
- `🚫 服务窗不支持 actionCard 类型消息\n` +
96
- `✅ 支持的类型:text、link、markdown\n` +
97
- `💡 如需实现卡片效果,建议使用 link 类型`
98
- };
99
- }
100
- else {
101
- return {
102
- success: false,
103
- error: `❌ 未知的消息类型\n\n` +
104
- `🔍 检测到的消息体结构: ${JSON.stringify(Object.keys(messageBody), null, 2)}\n` +
105
- `✅ 支持的类型:text、link、markdown`
106
- };
107
- }
108
- }
109
- /**
110
- * 验证消息体完整性(用于调试)
111
- */
112
- static validateMessageBodyIntegrity(messageBody) {
113
- const issues = [];
114
- const suggestions = [];
115
- if (!messageBody) {
116
- issues.push('消息体为空或未定义');
117
- suggestions.push('请提供有效的消息体对象');
118
- return { isValid: false, issues, suggestions };
119
- }
120
- if (typeof messageBody !== 'object') {
121
- issues.push('消息体必须是对象类型');
122
- suggestions.push('确保传入的是JSON对象格式');
123
- return { isValid: false, issues, suggestions };
124
- }
125
- // 检查是否有任何已知的消息类型字段
126
- const hasText = messageBody.text && typeof messageBody.text === 'object';
127
- const hasLink = messageBody.link && typeof messageBody.link === 'object';
128
- const hasMarkdown = messageBody.markdown && typeof messageBody.markdown === 'object';
129
- const hasActionCard = messageBody.actionCard || messageBody.action_card;
130
- if (!hasText && !hasLink && !hasMarkdown && !hasActionCard) {
131
- issues.push('未找到有效的消息类型字段');
132
- suggestions.push('请添加 text、link 或 markdown 字段之一');
133
- }
134
- if (hasActionCard) {
135
- issues.push('检测到actionCard类型,但服务窗不支持');
136
- suggestions.push('请改用link类型实现卡片效果');
137
- }
138
- return {
139
- isValid: issues.length === 0,
140
- issues,
141
- suggestions
142
- };
143
- }
144
- }
145
- //# sourceMappingURL=messageProcessor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"messageProcessor.js","sourceRoot":"","sources":["../../src/utils/messageProcessor.ts"],"names":[],"mappings":"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"}
@@ -1,64 +0,0 @@
1
- /**
2
- * 参数验证工具
3
- */
4
- export declare class ParameterValidator {
5
- /**
6
- * 验证用户ID
7
- */
8
- static validateUserId(userId: string): void;
9
- /**
10
- * 验证unionId
11
- */
12
- static validateUnionId(unionId: string): void;
13
- /**
14
- * 验证服务窗账号ID
15
- */
16
- static validateAccountId(accountId?: string): void;
17
- /**
18
- * 验证用户ID列表
19
- */
20
- static validateUserIdList(userIdList: string[]): void;
21
- /**
22
- * 验证业务请求ID
23
- */
24
- static validateBizRequestId(bizRequestId?: string): void;
25
- /**
26
- * 验证UUID
27
- */
28
- static validateUuid(uuid: string): void;
29
- /**
30
- * 验证分页参数
31
- */
32
- static validatePagination(options: {
33
- maxResults?: number;
34
- nextToken?: string;
35
- }): void;
36
- /**
37
- * 验证消息类型
38
- */
39
- static validateMessageType(msgType: string): void;
40
- /**
41
- * 创建错误对象
42
- */
43
- private static createError;
44
- /**
45
- * 验证必填参数
46
- */
47
- static validateRequired(value: any, fieldName: string): void;
48
- /**
49
- * 验证字符串长度
50
- */
51
- static validateStringLength(value: string, fieldName: string, options: {
52
- min?: number;
53
- max?: number;
54
- }): void;
55
- /**
56
- * 验证URL格式
57
- */
58
- static validateUrl(url: string, fieldName: string): void;
59
- /**
60
- * 批量验证参数
61
- */
62
- static validateBatch(validations: Array<() => void>): void;
63
- }
64
- //# sourceMappingURL=validator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/utils/validator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,qBAAa,kBAAkB;IAC7B;;OAEG;WACW,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IASlD;;OAEG;WACW,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IASpD;;OAEG;WACW,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAWzD;;OAEG;WACW,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI;IAoB5D;;OAEG;WACW,oBAAoB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI;IAW/D;;OAEG;WACW,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAc9C;;OAEG;WACW,kBAAkB,CAAC,OAAO,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAe5F;;OAEG;WACW,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAOxD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAM1B;;OAEG;WACW,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAMnE;;OAEG;WACW,oBAAoB,CAChC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GACtC,IAAI;IAcP;;OAEG;WACW,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAgB/D;;OAEG;WACW,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI;CAelE"}
@@ -1,181 +0,0 @@
1
- /**
2
- * 参数验证工具
3
- */
4
- export class ParameterValidator {
5
- /**
6
- * 验证用户ID
7
- */
8
- static validateUserId(userId) {
9
- if (!userId || typeof userId !== 'string' || userId.trim() === '') {
10
- throw this.createError('INVALID_USER_ID', 'userId 不能为空');
11
- }
12
- if (userId.length > 64) {
13
- throw this.createError('INVALID_USER_ID', 'userId 长度不能超过64个字符');
14
- }
15
- }
16
- /**
17
- * 验证unionId
18
- */
19
- static validateUnionId(unionId) {
20
- if (!unionId || typeof unionId !== 'string' || unionId.trim() === '') {
21
- throw this.createError('INVALID_UNION_ID', 'unionId 不能为空');
22
- }
23
- if (unionId.length > 64) {
24
- throw this.createError('INVALID_UNION_ID', 'unionId 长度不能超过64个字符');
25
- }
26
- }
27
- /**
28
- * 验证服务窗账号ID
29
- */
30
- static validateAccountId(accountId) {
31
- if (accountId && typeof accountId === 'string') {
32
- if (accountId.trim() === '') {
33
- throw this.createError('INVALID_ACCOUNT_ID', 'accountId 不能为空字符串');
34
- }
35
- if (accountId.length > 64) {
36
- throw this.createError('INVALID_ACCOUNT_ID', 'accountId 长度不能超过64个字符');
37
- }
38
- }
39
- }
40
- /**
41
- * 验证用户ID列表
42
- */
43
- static validateUserIdList(userIdList) {
44
- if (!Array.isArray(userIdList)) {
45
- throw this.createError('INVALID_USER_ID_LIST', 'userIdList 必须是数组');
46
- }
47
- if (userIdList.length === 0) {
48
- throw this.createError('INVALID_USER_ID_LIST', 'userIdList 不能为空数组');
49
- }
50
- if (userIdList.length > 1000) {
51
- throw this.createError('INVALID_USER_ID_LIST', 'userIdList 最多支持1000个用户');
52
- }
53
- userIdList.forEach((userId, index) => {
54
- try {
55
- this.validateUserId(userId);
56
- }
57
- catch (error) {
58
- throw this.createError('INVALID_USER_ID_LIST', `userIdList[${index}] 无效: ${error.message}`);
59
- }
60
- });
61
- }
62
- /**
63
- * 验证业务请求ID
64
- */
65
- static validateBizRequestId(bizRequestId) {
66
- if (bizRequestId && typeof bizRequestId === 'string') {
67
- if (bizRequestId.trim() === '') {
68
- throw this.createError('INVALID_BIZ_REQUEST_ID', 'bizRequestId 不能为空字符串');
69
- }
70
- if (bizRequestId.length > 128) {
71
- throw this.createError('INVALID_BIZ_REQUEST_ID', 'bizRequestId 长度不能超过128个字符');
72
- }
73
- }
74
- }
75
- /**
76
- * 验证UUID
77
- */
78
- static validateUuid(uuid) {
79
- if (!uuid || typeof uuid !== 'string' || uuid.trim() === '') {
80
- throw this.createError('INVALID_UUID', 'uuid 不能为空');
81
- }
82
- if (uuid.length > 128) {
83
- throw this.createError('INVALID_UUID', 'uuid 长度不能超过128个字符');
84
- }
85
- // 简单的UUID格式验证
86
- const uuidPattern = /^[a-fA-F0-9\-]+$/;
87
- if (!uuidPattern.test(uuid)) {
88
- throw this.createError('INVALID_UUID', 'uuid 格式不正确,只能包含字母、数字和连字符');
89
- }
90
- }
91
- /**
92
- * 验证分页参数
93
- */
94
- static validatePagination(options) {
95
- if (options.maxResults !== undefined) {
96
- if (typeof options.maxResults !== 'number' || options.maxResults < 1) {
97
- throw this.createError('INVALID_MAX_RESULTS', 'maxResults 必须是大于0的数字');
98
- }
99
- if (options.maxResults > 100) {
100
- throw this.createError('INVALID_MAX_RESULTS', 'maxResults 不能超过100');
101
- }
102
- }
103
- if (options.nextToken !== undefined && typeof options.nextToken !== 'string') {
104
- throw this.createError('INVALID_NEXT_TOKEN', 'nextToken 必须是字符串');
105
- }
106
- }
107
- /**
108
- * 验证消息类型
109
- */
110
- static validateMessageType(msgType) {
111
- const validTypes = ['text', 'link', 'markdown'];
112
- if (!validTypes.includes(msgType)) {
113
- throw this.createError('INVALID_MESSAGE_TYPE', `不支持的消息类型: ${msgType},支持的类型: ${validTypes.join(', ')}`);
114
- }
115
- }
116
- /**
117
- * 创建错误对象
118
- */
119
- static createError(code, message) {
120
- const error = new Error(message);
121
- error.code = code;
122
- return error;
123
- }
124
- /**
125
- * 验证必填参数
126
- */
127
- static validateRequired(value, fieldName) {
128
- if (value === undefined || value === null || value === '') {
129
- throw this.createError('MISSING_REQUIRED_FIELD', `${fieldName} 为必填参数`);
130
- }
131
- }
132
- /**
133
- * 验证字符串长度
134
- */
135
- static validateStringLength(value, fieldName, options) {
136
- if (typeof value !== 'string') {
137
- throw this.createError('INVALID_FIELD_TYPE', `${fieldName} 必须是字符串`);
138
- }
139
- if (options.min !== undefined && value.length < options.min) {
140
- throw this.createError('FIELD_TOO_SHORT', `${fieldName} 长度不能少于 ${options.min} 个字符`);
141
- }
142
- if (options.max !== undefined && value.length > options.max) {
143
- throw this.createError('FIELD_TOO_LONG', `${fieldName} 长度不能超过 ${options.max} 个字符`);
144
- }
145
- }
146
- /**
147
- * 验证URL格式
148
- */
149
- static validateUrl(url, fieldName) {
150
- if (!url || typeof url !== 'string') {
151
- throw this.createError('INVALID_URL', `${fieldName} 必须是有效的URL字符串`);
152
- }
153
- try {
154
- new URL(url);
155
- }
156
- catch {
157
- throw this.createError('INVALID_URL', `${fieldName} 不是有效的URL格式`);
158
- }
159
- if (!url.startsWith('http://') && !url.startsWith('https://')) {
160
- throw this.createError('INVALID_URL', `${fieldName} 必须以 http:// 或 https:// 开头`);
161
- }
162
- }
163
- /**
164
- * 批量验证参数
165
- */
166
- static validateBatch(validations) {
167
- const errors = [];
168
- validations.forEach(validation => {
169
- try {
170
- validation();
171
- }
172
- catch (error) {
173
- errors.push(error.message);
174
- }
175
- });
176
- if (errors.length > 0) {
177
- throw this.createError('VALIDATION_FAILED', `参数验证失败: ${errors.join('; ')}`);
178
- }
179
- }
180
- }
181
- //# sourceMappingURL=validator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/utils/validator.ts"],"names":[],"mappings":"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"}