@chatbotkit/cli 1.23.0 → 1.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -44,49 +44,342 @@ export function replaceEnvVars(value) {
44
44
  return value;
45
45
  }
46
46
  export const BasicResourceConfigSchema = z.object({
47
- type: z.string(),
48
47
  slug: z.string().optional(),
49
48
  id: z.string().optional(),
50
- name: z.string(),
51
- description: z.string().optional(),
52
- properties: z.record(z.unknown()),
49
+ });
50
+ export const BlueprintResourceConfigSchema = BasicResourceConfigSchema.extend({
51
+ type: z.literal('blueprint'),
52
+ properties: z.object({
53
+ name: z.string().optional(),
54
+ description: z.string().optional(),
55
+ meta: z.record(z.unknown()).optional(),
56
+ visibility: z.enum(['private', 'protected', 'public']).optional(),
57
+ }),
53
58
  });
54
59
  export const BotResourceConfigSchema = BasicResourceConfigSchema.extend({
55
60
  type: z.literal('bot'),
56
61
  properties: z.object({
62
+ name: z.string().optional(),
63
+ description: z.string().optional(),
64
+ meta: z.record(z.unknown()).optional(),
57
65
  model: z.string().optional(),
58
66
  backstory: z.string().optional(),
59
67
  datasetId: z.string().optional(),
60
68
  skillsetId: z.string().optional(),
61
69
  moderation: z.boolean().optional(),
62
70
  privacy: z.boolean().optional(),
71
+ blueprintId: z.string().optional(),
72
+ visibility: z.enum(['private', 'protected', 'public']).optional(),
63
73
  }),
64
74
  });
65
75
  export const DatasetResourceConfigSchema = BasicResourceConfigSchema.extend({
66
76
  type: z.literal('dataset'),
67
- properties: z.object({}),
77
+ properties: z.object({
78
+ name: z.string().optional(),
79
+ description: z.string().optional(),
80
+ meta: z.record(z.unknown()).optional(),
81
+ blueprintId: z.string().optional(),
82
+ store: z.string().optional(),
83
+ reranker: z.string().optional(),
84
+ recordMaxTokens: z.number().optional(),
85
+ searchMinScore: z.number().optional(),
86
+ searchMaxRecords: z.number().optional(),
87
+ searchMaxTokens: z.number().optional(),
88
+ matchInstruction: z.string().optional(),
89
+ mismatchInstruction: z.string().optional(),
90
+ separators: z.string().optional(),
91
+ visibility: z.enum(['private', 'protected', 'public']).optional(),
92
+ }),
93
+ });
94
+ export const FileResourceConfigSchema = BasicResourceConfigSchema.extend({
95
+ type: z.literal('file'),
96
+ properties: z.object({
97
+ name: z.string().optional(),
98
+ description: z.string().optional(),
99
+ meta: z.record(z.unknown()).optional(),
100
+ blueprintId: z.string().optional(),
101
+ visibility: z.enum(['private', 'protected', 'public']).optional(),
102
+ }),
103
+ });
104
+ export const SecretResourceConfigSchema = BasicResourceConfigSchema.extend({
105
+ type: z.literal('secret'),
106
+ properties: z.object({
107
+ name: z.string().optional(),
108
+ description: z.string().optional(),
109
+ meta: z.record(z.unknown()).optional(),
110
+ blueprintId: z.string().optional(),
111
+ kind: z.enum(['shared', 'personal']).optional(),
112
+ type: z
113
+ .enum(['plain', 'basic', 'bearer', 'oauth', 'template', 'reference'])
114
+ .optional(),
115
+ value: z.string().optional(),
116
+ config: z.record(z.unknown()).optional(),
117
+ visibility: z.enum(['private', 'protected', 'public']).optional(),
118
+ }),
68
119
  });
69
120
  export const SkillsetResourceConfigSchema = BasicResourceConfigSchema.extend({
70
121
  type: z.literal('skillset'),
71
- properties: z.object({}),
122
+ properties: z.object({
123
+ name: z.string().optional(),
124
+ description: z.string().optional(),
125
+ meta: z.record(z.unknown()).optional(),
126
+ blueprintId: z.string().optional(),
127
+ visibility: z.enum(['private', 'protected', 'public']).optional(),
128
+ }),
72
129
  });
73
130
  export const WidgetIntegrationResourceConfigSchema = BasicResourceConfigSchema.extend({
74
131
  type: z.literal('widgetIntegration'),
75
- properties: z.object({}),
132
+ properties: z.object({
133
+ name: z.string().optional(),
134
+ description: z.string().optional(),
135
+ meta: z.record(z.unknown()).optional(),
136
+ blueprintId: z.string().optional(),
137
+ botId: z.string().optional(),
138
+ theme: z.string().optional(),
139
+ layout: z.string().optional(),
140
+ title: z.string().optional(),
141
+ intro: z.string().optional(),
142
+ initial: z.string().optional(),
143
+ placeholder: z.string().optional(),
144
+ origin: z.string().optional(),
145
+ sessionDuration: z.number().optional(),
146
+ language: z.string().optional(),
147
+ plugins: z.string().optional(),
148
+ stream: z.boolean().optional(),
149
+ verbose: z.boolean().optional(),
150
+ tools: z.boolean().optional(),
151
+ unfurl: z.boolean().optional(),
152
+ math: z.boolean().optional(),
153
+ carousel: z.boolean().optional(),
154
+ form: z.boolean().optional(),
155
+ attachments: z.boolean().optional(),
156
+ autoScroll: z.boolean().optional(),
157
+ startFirst: z.boolean().optional(),
158
+ contactCollection: z.boolean().optional(),
159
+ exportConversation: z.boolean().optional(),
160
+ restartConversation: z.boolean().optional(),
161
+ maximize: z.boolean().optional(),
162
+ messagePeek: z.boolean().optional(),
163
+ voiceIn: z.boolean().optional(),
164
+ voiceOut: z.boolean().optional(),
165
+ poweredBy: z.boolean().optional(),
166
+ }),
76
167
  });
77
168
  export const SitemapIntegrationResourceConfigSchema = BasicResourceConfigSchema.extend({
78
169
  type: z.literal('sitemapIntegration'),
79
170
  properties: z.object({
80
- url: z.string().url(),
81
- datasetId: z.string(),
171
+ name: z.string().optional(),
172
+ description: z.string().optional(),
173
+ meta: z.record(z.unknown()).optional(),
174
+ url: z.string().optional(),
175
+ glob: z.string().optional(),
176
+ datasetId: z.string().optional(),
177
+ blueprintId: z.string().optional(),
178
+ selectors: z.string().optional(),
179
+ expiresIn: z.number().optional(),
180
+ javascript: z.boolean().optional(),
181
+ syncSchedule: z.string().optional(),
182
+ }),
183
+ });
184
+ export const SlackIntegrationResourceConfigSchema = BasicResourceConfigSchema.extend({
185
+ type: z.literal('slackIntegration'),
186
+ properties: z.object({
187
+ name: z.string().optional(),
188
+ description: z.string().optional(),
189
+ meta: z.record(z.unknown()).optional(),
190
+ blueprintId: z.string().optional(),
191
+ botId: z.string().optional(),
192
+ signingSecret: z.string().optional(),
193
+ botToken: z.string().optional(),
194
+ userToken: z.string().optional(),
195
+ contactCollection: z.boolean().optional(),
196
+ sessionDuration: z.number().optional(),
197
+ attachments: z.boolean().optional(),
198
+ references: z.boolean().optional(),
199
+ ratings: z.boolean().optional(),
200
+ visibleMessages: z.number().optional(),
201
+ autoRespond: z.string().optional(),
202
+ }),
203
+ });
204
+ export const DiscordIntegrationResourceConfigSchema = BasicResourceConfigSchema.extend({
205
+ type: z.literal('discordIntegration'),
206
+ properties: z.object({
207
+ name: z.string().optional(),
208
+ description: z.string().optional(),
209
+ meta: z.record(z.unknown()).optional(),
210
+ blueprintId: z.string().optional(),
211
+ botId: z.string().optional(),
212
+ appId: z.string().optional(),
213
+ botToken: z.string().optional(),
214
+ publicKey: z.string().optional(),
215
+ handle: z.string().optional(),
216
+ ephemeral: z.boolean().optional(),
217
+ contactCollection: z.boolean().optional(),
218
+ sessionDuration: z.number().optional(),
219
+ attachments: z.boolean().optional(),
220
+ stream: z.boolean().optional(),
221
+ }),
222
+ });
223
+ export const TelegramIntegrationResourceConfigSchema = BasicResourceConfigSchema.extend({
224
+ type: z.literal('telegramIntegration'),
225
+ properties: z.object({
226
+ name: z.string().optional(),
227
+ description: z.string().optional(),
228
+ meta: z.record(z.unknown()).optional(),
229
+ blueprintId: z.string().optional(),
230
+ botId: z.string().optional(),
231
+ botToken: z.string().optional(),
232
+ contactCollection: z.boolean().optional(),
233
+ sessionDuration: z.number().optional(),
234
+ attachments: z.boolean().optional(),
235
+ }),
236
+ });
237
+ export const WhatsAppIntegrationResourceConfigSchema = BasicResourceConfigSchema.extend({
238
+ type: z.literal('whatsappIntegration'),
239
+ properties: z.object({
240
+ name: z.string().optional(),
241
+ description: z.string().optional(),
242
+ meta: z.record(z.unknown()).optional(),
243
+ blueprintId: z.string().optional(),
244
+ botId: z.string().optional(),
245
+ phoneNumberId: z.string().optional(),
246
+ accessToken: z.string().optional(),
247
+ contactCollection: z.boolean().optional(),
248
+ sessionDuration: z.number().optional(),
249
+ attachments: z.boolean().optional(),
250
+ }),
251
+ });
252
+ export const MessengerIntegrationResourceConfigSchema = BasicResourceConfigSchema.extend({
253
+ type: z.literal('messengerIntegration'),
254
+ properties: z.object({
255
+ name: z.string().optional(),
256
+ description: z.string().optional(),
257
+ meta: z.record(z.unknown()).optional(),
258
+ blueprintId: z.string().optional(),
259
+ botId: z.string().optional(),
260
+ accessToken: z.string().optional(),
261
+ contactCollection: z.boolean().optional(),
262
+ sessionDuration: z.number().optional(),
263
+ attachments: z.boolean().optional(),
264
+ }),
265
+ });
266
+ export const NotionIntegrationResourceConfigSchema = BasicResourceConfigSchema.extend({
267
+ type: z.literal('notionIntegration'),
268
+ properties: z.object({
269
+ name: z.string().optional(),
270
+ description: z.string().optional(),
271
+ meta: z.record(z.unknown()).optional(),
272
+ blueprintId: z.string().optional(),
273
+ datasetId: z.string().optional(),
274
+ token: z.string().optional(),
275
+ syncSchedule: z.string().optional(),
276
+ expiresIn: z.number().optional(),
277
+ }),
278
+ });
279
+ export const EmailIntegrationResourceConfigSchema = BasicResourceConfigSchema.extend({
280
+ type: z.literal('emailIntegration'),
281
+ properties: z.object({
282
+ name: z.string().optional(),
283
+ description: z.string().optional(),
284
+ meta: z.record(z.unknown()).optional(),
285
+ blueprintId: z.string().optional(),
286
+ botId: z.string().optional(),
287
+ contactCollection: z.boolean().optional(),
288
+ sessionDuration: z.number().optional(),
289
+ attachments: z.boolean().optional(),
290
+ }),
291
+ });
292
+ export const TriggerIntegrationResourceConfigSchema = BasicResourceConfigSchema.extend({
293
+ type: z.literal('triggerIntegration'),
294
+ properties: z.object({
295
+ name: z.string().optional(),
296
+ description: z.string().optional(),
297
+ meta: z.record(z.unknown()).optional(),
298
+ blueprintId: z.string().optional(),
299
+ botId: z.string().optional(),
300
+ authenticate: z.boolean().optional(),
301
+ triggerSchedule: z
302
+ .enum([
303
+ 'never',
304
+ 'quarterhourly',
305
+ 'halfhourly',
306
+ 'hourly',
307
+ 'daily',
308
+ 'weekly',
309
+ 'monthly',
310
+ ])
311
+ .optional(),
312
+ sessionDuration: z.number().optional(),
313
+ }),
314
+ });
315
+ export const SupportIntegrationResourceConfigSchema = BasicResourceConfigSchema.extend({
316
+ type: z.literal('supportIntegration'),
317
+ properties: z.object({
318
+ name: z.string().optional(),
319
+ description: z.string().optional(),
320
+ meta: z.record(z.unknown()).optional(),
321
+ blueprintId: z.string().optional(),
322
+ botId: z.string().optional(),
323
+ email: z.string().optional(),
324
+ trigger: z.string().optional(),
325
+ }),
326
+ });
327
+ export const ExtractIntegrationResourceConfigSchema = BasicResourceConfigSchema.extend({
328
+ type: z.literal('extractIntegration'),
329
+ properties: z.object({
330
+ name: z.string().optional(),
331
+ description: z.string().optional(),
332
+ meta: z.record(z.unknown()).optional(),
333
+ blueprintId: z.string().optional(),
334
+ botId: z.string().optional(),
335
+ schema: z.record(z.unknown()).optional(),
336
+ request: z.string().optional(),
337
+ trigger: z.string().optional(),
338
+ }),
339
+ });
340
+ export const McpServerIntegrationResourceConfigSchema = BasicResourceConfigSchema.extend({
341
+ type: z.literal('mcpserverIntegration'),
342
+ properties: z.object({
343
+ name: z.string().optional(),
344
+ description: z.string().optional(),
345
+ meta: z.record(z.unknown()).optional(),
346
+ blueprintId: z.string().optional(),
347
+ skillsetId: z.string().optional(),
348
+ }),
349
+ });
350
+ export const TwilioIntegrationResourceConfigSchema = BasicResourceConfigSchema.extend({
351
+ type: z.literal('twilioIntegration'),
352
+ properties: z.object({
353
+ name: z.string().optional(),
354
+ description: z.string().optional(),
355
+ meta: z.record(z.unknown()).optional(),
356
+ blueprintId: z.string().optional(),
357
+ botId: z.string().optional(),
358
+ contactCollection: z.boolean().optional(),
359
+ sessionDuration: z.number().optional(),
82
360
  }),
83
361
  });
84
362
  export const ResourceConfigSchema = z.union([
363
+ BlueprintResourceConfigSchema,
85
364
  BotResourceConfigSchema,
86
365
  DatasetResourceConfigSchema,
366
+ FileResourceConfigSchema,
367
+ SecretResourceConfigSchema,
87
368
  SkillsetResourceConfigSchema,
88
369
  WidgetIntegrationResourceConfigSchema,
89
370
  SitemapIntegrationResourceConfigSchema,
371
+ SlackIntegrationResourceConfigSchema,
372
+ DiscordIntegrationResourceConfigSchema,
373
+ TelegramIntegrationResourceConfigSchema,
374
+ WhatsAppIntegrationResourceConfigSchema,
375
+ MessengerIntegrationResourceConfigSchema,
376
+ NotionIntegrationResourceConfigSchema,
377
+ EmailIntegrationResourceConfigSchema,
378
+ TriggerIntegrationResourceConfigSchema,
379
+ SupportIntegrationResourceConfigSchema,
380
+ ExtractIntegrationResourceConfigSchema,
381
+ McpServerIntegrationResourceConfigSchema,
382
+ TwilioIntegrationResourceConfigSchema,
90
383
  ]);
91
384
  export const SolutionConfigSchema = z.object({
92
385
  version: z.literal(1),
@@ -101,16 +394,19 @@ export class Resource {
101
394
  }
102
395
  get slug() {
103
396
  return (this.config.slug ??
104
- this.config.name.toLowerCase().replace(/\W/g, '_').replace(/_+/g, '_'));
397
+ (this.config.properties.name || 'unnamed')
398
+ .toLowerCase()
399
+ .replace(/\W/g, '_')
400
+ .replace(/_+/g, '_'));
105
401
  }
106
402
  get id() {
107
403
  return this.config.id;
108
404
  }
109
405
  get name() {
110
- return this.config.name;
406
+ return this.config.properties.name;
111
407
  }
112
408
  get description() {
113
- return this.config.description;
409
+ return this.config.properties.description;
114
410
  }
115
411
  get baseClient() {
116
412
  const client = new ChatBotKit({
@@ -122,24 +418,27 @@ export class Resource {
122
418
  get client() {
123
419
  throw new Error('Not implemented');
124
420
  }
421
+ get createProperties() {
422
+ return this.config.properties;
423
+ }
424
+ get updateProperties() {
425
+ return this.config.properties;
426
+ }
125
427
  async sync() {
126
428
  if (this.config.id) {
127
- await this.client.update(this.config.id, {
128
- ...this.config.properties,
129
- name: this.config.name,
130
- description: this.config.description,
131
- });
429
+ await this.client.update(this.config.id, this.updateProperties);
132
430
  }
133
431
  else {
134
- const { id } = await this.client.create({
135
- ...this.config.properties,
136
- name: this.config.name,
137
- description: this.config.description,
138
- });
432
+ const { id } = await this.client.create(this.createProperties);
139
433
  this.config.id = id;
140
434
  }
141
435
  }
142
436
  }
437
+ export class BlueprintResource extends Resource {
438
+ get client() {
439
+ return this.baseClient.blueprint;
440
+ }
441
+ }
143
442
  export class BotResource extends Resource {
144
443
  get client() {
145
444
  return this.baseClient.bot;
@@ -149,6 +448,22 @@ export class DatasetResource extends Resource {
149
448
  get client() {
150
449
  return this.baseClient.dataset;
151
450
  }
451
+ get updateProperties() {
452
+ const updateSchema = DatasetResourceConfigSchema.shape.properties.omit({
453
+ store: true,
454
+ });
455
+ return updateSchema.parse(this.config.properties);
456
+ }
457
+ }
458
+ export class FileResource extends Resource {
459
+ get client() {
460
+ return this.baseClient.file;
461
+ }
462
+ }
463
+ export class SecretResource extends Resource {
464
+ get client() {
465
+ return this.baseClient.secret;
466
+ }
152
467
  }
153
468
  export class SkillsetResource extends Resource {
154
469
  get client() {
@@ -165,6 +480,66 @@ export class SitemapIntegrationResource extends Resource {
165
480
  return this.baseClient.integration.sitemap;
166
481
  }
167
482
  }
483
+ export class SlackIntegrationResource extends Resource {
484
+ get client() {
485
+ return this.baseClient.integration.slack;
486
+ }
487
+ }
488
+ export class DiscordIntegrationResource extends Resource {
489
+ get client() {
490
+ return this.baseClient.integration.discord;
491
+ }
492
+ }
493
+ export class TelegramIntegrationResource extends Resource {
494
+ get client() {
495
+ return this.baseClient.integration.telegram;
496
+ }
497
+ }
498
+ export class WhatsAppIntegrationResource extends Resource {
499
+ get client() {
500
+ return this.baseClient.integration.whatsapp;
501
+ }
502
+ }
503
+ export class MessengerIntegrationResource extends Resource {
504
+ get client() {
505
+ return this.baseClient.integration.messenger;
506
+ }
507
+ }
508
+ export class NotionIntegrationResource extends Resource {
509
+ get client() {
510
+ return this.baseClient.integration.notion;
511
+ }
512
+ }
513
+ export class EmailIntegrationResource extends Resource {
514
+ get client() {
515
+ return this.baseClient.integration.email;
516
+ }
517
+ }
518
+ export class TriggerIntegrationResource extends Resource {
519
+ get client() {
520
+ return this.baseClient.integration.trigger;
521
+ }
522
+ }
523
+ export class SupportIntegrationResource extends Resource {
524
+ get client() {
525
+ return this.baseClient.integration.support;
526
+ }
527
+ }
528
+ export class ExtractIntegrationResource extends Resource {
529
+ get client() {
530
+ return this.baseClient.integration.extract;
531
+ }
532
+ }
533
+ export class McpServerIntegrationResource extends Resource {
534
+ get client() {
535
+ return this.baseClient.integration.mcpserver;
536
+ }
537
+ }
538
+ export class TwilioIntegrationResource extends Resource {
539
+ get client() {
540
+ return this.baseClient.integration.twilio;
541
+ }
542
+ }
168
543
  export class Solution {
169
544
  constructor(config) {
170
545
  this.config = config;
@@ -178,12 +553,21 @@ export class Solution {
178
553
  }
179
554
  get resources() {
180
555
  return this.config.resources.map((resource) => {
181
- if (resource.type === 'bot') {
556
+ if (resource.type === 'blueprint') {
557
+ return new BlueprintResource(resource);
558
+ }
559
+ else if (resource.type === 'bot') {
182
560
  return new BotResource(resource);
183
561
  }
184
562
  else if (resource.type === 'dataset') {
185
563
  return new DatasetResource(resource);
186
564
  }
565
+ else if (resource.type === 'file') {
566
+ return new FileResource(resource);
567
+ }
568
+ else if (resource.type === 'secret') {
569
+ return new SecretResource(resource);
570
+ }
187
571
  else if (resource.type === 'skillset') {
188
572
  return new SkillsetResource(resource);
189
573
  }
@@ -193,11 +577,54 @@ export class Solution {
193
577
  else if (resource.type === 'sitemapIntegration') {
194
578
  return new SitemapIntegrationResource(resource);
195
579
  }
580
+ else if (resource.type === 'slackIntegration') {
581
+ return new SlackIntegrationResource(resource);
582
+ }
583
+ else if (resource.type === 'discordIntegration') {
584
+ return new DiscordIntegrationResource(resource);
585
+ }
586
+ else if (resource.type === 'telegramIntegration') {
587
+ return new TelegramIntegrationResource(resource);
588
+ }
589
+ else if (resource.type === 'whatsappIntegration') {
590
+ return new WhatsAppIntegrationResource(resource);
591
+ }
592
+ else if (resource.type === 'messengerIntegration') {
593
+ return new MessengerIntegrationResource(resource);
594
+ }
595
+ else if (resource.type === 'notionIntegration') {
596
+ return new NotionIntegrationResource(resource);
597
+ }
598
+ else if (resource.type === 'emailIntegration') {
599
+ return new EmailIntegrationResource(resource);
600
+ }
601
+ else if (resource.type === 'triggerIntegration') {
602
+ return new TriggerIntegrationResource(resource);
603
+ }
604
+ else if (resource.type === 'supportIntegration') {
605
+ return new SupportIntegrationResource(resource);
606
+ }
607
+ else if (resource.type === 'extractIntegration') {
608
+ return new ExtractIntegrationResource(resource);
609
+ }
610
+ else if (resource.type === 'mcpserverIntegration') {
611
+ return new McpServerIntegrationResource(resource);
612
+ }
613
+ else if (resource.type === 'twilioIntegration') {
614
+ return new TwilioIntegrationResource(resource);
615
+ }
196
616
  else {
197
- throw new Error(`Unknown resource type: ${resource.type}`);
617
+ const _exhaustiveCheck = (resource);
618
+ throw new Error(`Unknown resource type: ${(_exhaustiveCheck).type}`);
198
619
  }
199
620
  });
200
621
  }
622
+ get blueprints() {
623
+ return (this.resources.filter((resource) => resource instanceof BlueprintResource));
624
+ }
625
+ get blueprint() {
626
+ return getArrayBackedObject(this.blueprints);
627
+ }
201
628
  get bots() {
202
629
  return (this.resources.filter((resource) => resource instanceof BotResource));
203
630
  }
@@ -210,6 +637,18 @@ export class Solution {
210
637
  get dataset() {
211
638
  return getArrayBackedObject(this.datasets);
212
639
  }
640
+ get files() {
641
+ return (this.resources.filter((resource) => resource instanceof FileResource));
642
+ }
643
+ get file() {
644
+ return getArrayBackedObject(this.files);
645
+ }
646
+ get secrets() {
647
+ return (this.resources.filter((resource) => resource instanceof SecretResource));
648
+ }
649
+ get secret() {
650
+ return getArrayBackedObject(this.secrets);
651
+ }
213
652
  get skillsets() {
214
653
  return (this.resources.filter((resource) => resource instanceof SkillsetResource));
215
654
  }
@@ -228,6 +667,78 @@ export class Solution {
228
667
  get sitemapIntegration() {
229
668
  return getArrayBackedObject(this.sitemapIntegrations);
230
669
  }
670
+ get slackIntegrations() {
671
+ return (this.resources.filter((resource) => resource instanceof SlackIntegrationResource));
672
+ }
673
+ get slackIntegration() {
674
+ return getArrayBackedObject(this.slackIntegrations);
675
+ }
676
+ get discordIntegrations() {
677
+ return (this.resources.filter((resource) => resource instanceof DiscordIntegrationResource));
678
+ }
679
+ get discordIntegration() {
680
+ return getArrayBackedObject(this.discordIntegrations);
681
+ }
682
+ get telegramIntegrations() {
683
+ return (this.resources.filter((resource) => resource instanceof TelegramIntegrationResource));
684
+ }
685
+ get telegramIntegration() {
686
+ return getArrayBackedObject(this.telegramIntegrations);
687
+ }
688
+ get whatsappIntegrations() {
689
+ return (this.resources.filter((resource) => resource instanceof WhatsAppIntegrationResource));
690
+ }
691
+ get whatsappIntegration() {
692
+ return getArrayBackedObject(this.whatsappIntegrations);
693
+ }
694
+ get messengerIntegrations() {
695
+ return (this.resources.filter((resource) => resource instanceof MessengerIntegrationResource));
696
+ }
697
+ get messengerIntegration() {
698
+ return getArrayBackedObject(this.messengerIntegrations);
699
+ }
700
+ get notionIntegrations() {
701
+ return (this.resources.filter((resource) => resource instanceof NotionIntegrationResource));
702
+ }
703
+ get notionIntegration() {
704
+ return getArrayBackedObject(this.notionIntegrations);
705
+ }
706
+ get emailIntegrations() {
707
+ return (this.resources.filter((resource) => resource instanceof EmailIntegrationResource));
708
+ }
709
+ get emailIntegration() {
710
+ return getArrayBackedObject(this.emailIntegrations);
711
+ }
712
+ get triggerIntegrations() {
713
+ return (this.resources.filter((resource) => resource instanceof TriggerIntegrationResource));
714
+ }
715
+ get triggerIntegration() {
716
+ return getArrayBackedObject(this.triggerIntegrations);
717
+ }
718
+ get supportIntegrations() {
719
+ return (this.resources.filter((resource) => resource instanceof SupportIntegrationResource));
720
+ }
721
+ get supportIntegration() {
722
+ return getArrayBackedObject(this.supportIntegrations);
723
+ }
724
+ get extractIntegrations() {
725
+ return (this.resources.filter((resource) => resource instanceof ExtractIntegrationResource));
726
+ }
727
+ get extractIntegration() {
728
+ return getArrayBackedObject(this.extractIntegrations);
729
+ }
730
+ get mcpserverIntegrations() {
731
+ return (this.resources.filter((resource) => resource instanceof McpServerIntegrationResource));
732
+ }
733
+ get mcpserverIntegration() {
734
+ return getArrayBackedObject(this.mcpserverIntegrations);
735
+ }
736
+ get twilioIntegrations() {
737
+ return (this.resources.filter((resource) => resource instanceof TwilioIntegrationResource));
738
+ }
739
+ get twilioIntegration() {
740
+ return getArrayBackedObject(this.twilioIntegrations);
741
+ }
231
742
  async sync() {
232
743
  await Promise.all(this.resources.map((resource) => resource.sync()));
233
744
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chatbotkit/cli",
3
- "version": "1.23.0",
3
+ "version": "1.24.0",
4
4
  "description": "ChatBotKit command line tools",
5
5
  "license": "ISC",
6
6
  "engines": {
@@ -544,8 +544,8 @@
544
544
  "js-yaml": "^4.1.0",
545
545
  "tslib": "^2.6.2",
546
546
  "zod": "^3.25.76",
547
- "@chatbotkit/agent": "1.23.0",
548
- "@chatbotkit/sdk": "1.23.0"
547
+ "@chatbotkit/sdk": "1.24.0",
548
+ "@chatbotkit/agent": "1.24.0"
549
549
  },
550
550
  "devDependencies": {
551
551
  "@types/js-yaml": "^4.0.9",