@ihazz/bitrix24 1.1.2 → 1.1.4

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 (104) hide show
  1. package/README.md +5 -0
  2. package/dist/index.d.ts +30 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +55 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/src/access-control.d.ts +43 -0
  7. package/dist/src/access-control.d.ts.map +1 -0
  8. package/dist/src/access-control.js +128 -0
  9. package/dist/src/access-control.js.map +1 -0
  10. package/dist/src/api.d.ts +161 -0
  11. package/dist/src/api.d.ts.map +1 -0
  12. package/dist/src/api.js +357 -0
  13. package/dist/src/api.js.map +1 -0
  14. package/dist/src/bot-avatar.d.ts +7 -0
  15. package/dist/src/bot-avatar.d.ts.map +1 -0
  16. package/dist/src/bot-avatar.js +7 -0
  17. package/dist/src/bot-avatar.js.map +1 -0
  18. package/dist/src/channel.d.ts +216 -0
  19. package/dist/src/channel.d.ts.map +1 -0
  20. package/dist/src/channel.js +2324 -0
  21. package/dist/src/channel.js.map +1 -0
  22. package/dist/src/commands.d.ts +22 -0
  23. package/dist/src/commands.d.ts.map +1 -0
  24. package/dist/src/commands.js +160 -0
  25. package/dist/src/commands.js.map +1 -0
  26. package/dist/src/config-schema.d.ts +356 -0
  27. package/dist/src/config-schema.d.ts.map +1 -0
  28. package/dist/src/config-schema.js +43 -0
  29. package/dist/src/config-schema.js.map +1 -0
  30. package/dist/src/config.d.ts +11 -0
  31. package/dist/src/config.d.ts.map +1 -0
  32. package/dist/src/config.js +50 -0
  33. package/dist/src/config.js.map +1 -0
  34. package/dist/src/dedup.d.ts +22 -0
  35. package/dist/src/dedup.d.ts.map +1 -0
  36. package/dist/src/dedup.js +49 -0
  37. package/dist/src/dedup.js.map +1 -0
  38. package/dist/src/group-access.d.ts +52 -0
  39. package/dist/src/group-access.d.ts.map +1 -0
  40. package/dist/src/group-access.js +180 -0
  41. package/dist/src/group-access.js.map +1 -0
  42. package/dist/src/history-cache.d.ts +41 -0
  43. package/dist/src/history-cache.d.ts.map +1 -0
  44. package/dist/src/history-cache.js +82 -0
  45. package/dist/src/history-cache.js.map +1 -0
  46. package/dist/src/i18n.d.ts +22 -0
  47. package/dist/src/i18n.d.ts.map +1 -0
  48. package/dist/src/i18n.js +175 -0
  49. package/dist/src/i18n.js.map +1 -0
  50. package/dist/src/inbound-handler.d.ts +92 -0
  51. package/dist/src/inbound-handler.d.ts.map +1 -0
  52. package/dist/src/inbound-handler.js +417 -0
  53. package/dist/src/inbound-handler.js.map +1 -0
  54. package/dist/src/media-service.d.ts +52 -0
  55. package/dist/src/media-service.d.ts.map +1 -0
  56. package/dist/src/media-service.js +423 -0
  57. package/dist/src/media-service.js.map +1 -0
  58. package/dist/src/message-utils.d.ts +34 -0
  59. package/dist/src/message-utils.d.ts.map +1 -0
  60. package/dist/src/message-utils.js +392 -0
  61. package/dist/src/message-utils.js.map +1 -0
  62. package/dist/src/polling-service.d.ts +39 -0
  63. package/dist/src/polling-service.d.ts.map +1 -0
  64. package/dist/src/polling-service.js +204 -0
  65. package/dist/src/polling-service.js.map +1 -0
  66. package/dist/src/rate-limiter.d.ts +22 -0
  67. package/dist/src/rate-limiter.d.ts.map +1 -0
  68. package/dist/src/rate-limiter.js +72 -0
  69. package/dist/src/rate-limiter.js.map +1 -0
  70. package/dist/src/runtime.d.ts +106 -0
  71. package/dist/src/runtime.d.ts.map +1 -0
  72. package/dist/src/runtime.js +11 -0
  73. package/dist/src/runtime.js.map +1 -0
  74. package/dist/src/send-service.d.ts +66 -0
  75. package/dist/src/send-service.d.ts.map +1 -0
  76. package/dist/src/send-service.js +177 -0
  77. package/dist/src/send-service.js.map +1 -0
  78. package/dist/src/state-paths.d.ts +3 -0
  79. package/dist/src/state-paths.d.ts.map +1 -0
  80. package/dist/src/state-paths.js +23 -0
  81. package/dist/src/state-paths.js.map +1 -0
  82. package/dist/src/types.d.ts +381 -0
  83. package/dist/src/types.d.ts.map +1 -0
  84. package/dist/src/types.js +3 -0
  85. package/dist/src/types.js.map +1 -0
  86. package/dist/src/utils.d.ts +60 -0
  87. package/dist/src/utils.d.ts.map +1 -0
  88. package/dist/src/utils.js +131 -0
  89. package/dist/src/utils.js.map +1 -0
  90. package/index.ts +1 -1
  91. package/openclaw.plugin.json +278 -1
  92. package/package.json +11 -2
  93. package/src/api.ts +0 -3
  94. package/src/channel.ts +76 -73
  95. package/src/config-schema.ts +1 -2
  96. package/src/config.ts +6 -8
  97. package/src/group-access.ts +1 -8
  98. package/src/inbound-handler.ts +128 -15
  99. package/src/media-service.ts +160 -45
  100. package/src/polling-service.ts +2 -3
  101. package/src/send-service.ts +4 -3
  102. package/src/state-paths.ts +4 -0
  103. package/src/types.ts +1 -2
  104. package/src/utils.ts +31 -4
@@ -0,0 +1,356 @@
1
+ import { z } from 'zod';
2
+ export declare const Bitrix24ConfigSchema: z.ZodObject<{
3
+ enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
4
+ webhookUrl: z.ZodOptional<z.ZodString>;
5
+ botToken: z.ZodOptional<z.ZodString>;
6
+ botName: z.ZodDefault<z.ZodOptional<z.ZodString>>;
7
+ botCode: z.ZodOptional<z.ZodString>;
8
+ botAvatar: z.ZodOptional<z.ZodString>;
9
+ allowFrom: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
10
+ callbackUrl: z.ZodOptional<z.ZodString>;
11
+ eventMode: z.ZodOptional<z.ZodEnum<["fetch", "webhook"]>>;
12
+ agentMode: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
13
+ pollingIntervalMs: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
14
+ pollingFastIntervalMs: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
15
+ dmPolicy: z.ZodDefault<z.ZodOptional<z.ZodEnum<["pairing", "webhookUser", "allowlist", "open"]>>>;
16
+ groupPolicy: z.ZodDefault<z.ZodOptional<z.ZodEnum<["disabled", "webhookUser", "pairing", "allowlist", "open"]>>>;
17
+ groupAllowFrom: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
18
+ requireMention: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
19
+ historyLimit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
20
+ groups: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
21
+ groupPolicy: z.ZodOptional<z.ZodEnum<["disabled", "webhookUser", "pairing", "allowlist", "open"]>>;
22
+ requireMention: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
23
+ allowFrom: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
24
+ watch: z.ZodOptional<z.ZodArray<z.ZodObject<{
25
+ userId: z.ZodString;
26
+ topics: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
27
+ mode: z.ZodOptional<z.ZodEnum<["reply", "notifyOwnerDm"]>>;
28
+ }, "strip", z.ZodTypeAny, {
29
+ userId: string;
30
+ topics?: string[] | undefined;
31
+ mode?: "reply" | "notifyOwnerDm" | undefined;
32
+ }, {
33
+ userId: string;
34
+ topics?: string[] | undefined;
35
+ mode?: "reply" | "notifyOwnerDm" | undefined;
36
+ }>, "many">>;
37
+ }, "strip", z.ZodTypeAny, {
38
+ requireMention: boolean;
39
+ groupPolicy?: "pairing" | "webhookUser" | "allowlist" | "open" | "disabled" | undefined;
40
+ allowFrom?: string[] | undefined;
41
+ watch?: {
42
+ userId: string;
43
+ topics?: string[] | undefined;
44
+ mode?: "reply" | "notifyOwnerDm" | undefined;
45
+ }[] | undefined;
46
+ }, {
47
+ groupPolicy?: "pairing" | "webhookUser" | "allowlist" | "open" | "disabled" | undefined;
48
+ requireMention?: boolean | undefined;
49
+ allowFrom?: string[] | undefined;
50
+ watch?: {
51
+ userId: string;
52
+ topics?: string[] | undefined;
53
+ mode?: "reply" | "notifyOwnerDm" | undefined;
54
+ }[] | undefined;
55
+ }>>>;
56
+ agentWatch: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
57
+ userId: z.ZodString;
58
+ topics: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
59
+ mode: z.ZodOptional<z.ZodEnum<["notifyOwnerDm"]>>;
60
+ }, "strip", z.ZodTypeAny, {
61
+ userId: string;
62
+ topics?: string[] | undefined;
63
+ mode?: "notifyOwnerDm" | undefined;
64
+ }, {
65
+ userId: string;
66
+ topics?: string[] | undefined;
67
+ mode?: "notifyOwnerDm" | undefined;
68
+ }>, "many">>>;
69
+ showTyping: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
70
+ verboseLog: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
71
+ } & {
72
+ accounts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
73
+ enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
74
+ webhookUrl: z.ZodOptional<z.ZodString>;
75
+ botToken: z.ZodOptional<z.ZodString>;
76
+ botName: z.ZodDefault<z.ZodOptional<z.ZodString>>;
77
+ botCode: z.ZodOptional<z.ZodString>;
78
+ botAvatar: z.ZodOptional<z.ZodString>;
79
+ allowFrom: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
80
+ callbackUrl: z.ZodOptional<z.ZodString>;
81
+ eventMode: z.ZodOptional<z.ZodEnum<["fetch", "webhook"]>>;
82
+ agentMode: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
83
+ pollingIntervalMs: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
84
+ pollingFastIntervalMs: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
85
+ dmPolicy: z.ZodDefault<z.ZodOptional<z.ZodEnum<["pairing", "webhookUser", "allowlist", "open"]>>>;
86
+ groupPolicy: z.ZodDefault<z.ZodOptional<z.ZodEnum<["disabled", "webhookUser", "pairing", "allowlist", "open"]>>>;
87
+ groupAllowFrom: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
88
+ requireMention: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
89
+ historyLimit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
90
+ groups: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
91
+ groupPolicy: z.ZodOptional<z.ZodEnum<["disabled", "webhookUser", "pairing", "allowlist", "open"]>>;
92
+ requireMention: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
93
+ allowFrom: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
94
+ watch: z.ZodOptional<z.ZodArray<z.ZodObject<{
95
+ userId: z.ZodString;
96
+ topics: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
97
+ mode: z.ZodOptional<z.ZodEnum<["reply", "notifyOwnerDm"]>>;
98
+ }, "strip", z.ZodTypeAny, {
99
+ userId: string;
100
+ topics?: string[] | undefined;
101
+ mode?: "reply" | "notifyOwnerDm" | undefined;
102
+ }, {
103
+ userId: string;
104
+ topics?: string[] | undefined;
105
+ mode?: "reply" | "notifyOwnerDm" | undefined;
106
+ }>, "many">>;
107
+ }, "strip", z.ZodTypeAny, {
108
+ requireMention: boolean;
109
+ groupPolicy?: "pairing" | "webhookUser" | "allowlist" | "open" | "disabled" | undefined;
110
+ allowFrom?: string[] | undefined;
111
+ watch?: {
112
+ userId: string;
113
+ topics?: string[] | undefined;
114
+ mode?: "reply" | "notifyOwnerDm" | undefined;
115
+ }[] | undefined;
116
+ }, {
117
+ groupPolicy?: "pairing" | "webhookUser" | "allowlist" | "open" | "disabled" | undefined;
118
+ requireMention?: boolean | undefined;
119
+ allowFrom?: string[] | undefined;
120
+ watch?: {
121
+ userId: string;
122
+ topics?: string[] | undefined;
123
+ mode?: "reply" | "notifyOwnerDm" | undefined;
124
+ }[] | undefined;
125
+ }>>>;
126
+ agentWatch: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
127
+ userId: z.ZodString;
128
+ topics: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
129
+ mode: z.ZodOptional<z.ZodEnum<["notifyOwnerDm"]>>;
130
+ }, "strip", z.ZodTypeAny, {
131
+ userId: string;
132
+ topics?: string[] | undefined;
133
+ mode?: "notifyOwnerDm" | undefined;
134
+ }, {
135
+ userId: string;
136
+ topics?: string[] | undefined;
137
+ mode?: "notifyOwnerDm" | undefined;
138
+ }>, "many">>>;
139
+ showTyping: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
140
+ verboseLog: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
141
+ }, "strip", z.ZodTypeAny, {
142
+ groupPolicy: "pairing" | "webhookUser" | "allowlist" | "open" | "disabled";
143
+ requireMention: boolean;
144
+ enabled: boolean;
145
+ botName: string;
146
+ agentMode: boolean;
147
+ pollingIntervalMs: number;
148
+ pollingFastIntervalMs: number;
149
+ dmPolicy: "pairing" | "webhookUser" | "allowlist" | "open";
150
+ historyLimit: number;
151
+ showTyping: boolean;
152
+ verboseLog: boolean;
153
+ allowFrom?: string[] | undefined;
154
+ webhookUrl?: string | undefined;
155
+ botToken?: string | undefined;
156
+ botCode?: string | undefined;
157
+ botAvatar?: string | undefined;
158
+ callbackUrl?: string | undefined;
159
+ eventMode?: "fetch" | "webhook" | undefined;
160
+ groupAllowFrom?: string[] | undefined;
161
+ groups?: Record<string, {
162
+ requireMention: boolean;
163
+ groupPolicy?: "pairing" | "webhookUser" | "allowlist" | "open" | "disabled" | undefined;
164
+ allowFrom?: string[] | undefined;
165
+ watch?: {
166
+ userId: string;
167
+ topics?: string[] | undefined;
168
+ mode?: "reply" | "notifyOwnerDm" | undefined;
169
+ }[] | undefined;
170
+ }> | undefined;
171
+ agentWatch?: Record<string, {
172
+ userId: string;
173
+ topics?: string[] | undefined;
174
+ mode?: "notifyOwnerDm" | undefined;
175
+ }[]> | undefined;
176
+ }, {
177
+ groupPolicy?: "pairing" | "webhookUser" | "allowlist" | "open" | "disabled" | undefined;
178
+ requireMention?: boolean | undefined;
179
+ allowFrom?: string[] | undefined;
180
+ enabled?: boolean | undefined;
181
+ webhookUrl?: string | undefined;
182
+ botToken?: string | undefined;
183
+ botName?: string | undefined;
184
+ botCode?: string | undefined;
185
+ botAvatar?: string | undefined;
186
+ callbackUrl?: string | undefined;
187
+ eventMode?: "fetch" | "webhook" | undefined;
188
+ agentMode?: boolean | undefined;
189
+ pollingIntervalMs?: number | undefined;
190
+ pollingFastIntervalMs?: number | undefined;
191
+ dmPolicy?: "pairing" | "webhookUser" | "allowlist" | "open" | undefined;
192
+ groupAllowFrom?: string[] | undefined;
193
+ historyLimit?: number | undefined;
194
+ groups?: Record<string, {
195
+ groupPolicy?: "pairing" | "webhookUser" | "allowlist" | "open" | "disabled" | undefined;
196
+ requireMention?: boolean | undefined;
197
+ allowFrom?: string[] | undefined;
198
+ watch?: {
199
+ userId: string;
200
+ topics?: string[] | undefined;
201
+ mode?: "reply" | "notifyOwnerDm" | undefined;
202
+ }[] | undefined;
203
+ }> | undefined;
204
+ agentWatch?: Record<string, {
205
+ userId: string;
206
+ topics?: string[] | undefined;
207
+ mode?: "notifyOwnerDm" | undefined;
208
+ }[]> | undefined;
209
+ showTyping?: boolean | undefined;
210
+ verboseLog?: boolean | undefined;
211
+ }>>>;
212
+ }, "strip", z.ZodTypeAny, {
213
+ groupPolicy: "pairing" | "webhookUser" | "allowlist" | "open" | "disabled";
214
+ requireMention: boolean;
215
+ enabled: boolean;
216
+ botName: string;
217
+ agentMode: boolean;
218
+ pollingIntervalMs: number;
219
+ pollingFastIntervalMs: number;
220
+ dmPolicy: "pairing" | "webhookUser" | "allowlist" | "open";
221
+ historyLimit: number;
222
+ showTyping: boolean;
223
+ verboseLog: boolean;
224
+ accounts?: Record<string, {
225
+ groupPolicy: "pairing" | "webhookUser" | "allowlist" | "open" | "disabled";
226
+ requireMention: boolean;
227
+ enabled: boolean;
228
+ botName: string;
229
+ agentMode: boolean;
230
+ pollingIntervalMs: number;
231
+ pollingFastIntervalMs: number;
232
+ dmPolicy: "pairing" | "webhookUser" | "allowlist" | "open";
233
+ historyLimit: number;
234
+ showTyping: boolean;
235
+ verboseLog: boolean;
236
+ allowFrom?: string[] | undefined;
237
+ webhookUrl?: string | undefined;
238
+ botToken?: string | undefined;
239
+ botCode?: string | undefined;
240
+ botAvatar?: string | undefined;
241
+ callbackUrl?: string | undefined;
242
+ eventMode?: "fetch" | "webhook" | undefined;
243
+ groupAllowFrom?: string[] | undefined;
244
+ groups?: Record<string, {
245
+ requireMention: boolean;
246
+ groupPolicy?: "pairing" | "webhookUser" | "allowlist" | "open" | "disabled" | undefined;
247
+ allowFrom?: string[] | undefined;
248
+ watch?: {
249
+ userId: string;
250
+ topics?: string[] | undefined;
251
+ mode?: "reply" | "notifyOwnerDm" | undefined;
252
+ }[] | undefined;
253
+ }> | undefined;
254
+ agentWatch?: Record<string, {
255
+ userId: string;
256
+ topics?: string[] | undefined;
257
+ mode?: "notifyOwnerDm" | undefined;
258
+ }[]> | undefined;
259
+ }> | undefined;
260
+ allowFrom?: string[] | undefined;
261
+ webhookUrl?: string | undefined;
262
+ botToken?: string | undefined;
263
+ botCode?: string | undefined;
264
+ botAvatar?: string | undefined;
265
+ callbackUrl?: string | undefined;
266
+ eventMode?: "fetch" | "webhook" | undefined;
267
+ groupAllowFrom?: string[] | undefined;
268
+ groups?: Record<string, {
269
+ requireMention: boolean;
270
+ groupPolicy?: "pairing" | "webhookUser" | "allowlist" | "open" | "disabled" | undefined;
271
+ allowFrom?: string[] | undefined;
272
+ watch?: {
273
+ userId: string;
274
+ topics?: string[] | undefined;
275
+ mode?: "reply" | "notifyOwnerDm" | undefined;
276
+ }[] | undefined;
277
+ }> | undefined;
278
+ agentWatch?: Record<string, {
279
+ userId: string;
280
+ topics?: string[] | undefined;
281
+ mode?: "notifyOwnerDm" | undefined;
282
+ }[]> | undefined;
283
+ }, {
284
+ accounts?: Record<string, {
285
+ groupPolicy?: "pairing" | "webhookUser" | "allowlist" | "open" | "disabled" | undefined;
286
+ requireMention?: boolean | undefined;
287
+ allowFrom?: string[] | undefined;
288
+ enabled?: boolean | undefined;
289
+ webhookUrl?: string | undefined;
290
+ botToken?: string | undefined;
291
+ botName?: string | undefined;
292
+ botCode?: string | undefined;
293
+ botAvatar?: string | undefined;
294
+ callbackUrl?: string | undefined;
295
+ eventMode?: "fetch" | "webhook" | undefined;
296
+ agentMode?: boolean | undefined;
297
+ pollingIntervalMs?: number | undefined;
298
+ pollingFastIntervalMs?: number | undefined;
299
+ dmPolicy?: "pairing" | "webhookUser" | "allowlist" | "open" | undefined;
300
+ groupAllowFrom?: string[] | undefined;
301
+ historyLimit?: number | undefined;
302
+ groups?: Record<string, {
303
+ groupPolicy?: "pairing" | "webhookUser" | "allowlist" | "open" | "disabled" | undefined;
304
+ requireMention?: boolean | undefined;
305
+ allowFrom?: string[] | undefined;
306
+ watch?: {
307
+ userId: string;
308
+ topics?: string[] | undefined;
309
+ mode?: "reply" | "notifyOwnerDm" | undefined;
310
+ }[] | undefined;
311
+ }> | undefined;
312
+ agentWatch?: Record<string, {
313
+ userId: string;
314
+ topics?: string[] | undefined;
315
+ mode?: "notifyOwnerDm" | undefined;
316
+ }[]> | undefined;
317
+ showTyping?: boolean | undefined;
318
+ verboseLog?: boolean | undefined;
319
+ }> | undefined;
320
+ groupPolicy?: "pairing" | "webhookUser" | "allowlist" | "open" | "disabled" | undefined;
321
+ requireMention?: boolean | undefined;
322
+ allowFrom?: string[] | undefined;
323
+ enabled?: boolean | undefined;
324
+ webhookUrl?: string | undefined;
325
+ botToken?: string | undefined;
326
+ botName?: string | undefined;
327
+ botCode?: string | undefined;
328
+ botAvatar?: string | undefined;
329
+ callbackUrl?: string | undefined;
330
+ eventMode?: "fetch" | "webhook" | undefined;
331
+ agentMode?: boolean | undefined;
332
+ pollingIntervalMs?: number | undefined;
333
+ pollingFastIntervalMs?: number | undefined;
334
+ dmPolicy?: "pairing" | "webhookUser" | "allowlist" | "open" | undefined;
335
+ groupAllowFrom?: string[] | undefined;
336
+ historyLimit?: number | undefined;
337
+ groups?: Record<string, {
338
+ groupPolicy?: "pairing" | "webhookUser" | "allowlist" | "open" | "disabled" | undefined;
339
+ requireMention?: boolean | undefined;
340
+ allowFrom?: string[] | undefined;
341
+ watch?: {
342
+ userId: string;
343
+ topics?: string[] | undefined;
344
+ mode?: "reply" | "notifyOwnerDm" | undefined;
345
+ }[] | undefined;
346
+ }> | undefined;
347
+ agentWatch?: Record<string, {
348
+ userId: string;
349
+ topics?: string[] | undefined;
350
+ mode?: "notifyOwnerDm" | undefined;
351
+ }[]> | undefined;
352
+ showTyping?: boolean | undefined;
353
+ verboseLog?: boolean | undefined;
354
+ }>;
355
+ export type Bitrix24ConfigParsed = z.infer<typeof Bitrix24ConfigSchema>;
356
+ //# sourceMappingURL=config-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["../../src/config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA2CxB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE/B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { z } from 'zod';
2
+ const GroupSchema = z.object({
3
+ groupPolicy: z.enum(['disabled', 'webhookUser', 'pairing', 'allowlist', 'open']).optional(),
4
+ requireMention: z.boolean().optional().default(true),
5
+ allowFrom: z.array(z.string()).optional(),
6
+ watch: z.array(z.object({
7
+ userId: z.string().min(1),
8
+ topics: z.array(z.string().min(1)).optional(),
9
+ mode: z.enum(['reply', 'notifyOwnerDm']).optional(),
10
+ })).optional(),
11
+ });
12
+ const AgentWatchRuleSchema = z.object({
13
+ userId: z.string().min(1),
14
+ topics: z.array(z.string().min(1)).optional(),
15
+ mode: z.enum(['notifyOwnerDm']).optional(),
16
+ });
17
+ const AccountSchema = z.object({
18
+ enabled: z.boolean().optional().default(true),
19
+ webhookUrl: z.string().url().optional(),
20
+ botToken: z.string().optional(),
21
+ botName: z.string().optional().default('OpenClaw'),
22
+ botCode: z.string().optional(),
23
+ botAvatar: z.string().optional(),
24
+ allowFrom: z.array(z.string()).optional(),
25
+ callbackUrl: z.string().url().optional(),
26
+ eventMode: z.enum(['fetch', 'webhook']).optional(),
27
+ agentMode: z.boolean().optional().default(false),
28
+ pollingIntervalMs: z.number().int().min(500).optional().default(3000),
29
+ pollingFastIntervalMs: z.number().int().min(50).optional().default(100),
30
+ dmPolicy: z.enum(['pairing', 'webhookUser', 'allowlist', 'open']).optional().default('webhookUser'),
31
+ groupPolicy: z.enum(['disabled', 'webhookUser', 'pairing', 'allowlist', 'open']).optional().default('webhookUser'),
32
+ groupAllowFrom: z.array(z.string()).optional(),
33
+ requireMention: z.boolean().optional().default(true),
34
+ historyLimit: z.number().int().min(0).optional().default(100),
35
+ groups: z.record(z.string(), GroupSchema).optional(),
36
+ agentWatch: z.record(z.string(), z.array(AgentWatchRuleSchema)).optional(),
37
+ showTyping: z.boolean().optional().default(true),
38
+ verboseLog: z.boolean().optional().default(false),
39
+ });
40
+ export const Bitrix24ConfigSchema = AccountSchema.extend({
41
+ accounts: z.record(z.string(), AccountSchema).optional(),
42
+ });
43
+ //# sourceMappingURL=config-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../../src/config-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { Bitrix24AccountConfig } from './types.js';
2
+ export declare function getConfig(cfg: Record<string, unknown> | undefined, accountId?: string): Bitrix24AccountConfig;
3
+ export declare function isConfigured(cfg: Record<string, unknown> | undefined, accountId?: string): boolean;
4
+ export declare function listAccountIds(cfg: Record<string, unknown> | undefined): string[];
5
+ export declare function resolveAccount(cfg: Record<string, unknown> | undefined, accountId?: string | null): {
6
+ accountId: string;
7
+ config: Bitrix24AccountConfig;
8
+ configured: boolean;
9
+ enabled: boolean;
10
+ };
11
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAwB,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAK9E,wBAAgB,SAAS,CACvB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACxC,SAAS,CAAC,EAAE,MAAM,GACjB,qBAAqB,CAUvB;AAED,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACxC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAGT;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,MAAM,EAAE,CAajF;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACxC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB,CAmBA"}
@@ -0,0 +1,50 @@
1
+ import { Bitrix24ConfigSchema } from './config-schema.js';
2
+ const DEFAULT_ACCOUNT_ID = 'default';
3
+ export function getConfig(cfg, accountId) {
4
+ const b24 = cfg
5
+ ?.channels?.bitrix24;
6
+ if (!b24)
7
+ return {};
8
+ if (accountId && accountId !== DEFAULT_ACCOUNT_ID && b24.accounts?.[accountId]) {
9
+ const { accounts: _, ...base } = b24;
10
+ return { ...base, ...b24.accounts[accountId] };
11
+ }
12
+ return b24;
13
+ }
14
+ export function isConfigured(cfg, accountId) {
15
+ const config = getConfig(cfg, accountId);
16
+ return Boolean(config.webhookUrl);
17
+ }
18
+ export function listAccountIds(cfg) {
19
+ const b24 = cfg
20
+ ?.channels?.bitrix24;
21
+ if (!b24)
22
+ return [];
23
+ const ids = [];
24
+ if (b24.webhookUrl)
25
+ ids.push(DEFAULT_ACCOUNT_ID);
26
+ if (b24.accounts) {
27
+ for (const id of Object.keys(b24.accounts)) {
28
+ ids.push(id);
29
+ }
30
+ }
31
+ return ids;
32
+ }
33
+ export function resolveAccount(cfg, accountId) {
34
+ const id = accountId || DEFAULT_ACCOUNT_ID;
35
+ let config = getConfig(cfg, id);
36
+ // Validate and normalize config against Zod schema.
37
+ const result = Bitrix24ConfigSchema.safeParse(config);
38
+ if (!result.success) {
39
+ const issues = result.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`).join('; ');
40
+ throw new Error(`[bitrix24] Invalid config for account "${id}": ${issues}`);
41
+ }
42
+ config = result.data;
43
+ return {
44
+ accountId: id,
45
+ config,
46
+ configured: Boolean(config.webhookUrl),
47
+ enabled: config.enabled !== false,
48
+ };
49
+ }
50
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAErC,MAAM,UAAU,SAAS,CACvB,GAAwC,EACxC,SAAkB;IAElB,MAAM,GAAG,GAAI,GAA0D;QACrE,EAAE,QAAQ,EAAE,QAAQ,CAAC;IACvB,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IAEpB,IAAI,SAAS,IAAI,SAAS,KAAK,kBAAkB,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/E,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;QACrC,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;IACjD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,GAAwC,EACxC,SAAkB;IAElB,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACzC,OAAO,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAwC;IACrE,MAAM,GAAG,GAAI,GAA0D;QACrE,EAAE,QAAQ,EAAE,QAAQ,CAAC;IACvB,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IAEpB,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,GAAG,CAAC,UAAU;QAAE,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACjD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjB,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,GAAwC,EACxC,SAAyB;IAOzB,MAAM,EAAE,GAAG,SAAS,IAAI,kBAAkB,CAAC;IAC3C,IAAI,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAEhC,oDAAoD;IACpD,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9F,MAAM,IAAI,KAAK,CAAC,0CAA0C,EAAE,MAAM,MAAM,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;IAErB,OAAO;QACL,SAAS,EAAE,EAAE;QACb,MAAM;QACN,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;QACtC,OAAO,EAAE,MAAM,CAAC,OAAO,KAAK,KAAK;KAClC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Deduplication for incoming webhook events.
3
+ * B24 may retry webhooks if it doesn't receive a timely 200 response.
4
+ */
5
+ export declare class Dedup {
6
+ private seen;
7
+ private readonly ttlMs;
8
+ private cleanupTimer;
9
+ constructor(opts?: {
10
+ ttlMs?: number;
11
+ });
12
+ /**
13
+ * Check if this message ID has been seen before.
14
+ * If not, marks it as seen and returns false.
15
+ * If yes, returns true (duplicate).
16
+ */
17
+ isDuplicate(messageId: string | number): boolean;
18
+ private cleanup;
19
+ get size(): number;
20
+ destroy(): void;
21
+ }
22
+ //# sourceMappingURL=dedup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dedup.d.ts","sourceRoot":"","sources":["../../src/dedup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,IAAI,CAA6B;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,YAAY,CAA+C;gBAEvD,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO;IASzC;;;;OAIG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAShD,OAAO,CAAC,OAAO;IASf,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,OAAO,IAAI,IAAI;CAOhB"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Deduplication for incoming webhook events.
3
+ * B24 may retry webhooks if it doesn't receive a timely 200 response.
4
+ */
5
+ export class Dedup {
6
+ seen = new Map();
7
+ ttlMs;
8
+ cleanupTimer = null;
9
+ constructor(opts = {}) {
10
+ this.ttlMs = opts.ttlMs ?? 5 * 60 * 1000; // 5 minutes default
11
+ this.cleanupTimer = setInterval(() => this.cleanup(), this.ttlMs);
12
+ // Don't prevent process exit if destroy() isn't called
13
+ if (this.cleanupTimer && typeof this.cleanupTimer === 'object' && 'unref' in this.cleanupTimer) {
14
+ this.cleanupTimer.unref();
15
+ }
16
+ }
17
+ /**
18
+ * Check if this message ID has been seen before.
19
+ * If not, marks it as seen and returns false.
20
+ * If yes, returns true (duplicate).
21
+ */
22
+ isDuplicate(messageId) {
23
+ const key = String(messageId);
24
+ if (this.seen.has(key)) {
25
+ return true;
26
+ }
27
+ this.seen.set(key, Date.now());
28
+ return false;
29
+ }
30
+ cleanup() {
31
+ const now = Date.now();
32
+ for (const [key, ts] of this.seen) {
33
+ if (now - ts > this.ttlMs) {
34
+ this.seen.delete(key);
35
+ }
36
+ }
37
+ }
38
+ get size() {
39
+ return this.seen.size;
40
+ }
41
+ destroy() {
42
+ if (this.cleanupTimer) {
43
+ clearInterval(this.cleanupTimer);
44
+ this.cleanupTimer = null;
45
+ }
46
+ this.seen.clear();
47
+ }
48
+ }
49
+ //# sourceMappingURL=dedup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dedup.js","sourceRoot":"","sources":["../../src/dedup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,KAAK;IACR,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxB,KAAK,CAAS;IACvB,YAAY,GAA0C,IAAI,CAAC;IAEnE,YAAY,OAA2B,EAAE;QACvC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,oBAAoB;QAC9D,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAClE,uDAAuD;QACvD,IAAI,IAAI,CAAC,YAAY,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC/F,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,SAA0B;QACpC,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,OAAO;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC1B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;CACF"}
@@ -0,0 +1,52 @@
1
+ import type { Bitrix24AccountConfig, Bitrix24AgentWatchConfig, Bitrix24GroupConfig, Bitrix24GroupPolicy, Bitrix24GroupWatchConfig } from './types.js';
2
+ import type { PluginRuntime, ChannelPairingAdapter } from './runtime.js';
3
+ import type { AccessResult } from './access-control.js';
4
+ export interface ResolvedBitrix24GroupAccess {
5
+ groupPolicy: Bitrix24GroupPolicy;
6
+ requireMention: boolean;
7
+ senderAllowFrom: string[];
8
+ watch: Bitrix24GroupWatchConfig[];
9
+ matchedGroupKey?: string;
10
+ matchedGroupConfig?: Bitrix24GroupConfig;
11
+ groupAllowed: boolean;
12
+ }
13
+ export declare function normalizeGroupEntry(entry: string): string;
14
+ export declare function normalizeGroupAllowList(entries: string[] | undefined): string[];
15
+ export declare function buildGroupMatchKeys(params: {
16
+ dialogId?: string;
17
+ chatId?: string;
18
+ }): string[];
19
+ export declare function resolveGroupAccess(params: {
20
+ config: Bitrix24AccountConfig;
21
+ dialogId?: string;
22
+ chatId?: string;
23
+ }): ResolvedBitrix24GroupAccess;
24
+ export declare function resolveAgentWatchRules(params: {
25
+ config: Bitrix24AccountConfig;
26
+ dialogId?: string;
27
+ chatId?: string;
28
+ }): Bitrix24AgentWatchConfig[];
29
+ export declare function checkGroupAccessPassive(params: {
30
+ senderId: string;
31
+ dialogId?: string;
32
+ chatId?: string;
33
+ config: Bitrix24AccountConfig;
34
+ runtime: PluginRuntime;
35
+ accountId: string;
36
+ logger?: {
37
+ debug: (...args: unknown[]) => void;
38
+ };
39
+ }): Promise<AccessResult>;
40
+ export declare function checkGroupAccessWithPairing(params: {
41
+ senderId: string;
42
+ dialogId?: string;
43
+ chatId?: string;
44
+ config: Bitrix24AccountConfig;
45
+ runtime: PluginRuntime;
46
+ accountId: string;
47
+ pairingAdapter: ChannelPairingAdapter;
48
+ logger?: {
49
+ debug: (...args: unknown[]) => void;
50
+ };
51
+ }): Promise<AccessResult>;
52
+ //# sourceMappingURL=group-access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-access.d.ts","sourceRoot":"","sources":["../../src/group-access.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,wBAAwB,EACxB,mBAAmB,EACnB,mBAAmB,EACnB,wBAAwB,EACzB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAQxD,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,mBAAmB,CAAC;IACjC,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,KAAK,EAAE,wBAAwB,EAAE,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,mBAAmB,CAAC;IACzC,YAAY,EAAE,OAAO,CAAC;CACvB;AAcD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CAU/E;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,MAAM,EAAE,CAqBX;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,2BAA2B,CAkD9B;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,wBAAwB,EAAE,CAuB7B;AAED,wBAAsB,uBAAuB,CAAC,MAAM,EAAE;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;KAAE,CAAC;CAClD,GAAG,OAAO,CAAC,YAAY,CAAC,CA4CxB;AAED,wBAAsB,2BAA2B,CAAC,MAAM,EAAE;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,qBAAqB,CAAC;IACtC,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;KAAE,CAAC;CAClD,GAAG,OAAO,CAAC,YAAY,CAAC,CA2CxB"}