@huo15/dingtalk-connector-pro 1.0.4 → 1.0.7

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 (142) hide show
  1. package/README.en.md +106 -384
  2. package/README.md +14 -18
  3. package/dist/index.js +17 -0
  4. package/dist/openclaw.plugin.json +498 -0
  5. package/dist/package.json +91 -0
  6. package/dist/src/channel.js +415 -0
  7. package/dist/src/config/accounts.js +182 -0
  8. package/dist/src/config/schema.js +135 -0
  9. package/dist/src/core/connection.js +561 -0
  10. package/dist/src/core/message-handler.js +1422 -0
  11. package/dist/src/core/provider.js +59 -0
  12. package/dist/src/core/state.js +49 -0
  13. package/dist/src/directory.js +53 -0
  14. package/dist/src/docs.js +209 -0
  15. package/dist/src/gateway-methods.js +360 -0
  16. package/dist/src/onboarding.js +337 -0
  17. package/dist/src/policy.js +15 -0
  18. package/dist/src/probe.js +144 -0
  19. package/dist/src/reply-dispatcher.js +435 -0
  20. package/dist/src/runtime.js +26 -0
  21. package/dist/src/sdk/helpers.js +237 -0
  22. package/dist/src/sdk/types.js +13 -0
  23. package/dist/src/secret-input.js +13 -0
  24. package/dist/src/services/media/audio.js +40 -0
  25. package/dist/src/services/media/chunk-upload.js +211 -0
  26. package/dist/src/services/media/common.js +120 -0
  27. package/dist/src/services/media/file.js +54 -0
  28. package/dist/src/services/media/image.js +59 -0
  29. package/dist/src/services/media/index.js +9 -0
  30. package/dist/src/services/media/video.js +133 -0
  31. package/dist/src/services/media.js +889 -0
  32. package/dist/src/services/messaging/card.js +234 -0
  33. package/dist/src/services/messaging/index.js +8 -0
  34. package/dist/src/services/messaging/send.js +85 -0
  35. package/dist/src/services/messaging.js +680 -0
  36. package/dist/src/targets.js +38 -0
  37. package/dist/src/types/index.js +1 -0
  38. package/dist/src/utils/agent.js +55 -0
  39. package/dist/src/utils/async.js +40 -0
  40. package/dist/src/utils/constants.js +24 -0
  41. package/dist/src/utils/http-client.js +33 -0
  42. package/dist/src/utils/index.js +7 -0
  43. package/dist/src/utils/logger.js +76 -0
  44. package/dist/src/utils/session.js +95 -0
  45. package/dist/src/utils/token.js +71 -0
  46. package/dist/src/utils/utils-legacy.js +393 -0
  47. package/index.ts +3 -3
  48. package/openclaw.plugin.json +1 -1
  49. package/package.json +16 -5
  50. package/src/channel.js +415 -0
  51. package/src/channel.ts +12 -12
  52. package/src/config/accounts.js +182 -0
  53. package/src/config/accounts.ts +2 -2
  54. package/src/config/schema.js +135 -0
  55. package/src/config/schema.ts +2 -2
  56. package/src/core/connection.js +561 -0
  57. package/src/core/connection.ts +2 -2
  58. package/src/core/message-handler.js +1422 -0
  59. package/src/core/message-handler.ts +12 -12
  60. package/src/core/provider.js +59 -0
  61. package/src/core/provider.ts +4 -4
  62. package/src/core/state.js +49 -0
  63. package/src/directory.js +53 -0
  64. package/src/directory.ts +2 -2
  65. package/src/docs.js +209 -0
  66. package/src/docs.ts +3 -3
  67. package/src/gateway-methods.js +360 -0
  68. package/src/gateway-methods.ts +5 -5
  69. package/src/onboarding.js +337 -0
  70. package/src/onboarding.ts +4 -4
  71. package/src/policy.js +15 -0
  72. package/src/policy.ts +1 -1
  73. package/src/probe.js +144 -0
  74. package/src/probe.ts +2 -2
  75. package/src/reply-dispatcher.js +435 -0
  76. package/src/reply-dispatcher.ts +9 -9
  77. package/src/runtime.js +26 -0
  78. package/src/sdk/helpers.js +237 -0
  79. package/src/sdk/helpers.ts +1 -1
  80. package/src/sdk/types.js +13 -0
  81. package/src/secret-input.js +13 -0
  82. package/src/secret-input.ts +1 -1
  83. package/src/services/media/audio.js +40 -0
  84. package/src/services/media/audio.ts +2 -2
  85. package/src/services/media/chunk-upload.js +211 -0
  86. package/src/services/media/chunk-upload.ts +2 -2
  87. package/src/services/media/common.js +120 -0
  88. package/src/services/media/common.ts +3 -3
  89. package/src/services/media/file.js +54 -0
  90. package/src/services/media/file.ts +2 -2
  91. package/src/services/media/image.js +59 -0
  92. package/src/services/media/image.ts +2 -2
  93. package/src/services/media/index.js +9 -0
  94. package/src/services/media/index.ts +6 -6
  95. package/src/services/media/video.js +133 -0
  96. package/src/services/media/video.ts +2 -2
  97. package/src/services/media.js +889 -0
  98. package/src/services/media.ts +12 -12
  99. package/src/services/messaging/card.js +234 -0
  100. package/src/services/messaging/card.ts +3 -3
  101. package/src/services/messaging/index.js +8 -0
  102. package/src/services/messaging/index.ts +3 -3
  103. package/src/services/messaging/send.js +85 -0
  104. package/src/services/messaging/send.ts +3 -3
  105. package/src/services/messaging.js +680 -0
  106. package/src/services/messaging.ts +8 -8
  107. package/src/targets.js +38 -0
  108. package/src/targets.ts +1 -1
  109. package/src/types/index.js +1 -0
  110. package/src/types/index.ts +1 -1
  111. package/src/utils/agent.js +55 -0
  112. package/src/utils/async.js +40 -0
  113. package/src/utils/constants.js +24 -0
  114. package/src/utils/http-client.js +33 -0
  115. package/src/utils/http-client.ts +1 -1
  116. package/src/utils/index.js +7 -0
  117. package/src/utils/index.ts +4 -4
  118. package/src/utils/logger.js +76 -0
  119. package/src/utils/session.js +95 -0
  120. package/src/utils/session.ts +1 -1
  121. package/src/utils/token.js +71 -0
  122. package/src/utils/token.ts +2 -2
  123. package/src/utils/utils-legacy.js +393 -0
  124. package/src/utils/utils-legacy.ts +8 -8
  125. package/CHANGELOG.md +0 -485
  126. package/SKILL.md +0 -40
  127. package/_meta.json +0 -4
  128. package/docs/AGENT_ROUTING.md +0 -335
  129. package/docs/DEAP_AGENT_GUIDE.en.md +0 -115
  130. package/docs/DEAP_AGENT_GUIDE.md +0 -115
  131. package/docs/images/dingtalk.svg +0 -1
  132. package/docs/images/image-1.png +0 -0
  133. package/docs/images/image-2.png +0 -0
  134. package/docs/images/image-3.png +0 -0
  135. package/docs/images/image-4.png +0 -0
  136. package/docs/images/image-5.png +0 -0
  137. package/docs/images/image-6.png +0 -0
  138. package/docs/images/image-7.png +0 -0
  139. package/install-beta.sh +0 -438
  140. package/install-npm.sh +0 -167
  141. package/src/hooks/init.ts +0 -16
  142. package/tsconfig.json +0 -20
@@ -0,0 +1,498 @@
1
+ {
2
+ "id": "@huo15/dingtalk-openclaw-connector",
3
+ "name": "Huo15 DingTalk Connector Pro",
4
+ "version": "1.0.3",
5
+ "description": "\u706b\u4e00\u4e94\u5b9a\u5236\u7248\u9489\u9489 OpenClaw \u8fde\u63a5\u5668",
6
+ "author": "\u706b\u4e00\u4e94\u4fe1\u606f\u79d1\u6280\u6709\u9650\u516c\u53f8",
7
+ "main": "index.ts",
8
+ "channels": [
9
+ "dingtalk-connector"
10
+ ],
11
+ "configSchema": {
12
+ "type": "object",
13
+ "additionalProperties": true
14
+ },
15
+ "channelConfigs": {
16
+ "dingtalk-connector": {
17
+ "label": "DingTalk",
18
+ "description": "\u9489\u9489\u4f01\u4e1a\u5185\u90e8\u673a\u5668\u4eba\uff0c\u4f7f\u7528 Stream \u6a21\u5f0f\uff0c\u65e0\u9700\u516c\u7f51 IP\uff0c\u652f\u6301 AI Card \u6d41\u5f0f\u54cd\u5e94\u3002",
19
+ "schema": {
20
+ "type": "object",
21
+ "properties": {
22
+ "enabled": {
23
+ "type": "boolean"
24
+ },
25
+ "defaultAccount": {
26
+ "type": "string"
27
+ },
28
+ "clientId": {
29
+ "anyOf": [
30
+ {
31
+ "type": "string"
32
+ },
33
+ {
34
+ "type": "number"
35
+ }
36
+ ]
37
+ },
38
+ "clientSecret": {
39
+ "anyOf": [
40
+ {
41
+ "type": "string"
42
+ },
43
+ {
44
+ "type": "object",
45
+ "properties": {
46
+ "source": {
47
+ "type": "string",
48
+ "enum": [
49
+ "env",
50
+ "file",
51
+ "exec"
52
+ ]
53
+ },
54
+ "provider": {
55
+ "type": "string",
56
+ "minLength": 1
57
+ },
58
+ "id": {
59
+ "type": "string",
60
+ "minLength": 1
61
+ }
62
+ },
63
+ "required": [
64
+ "source",
65
+ "provider",
66
+ "id"
67
+ ],
68
+ "additionalProperties": false
69
+ }
70
+ ]
71
+ },
72
+ "enableMediaUpload": {
73
+ "type": "boolean"
74
+ },
75
+ "systemPrompt": {
76
+ "type": "string"
77
+ },
78
+ "dmPolicy": {
79
+ "default": "open",
80
+ "type": "string",
81
+ "enum": [
82
+ "open",
83
+ "pairing",
84
+ "allowlist"
85
+ ]
86
+ },
87
+ "allowFrom": {
88
+ "type": "array",
89
+ "items": {
90
+ "anyOf": [
91
+ {
92
+ "type": "string"
93
+ },
94
+ {
95
+ "type": "number"
96
+ }
97
+ ]
98
+ }
99
+ },
100
+ "groupPolicy": {
101
+ "default": "open",
102
+ "type": "string",
103
+ "enum": [
104
+ "open",
105
+ "allowlist",
106
+ "disabled"
107
+ ]
108
+ },
109
+ "groupAllowFrom": {
110
+ "type": "array",
111
+ "items": {
112
+ "anyOf": [
113
+ {
114
+ "type": "string"
115
+ },
116
+ {
117
+ "type": "number"
118
+ }
119
+ ]
120
+ }
121
+ },
122
+ "requireMention": {
123
+ "default": true,
124
+ "type": "boolean"
125
+ },
126
+ "groups": {
127
+ "type": "object",
128
+ "additionalProperties": {
129
+ "type": "object",
130
+ "properties": {
131
+ "requireMention": {
132
+ "type": "boolean"
133
+ },
134
+ "tools": {
135
+ "type": "object",
136
+ "properties": {
137
+ "allow": {
138
+ "type": "array",
139
+ "items": {
140
+ "type": "string"
141
+ }
142
+ },
143
+ "deny": {
144
+ "type": "array",
145
+ "items": {
146
+ "type": "string"
147
+ }
148
+ }
149
+ },
150
+ "additionalProperties": false
151
+ },
152
+ "enabled": {
153
+ "type": "boolean"
154
+ },
155
+ "allowFrom": {
156
+ "type": "array",
157
+ "items": {
158
+ "anyOf": [
159
+ {
160
+ "type": "string"
161
+ },
162
+ {
163
+ "type": "number"
164
+ }
165
+ ]
166
+ }
167
+ },
168
+ "systemPrompt": {
169
+ "type": "string"
170
+ },
171
+ "groupSessionScope": {
172
+ "type": "string",
173
+ "enum": [
174
+ "group",
175
+ "group_sender"
176
+ ]
177
+ }
178
+ },
179
+ "additionalProperties": false
180
+ }
181
+ },
182
+ "historyLimit": {
183
+ "type": "integer",
184
+ "minimum": 0
185
+ },
186
+ "textChunkLimit": {
187
+ "type": "integer",
188
+ "exclusiveMinimum": 0
189
+ },
190
+ "mediaMaxMb": {
191
+ "type": "number",
192
+ "exclusiveMinimum": 0
193
+ },
194
+ "tools": {
195
+ "type": "object",
196
+ "properties": {
197
+ "docs": {
198
+ "type": "boolean"
199
+ },
200
+ "media": {
201
+ "type": "boolean"
202
+ }
203
+ },
204
+ "additionalProperties": false
205
+ },
206
+ "typingIndicator": {
207
+ "type": "boolean"
208
+ },
209
+ "resolveSenderNames": {
210
+ "type": "boolean"
211
+ },
212
+ "separateSessionByConversation": {
213
+ "default": true,
214
+ "type": "boolean"
215
+ },
216
+ "sharedMemoryAcrossConversations": {
217
+ "default": false,
218
+ "type": "boolean"
219
+ },
220
+ "groupSessionScope": {
221
+ "default": "group",
222
+ "type": "string",
223
+ "enum": [
224
+ "group",
225
+ "group_sender"
226
+ ]
227
+ },
228
+ "asyncMode": {
229
+ "type": "boolean"
230
+ },
231
+ "ackText": {
232
+ "type": "string"
233
+ },
234
+ "endpoint": {
235
+ "type": "string"
236
+ },
237
+ "debug": {
238
+ "type": "boolean"
239
+ },
240
+ "accounts": {
241
+ "type": "object",
242
+ "additionalProperties": {
243
+ "type": "object",
244
+ "properties": {
245
+ "enabled": {
246
+ "type": "boolean"
247
+ },
248
+ "name": {
249
+ "type": "string"
250
+ },
251
+ "clientId": {
252
+ "anyOf": [
253
+ {
254
+ "type": "string"
255
+ },
256
+ {
257
+ "type": "number"
258
+ }
259
+ ]
260
+ },
261
+ "clientSecret": {
262
+ "anyOf": [
263
+ {
264
+ "type": "string"
265
+ },
266
+ {
267
+ "type": "object",
268
+ "properties": {
269
+ "source": {
270
+ "type": "string",
271
+ "enum": [
272
+ "env",
273
+ "file",
274
+ "exec"
275
+ ]
276
+ },
277
+ "provider": {
278
+ "type": "string",
279
+ "minLength": 1
280
+ },
281
+ "id": {
282
+ "type": "string",
283
+ "minLength": 1
284
+ }
285
+ },
286
+ "required": [
287
+ "source",
288
+ "provider",
289
+ "id"
290
+ ],
291
+ "additionalProperties": false
292
+ }
293
+ ]
294
+ },
295
+ "dmPolicy": {
296
+ "type": "string",
297
+ "enum": [
298
+ "open",
299
+ "pairing",
300
+ "allowlist"
301
+ ]
302
+ },
303
+ "allowFrom": {
304
+ "type": "array",
305
+ "items": {
306
+ "anyOf": [
307
+ {
308
+ "type": "string"
309
+ },
310
+ {
311
+ "type": "number"
312
+ }
313
+ ]
314
+ }
315
+ },
316
+ "groupPolicy": {
317
+ "type": "string",
318
+ "enum": [
319
+ "open",
320
+ "allowlist",
321
+ "disabled"
322
+ ]
323
+ },
324
+ "groupAllowFrom": {
325
+ "type": "array",
326
+ "items": {
327
+ "anyOf": [
328
+ {
329
+ "type": "string"
330
+ },
331
+ {
332
+ "type": "number"
333
+ }
334
+ ]
335
+ }
336
+ },
337
+ "requireMention": {
338
+ "type": "boolean"
339
+ },
340
+ "groups": {
341
+ "type": "object",
342
+ "additionalProperties": {
343
+ "type": "object",
344
+ "properties": {
345
+ "requireMention": {
346
+ "type": "boolean"
347
+ },
348
+ "tools": {
349
+ "type": "object",
350
+ "properties": {
351
+ "allow": {
352
+ "type": "array",
353
+ "items": {
354
+ "type": "string"
355
+ }
356
+ },
357
+ "deny": {
358
+ "type": "array",
359
+ "items": {
360
+ "type": "string"
361
+ }
362
+ }
363
+ },
364
+ "additionalProperties": false
365
+ },
366
+ "enabled": {
367
+ "type": "boolean"
368
+ },
369
+ "allowFrom": {
370
+ "type": "array",
371
+ "items": {
372
+ "anyOf": [
373
+ {
374
+ "type": "string"
375
+ },
376
+ {
377
+ "type": "number"
378
+ }
379
+ ]
380
+ }
381
+ },
382
+ "systemPrompt": {
383
+ "type": "string"
384
+ },
385
+ "groupSessionScope": {
386
+ "type": "string",
387
+ "enum": [
388
+ "group",
389
+ "group_sender"
390
+ ]
391
+ }
392
+ },
393
+ "additionalProperties": false
394
+ }
395
+ },
396
+ "historyLimit": {
397
+ "type": "integer",
398
+ "minimum": 0
399
+ },
400
+ "textChunkLimit": {
401
+ "type": "integer",
402
+ "exclusiveMinimum": 0
403
+ },
404
+ "mediaMaxMb": {
405
+ "type": "number",
406
+ "exclusiveMinimum": 0
407
+ },
408
+ "tools": {
409
+ "type": "object",
410
+ "properties": {
411
+ "docs": {
412
+ "type": "boolean"
413
+ },
414
+ "media": {
415
+ "type": "boolean"
416
+ }
417
+ },
418
+ "additionalProperties": false
419
+ },
420
+ "typingIndicator": {
421
+ "type": "boolean"
422
+ },
423
+ "resolveSenderNames": {
424
+ "type": "boolean"
425
+ },
426
+ "separateSessionByConversation": {
427
+ "type": "boolean"
428
+ },
429
+ "sharedMemoryAcrossConversations": {
430
+ "type": "boolean"
431
+ },
432
+ "groupSessionScope": {
433
+ "type": "string",
434
+ "enum": [
435
+ "group",
436
+ "group_sender"
437
+ ]
438
+ },
439
+ "asyncMode": {
440
+ "type": "boolean"
441
+ },
442
+ "ackText": {
443
+ "type": "string"
444
+ },
445
+ "endpoint": {
446
+ "type": "string"
447
+ },
448
+ "debug": {
449
+ "type": "boolean"
450
+ }
451
+ },
452
+ "additionalProperties": false
453
+ }
454
+ }
455
+ },
456
+ "additionalProperties": false
457
+ },
458
+ "uiHints": {
459
+ "channels.dingtalk-connector.clientId": {
460
+ "label": "Client ID (AppKey)",
461
+ "help": "\u9489\u9489\u5e94\u7528\u7684 AppKey / Client ID",
462
+ "sensitive": true
463
+ },
464
+ "channels.dingtalk-connector.clientSecret": {
465
+ "label": "Client Secret (AppSecret)",
466
+ "help": "\u9489\u9489\u5e94\u7528\u7684 AppSecret / Client Secret",
467
+ "sensitive": true
468
+ },
469
+ "channels.dingtalk-connector.dmPolicy": {
470
+ "label": "DM Policy",
471
+ "help": "\u5355\u804a\u7b56\u7565\uff1aopen\uff08\u5f00\u653e\uff09\u3001pairing\uff08\u914d\u5bf9\uff09\u3001allowlist\uff08\u767d\u540d\u5355\uff09"
472
+ },
473
+ "channels.dingtalk-connector.groupPolicy": {
474
+ "label": "Group Policy",
475
+ "help": "\u7fa4\u804a\u7b56\u7565\uff1aopen\uff08\u5f00\u653e\uff09\u3001allowlist\uff08\u767d\u540d\u5355\uff09\u3001disabled\uff08\u7981\u7528\uff09"
476
+ },
477
+ "channels.dingtalk-connector.requireMention": {
478
+ "label": "Require @Mention",
479
+ "help": "\u7fa4\u804a\u4e2d\u662f\u5426\u9700\u8981 @\u673a\u5668\u4eba \u624d\u54cd\u5e94"
480
+ },
481
+ "channels.dingtalk-connector.debug": {
482
+ "label": "Debug Mode",
483
+ "help": "\u542f\u7528\u8c03\u8bd5\u65e5\u5fd7",
484
+ "advanced": true
485
+ },
486
+ "channels.dingtalk-connector.endpoint": {
487
+ "label": "Gateway Endpoint",
488
+ "help": "\u81ea\u5b9a\u4e49 DWClient \u7f51\u5173\u5730\u5740\uff08\u9ad8\u7ea7\uff09",
489
+ "advanced": true
490
+ },
491
+ "channels.dingtalk-connector.accounts": {
492
+ "label": "Accounts",
493
+ "help": "\u591a\u8d26\u53f7\u914d\u7f6e\uff0c\u6bcf\u4e2a key \u662f\u8d26\u53f7 ID"
494
+ }
495
+ }
496
+ }
497
+ }
498
+ }
@@ -0,0 +1,91 @@
1
+ {
2
+ "name": "@huo15/dingtalk-connector-pro",
3
+ "version": "1.0.7",
4
+ "description": "火一五定制版钉钉 OpenClaw 连接器 - 支持记忆系统集成、会话管理、AI Card 流式响应",
5
+ "main": "./dist/index.js",
6
+ "type": "module",
7
+ "scripts": {
8
+ "build": "tsc 2>/dev/null; cp package.json dist/; cp openclaw.plugin.json dist/",
9
+ "lint": "echo 'Lint check skipped'",
10
+ "lint:fix": "echo 'Lint fix skipped'",
11
+ "test": "vitest run tests/gateway-methods.unit.test.ts",
12
+ "test:unit": "vitest run tests/gateway-methods.unit.test.ts",
13
+ "test:integration": "vitest run tests/gateway-methods.unit.test.ts",
14
+ "test:all": "vitest run",
15
+ "test:watch": "vitest watch",
16
+ "test:ui": "vitest --ui",
17
+ "test:coverage": "vitest run --coverage --exclude tests/gateway-methods.test.ts",
18
+ "type-check": "npx tsc --noEmit",
19
+ "version:check": "echo 'Version check skipped'",
20
+ "release:prepare": "echo 'Release prepare skipped'",
21
+ "release:publish": "npm publish --access public",
22
+ "release:verify": "npm view @dingtalk-real-ai/dingtalk-connector version",
23
+ "typecheck": "tsc --noEmit",
24
+ "release": "bash scripts/release.sh",
25
+ "prepublishOnly": "npm run build",
26
+ "clean": "rm -rf node_modules package-lock.json",
27
+ "install:fresh": "npm run clean && npm install",
28
+ "dev": "echo 'Run: openclaw start'",
29
+ "validate": "npm run lint && npm run type-check && npm run version:check"
30
+ },
31
+ "keywords": [
32
+ "dingtalk",
33
+ "channel",
34
+ "stream",
35
+ "ai-card",
36
+ "connector"
37
+ ],
38
+ "author": "DingTalk Real Team",
39
+ "license": "MIT",
40
+ "repository": {
41
+ "type": "git",
42
+ "url": "git+https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector.git"
43
+ },
44
+ "homepage": "https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector#readme",
45
+ "bugs": "https://github.com/DingTalk-Real-AI/dingtalk-openclaw-connector/issues",
46
+ "publishConfig": {
47
+ "access": "public"
48
+ },
49
+ "dependencies": {
50
+ "axios": "1.6.0",
51
+ "dingtalk-stream": "2.1.4",
52
+ "form-data": "^4.0.0",
53
+ "zod": "^4.3.6"
54
+ },
55
+ "optionalDependencies": {
56
+ "mammoth": "^1.8.0"
57
+ },
58
+ "peerDependencies": {
59
+ "openclaw": "^2026.3.23-2"
60
+ },
61
+ "peerDependenciesMeta": {
62
+ "openclaw": {
63
+ "optional": true
64
+ }
65
+ },
66
+ "devDependencies": {
67
+ "@types/node": "^20.19.37",
68
+ "@vitest/coverage-v8": "^2.0.0",
69
+ "@vitest/ui": "^2.1.9",
70
+ "openclaw": "^2026.3.23-2",
71
+ "typescript": "^5.6.0",
72
+ "vitest": "^2.1.9"
73
+ },
74
+ "openclaw": {
75
+ "extensions": [
76
+ "./index.ts"
77
+ ],
78
+ "channels": [
79
+ "dingtalk-connector"
80
+ ],
81
+ "installDependencies": true
82
+ },
83
+ "files": [
84
+ "index.ts",
85
+ "openclaw.plugin.json",
86
+ "src/**/*",
87
+ "dist/**/*",
88
+ "README.md",
89
+ "LICENSE"
90
+ ]
91
+ }