clawdbot-dingtalk 0.1.0

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 (63) hide show
  1. package/README.md +164 -0
  2. package/clawdbot.plugin.json +11 -0
  3. package/dist/index.d.ts +10 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +15 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/src/accounts.d.ts +47 -0
  8. package/dist/src/accounts.d.ts.map +1 -0
  9. package/dist/src/accounts.js +152 -0
  10. package/dist/src/accounts.js.map +1 -0
  11. package/dist/src/channel.d.ts +10 -0
  12. package/dist/src/channel.d.ts.map +1 -0
  13. package/dist/src/channel.js +186 -0
  14. package/dist/src/channel.js.map +1 -0
  15. package/dist/src/config-schema.d.ts +279 -0
  16. package/dist/src/config-schema.d.ts.map +1 -0
  17. package/dist/src/config-schema.js +92 -0
  18. package/dist/src/config-schema.js.map +1 -0
  19. package/dist/src/monitor.d.ts +17 -0
  20. package/dist/src/monitor.d.ts.map +1 -0
  21. package/dist/src/monitor.js +183 -0
  22. package/dist/src/monitor.js.map +1 -0
  23. package/dist/src/probe.d.ts +15 -0
  24. package/dist/src/probe.d.ts.map +1 -0
  25. package/dist/src/probe.js +48 -0
  26. package/dist/src/probe.js.map +1 -0
  27. package/dist/src/runtime.d.ts +4 -0
  28. package/dist/src/runtime.d.ts.map +1 -0
  29. package/dist/src/runtime.js +11 -0
  30. package/dist/src/runtime.js.map +1 -0
  31. package/dist/src/send/chunker.d.ts +23 -0
  32. package/dist/src/send/chunker.d.ts.map +1 -0
  33. package/dist/src/send/chunker.js +149 -0
  34. package/dist/src/send/chunker.js.map +1 -0
  35. package/dist/src/send/index.d.ts +9 -0
  36. package/dist/src/send/index.d.ts.map +1 -0
  37. package/dist/src/send/index.js +7 -0
  38. package/dist/src/send/index.js.map +1 -0
  39. package/dist/src/send/markdown.d.ts +13 -0
  40. package/dist/src/send/markdown.d.ts.map +1 -0
  41. package/dist/src/send/markdown.js +44 -0
  42. package/dist/src/send/markdown.js.map +1 -0
  43. package/dist/src/send/reply.d.ts +35 -0
  44. package/dist/src/send/reply.d.ts.map +1 -0
  45. package/dist/src/send/reply.js +100 -0
  46. package/dist/src/send/reply.js.map +1 -0
  47. package/dist/src/stream/client.d.ts +11 -0
  48. package/dist/src/stream/client.d.ts.map +1 -0
  49. package/dist/src/stream/client.js +182 -0
  50. package/dist/src/stream/client.js.map +1 -0
  51. package/dist/src/stream/index.d.ts +7 -0
  52. package/dist/src/stream/index.d.ts.map +1 -0
  53. package/dist/src/stream/index.js +6 -0
  54. package/dist/src/stream/index.js.map +1 -0
  55. package/dist/src/stream/message-parser.d.ts +24 -0
  56. package/dist/src/stream/message-parser.d.ts.map +1 -0
  57. package/dist/src/stream/message-parser.js +211 -0
  58. package/dist/src/stream/message-parser.js.map +1 -0
  59. package/dist/src/stream/types.d.ts +92 -0
  60. package/dist/src/stream/types.d.ts.map +1 -0
  61. package/dist/src/stream/types.js +5 -0
  62. package/dist/src/stream/types.js.map +1 -0
  63. package/package.json +63 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/stream/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Stream module exports.
3
+ */
4
+ export { startDingTalkStreamClient } from "./client.js";
5
+ export { extractChatbotMessage, buildAck, buildSessionKey, startsWithPrefix } from "./message-parser.js";
6
+ export type { ChatbotMessage, RawStreamMessage, StreamAck, StreamClientHandle, StreamClientOptions, StreamConnectionInfo, StreamLogger, } from "./types.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/stream/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACzG,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,GACb,MAAM,YAAY,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Stream module exports.
3
+ */
4
+ export { startDingTalkStreamClient } from "./client.js";
5
+ export { extractChatbotMessage, buildAck, buildSessionKey, startsWithPrefix } from "./message-parser.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/stream/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Multi-path field extraction for DingTalk's unstable API schemas.
3
+ * DingTalk stream payloads can have different field names/paths across versions.
4
+ */
5
+ import type { ChatbotMessage, RawStreamMessage, StreamAck } from "./types.js";
6
+ /**
7
+ * Extract chatbot message from raw stream event.
8
+ * Returns null if this doesn't look like a chatbot message.
9
+ */
10
+ export declare function extractChatbotMessage(raw: RawStreamMessage): ChatbotMessage | null;
11
+ /**
12
+ * Build ACK message for stream protocol.
13
+ */
14
+ export declare function buildAck(raw: RawStreamMessage): StreamAck | null;
15
+ /**
16
+ * Build session key from chat message.
17
+ * Groups share a conversation key, DMs use sender ID.
18
+ */
19
+ export declare function buildSessionKey(chat: ChatbotMessage): string;
20
+ /**
21
+ * Check if message text starts with required prefix (case-insensitive).
22
+ */
23
+ export declare function startsWithPrefix(text: string, prefix: string | undefined): boolean;
24
+ //# sourceMappingURL=message-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-parser.d.ts","sourceRoot":"","sources":["../../../src/stream/message-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAuC9E;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,gBAAgB,GAAG,cAAc,GAAG,IAAI,CAgJlF;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,gBAAgB,GAAG,SAAS,GAAG,IAAI,CAuBhE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAM5D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAGlF"}
@@ -0,0 +1,211 @@
1
+ /**
2
+ * Multi-path field extraction for DingTalk's unstable API schemas.
3
+ * DingTalk stream payloads can have different field names/paths across versions.
4
+ */
5
+ /**
6
+ * Safely access nested object property by dot-separated path.
7
+ */
8
+ function get(obj, path) {
9
+ if (!obj || typeof obj !== "object")
10
+ return undefined;
11
+ const parts = path.split(".");
12
+ let cur = obj;
13
+ for (const p of parts) {
14
+ if (cur && typeof cur === "object" && p in cur) {
15
+ cur = cur[p];
16
+ }
17
+ else {
18
+ return undefined;
19
+ }
20
+ }
21
+ return cur;
22
+ }
23
+ /**
24
+ * Try multiple paths and return the first non-empty value.
25
+ */
26
+ function first(obj, paths) {
27
+ for (const p of paths) {
28
+ const v = get(obj, p);
29
+ if (v !== undefined && v !== null && v !== "")
30
+ return v;
31
+ }
32
+ return undefined;
33
+ }
34
+ /**
35
+ * Convert value to string, handling null/undefined.
36
+ */
37
+ function asString(v) {
38
+ if (v === undefined || v === null)
39
+ return "";
40
+ if (typeof v === "string")
41
+ return v;
42
+ return String(v);
43
+ }
44
+ /**
45
+ * Extract chatbot message from raw stream event.
46
+ * Returns null if this doesn't look like a chatbot message.
47
+ */
48
+ export function extractChatbotMessage(raw) {
49
+ // Common wrappers: { headers, data } / { header, payload } / etc
50
+ const headers = raw?.headers ?? raw?.header ?? raw?.meta ?? {};
51
+ let data = raw?.data ?? raw?.payload ?? raw?.body ?? raw?.event ?? raw?.content ?? raw;
52
+ // DingTalk Stream may wrap data as a JSON string - parse it
53
+ if (typeof data === "string" && data.startsWith("{")) {
54
+ try {
55
+ data = JSON.parse(data);
56
+ }
57
+ catch {
58
+ // ignore parse errors
59
+ }
60
+ }
61
+ const eventType = asString(first(raw, [
62
+ "type",
63
+ "eventType",
64
+ "event_type",
65
+ "headers.eventType",
66
+ "headers.event_type",
67
+ "header.eventType",
68
+ "header.event_type",
69
+ "headers.type",
70
+ ]));
71
+ const messageId = asString(first(raw, [
72
+ "headers.messageId",
73
+ "headers.message_id",
74
+ "header.messageId",
75
+ "header.message_id",
76
+ "messageId",
77
+ "message_id",
78
+ "id",
79
+ "uuid",
80
+ ]));
81
+ const sessionWebhook = asString(first(data, [
82
+ "sessionWebhook",
83
+ "session_webhook",
84
+ "conversationSessionWebhook",
85
+ "conversation.sessionWebhook",
86
+ "context.sessionWebhook",
87
+ "webhook",
88
+ ]));
89
+ // Try multiple paths for text content
90
+ const text = asString(first(data, [
91
+ "text.content",
92
+ "text",
93
+ "content.text",
94
+ "content",
95
+ "message.text",
96
+ "msg.text",
97
+ "data.text",
98
+ "data.text.content",
99
+ ]));
100
+ const conversationId = asString(first(data, [
101
+ "conversationId",
102
+ "conversation_id",
103
+ "conversation.conversationId",
104
+ "conversation.id",
105
+ "chatId",
106
+ "chat_id",
107
+ "openConversationId",
108
+ "open_conversation_id",
109
+ ]));
110
+ const chatType = asString(first(data, [
111
+ "conversationType",
112
+ "conversation_type",
113
+ "conversation.conversationType",
114
+ "chatType",
115
+ "chat_type",
116
+ ]));
117
+ const senderId = asString(first(data, [
118
+ "senderStaffId",
119
+ "sender.staffId",
120
+ "senderId",
121
+ "sender.id",
122
+ "sender.userid",
123
+ "userId",
124
+ "user_id",
125
+ "staffId",
126
+ ]));
127
+ const senderName = asString(first(data, [
128
+ "senderNick",
129
+ "sender.nick",
130
+ "sender.name",
131
+ "senderName",
132
+ "userName",
133
+ "user_name",
134
+ ]));
135
+ // DingTalk may wrap actual content in a JSON string
136
+ let finalText = text;
137
+ try {
138
+ if (finalText && finalText.startsWith("{") && finalText.endsWith("}")) {
139
+ const parsed = JSON.parse(finalText);
140
+ const maybe = asString(first(parsed, ["text.content", "content", "text"]));
141
+ if (maybe)
142
+ finalText = maybe;
143
+ }
144
+ }
145
+ catch {
146
+ // ignore
147
+ }
148
+ // Decide whether this looks like a chatbot message
149
+ const looksLikeChatbot = Boolean(sessionWebhook) ||
150
+ /chatbot|bot|im\.|message/i.test(eventType) ||
151
+ /chatbot|bot/i.test(asString(first(headers, ["topic", "eventType", "type"])));
152
+ if (!looksLikeChatbot)
153
+ return null;
154
+ if (!finalText)
155
+ return null;
156
+ return {
157
+ messageId,
158
+ eventType,
159
+ text: finalText,
160
+ sessionWebhook,
161
+ conversationId,
162
+ chatType,
163
+ senderId,
164
+ senderName,
165
+ raw,
166
+ };
167
+ }
168
+ /**
169
+ * Build ACK message for stream protocol.
170
+ */
171
+ export function buildAck(raw) {
172
+ const messageId = asString(first(raw, [
173
+ "headers.messageId",
174
+ "headers.message_id",
175
+ "header.messageId",
176
+ "header.message_id",
177
+ "messageId",
178
+ "message_id",
179
+ "id",
180
+ "uuid",
181
+ ]));
182
+ if (!messageId)
183
+ return null;
184
+ return {
185
+ code: 200,
186
+ headers: {
187
+ messageId,
188
+ },
189
+ message: "OK",
190
+ };
191
+ }
192
+ /**
193
+ * Build session key from chat message.
194
+ * Groups share a conversation key, DMs use sender ID.
195
+ */
196
+ export function buildSessionKey(chat) {
197
+ const conv = chat.conversationId || "unknownConv";
198
+ const sender = chat.senderId || "unknownSender";
199
+ const chatType = (chat.chatType || "").toLowerCase();
200
+ const isGroup = /group|chat|2|multi/.test(chatType);
201
+ return isGroup ? `dingtalk:group:${conv}` : `dingtalk:dm:${sender}`;
202
+ }
203
+ /**
204
+ * Check if message text starts with required prefix (case-insensitive).
205
+ */
206
+ export function startsWithPrefix(text, prefix) {
207
+ if (!prefix)
208
+ return true;
209
+ return text.trim().toLowerCase().startsWith(prefix.trim().toLowerCase());
210
+ }
211
+ //# sourceMappingURL=message-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-parser.js","sourceRoot":"","sources":["../../../src/stream/message-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * DingTalk message types extracted from stream events.
3
+ */
4
+ /**
5
+ * Raw stream message envelope (varies across DingTalk versions)
6
+ */
7
+ export interface RawStreamMessage {
8
+ type?: string;
9
+ eventType?: string;
10
+ event_type?: string;
11
+ headers?: RawHeaders;
12
+ header?: RawHeaders;
13
+ meta?: RawHeaders;
14
+ data?: unknown;
15
+ payload?: unknown;
16
+ body?: unknown;
17
+ event?: unknown;
18
+ content?: unknown;
19
+ messageId?: string;
20
+ message_id?: string;
21
+ id?: string;
22
+ uuid?: string;
23
+ }
24
+ export interface RawHeaders {
25
+ eventType?: string;
26
+ event_type?: string;
27
+ type?: string;
28
+ topic?: string;
29
+ messageId?: string;
30
+ message_id?: string;
31
+ contentType?: string;
32
+ }
33
+ /**
34
+ * Parsed chatbot message with normalized fields.
35
+ */
36
+ export interface ChatbotMessage {
37
+ messageId: string;
38
+ eventType: string;
39
+ text: string;
40
+ sessionWebhook: string;
41
+ conversationId: string;
42
+ chatType: string;
43
+ senderId: string;
44
+ senderName: string;
45
+ raw: RawStreamMessage;
46
+ }
47
+ /**
48
+ * Stream connection info from open API.
49
+ */
50
+ export interface StreamConnectionInfo {
51
+ endpoint: string;
52
+ ticket?: string;
53
+ raw: unknown;
54
+ }
55
+ /**
56
+ * ACK message format for stream protocol.
57
+ */
58
+ export interface StreamAck {
59
+ code: number;
60
+ headers: {
61
+ messageId: string;
62
+ };
63
+ message: string;
64
+ }
65
+ /**
66
+ * Stream client handle for stopping the connection.
67
+ */
68
+ export interface StreamClientHandle {
69
+ stop: () => void;
70
+ }
71
+ /**
72
+ * Options for starting the stream client.
73
+ */
74
+ export interface StreamClientOptions {
75
+ clientId: string;
76
+ clientSecret: string;
77
+ apiBase: string;
78
+ openPath: string;
79
+ openBody?: Record<string, unknown>;
80
+ logger?: StreamLogger;
81
+ onChatMessage: (message: ChatbotMessage) => Promise<void>;
82
+ }
83
+ /**
84
+ * Logger interface for stream client.
85
+ */
86
+ export interface StreamLogger {
87
+ debug?: (obj: Record<string, unknown>, msg?: string) => void;
88
+ info?: (obj: Record<string, unknown> | string, msg?: string) => void;
89
+ warn?: (obj: Record<string, unknown> | string, msg?: string) => void;
90
+ error?: (obj: Record<string, unknown>, msg?: string) => void;
91
+ }
92
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/stream/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * DingTalk message types extracted from stream events.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/stream/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
package/package.json ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "clawdbot-dingtalk",
3
+ "version": "0.1.0",
4
+ "description": "DingTalk (钉钉) channel plugin for Clawdbot - enables AI agent messaging via DingTalk Stream API",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist",
16
+ "clawdbot.plugin.json"
17
+ ],
18
+ "clawdbot": {
19
+ "extensions": [
20
+ "./dist/index.js"
21
+ ]
22
+ },
23
+ "scripts": {
24
+ "build": "tsc",
25
+ "clean": "rm -rf dist",
26
+ "prepublishOnly": "npm run clean && npm run build"
27
+ },
28
+ "keywords": [
29
+ "clawdbot",
30
+ "clawdbot-plugin",
31
+ "dingtalk",
32
+ "钉钉",
33
+ "chatbot",
34
+ "ai-agent",
35
+ "enterprise-messaging"
36
+ ],
37
+ "author": "Aliyun",
38
+ "license": "MIT",
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "git+https://github.com/aliyun/tech-solution-clawdbot-extension.git",
42
+ "directory": "extensions/dingtalk"
43
+ },
44
+ "bugs": {
45
+ "url": "https://github.com/aliyun/tech-solution-clawdbot-extension/issues"
46
+ },
47
+ "homepage": "https://github.com/aliyun/tech-solution-clawdbot-extension#readme",
48
+ "engines": {
49
+ "node": ">=20.0.0"
50
+ },
51
+ "dependencies": {
52
+ "ws": "^8.18.0",
53
+ "zod": "^3.24.0"
54
+ },
55
+ "devDependencies": {
56
+ "@types/node": "^22.0.0",
57
+ "@types/ws": "^8.5.0",
58
+ "typescript": "^5.7.0"
59
+ },
60
+ "peerDependencies": {
61
+ "clawdbot": ">=0.1.0"
62
+ }
63
+ }