@bubblelab/bubble-core 0.1.219 → 0.1.221

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 (30) hide show
  1. package/dist/bubble-bundle.d.ts +66 -27
  2. package/dist/bubble-factory.d.ts.map +1 -1
  3. package/dist/bubble-factory.js +22 -46
  4. package/dist/bubble-factory.js.map +1 -1
  5. package/dist/bubbles/service-bubble/slack/slack-table-blocks.d.ts +1 -0
  6. package/dist/bubbles/service-bubble/slack/slack-table-blocks.d.ts.map +1 -1
  7. package/dist/bubbles/service-bubble/slack/slack-table-blocks.js +1 -0
  8. package/dist/bubbles/service-bubble/slack/slack-table-blocks.js.map +1 -1
  9. package/dist/bubbles/service-bubble/slack/slack.d.ts.map +1 -1
  10. package/dist/bubbles/service-bubble/slack/slack.js +23 -22
  11. package/dist/bubbles/service-bubble/slack/slack.js.map +1 -1
  12. package/dist/bubbles/service-bubble/zendesk/index.d.ts +3 -0
  13. package/dist/bubbles/service-bubble/zendesk/index.d.ts.map +1 -0
  14. package/dist/bubbles/service-bubble/zendesk/index.js +3 -0
  15. package/dist/bubbles/service-bubble/zendesk/index.js.map +1 -0
  16. package/dist/bubbles/service-bubble/zendesk/zendesk.d.ts +1065 -0
  17. package/dist/bubbles/service-bubble/zendesk/zendesk.d.ts.map +1 -0
  18. package/dist/bubbles/service-bubble/zendesk/zendesk.js +531 -0
  19. package/dist/bubbles/service-bubble/zendesk/zendesk.js.map +1 -0
  20. package/dist/bubbles/service-bubble/zendesk/zendesk.schema.d.ts +1008 -0
  21. package/dist/bubbles/service-bubble/zendesk/zendesk.schema.d.ts.map +1 -0
  22. package/dist/bubbles/service-bubble/zendesk/zendesk.schema.js +473 -0
  23. package/dist/bubbles/service-bubble/zendesk/zendesk.schema.js.map +1 -0
  24. package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +4 -4
  25. package/dist/bubbles.json +1523 -2
  26. package/dist/index.d.ts +2 -0
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +1 -0
  29. package/dist/index.js.map +1 -1
  30. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zendesk.d.ts","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/zendesk/zendesk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,531 @@
1
+ import { ServiceBubble } from '../../../types/service-bubble-class.js';
2
+ import { CredentialType, decodeCredentialPayload, } from '@bubblelab/shared-schemas';
3
+ import { ZendeskParamsSchema, ZendeskResultSchema, } from './zendesk.schema.js';
4
+ /**
5
+ * Zendesk Service Bubble
6
+ *
7
+ * Zendesk integration for managing tickets, users, organizations, and help center articles.
8
+ *
9
+ * Features:
10
+ * - Create, retrieve, update, and list tickets
11
+ * - List and read ticket comments / replies
12
+ * - List and retrieve users and organizations
13
+ * - Unified search across all Zendesk resources
14
+ * - Help Center article management
15
+ *
16
+ * Security Features:
17
+ * - OAuth 2.0 authentication with Zendesk
18
+ * - Subdomain-scoped API access
19
+ * - Secure credential handling
20
+ */
21
+ export class ZendeskBubble extends ServiceBubble {
22
+ static type = 'service';
23
+ static service = 'zendesk';
24
+ static authType = 'oauth';
25
+ static bubbleName = 'zendesk';
26
+ static schema = ZendeskParamsSchema;
27
+ static resultSchema = ZendeskResultSchema;
28
+ static shortDescription = 'Zendesk integration for tickets, comments, users, and help center';
29
+ static longDescription = `
30
+ Zendesk customer support integration for ticket management and help center.
31
+
32
+ Features:
33
+ - Create, retrieve, update, and list support tickets
34
+ - List ticket comments and add replies (public or internal notes)
35
+ - List and retrieve users and organizations
36
+ - Unified search across tickets, users, and organizations
37
+ - Help Center article listing and retrieval
38
+
39
+ Use cases:
40
+ - Automated ticket triage and response
41
+ - Customer support workflow automation
42
+ - Help center content management
43
+ - Support analytics and reporting
44
+
45
+ Security Features:
46
+ - OAuth 2.0 authentication with Zendesk
47
+ - Subdomain-scoped API access
48
+ - Secure credential handling and validation
49
+ `;
50
+ static alias = 'support';
51
+ constructor(params = {
52
+ operation: 'list_tickets',
53
+ }, context) {
54
+ super(params, context);
55
+ }
56
+ async testCredential() {
57
+ const creds = this.parseCredentials();
58
+ if (!creds) {
59
+ throw new Error('Zendesk credentials are required');
60
+ }
61
+ const response = await fetch(`https://${creds.subdomain}.zendesk.com/api/v2/users/me.json`, {
62
+ headers: {
63
+ Authorization: `Bearer ${creds.accessToken}`,
64
+ Accept: 'application/json',
65
+ },
66
+ });
67
+ if (!response.ok) {
68
+ const text = await response.text();
69
+ throw new Error(`Zendesk API error (${response.status}): ${text}`);
70
+ }
71
+ return true;
72
+ }
73
+ /**
74
+ * Zendesk credential format:
75
+ * Base64-encoded JSON: { accessToken, subdomain }
76
+ * The subdomain identifies which Zendesk instance to access.
77
+ */
78
+ parseCredentials() {
79
+ const { credentials } = this.params;
80
+ if (!credentials || typeof credentials !== 'object') {
81
+ return null;
82
+ }
83
+ const zendeskCredRaw = credentials[CredentialType.ZENDESK_CRED];
84
+ if (!zendeskCredRaw) {
85
+ return null;
86
+ }
87
+ try {
88
+ const parsed = decodeCredentialPayload(zendeskCredRaw);
89
+ if (parsed.accessToken && parsed.subdomain) {
90
+ return {
91
+ accessToken: parsed.accessToken,
92
+ subdomain: parsed.subdomain,
93
+ };
94
+ }
95
+ }
96
+ catch {
97
+ // If decoding fails, treat the raw value as an access token (validator path)
98
+ // In this case, we can't make API calls without subdomain
99
+ }
100
+ return null;
101
+ }
102
+ chooseCredential() {
103
+ const creds = this.parseCredentials();
104
+ return creds?.accessToken;
105
+ }
106
+ async makeZendeskApiRequest(endpoint, method = 'GET', body) {
107
+ const creds = this.parseCredentials();
108
+ if (!creds) {
109
+ throw new Error('Invalid Zendesk credentials. Expected base64-encoded JSON with { accessToken, subdomain }.');
110
+ }
111
+ const url = endpoint.startsWith('https://')
112
+ ? endpoint
113
+ : `https://${creds.subdomain}.zendesk.com${endpoint}`;
114
+ const requestInit = {
115
+ method,
116
+ headers: {
117
+ Authorization: `Bearer ${creds.accessToken}`,
118
+ 'Content-Type': 'application/json',
119
+ Accept: 'application/json',
120
+ },
121
+ };
122
+ if (body && method !== 'GET') {
123
+ requestInit.body = JSON.stringify(body);
124
+ }
125
+ const response = await fetch(url, requestInit);
126
+ if (!response.ok) {
127
+ const errorText = await response.text();
128
+ throw new Error(`Zendesk API error (${response.status}): ${errorText}`);
129
+ }
130
+ const contentType = response.headers.get('content-type');
131
+ if (contentType && contentType.includes('application/json')) {
132
+ return await response.json();
133
+ }
134
+ return await response.text();
135
+ }
136
+ async performAction(context) {
137
+ void context;
138
+ const { operation } = this.params;
139
+ try {
140
+ const result = await (async () => {
141
+ const parsedParams = this.params;
142
+ switch (operation) {
143
+ case 'list_tickets':
144
+ return await this.listTickets(parsedParams);
145
+ case 'get_ticket':
146
+ return await this.getTicket(parsedParams);
147
+ case 'create_ticket':
148
+ return await this.createTicket(parsedParams);
149
+ case 'update_ticket':
150
+ return await this.updateTicket(parsedParams);
151
+ case 'list_ticket_comments':
152
+ return await this.listTicketComments(parsedParams);
153
+ case 'list_users':
154
+ return await this.listUsers(parsedParams);
155
+ case 'get_user':
156
+ return await this.getUser(parsedParams);
157
+ case 'list_organizations':
158
+ return await this.listOrganizations(parsedParams);
159
+ case 'get_organization':
160
+ return await this.getOrganization(parsedParams);
161
+ case 'search':
162
+ return await this.search(parsedParams);
163
+ case 'list_articles':
164
+ return await this.listArticles(parsedParams);
165
+ case 'get_article':
166
+ return await this.getArticle(parsedParams);
167
+ default:
168
+ throw new Error(`Unsupported operation: ${operation}`);
169
+ }
170
+ })();
171
+ return result;
172
+ }
173
+ catch (error) {
174
+ return {
175
+ operation,
176
+ success: false,
177
+ error: error instanceof Error ? error.message : 'Unknown error occurred',
178
+ };
179
+ }
180
+ }
181
+ // ---- Ticket operations ----
182
+ async listTickets(params) {
183
+ const queryParams = new URLSearchParams();
184
+ if (params.page)
185
+ queryParams.set('page', String(params.page));
186
+ if (params.per_page)
187
+ queryParams.set('per_page', String(params.per_page));
188
+ if (params.sort_by)
189
+ queryParams.set('sort_by', params.sort_by);
190
+ if (params.sort_order)
191
+ queryParams.set('sort_order', params.sort_order);
192
+ // If status filter, use the search API for filtering
193
+ if (params.status) {
194
+ const searchQuery = `type:ticket status:${params.status}`;
195
+ queryParams.set('query', searchQuery);
196
+ const queryString = queryParams.toString();
197
+ const response = await this.makeZendeskApiRequest(`/api/v2/search.json?${queryString}`);
198
+ return {
199
+ operation: 'list_tickets',
200
+ success: true,
201
+ tickets: (response.results || []).map(this.mapTicket),
202
+ count: response.count,
203
+ next_page: response.next_page ?? null,
204
+ error: '',
205
+ };
206
+ }
207
+ const queryString = queryParams.toString();
208
+ const endpoint = `/api/v2/tickets.json${queryString ? `?${queryString}` : ''}`;
209
+ const response = await this.makeZendeskApiRequest(endpoint);
210
+ return {
211
+ operation: 'list_tickets',
212
+ success: true,
213
+ tickets: (response.tickets || []).map(this.mapTicket),
214
+ count: response.count,
215
+ next_page: response.next_page ?? null,
216
+ error: '',
217
+ };
218
+ }
219
+ async getTicket(params) {
220
+ const response = await this.makeZendeskApiRequest(`/api/v2/tickets/${params.ticket_id}.json`);
221
+ return {
222
+ operation: 'get_ticket',
223
+ success: true,
224
+ ticket: this.mapTicket(response.ticket),
225
+ error: '',
226
+ };
227
+ }
228
+ async createTicket(params) {
229
+ const ticketBody = {
230
+ subject: params.subject,
231
+ comment: { body: params.body },
232
+ };
233
+ if (params.requester_email) {
234
+ const requester = {
235
+ email: params.requester_email,
236
+ };
237
+ if (params.requester_name) {
238
+ requester.name = params.requester_name;
239
+ }
240
+ else {
241
+ // Zendesk requires a name when creating a requester; derive from email
242
+ requester.name = params.requester_email.split('@')[0];
243
+ }
244
+ ticketBody.requester = requester;
245
+ }
246
+ if (params.assignee_id)
247
+ ticketBody.assignee_id = params.assignee_id;
248
+ if (params.priority)
249
+ ticketBody.priority = params.priority;
250
+ if (params.type)
251
+ ticketBody.type = params.type;
252
+ if (params.tags)
253
+ ticketBody.tags = params.tags;
254
+ const response = await this.makeZendeskApiRequest('/api/v2/tickets.json', 'POST', { ticket: ticketBody });
255
+ return {
256
+ operation: 'create_ticket',
257
+ success: true,
258
+ ticket: this.mapTicket(response.ticket),
259
+ error: '',
260
+ };
261
+ }
262
+ async updateTicket(params) {
263
+ const ticketBody = {};
264
+ if (params.comment) {
265
+ ticketBody.comment = {
266
+ body: params.comment,
267
+ public: params.public ?? true,
268
+ };
269
+ }
270
+ if (params.status)
271
+ ticketBody.status = params.status;
272
+ if (params.priority)
273
+ ticketBody.priority = params.priority;
274
+ if (params.assignee_id)
275
+ ticketBody.assignee_id = params.assignee_id;
276
+ if (params.tags)
277
+ ticketBody.tags = params.tags;
278
+ const response = await this.makeZendeskApiRequest(`/api/v2/tickets/${params.ticket_id}.json`, 'PUT', { ticket: ticketBody });
279
+ return {
280
+ operation: 'update_ticket',
281
+ success: true,
282
+ ticket: this.mapTicket(response.ticket),
283
+ error: '',
284
+ };
285
+ }
286
+ // ---- Comment operations ----
287
+ async listTicketComments(params) {
288
+ const queryParams = new URLSearchParams();
289
+ if (params.page)
290
+ queryParams.set('page', String(params.page));
291
+ if (params.per_page)
292
+ queryParams.set('per_page', String(params.per_page));
293
+ if (params.sort_order)
294
+ queryParams.set('sort_order', params.sort_order);
295
+ const queryString = queryParams.toString();
296
+ const endpoint = `/api/v2/tickets/${params.ticket_id}/comments.json${queryString ? `?${queryString}` : ''}`;
297
+ const response = await this.makeZendeskApiRequest(endpoint);
298
+ return {
299
+ operation: 'list_ticket_comments',
300
+ success: true,
301
+ comments: (response.comments || []).map(this.mapComment),
302
+ count: response.count,
303
+ next_page: response.next_page ?? null,
304
+ error: '',
305
+ };
306
+ }
307
+ // ---- User operations ----
308
+ async listUsers(params) {
309
+ const queryParams = new URLSearchParams();
310
+ if (params.page)
311
+ queryParams.set('page', String(params.page));
312
+ if (params.per_page)
313
+ queryParams.set('per_page', String(params.per_page));
314
+ if (params.query) {
315
+ queryParams.set('query', params.query);
316
+ if (params.role)
317
+ queryParams.set('role', params.role);
318
+ const queryString = queryParams.toString();
319
+ const response = await this.makeZendeskApiRequest(`/api/v2/users/search.json?${queryString}`);
320
+ return {
321
+ operation: 'list_users',
322
+ success: true,
323
+ users: (response.users || []).map(this.mapUser),
324
+ count: response.count,
325
+ next_page: response.next_page ?? null,
326
+ error: '',
327
+ };
328
+ }
329
+ if (params.role)
330
+ queryParams.set('role', params.role);
331
+ const queryString = queryParams.toString();
332
+ const endpoint = `/api/v2/users.json${queryString ? `?${queryString}` : ''}`;
333
+ const response = await this.makeZendeskApiRequest(endpoint);
334
+ return {
335
+ operation: 'list_users',
336
+ success: true,
337
+ users: (response.users || []).map(this.mapUser),
338
+ count: response.count,
339
+ next_page: response.next_page ?? null,
340
+ error: '',
341
+ };
342
+ }
343
+ async getUser(params) {
344
+ const response = await this.makeZendeskApiRequest(`/api/v2/users/${params.user_id}.json`);
345
+ return {
346
+ operation: 'get_user',
347
+ success: true,
348
+ user: this.mapUser(response.user),
349
+ error: '',
350
+ };
351
+ }
352
+ // ---- Organization operations ----
353
+ async listOrganizations(params) {
354
+ const queryParams = new URLSearchParams();
355
+ if (params.page)
356
+ queryParams.set('page', String(params.page));
357
+ if (params.per_page)
358
+ queryParams.set('per_page', String(params.per_page));
359
+ if (params.query) {
360
+ queryParams.set('name', params.query);
361
+ const queryString = queryParams.toString();
362
+ const response = await this.makeZendeskApiRequest(`/api/v2/organizations/search.json?${queryString}`);
363
+ return {
364
+ operation: 'list_organizations',
365
+ success: true,
366
+ organizations: (response.organizations || []).map(this.mapOrganization),
367
+ count: response.count,
368
+ next_page: response.next_page ?? null,
369
+ error: '',
370
+ };
371
+ }
372
+ const queryString = queryParams.toString();
373
+ const endpoint = `/api/v2/organizations.json${queryString ? `?${queryString}` : ''}`;
374
+ const response = await this.makeZendeskApiRequest(endpoint);
375
+ return {
376
+ operation: 'list_organizations',
377
+ success: true,
378
+ organizations: (response.organizations || []).map(this.mapOrganization),
379
+ count: response.count,
380
+ next_page: response.next_page ?? null,
381
+ error: '',
382
+ };
383
+ }
384
+ async getOrganization(params) {
385
+ const response = await this.makeZendeskApiRequest(`/api/v2/organizations/${params.organization_id}.json`);
386
+ return {
387
+ operation: 'get_organization',
388
+ success: true,
389
+ organization: this.mapOrganization(response.organization),
390
+ error: '',
391
+ };
392
+ }
393
+ // ---- Search ----
394
+ async search(params) {
395
+ const queryParams = new URLSearchParams();
396
+ queryParams.set('query', params.query);
397
+ if (params.page)
398
+ queryParams.set('page', String(params.page));
399
+ if (params.per_page)
400
+ queryParams.set('per_page', String(params.per_page));
401
+ if (params.sort_by)
402
+ queryParams.set('sort_by', params.sort_by);
403
+ if (params.sort_order)
404
+ queryParams.set('sort_order', params.sort_order);
405
+ const queryString = queryParams.toString();
406
+ const response = await this.makeZendeskApiRequest(`/api/v2/search.json?${queryString}`);
407
+ return {
408
+ operation: 'search',
409
+ success: true,
410
+ results: response.results || [],
411
+ count: response.count,
412
+ next_page: response.next_page ?? null,
413
+ error: '',
414
+ };
415
+ }
416
+ // ---- Help Center ----
417
+ async listArticles(params) {
418
+ const queryParams = new URLSearchParams();
419
+ if (params.page)
420
+ queryParams.set('page', String(params.page));
421
+ if (params.per_page)
422
+ queryParams.set('per_page', String(params.per_page));
423
+ // Search endpoint vs list endpoint
424
+ if (params.query) {
425
+ queryParams.set('query', params.query);
426
+ if (params.locale)
427
+ queryParams.set('locale', params.locale);
428
+ if (params.category_id)
429
+ queryParams.set('category', params.category_id);
430
+ if (params.section_id)
431
+ queryParams.set('section', params.section_id);
432
+ const queryString = queryParams.toString();
433
+ const response = await this.makeZendeskApiRequest(`/api/v2/help_center/articles/search.json?${queryString}`);
434
+ return {
435
+ operation: 'list_articles',
436
+ success: true,
437
+ articles: (response.results || []).map(this.mapArticle),
438
+ count: response.count,
439
+ next_page: response.next_page ?? null,
440
+ error: '',
441
+ };
442
+ }
443
+ let basePath = '/api/v2/help_center';
444
+ if (params.locale)
445
+ basePath += `/${params.locale}`;
446
+ if (params.section_id) {
447
+ basePath += `/sections/${params.section_id}/articles.json`;
448
+ }
449
+ else if (params.category_id) {
450
+ basePath += `/categories/${params.category_id}/articles.json`;
451
+ }
452
+ else {
453
+ basePath += '/articles.json';
454
+ }
455
+ const queryString = queryParams.toString();
456
+ const endpoint = `${basePath}${queryString ? `?${queryString}` : ''}`;
457
+ const response = await this.makeZendeskApiRequest(endpoint);
458
+ return {
459
+ operation: 'list_articles',
460
+ success: true,
461
+ articles: (response.articles || []).map(this.mapArticle),
462
+ count: response.count,
463
+ next_page: response.next_page ?? null,
464
+ error: '',
465
+ };
466
+ }
467
+ async getArticle(params) {
468
+ let endpoint = '/api/v2/help_center';
469
+ if (params.locale)
470
+ endpoint += `/${params.locale}`;
471
+ endpoint += `/articles/${params.article_id}.json`;
472
+ const response = await this.makeZendeskApiRequest(endpoint);
473
+ return {
474
+ operation: 'get_article',
475
+ success: true,
476
+ article: this.mapArticle(response.article),
477
+ error: '',
478
+ };
479
+ }
480
+ // ---- Mappers ----
481
+ mapTicket = (t) => ({
482
+ id: t.id,
483
+ subject: t.subject,
484
+ description: t.description,
485
+ status: t.status,
486
+ priority: t.priority,
487
+ type: t.type,
488
+ requester_id: t.requester_id,
489
+ assignee_id: t.assignee_id,
490
+ organization_id: t.organization_id,
491
+ tags: t.tags,
492
+ created_at: t.created_at,
493
+ updated_at: t.updated_at,
494
+ });
495
+ mapComment = (c) => ({
496
+ id: c.id,
497
+ body: c.body,
498
+ html_body: c.html_body,
499
+ public: c.public,
500
+ author_id: c.author_id,
501
+ created_at: c.created_at,
502
+ });
503
+ mapUser = (u) => ({
504
+ id: u.id,
505
+ name: u.name,
506
+ email: u.email,
507
+ role: u.role,
508
+ organization_id: u.organization_id,
509
+ active: u.active,
510
+ created_at: u.created_at,
511
+ });
512
+ mapOrganization = (o) => ({
513
+ id: o.id,
514
+ name: o.name,
515
+ domain_names: o.domain_names,
516
+ external_id: o.external_id,
517
+ created_at: o.created_at,
518
+ });
519
+ mapArticle = (a) => ({
520
+ id: a.id,
521
+ title: a.title,
522
+ body: a.body,
523
+ locale: a.locale,
524
+ section_id: a.section_id,
525
+ author_id: a.author_id,
526
+ draft: a.draft,
527
+ created_at: a.created_at,
528
+ updated_at: a.updated_at,
529
+ });
530
+ }
531
+ //# sourceMappingURL=zendesk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zendesk.js","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/zendesk/zendesk.ts"],"names":[],"mappings":"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"}