@openclaw/feishu 2026.3.13 → 2026.5.1-beta.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.
Files changed (188) hide show
  1. package/api.ts +31 -0
  2. package/channel-entry.ts +20 -0
  3. package/channel-plugin-api.ts +1 -0
  4. package/contract-api.ts +16 -0
  5. package/index.ts +70 -53
  6. package/openclaw.plugin.json +1653 -4
  7. package/package.json +32 -7
  8. package/runtime-api.ts +55 -0
  9. package/secret-contract-api.ts +5 -0
  10. package/security-contract-api.ts +1 -0
  11. package/session-key-api.ts +1 -0
  12. package/setup-api.ts +3 -0
  13. package/setup-entry.test.ts +14 -0
  14. package/setup-entry.ts +13 -0
  15. package/src/accounts.test.ts +95 -7
  16. package/src/accounts.ts +199 -117
  17. package/src/app-registration.ts +331 -0
  18. package/src/approval-auth.test.ts +24 -0
  19. package/src/approval-auth.ts +25 -0
  20. package/src/async.test.ts +35 -0
  21. package/src/async.ts +43 -1
  22. package/src/audio-preflight.runtime.ts +9 -0
  23. package/src/bitable.test.ts +131 -0
  24. package/src/bitable.ts +59 -22
  25. package/src/bot-content.ts +474 -0
  26. package/src/bot-group-name.test.ts +108 -0
  27. package/src/bot-runtime-api.ts +12 -0
  28. package/src/bot-sender-name.ts +125 -0
  29. package/src/bot.broadcast.test.ts +463 -0
  30. package/src/bot.card-action.test.ts +519 -5
  31. package/src/bot.checkBotMentioned.test.ts +92 -20
  32. package/src/bot.helpers.test.ts +118 -0
  33. package/src/bot.stripBotMention.test.ts +13 -21
  34. package/src/bot.test.ts +1334 -401
  35. package/src/bot.ts +778 -775
  36. package/src/card-action.ts +408 -40
  37. package/src/card-interaction.test.ts +129 -0
  38. package/src/card-interaction.ts +159 -0
  39. package/src/card-test-helpers.ts +47 -0
  40. package/src/card-ux-approval.ts +65 -0
  41. package/src/card-ux-launcher.test.ts +99 -0
  42. package/src/card-ux-launcher.ts +121 -0
  43. package/src/card-ux-shared.ts +33 -0
  44. package/src/channel-runtime-api.ts +16 -0
  45. package/src/channel.runtime.ts +47 -0
  46. package/src/channel.test.ts +914 -3
  47. package/src/channel.ts +1252 -309
  48. package/src/chat-schema.ts +5 -4
  49. package/src/chat.test.ts +84 -28
  50. package/src/chat.ts +68 -10
  51. package/src/client.test.ts +212 -103
  52. package/src/client.ts +115 -21
  53. package/src/comment-dispatcher-runtime-api.ts +6 -0
  54. package/src/comment-dispatcher.test.ts +169 -0
  55. package/src/comment-dispatcher.ts +107 -0
  56. package/src/comment-handler-runtime-api.ts +3 -0
  57. package/src/comment-handler.test.ts +486 -0
  58. package/src/comment-handler.ts +309 -0
  59. package/src/comment-reaction.test.ts +166 -0
  60. package/src/comment-reaction.ts +259 -0
  61. package/src/comment-shared.test.ts +182 -0
  62. package/src/comment-shared.ts +365 -0
  63. package/src/comment-target.ts +44 -0
  64. package/src/config-schema.test.ts +63 -1
  65. package/src/config-schema.ts +31 -4
  66. package/src/conversation-id.test.ts +18 -0
  67. package/src/conversation-id.ts +199 -0
  68. package/src/dedup-runtime-api.ts +1 -0
  69. package/src/dedup.ts +32 -94
  70. package/src/directory.static.ts +61 -0
  71. package/src/directory.test.ts +119 -20
  72. package/src/directory.ts +61 -91
  73. package/src/doc-schema.ts +1 -1
  74. package/src/docx-batch-insert.test.ts +39 -38
  75. package/src/docx-batch-insert.ts +55 -19
  76. package/src/docx-color-text.ts +9 -4
  77. package/src/docx-table-ops.test.ts +53 -0
  78. package/src/docx-table-ops.ts +52 -34
  79. package/src/docx-types.ts +38 -0
  80. package/src/docx.account-selection.test.ts +12 -3
  81. package/src/docx.test.ts +314 -74
  82. package/src/docx.ts +278 -122
  83. package/src/drive-schema.ts +47 -1
  84. package/src/drive.test.ts +1219 -0
  85. package/src/drive.ts +614 -13
  86. package/src/dynamic-agent.ts +10 -4
  87. package/src/event-types.ts +45 -0
  88. package/src/external-keys.ts +1 -1
  89. package/src/lifecycle.test-support.ts +220 -0
  90. package/src/media.test.ts +375 -26
  91. package/src/media.ts +434 -88
  92. package/src/mention-target.types.ts +5 -0
  93. package/src/mention.ts +32 -51
  94. package/src/message-action-contract.ts +13 -0
  95. package/src/monitor-state-runtime-api.ts +7 -0
  96. package/src/monitor-transport-runtime-api.ts +7 -0
  97. package/src/monitor.account.ts +218 -312
  98. package/src/monitor.acp-init-failure.lifecycle.test-support.ts +219 -0
  99. package/src/monitor.bot-identity.ts +86 -0
  100. package/src/monitor.bot-menu-handler.ts +165 -0
  101. package/src/monitor.bot-menu.lifecycle.test-support.ts +224 -0
  102. package/src/monitor.bot-menu.test.ts +178 -0
  103. package/src/monitor.broadcast.reply-once.lifecycle.test-support.ts +264 -0
  104. package/src/monitor.card-action.lifecycle.test-support.ts +373 -0
  105. package/src/monitor.cleanup.test.ts +376 -0
  106. package/src/monitor.comment-notice-handler.ts +105 -0
  107. package/src/monitor.comment.test.ts +937 -0
  108. package/src/monitor.comment.ts +1386 -0
  109. package/src/monitor.lifecycle.test.ts +4 -0
  110. package/src/monitor.message-handler.ts +339 -0
  111. package/src/monitor.reaction.lifecycle.test-support.ts +68 -0
  112. package/src/monitor.reaction.test.ts +108 -48
  113. package/src/monitor.reply-once.lifecycle.test-support.ts +190 -0
  114. package/src/monitor.startup.test.ts +11 -9
  115. package/src/monitor.startup.ts +26 -16
  116. package/src/monitor.state.ts +20 -5
  117. package/src/monitor.synthetic-error.ts +18 -0
  118. package/src/monitor.test-mocks.ts +2 -2
  119. package/src/monitor.transport.ts +220 -60
  120. package/src/monitor.ts +15 -10
  121. package/src/monitor.webhook-e2e.test.ts +65 -7
  122. package/src/monitor.webhook-security.test.ts +122 -0
  123. package/src/monitor.webhook.test-helpers.ts +44 -26
  124. package/src/outbound-runtime-api.ts +1 -0
  125. package/src/outbound.test.ts +616 -37
  126. package/src/outbound.ts +623 -81
  127. package/src/perm-schema.ts +1 -1
  128. package/src/perm.ts +1 -7
  129. package/src/pins.ts +108 -0
  130. package/src/policy.test.ts +297 -117
  131. package/src/policy.ts +142 -29
  132. package/src/post.ts +7 -6
  133. package/src/probe.test.ts +14 -9
  134. package/src/probe.ts +26 -16
  135. package/src/processing-claims.ts +59 -0
  136. package/src/qr-terminal.ts +1 -0
  137. package/src/reactions.ts +4 -34
  138. package/src/reasoning-preview.test.ts +59 -0
  139. package/src/reasoning-preview.ts +20 -0
  140. package/src/reply-dispatcher-runtime-api.ts +7 -0
  141. package/src/reply-dispatcher.test.ts +660 -29
  142. package/src/reply-dispatcher.ts +407 -154
  143. package/src/runtime.ts +6 -3
  144. package/src/secret-contract.ts +145 -0
  145. package/src/secret-input.ts +1 -13
  146. package/src/security-audit-shared.ts +69 -0
  147. package/src/security-audit.test.ts +61 -0
  148. package/src/security-audit.ts +1 -0
  149. package/src/send-result.ts +1 -1
  150. package/src/send-target.test.ts +9 -3
  151. package/src/send-target.ts +10 -4
  152. package/src/send.reply-fallback.test.ts +77 -2
  153. package/src/send.test.ts +386 -4
  154. package/src/send.ts +399 -86
  155. package/src/sequential-key.test.ts +72 -0
  156. package/src/sequential-key.ts +28 -0
  157. package/src/sequential-queue.test.ts +92 -0
  158. package/src/sequential-queue.ts +16 -0
  159. package/src/session-conversation.ts +42 -0
  160. package/src/session-route.ts +48 -0
  161. package/src/setup-core.ts +51 -0
  162. package/src/{onboarding.test.ts → setup-surface.test.ts} +52 -21
  163. package/src/setup-surface.ts +581 -0
  164. package/src/streaming-card.test.ts +138 -2
  165. package/src/streaming-card.ts +134 -18
  166. package/src/subagent-hooks.test.ts +603 -0
  167. package/src/subagent-hooks.ts +397 -0
  168. package/src/targets.ts +3 -13
  169. package/src/test-support/lifecycle-test-support.ts +479 -0
  170. package/src/thread-bindings.test.ts +143 -0
  171. package/src/thread-bindings.ts +330 -0
  172. package/src/tool-account-routing.test.ts +66 -8
  173. package/src/tool-account.test.ts +44 -0
  174. package/src/tool-account.ts +40 -17
  175. package/src/tool-factory-test-harness.ts +11 -8
  176. package/src/tool-result.ts +3 -1
  177. package/src/tools-config.ts +1 -1
  178. package/src/types.ts +16 -15
  179. package/src/typing.ts +10 -6
  180. package/src/wiki-schema.ts +1 -1
  181. package/src/wiki.ts +1 -7
  182. package/subagent-hooks-api.ts +31 -0
  183. package/tsconfig.json +16 -0
  184. package/src/feishu-command-handler.ts +0 -59
  185. package/src/onboarding.status.test.ts +0 -25
  186. package/src/onboarding.ts +0 -489
  187. package/src/send-message.ts +0 -71
  188. package/src/targets.test.ts +0 -70
@@ -1,10 +1,1659 @@
1
1
  {
2
2
  "id": "feishu",
3
- "channels": ["feishu"],
4
- "skills": ["./skills"],
3
+ "activation": {
4
+ "onStartup": false
5
+ },
6
+ "channels": [
7
+ "feishu"
8
+ ],
9
+ "channelEnvVars": {
10
+ "feishu": [
11
+ "FEISHU_APP_ID",
12
+ "FEISHU_APP_SECRET",
13
+ "FEISHU_VERIFICATION_TOKEN",
14
+ "FEISHU_ENCRYPT_KEY"
15
+ ]
16
+ },
17
+ "skills": [
18
+ "./skills"
19
+ ],
5
20
  "configSchema": {
6
21
  "type": "object",
7
- "additionalProperties": false,
8
- "properties": {}
22
+ "additionalProperties": true,
23
+ "$defs": {
24
+ "secretRef": {
25
+ "type": "object",
26
+ "additionalProperties": false,
27
+ "properties": {
28
+ "source": {
29
+ "type": "string",
30
+ "enum": [
31
+ "env",
32
+ "file",
33
+ "exec"
34
+ ]
35
+ },
36
+ "provider": {
37
+ "type": "string"
38
+ },
39
+ "id": {
40
+ "type": "string"
41
+ }
42
+ },
43
+ "required": [
44
+ "source",
45
+ "provider",
46
+ "id"
47
+ ]
48
+ },
49
+ "secretInput": {
50
+ "anyOf": [
51
+ {
52
+ "type": "string",
53
+ "minLength": 1
54
+ },
55
+ {
56
+ "$ref": "#/$defs/secretRef"
57
+ }
58
+ ]
59
+ },
60
+ "account": {
61
+ "type": "object",
62
+ "additionalProperties": true,
63
+ "properties": {
64
+ "enabled": {
65
+ "type": "boolean"
66
+ },
67
+ "name": {
68
+ "type": "string"
69
+ },
70
+ "appId": {
71
+ "type": "string"
72
+ },
73
+ "appSecret": {
74
+ "$ref": "#/$defs/secretInput"
75
+ },
76
+ "encryptKey": {
77
+ "$ref": "#/$defs/secretInput"
78
+ },
79
+ "verificationToken": {
80
+ "$ref": "#/$defs/secretInput"
81
+ },
82
+ "domain": {
83
+ "anyOf": [
84
+ {
85
+ "type": "string",
86
+ "enum": [
87
+ "feishu",
88
+ "lark"
89
+ ]
90
+ },
91
+ {
92
+ "type": "string",
93
+ "format": "uri"
94
+ }
95
+ ]
96
+ },
97
+ "connectionMode": {
98
+ "type": "string",
99
+ "enum": [
100
+ "websocket",
101
+ "webhook"
102
+ ]
103
+ },
104
+ "renderMode": {
105
+ "type": "string",
106
+ "enum": [
107
+ "auto",
108
+ "raw",
109
+ "card"
110
+ ]
111
+ },
112
+ "streaming": {
113
+ "type": "boolean"
114
+ },
115
+ "replyInThread": {
116
+ "type": "string",
117
+ "enum": [
118
+ "disabled",
119
+ "enabled"
120
+ ]
121
+ },
122
+ "typingIndicator": {
123
+ "type": "boolean"
124
+ }
125
+ }
126
+ }
127
+ },
128
+ "properties": {
129
+ "enabled": {
130
+ "type": "boolean"
131
+ },
132
+ "defaultAccount": {
133
+ "type": "string"
134
+ },
135
+ "appId": {
136
+ "type": "string"
137
+ },
138
+ "appSecret": {
139
+ "$ref": "#/$defs/secretInput"
140
+ },
141
+ "encryptKey": {
142
+ "$ref": "#/$defs/secretInput"
143
+ },
144
+ "verificationToken": {
145
+ "$ref": "#/$defs/secretInput"
146
+ },
147
+ "domain": {
148
+ "anyOf": [
149
+ {
150
+ "type": "string",
151
+ "enum": [
152
+ "feishu",
153
+ "lark"
154
+ ]
155
+ },
156
+ {
157
+ "type": "string",
158
+ "format": "uri"
159
+ }
160
+ ]
161
+ },
162
+ "connectionMode": {
163
+ "type": "string",
164
+ "enum": [
165
+ "websocket",
166
+ "webhook"
167
+ ]
168
+ },
169
+ "renderMode": {
170
+ "type": "string",
171
+ "enum": [
172
+ "auto",
173
+ "raw",
174
+ "card"
175
+ ]
176
+ },
177
+ "streaming": {
178
+ "type": "boolean"
179
+ },
180
+ "replyInThread": {
181
+ "type": "string",
182
+ "enum": [
183
+ "disabled",
184
+ "enabled"
185
+ ]
186
+ },
187
+ "typingIndicator": {
188
+ "type": "boolean"
189
+ },
190
+ "accounts": {
191
+ "type": "object",
192
+ "additionalProperties": {
193
+ "$ref": "#/$defs/account"
194
+ }
195
+ }
196
+ }
197
+ },
198
+ "channelConfigs": {
199
+ "feishu": {
200
+ "schema": {
201
+ "$schema": "http://json-schema.org/draft-07/schema#",
202
+ "type": "object",
203
+ "properties": {
204
+ "enabled": {
205
+ "type": "boolean"
206
+ },
207
+ "defaultAccount": {
208
+ "type": "string"
209
+ },
210
+ "appId": {
211
+ "type": "string"
212
+ },
213
+ "appSecret": {
214
+ "anyOf": [
215
+ {
216
+ "type": "string"
217
+ },
218
+ {
219
+ "oneOf": [
220
+ {
221
+ "type": "object",
222
+ "properties": {
223
+ "source": {
224
+ "type": "string",
225
+ "const": "env"
226
+ },
227
+ "provider": {
228
+ "type": "string",
229
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
230
+ },
231
+ "id": {
232
+ "type": "string",
233
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
234
+ }
235
+ },
236
+ "required": [
237
+ "source",
238
+ "provider",
239
+ "id"
240
+ ],
241
+ "additionalProperties": false
242
+ },
243
+ {
244
+ "type": "object",
245
+ "properties": {
246
+ "source": {
247
+ "type": "string",
248
+ "const": "file"
249
+ },
250
+ "provider": {
251
+ "type": "string",
252
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
253
+ },
254
+ "id": {
255
+ "type": "string"
256
+ }
257
+ },
258
+ "required": [
259
+ "source",
260
+ "provider",
261
+ "id"
262
+ ],
263
+ "additionalProperties": false
264
+ },
265
+ {
266
+ "type": "object",
267
+ "properties": {
268
+ "source": {
269
+ "type": "string",
270
+ "const": "exec"
271
+ },
272
+ "provider": {
273
+ "type": "string",
274
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
275
+ },
276
+ "id": {
277
+ "type": "string"
278
+ }
279
+ },
280
+ "required": [
281
+ "source",
282
+ "provider",
283
+ "id"
284
+ ],
285
+ "additionalProperties": false
286
+ }
287
+ ]
288
+ }
289
+ ]
290
+ },
291
+ "encryptKey": {
292
+ "anyOf": [
293
+ {
294
+ "type": "string"
295
+ },
296
+ {
297
+ "oneOf": [
298
+ {
299
+ "type": "object",
300
+ "properties": {
301
+ "source": {
302
+ "type": "string",
303
+ "const": "env"
304
+ },
305
+ "provider": {
306
+ "type": "string",
307
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
308
+ },
309
+ "id": {
310
+ "type": "string",
311
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
312
+ }
313
+ },
314
+ "required": [
315
+ "source",
316
+ "provider",
317
+ "id"
318
+ ],
319
+ "additionalProperties": false
320
+ },
321
+ {
322
+ "type": "object",
323
+ "properties": {
324
+ "source": {
325
+ "type": "string",
326
+ "const": "file"
327
+ },
328
+ "provider": {
329
+ "type": "string",
330
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
331
+ },
332
+ "id": {
333
+ "type": "string"
334
+ }
335
+ },
336
+ "required": [
337
+ "source",
338
+ "provider",
339
+ "id"
340
+ ],
341
+ "additionalProperties": false
342
+ },
343
+ {
344
+ "type": "object",
345
+ "properties": {
346
+ "source": {
347
+ "type": "string",
348
+ "const": "exec"
349
+ },
350
+ "provider": {
351
+ "type": "string",
352
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
353
+ },
354
+ "id": {
355
+ "type": "string"
356
+ }
357
+ },
358
+ "required": [
359
+ "source",
360
+ "provider",
361
+ "id"
362
+ ],
363
+ "additionalProperties": false
364
+ }
365
+ ]
366
+ }
367
+ ]
368
+ },
369
+ "verificationToken": {
370
+ "anyOf": [
371
+ {
372
+ "type": "string"
373
+ },
374
+ {
375
+ "oneOf": [
376
+ {
377
+ "type": "object",
378
+ "properties": {
379
+ "source": {
380
+ "type": "string",
381
+ "const": "env"
382
+ },
383
+ "provider": {
384
+ "type": "string",
385
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
386
+ },
387
+ "id": {
388
+ "type": "string",
389
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
390
+ }
391
+ },
392
+ "required": [
393
+ "source",
394
+ "provider",
395
+ "id"
396
+ ],
397
+ "additionalProperties": false
398
+ },
399
+ {
400
+ "type": "object",
401
+ "properties": {
402
+ "source": {
403
+ "type": "string",
404
+ "const": "file"
405
+ },
406
+ "provider": {
407
+ "type": "string",
408
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
409
+ },
410
+ "id": {
411
+ "type": "string"
412
+ }
413
+ },
414
+ "required": [
415
+ "source",
416
+ "provider",
417
+ "id"
418
+ ],
419
+ "additionalProperties": false
420
+ },
421
+ {
422
+ "type": "object",
423
+ "properties": {
424
+ "source": {
425
+ "type": "string",
426
+ "const": "exec"
427
+ },
428
+ "provider": {
429
+ "type": "string",
430
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
431
+ },
432
+ "id": {
433
+ "type": "string"
434
+ }
435
+ },
436
+ "required": [
437
+ "source",
438
+ "provider",
439
+ "id"
440
+ ],
441
+ "additionalProperties": false
442
+ }
443
+ ]
444
+ }
445
+ ]
446
+ },
447
+ "domain": {
448
+ "default": "feishu",
449
+ "anyOf": [
450
+ {
451
+ "type": "string",
452
+ "enum": [
453
+ "feishu",
454
+ "lark"
455
+ ]
456
+ },
457
+ {
458
+ "type": "string",
459
+ "format": "uri",
460
+ "pattern": "^https:\\/\\/.*"
461
+ }
462
+ ]
463
+ },
464
+ "connectionMode": {
465
+ "default": "websocket",
466
+ "type": "string",
467
+ "enum": [
468
+ "websocket",
469
+ "webhook"
470
+ ]
471
+ },
472
+ "webhookPath": {
473
+ "default": "/feishu/events",
474
+ "type": "string"
475
+ },
476
+ "webhookHost": {
477
+ "type": "string"
478
+ },
479
+ "webhookPort": {
480
+ "type": "integer",
481
+ "exclusiveMinimum": 0,
482
+ "maximum": 9007199254740991
483
+ },
484
+ "capabilities": {
485
+ "type": "array",
486
+ "items": {
487
+ "type": "string"
488
+ }
489
+ },
490
+ "markdown": {
491
+ "type": "object",
492
+ "properties": {
493
+ "mode": {
494
+ "type": "string",
495
+ "enum": [
496
+ "native",
497
+ "escape",
498
+ "strip"
499
+ ]
500
+ },
501
+ "tableMode": {
502
+ "type": "string",
503
+ "enum": [
504
+ "native",
505
+ "ascii",
506
+ "simple"
507
+ ]
508
+ }
509
+ },
510
+ "additionalProperties": false
511
+ },
512
+ "configWrites": {
513
+ "type": "boolean"
514
+ },
515
+ "dmPolicy": {
516
+ "default": "pairing",
517
+ "type": "string",
518
+ "enum": [
519
+ "open",
520
+ "pairing",
521
+ "allowlist"
522
+ ]
523
+ },
524
+ "allowFrom": {
525
+ "type": "array",
526
+ "items": {
527
+ "anyOf": [
528
+ {
529
+ "type": "string"
530
+ },
531
+ {
532
+ "type": "number"
533
+ }
534
+ ]
535
+ }
536
+ },
537
+ "groupPolicy": {
538
+ "default": "allowlist",
539
+ "anyOf": [
540
+ {
541
+ "type": "string",
542
+ "enum": [
543
+ "open",
544
+ "allowlist",
545
+ "disabled"
546
+ ]
547
+ },
548
+ {}
549
+ ]
550
+ },
551
+ "groupAllowFrom": {
552
+ "type": "array",
553
+ "items": {
554
+ "anyOf": [
555
+ {
556
+ "type": "string"
557
+ },
558
+ {
559
+ "type": "number"
560
+ }
561
+ ]
562
+ }
563
+ },
564
+ "groupSenderAllowFrom": {
565
+ "type": "array",
566
+ "items": {
567
+ "anyOf": [
568
+ {
569
+ "type": "string"
570
+ },
571
+ {
572
+ "type": "number"
573
+ }
574
+ ]
575
+ }
576
+ },
577
+ "requireMention": {
578
+ "type": "boolean"
579
+ },
580
+ "groups": {
581
+ "type": "object",
582
+ "propertyNames": {
583
+ "type": "string"
584
+ },
585
+ "additionalProperties": {
586
+ "type": "object",
587
+ "properties": {
588
+ "requireMention": {
589
+ "type": "boolean"
590
+ },
591
+ "tools": {
592
+ "type": "object",
593
+ "properties": {
594
+ "allow": {
595
+ "type": "array",
596
+ "items": {
597
+ "type": "string"
598
+ }
599
+ },
600
+ "deny": {
601
+ "type": "array",
602
+ "items": {
603
+ "type": "string"
604
+ }
605
+ }
606
+ },
607
+ "additionalProperties": false
608
+ },
609
+ "skills": {
610
+ "type": "array",
611
+ "items": {
612
+ "type": "string"
613
+ }
614
+ },
615
+ "enabled": {
616
+ "type": "boolean"
617
+ },
618
+ "allowFrom": {
619
+ "type": "array",
620
+ "items": {
621
+ "anyOf": [
622
+ {
623
+ "type": "string"
624
+ },
625
+ {
626
+ "type": "number"
627
+ }
628
+ ]
629
+ }
630
+ },
631
+ "systemPrompt": {
632
+ "type": "string"
633
+ },
634
+ "groupSessionScope": {
635
+ "type": "string",
636
+ "enum": [
637
+ "group",
638
+ "group_sender",
639
+ "group_topic",
640
+ "group_topic_sender"
641
+ ]
642
+ },
643
+ "topicSessionMode": {
644
+ "type": "string",
645
+ "enum": [
646
+ "disabled",
647
+ "enabled"
648
+ ]
649
+ },
650
+ "replyInThread": {
651
+ "type": "string",
652
+ "enum": [
653
+ "disabled",
654
+ "enabled"
655
+ ]
656
+ }
657
+ },
658
+ "additionalProperties": false
659
+ }
660
+ },
661
+ "historyLimit": {
662
+ "type": "integer",
663
+ "minimum": 0,
664
+ "maximum": 9007199254740991
665
+ },
666
+ "dmHistoryLimit": {
667
+ "type": "integer",
668
+ "minimum": 0,
669
+ "maximum": 9007199254740991
670
+ },
671
+ "dms": {
672
+ "type": "object",
673
+ "propertyNames": {
674
+ "type": "string"
675
+ },
676
+ "additionalProperties": {
677
+ "type": "object",
678
+ "properties": {
679
+ "enabled": {
680
+ "type": "boolean"
681
+ },
682
+ "systemPrompt": {
683
+ "type": "string"
684
+ }
685
+ },
686
+ "additionalProperties": false
687
+ }
688
+ },
689
+ "textChunkLimit": {
690
+ "type": "integer",
691
+ "exclusiveMinimum": 0,
692
+ "maximum": 9007199254740991
693
+ },
694
+ "chunkMode": {
695
+ "type": "string",
696
+ "enum": [
697
+ "length",
698
+ "newline"
699
+ ]
700
+ },
701
+ "blockStreamingCoalesce": {
702
+ "type": "object",
703
+ "properties": {
704
+ "enabled": {
705
+ "type": "boolean"
706
+ },
707
+ "minDelayMs": {
708
+ "type": "integer",
709
+ "exclusiveMinimum": 0,
710
+ "maximum": 9007199254740991
711
+ },
712
+ "maxDelayMs": {
713
+ "type": "integer",
714
+ "exclusiveMinimum": 0,
715
+ "maximum": 9007199254740991
716
+ }
717
+ },
718
+ "additionalProperties": false
719
+ },
720
+ "mediaMaxMb": {
721
+ "type": "number",
722
+ "exclusiveMinimum": 0
723
+ },
724
+ "httpTimeoutMs": {
725
+ "type": "integer",
726
+ "exclusiveMinimum": 0,
727
+ "maximum": 300000
728
+ },
729
+ "heartbeat": {
730
+ "type": "object",
731
+ "properties": {
732
+ "visibility": {
733
+ "type": "string",
734
+ "enum": [
735
+ "visible",
736
+ "hidden"
737
+ ]
738
+ },
739
+ "intervalMs": {
740
+ "type": "integer",
741
+ "exclusiveMinimum": 0,
742
+ "maximum": 9007199254740991
743
+ }
744
+ },
745
+ "additionalProperties": false
746
+ },
747
+ "renderMode": {
748
+ "type": "string",
749
+ "enum": [
750
+ "auto",
751
+ "raw",
752
+ "card"
753
+ ]
754
+ },
755
+ "streaming": {
756
+ "type": "boolean"
757
+ },
758
+ "tools": {
759
+ "type": "object",
760
+ "properties": {
761
+ "doc": {
762
+ "type": "boolean"
763
+ },
764
+ "chat": {
765
+ "type": "boolean"
766
+ },
767
+ "wiki": {
768
+ "type": "boolean"
769
+ },
770
+ "drive": {
771
+ "type": "boolean"
772
+ },
773
+ "perm": {
774
+ "type": "boolean"
775
+ },
776
+ "scopes": {
777
+ "type": "boolean"
778
+ }
779
+ },
780
+ "additionalProperties": false
781
+ },
782
+ "actions": {
783
+ "type": "object",
784
+ "properties": {
785
+ "reactions": {
786
+ "type": "boolean"
787
+ }
788
+ },
789
+ "additionalProperties": false
790
+ },
791
+ "replyInThread": {
792
+ "type": "string",
793
+ "enum": [
794
+ "disabled",
795
+ "enabled"
796
+ ]
797
+ },
798
+ "reactionNotifications": {
799
+ "default": "own",
800
+ "type": "string",
801
+ "enum": [
802
+ "off",
803
+ "own",
804
+ "all"
805
+ ]
806
+ },
807
+ "typingIndicator": {
808
+ "default": true,
809
+ "type": "boolean"
810
+ },
811
+ "resolveSenderNames": {
812
+ "default": true,
813
+ "type": "boolean"
814
+ },
815
+ "tts": {
816
+ "type": "object",
817
+ "properties": {
818
+ "auto": {
819
+ "type": "string",
820
+ "enum": [
821
+ "off",
822
+ "always",
823
+ "inbound",
824
+ "tagged"
825
+ ]
826
+ },
827
+ "enabled": {
828
+ "type": "boolean"
829
+ },
830
+ "mode": {
831
+ "type": "string",
832
+ "enum": [
833
+ "final",
834
+ "all"
835
+ ]
836
+ },
837
+ "provider": {
838
+ "type": "string"
839
+ },
840
+ "persona": {
841
+ "type": "string"
842
+ },
843
+ "personas": {
844
+ "type": "object",
845
+ "propertyNames": {
846
+ "type": "string"
847
+ },
848
+ "additionalProperties": {
849
+ "type": "object",
850
+ "propertyNames": {
851
+ "type": "string"
852
+ },
853
+ "additionalProperties": {}
854
+ }
855
+ },
856
+ "summaryModel": {
857
+ "type": "string"
858
+ },
859
+ "modelOverrides": {
860
+ "type": "object",
861
+ "propertyNames": {
862
+ "type": "string"
863
+ },
864
+ "additionalProperties": {}
865
+ },
866
+ "providers": {
867
+ "type": "object",
868
+ "propertyNames": {
869
+ "type": "string"
870
+ },
871
+ "additionalProperties": {
872
+ "type": "object",
873
+ "propertyNames": {
874
+ "type": "string"
875
+ },
876
+ "additionalProperties": {}
877
+ }
878
+ },
879
+ "prefsPath": {
880
+ "type": "string"
881
+ },
882
+ "maxTextLength": {
883
+ "type": "integer",
884
+ "minimum": 1,
885
+ "maximum": 9007199254740991
886
+ },
887
+ "timeoutMs": {
888
+ "type": "integer",
889
+ "minimum": 1000,
890
+ "maximum": 120000
891
+ }
892
+ },
893
+ "additionalProperties": false
894
+ },
895
+ "groupSessionScope": {
896
+ "type": "string",
897
+ "enum": [
898
+ "group",
899
+ "group_sender",
900
+ "group_topic",
901
+ "group_topic_sender"
902
+ ]
903
+ },
904
+ "topicSessionMode": {
905
+ "type": "string",
906
+ "enum": [
907
+ "disabled",
908
+ "enabled"
909
+ ]
910
+ },
911
+ "dynamicAgentCreation": {
912
+ "type": "object",
913
+ "properties": {
914
+ "enabled": {
915
+ "type": "boolean"
916
+ },
917
+ "workspaceTemplate": {
918
+ "type": "string"
919
+ },
920
+ "agentDirTemplate": {
921
+ "type": "string"
922
+ },
923
+ "maxAgents": {
924
+ "type": "integer",
925
+ "exclusiveMinimum": 0,
926
+ "maximum": 9007199254740991
927
+ }
928
+ },
929
+ "additionalProperties": false
930
+ },
931
+ "accounts": {
932
+ "type": "object",
933
+ "propertyNames": {
934
+ "type": "string"
935
+ },
936
+ "additionalProperties": {
937
+ "type": "object",
938
+ "properties": {
939
+ "enabled": {
940
+ "type": "boolean"
941
+ },
942
+ "name": {
943
+ "type": "string"
944
+ },
945
+ "appId": {
946
+ "type": "string"
947
+ },
948
+ "appSecret": {
949
+ "anyOf": [
950
+ {
951
+ "type": "string"
952
+ },
953
+ {
954
+ "oneOf": [
955
+ {
956
+ "type": "object",
957
+ "properties": {
958
+ "source": {
959
+ "type": "string",
960
+ "const": "env"
961
+ },
962
+ "provider": {
963
+ "type": "string",
964
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
965
+ },
966
+ "id": {
967
+ "type": "string",
968
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
969
+ }
970
+ },
971
+ "required": [
972
+ "source",
973
+ "provider",
974
+ "id"
975
+ ],
976
+ "additionalProperties": false
977
+ },
978
+ {
979
+ "type": "object",
980
+ "properties": {
981
+ "source": {
982
+ "type": "string",
983
+ "const": "file"
984
+ },
985
+ "provider": {
986
+ "type": "string",
987
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
988
+ },
989
+ "id": {
990
+ "type": "string"
991
+ }
992
+ },
993
+ "required": [
994
+ "source",
995
+ "provider",
996
+ "id"
997
+ ],
998
+ "additionalProperties": false
999
+ },
1000
+ {
1001
+ "type": "object",
1002
+ "properties": {
1003
+ "source": {
1004
+ "type": "string",
1005
+ "const": "exec"
1006
+ },
1007
+ "provider": {
1008
+ "type": "string",
1009
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
1010
+ },
1011
+ "id": {
1012
+ "type": "string"
1013
+ }
1014
+ },
1015
+ "required": [
1016
+ "source",
1017
+ "provider",
1018
+ "id"
1019
+ ],
1020
+ "additionalProperties": false
1021
+ }
1022
+ ]
1023
+ }
1024
+ ]
1025
+ },
1026
+ "encryptKey": {
1027
+ "anyOf": [
1028
+ {
1029
+ "type": "string"
1030
+ },
1031
+ {
1032
+ "oneOf": [
1033
+ {
1034
+ "type": "object",
1035
+ "properties": {
1036
+ "source": {
1037
+ "type": "string",
1038
+ "const": "env"
1039
+ },
1040
+ "provider": {
1041
+ "type": "string",
1042
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
1043
+ },
1044
+ "id": {
1045
+ "type": "string",
1046
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
1047
+ }
1048
+ },
1049
+ "required": [
1050
+ "source",
1051
+ "provider",
1052
+ "id"
1053
+ ],
1054
+ "additionalProperties": false
1055
+ },
1056
+ {
1057
+ "type": "object",
1058
+ "properties": {
1059
+ "source": {
1060
+ "type": "string",
1061
+ "const": "file"
1062
+ },
1063
+ "provider": {
1064
+ "type": "string",
1065
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
1066
+ },
1067
+ "id": {
1068
+ "type": "string"
1069
+ }
1070
+ },
1071
+ "required": [
1072
+ "source",
1073
+ "provider",
1074
+ "id"
1075
+ ],
1076
+ "additionalProperties": false
1077
+ },
1078
+ {
1079
+ "type": "object",
1080
+ "properties": {
1081
+ "source": {
1082
+ "type": "string",
1083
+ "const": "exec"
1084
+ },
1085
+ "provider": {
1086
+ "type": "string",
1087
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
1088
+ },
1089
+ "id": {
1090
+ "type": "string"
1091
+ }
1092
+ },
1093
+ "required": [
1094
+ "source",
1095
+ "provider",
1096
+ "id"
1097
+ ],
1098
+ "additionalProperties": false
1099
+ }
1100
+ ]
1101
+ }
1102
+ ]
1103
+ },
1104
+ "verificationToken": {
1105
+ "anyOf": [
1106
+ {
1107
+ "type": "string"
1108
+ },
1109
+ {
1110
+ "oneOf": [
1111
+ {
1112
+ "type": "object",
1113
+ "properties": {
1114
+ "source": {
1115
+ "type": "string",
1116
+ "const": "env"
1117
+ },
1118
+ "provider": {
1119
+ "type": "string",
1120
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
1121
+ },
1122
+ "id": {
1123
+ "type": "string",
1124
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
1125
+ }
1126
+ },
1127
+ "required": [
1128
+ "source",
1129
+ "provider",
1130
+ "id"
1131
+ ],
1132
+ "additionalProperties": false
1133
+ },
1134
+ {
1135
+ "type": "object",
1136
+ "properties": {
1137
+ "source": {
1138
+ "type": "string",
1139
+ "const": "file"
1140
+ },
1141
+ "provider": {
1142
+ "type": "string",
1143
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
1144
+ },
1145
+ "id": {
1146
+ "type": "string"
1147
+ }
1148
+ },
1149
+ "required": [
1150
+ "source",
1151
+ "provider",
1152
+ "id"
1153
+ ],
1154
+ "additionalProperties": false
1155
+ },
1156
+ {
1157
+ "type": "object",
1158
+ "properties": {
1159
+ "source": {
1160
+ "type": "string",
1161
+ "const": "exec"
1162
+ },
1163
+ "provider": {
1164
+ "type": "string",
1165
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
1166
+ },
1167
+ "id": {
1168
+ "type": "string"
1169
+ }
1170
+ },
1171
+ "required": [
1172
+ "source",
1173
+ "provider",
1174
+ "id"
1175
+ ],
1176
+ "additionalProperties": false
1177
+ }
1178
+ ]
1179
+ }
1180
+ ]
1181
+ },
1182
+ "domain": {
1183
+ "anyOf": [
1184
+ {
1185
+ "type": "string",
1186
+ "enum": [
1187
+ "feishu",
1188
+ "lark"
1189
+ ]
1190
+ },
1191
+ {
1192
+ "type": "string",
1193
+ "format": "uri",
1194
+ "pattern": "^https:\\/\\/.*"
1195
+ }
1196
+ ]
1197
+ },
1198
+ "connectionMode": {
1199
+ "type": "string",
1200
+ "enum": [
1201
+ "websocket",
1202
+ "webhook"
1203
+ ]
1204
+ },
1205
+ "webhookPath": {
1206
+ "type": "string"
1207
+ },
1208
+ "webhookHost": {
1209
+ "type": "string"
1210
+ },
1211
+ "webhookPort": {
1212
+ "type": "integer",
1213
+ "exclusiveMinimum": 0,
1214
+ "maximum": 9007199254740991
1215
+ },
1216
+ "capabilities": {
1217
+ "type": "array",
1218
+ "items": {
1219
+ "type": "string"
1220
+ }
1221
+ },
1222
+ "markdown": {
1223
+ "type": "object",
1224
+ "properties": {
1225
+ "mode": {
1226
+ "type": "string",
1227
+ "enum": [
1228
+ "native",
1229
+ "escape",
1230
+ "strip"
1231
+ ]
1232
+ },
1233
+ "tableMode": {
1234
+ "type": "string",
1235
+ "enum": [
1236
+ "native",
1237
+ "ascii",
1238
+ "simple"
1239
+ ]
1240
+ }
1241
+ },
1242
+ "additionalProperties": false
1243
+ },
1244
+ "configWrites": {
1245
+ "type": "boolean"
1246
+ },
1247
+ "dmPolicy": {
1248
+ "type": "string",
1249
+ "enum": [
1250
+ "open",
1251
+ "pairing",
1252
+ "allowlist"
1253
+ ]
1254
+ },
1255
+ "allowFrom": {
1256
+ "type": "array",
1257
+ "items": {
1258
+ "anyOf": [
1259
+ {
1260
+ "type": "string"
1261
+ },
1262
+ {
1263
+ "type": "number"
1264
+ }
1265
+ ]
1266
+ }
1267
+ },
1268
+ "groupPolicy": {
1269
+ "anyOf": [
1270
+ {
1271
+ "type": "string",
1272
+ "enum": [
1273
+ "open",
1274
+ "allowlist",
1275
+ "disabled"
1276
+ ]
1277
+ },
1278
+ {}
1279
+ ]
1280
+ },
1281
+ "groupAllowFrom": {
1282
+ "type": "array",
1283
+ "items": {
1284
+ "anyOf": [
1285
+ {
1286
+ "type": "string"
1287
+ },
1288
+ {
1289
+ "type": "number"
1290
+ }
1291
+ ]
1292
+ }
1293
+ },
1294
+ "groupSenderAllowFrom": {
1295
+ "type": "array",
1296
+ "items": {
1297
+ "anyOf": [
1298
+ {
1299
+ "type": "string"
1300
+ },
1301
+ {
1302
+ "type": "number"
1303
+ }
1304
+ ]
1305
+ }
1306
+ },
1307
+ "requireMention": {
1308
+ "type": "boolean"
1309
+ },
1310
+ "groups": {
1311
+ "type": "object",
1312
+ "propertyNames": {
1313
+ "type": "string"
1314
+ },
1315
+ "additionalProperties": {
1316
+ "type": "object",
1317
+ "properties": {
1318
+ "requireMention": {
1319
+ "type": "boolean"
1320
+ },
1321
+ "tools": {
1322
+ "type": "object",
1323
+ "properties": {
1324
+ "allow": {
1325
+ "type": "array",
1326
+ "items": {
1327
+ "type": "string"
1328
+ }
1329
+ },
1330
+ "deny": {
1331
+ "type": "array",
1332
+ "items": {
1333
+ "type": "string"
1334
+ }
1335
+ }
1336
+ },
1337
+ "additionalProperties": false
1338
+ },
1339
+ "skills": {
1340
+ "type": "array",
1341
+ "items": {
1342
+ "type": "string"
1343
+ }
1344
+ },
1345
+ "enabled": {
1346
+ "type": "boolean"
1347
+ },
1348
+ "allowFrom": {
1349
+ "type": "array",
1350
+ "items": {
1351
+ "anyOf": [
1352
+ {
1353
+ "type": "string"
1354
+ },
1355
+ {
1356
+ "type": "number"
1357
+ }
1358
+ ]
1359
+ }
1360
+ },
1361
+ "systemPrompt": {
1362
+ "type": "string"
1363
+ },
1364
+ "groupSessionScope": {
1365
+ "type": "string",
1366
+ "enum": [
1367
+ "group",
1368
+ "group_sender",
1369
+ "group_topic",
1370
+ "group_topic_sender"
1371
+ ]
1372
+ },
1373
+ "topicSessionMode": {
1374
+ "type": "string",
1375
+ "enum": [
1376
+ "disabled",
1377
+ "enabled"
1378
+ ]
1379
+ },
1380
+ "replyInThread": {
1381
+ "type": "string",
1382
+ "enum": [
1383
+ "disabled",
1384
+ "enabled"
1385
+ ]
1386
+ }
1387
+ },
1388
+ "additionalProperties": false
1389
+ }
1390
+ },
1391
+ "historyLimit": {
1392
+ "type": "integer",
1393
+ "minimum": 0,
1394
+ "maximum": 9007199254740991
1395
+ },
1396
+ "dmHistoryLimit": {
1397
+ "type": "integer",
1398
+ "minimum": 0,
1399
+ "maximum": 9007199254740991
1400
+ },
1401
+ "dms": {
1402
+ "type": "object",
1403
+ "propertyNames": {
1404
+ "type": "string"
1405
+ },
1406
+ "additionalProperties": {
1407
+ "type": "object",
1408
+ "properties": {
1409
+ "enabled": {
1410
+ "type": "boolean"
1411
+ },
1412
+ "systemPrompt": {
1413
+ "type": "string"
1414
+ }
1415
+ },
1416
+ "additionalProperties": false
1417
+ }
1418
+ },
1419
+ "textChunkLimit": {
1420
+ "type": "integer",
1421
+ "exclusiveMinimum": 0,
1422
+ "maximum": 9007199254740991
1423
+ },
1424
+ "chunkMode": {
1425
+ "type": "string",
1426
+ "enum": [
1427
+ "length",
1428
+ "newline"
1429
+ ]
1430
+ },
1431
+ "blockStreamingCoalesce": {
1432
+ "type": "object",
1433
+ "properties": {
1434
+ "enabled": {
1435
+ "type": "boolean"
1436
+ },
1437
+ "minDelayMs": {
1438
+ "type": "integer",
1439
+ "exclusiveMinimum": 0,
1440
+ "maximum": 9007199254740991
1441
+ },
1442
+ "maxDelayMs": {
1443
+ "type": "integer",
1444
+ "exclusiveMinimum": 0,
1445
+ "maximum": 9007199254740991
1446
+ }
1447
+ },
1448
+ "additionalProperties": false
1449
+ },
1450
+ "mediaMaxMb": {
1451
+ "type": "number",
1452
+ "exclusiveMinimum": 0
1453
+ },
1454
+ "httpTimeoutMs": {
1455
+ "type": "integer",
1456
+ "exclusiveMinimum": 0,
1457
+ "maximum": 300000
1458
+ },
1459
+ "heartbeat": {
1460
+ "type": "object",
1461
+ "properties": {
1462
+ "visibility": {
1463
+ "type": "string",
1464
+ "enum": [
1465
+ "visible",
1466
+ "hidden"
1467
+ ]
1468
+ },
1469
+ "intervalMs": {
1470
+ "type": "integer",
1471
+ "exclusiveMinimum": 0,
1472
+ "maximum": 9007199254740991
1473
+ }
1474
+ },
1475
+ "additionalProperties": false
1476
+ },
1477
+ "renderMode": {
1478
+ "type": "string",
1479
+ "enum": [
1480
+ "auto",
1481
+ "raw",
1482
+ "card"
1483
+ ]
1484
+ },
1485
+ "streaming": {
1486
+ "type": "boolean"
1487
+ },
1488
+ "tools": {
1489
+ "type": "object",
1490
+ "properties": {
1491
+ "doc": {
1492
+ "type": "boolean"
1493
+ },
1494
+ "chat": {
1495
+ "type": "boolean"
1496
+ },
1497
+ "wiki": {
1498
+ "type": "boolean"
1499
+ },
1500
+ "drive": {
1501
+ "type": "boolean"
1502
+ },
1503
+ "perm": {
1504
+ "type": "boolean"
1505
+ },
1506
+ "scopes": {
1507
+ "type": "boolean"
1508
+ }
1509
+ },
1510
+ "additionalProperties": false
1511
+ },
1512
+ "actions": {
1513
+ "type": "object",
1514
+ "properties": {
1515
+ "reactions": {
1516
+ "type": "boolean"
1517
+ }
1518
+ },
1519
+ "additionalProperties": false
1520
+ },
1521
+ "replyInThread": {
1522
+ "type": "string",
1523
+ "enum": [
1524
+ "disabled",
1525
+ "enabled"
1526
+ ]
1527
+ },
1528
+ "reactionNotifications": {
1529
+ "type": "string",
1530
+ "enum": [
1531
+ "off",
1532
+ "own",
1533
+ "all"
1534
+ ]
1535
+ },
1536
+ "typingIndicator": {
1537
+ "type": "boolean"
1538
+ },
1539
+ "resolveSenderNames": {
1540
+ "type": "boolean"
1541
+ },
1542
+ "tts": {
1543
+ "type": "object",
1544
+ "properties": {
1545
+ "auto": {
1546
+ "type": "string",
1547
+ "enum": [
1548
+ "off",
1549
+ "always",
1550
+ "inbound",
1551
+ "tagged"
1552
+ ]
1553
+ },
1554
+ "enabled": {
1555
+ "type": "boolean"
1556
+ },
1557
+ "mode": {
1558
+ "type": "string",
1559
+ "enum": [
1560
+ "final",
1561
+ "all"
1562
+ ]
1563
+ },
1564
+ "provider": {
1565
+ "type": "string"
1566
+ },
1567
+ "persona": {
1568
+ "type": "string"
1569
+ },
1570
+ "personas": {
1571
+ "type": "object",
1572
+ "propertyNames": {
1573
+ "type": "string"
1574
+ },
1575
+ "additionalProperties": {
1576
+ "type": "object",
1577
+ "propertyNames": {
1578
+ "type": "string"
1579
+ },
1580
+ "additionalProperties": {}
1581
+ }
1582
+ },
1583
+ "summaryModel": {
1584
+ "type": "string"
1585
+ },
1586
+ "modelOverrides": {
1587
+ "type": "object",
1588
+ "propertyNames": {
1589
+ "type": "string"
1590
+ },
1591
+ "additionalProperties": {}
1592
+ },
1593
+ "providers": {
1594
+ "type": "object",
1595
+ "propertyNames": {
1596
+ "type": "string"
1597
+ },
1598
+ "additionalProperties": {
1599
+ "type": "object",
1600
+ "propertyNames": {
1601
+ "type": "string"
1602
+ },
1603
+ "additionalProperties": {}
1604
+ }
1605
+ },
1606
+ "prefsPath": {
1607
+ "type": "string"
1608
+ },
1609
+ "maxTextLength": {
1610
+ "type": "integer",
1611
+ "minimum": 1,
1612
+ "maximum": 9007199254740991
1613
+ },
1614
+ "timeoutMs": {
1615
+ "type": "integer",
1616
+ "minimum": 1000,
1617
+ "maximum": 120000
1618
+ }
1619
+ },
1620
+ "additionalProperties": false
1621
+ },
1622
+ "groupSessionScope": {
1623
+ "type": "string",
1624
+ "enum": [
1625
+ "group",
1626
+ "group_sender",
1627
+ "group_topic",
1628
+ "group_topic_sender"
1629
+ ]
1630
+ },
1631
+ "topicSessionMode": {
1632
+ "type": "string",
1633
+ "enum": [
1634
+ "disabled",
1635
+ "enabled"
1636
+ ]
1637
+ }
1638
+ },
1639
+ "additionalProperties": false
1640
+ }
1641
+ }
1642
+ },
1643
+ "required": [
1644
+ "domain",
1645
+ "connectionMode",
1646
+ "webhookPath",
1647
+ "dmPolicy",
1648
+ "groupPolicy",
1649
+ "reactionNotifications",
1650
+ "typingIndicator",
1651
+ "resolveSenderNames"
1652
+ ],
1653
+ "additionalProperties": false
1654
+ },
1655
+ "label": "Feishu",
1656
+ "description": "飞书/Lark enterprise messaging with doc/wiki/drive tools."
1657
+ }
9
1658
  }
10
1659
  }