@bubblelab/bubble-core 0.1.220 → 0.1.222

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 (96) hide show
  1. package/dist/bubble-bundle.d.ts +204 -126
  2. package/dist/bubble-factory.d.ts.map +1 -1
  3. package/dist/bubble-factory.js +6 -0
  4. package/dist/bubble-factory.js.map +1 -1
  5. package/dist/bubbles/service-bubble/agi-inc.d.ts +20 -20
  6. package/dist/bubbles/service-bubble/ai-agent.d.ts +74 -74
  7. package/dist/bubbles/service-bubble/airtable.d.ts +76 -76
  8. package/dist/bubbles/service-bubble/apify/actors/instagram-hashtag-scraper.d.ts +2 -2
  9. package/dist/bubbles/service-bubble/apify/actors/instagram-scraper.d.ts +8 -8
  10. package/dist/bubbles/service-bubble/apify/actors/linkedin-jobs-scraper.d.ts +2 -2
  11. package/dist/bubbles/service-bubble/apify/actors/linkedin-posts-search.d.ts +22 -22
  12. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-detail.d.ts +38 -38
  13. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-posts.d.ts +52 -52
  14. package/dist/bubbles/service-bubble/apify/actors/tiktok-scraper.d.ts +6 -6
  15. package/dist/bubbles/service-bubble/apify/actors/twitter-scraper.d.ts +12 -12
  16. package/dist/bubbles/service-bubble/apify/actors/youtube-scraper.d.ts +12 -12
  17. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts +126 -126
  18. package/dist/bubbles/service-bubble/apify/apify.d.ts +18 -18
  19. package/dist/bubbles/service-bubble/ashby/ashby.d.ts +2 -2
  20. package/dist/bubbles/service-bubble/ashby/ashby.schema.d.ts +2 -2
  21. package/dist/bubbles/service-bubble/assembled/assembled.d.ts +6 -6
  22. package/dist/bubbles/service-bubble/assembled/assembled.schema.d.ts +6 -6
  23. package/dist/bubbles/service-bubble/attio/attio.d.ts +6 -6
  24. package/dist/bubbles/service-bubble/attio/attio.schema.d.ts +6 -6
  25. package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts +1 -1
  26. package/dist/bubbles/service-bubble/browserbase/browserbase.schema.d.ts +1 -1
  27. package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts +4 -4
  28. package/dist/bubbles/service-bubble/crustdata/crustdata.schema.d.ts +8 -8
  29. package/dist/bubbles/service-bubble/firecrawl.d.ts +334 -334
  30. package/dist/bubbles/service-bubble/followupboss.d.ts +4 -4
  31. package/dist/bubbles/service-bubble/github.d.ts +60 -60
  32. package/dist/bubbles/service-bubble/gmail.d.ts +164 -164
  33. package/dist/bubbles/service-bubble/google-calendar.d.ts +6 -6
  34. package/dist/bubbles/service-bubble/google-drive.d.ts +4 -4
  35. package/dist/bubbles/service-bubble/http.d.ts +2 -2
  36. package/dist/bubbles/service-bubble/insforge-db.d.ts +8 -8
  37. package/dist/bubbles/service-bubble/jira/jira.d.ts +30 -30
  38. package/dist/bubbles/service-bubble/jira/jira.schema.d.ts +36 -36
  39. package/dist/bubbles/service-bubble/notion/notion.d.ts +168 -168
  40. package/dist/bubbles/service-bubble/notion/property-schemas.d.ts +8 -8
  41. package/dist/bubbles/service-bubble/postgresql.d.ts +8 -8
  42. package/dist/bubbles/service-bubble/posthog/posthog.d.ts +10 -10
  43. package/dist/bubbles/service-bubble/posthog/posthog.schema.d.ts +14 -14
  44. package/dist/bubbles/service-bubble/resend.d.ts +4 -4
  45. package/dist/bubbles/service-bubble/slab/index.d.ts +3 -0
  46. package/dist/bubbles/service-bubble/slab/index.d.ts.map +1 -0
  47. package/dist/bubbles/service-bubble/slab/index.js +3 -0
  48. package/dist/bubbles/service-bubble/slab/index.js.map +1 -0
  49. package/dist/bubbles/service-bubble/slab/slab.d.ts +617 -0
  50. package/dist/bubbles/service-bubble/slab/slab.d.ts.map +1 -0
  51. package/dist/bubbles/service-bubble/slab/slab.js +379 -0
  52. package/dist/bubbles/service-bubble/slab/slab.js.map +1 -0
  53. package/dist/bubbles/service-bubble/slab/slab.schema.d.ts +703 -0
  54. package/dist/bubbles/service-bubble/slab/slab.schema.d.ts.map +1 -0
  55. package/dist/bubbles/service-bubble/slab/slab.schema.js +226 -0
  56. package/dist/bubbles/service-bubble/slab/slab.schema.js.map +1 -0
  57. package/dist/bubbles/service-bubble/slack/slack.d.ts +388 -388
  58. package/dist/bubbles/service-bubble/stripe/stripe.d.ts +24 -24
  59. package/dist/bubbles/service-bubble/stripe/stripe.schema.d.ts +28 -28
  60. package/dist/bubbles/service-bubble/xero/xero.d.ts +2 -2
  61. package/dist/bubbles/service-bubble/xero/xero.schema.d.ts +2 -2
  62. package/dist/bubbles/service-bubble/zendesk/index.d.ts +3 -0
  63. package/dist/bubbles/service-bubble/zendesk/index.d.ts.map +1 -0
  64. package/dist/bubbles/service-bubble/zendesk/index.js +3 -0
  65. package/dist/bubbles/service-bubble/zendesk/index.js.map +1 -0
  66. package/dist/bubbles/service-bubble/zendesk/zendesk.d.ts +1065 -0
  67. package/dist/bubbles/service-bubble/zendesk/zendesk.d.ts.map +1 -0
  68. package/dist/bubbles/service-bubble/zendesk/zendesk.js +531 -0
  69. package/dist/bubbles/service-bubble/zendesk/zendesk.js.map +1 -0
  70. package/dist/bubbles/service-bubble/zendesk/zendesk.schema.d.ts +1008 -0
  71. package/dist/bubbles/service-bubble/zendesk/zendesk.schema.d.ts.map +1 -0
  72. package/dist/bubbles/service-bubble/zendesk/zendesk.schema.js +473 -0
  73. package/dist/bubbles/service-bubble/zendesk/zendesk.schema.js.map +1 -0
  74. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.d.ts +6 -6
  75. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.schema.d.ts +8 -8
  76. package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +4 -4
  77. package/dist/bubbles/tool-bubble/company-enrichment-tool.d.ts +20 -20
  78. package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +384 -384
  79. package/dist/bubbles/tool-bubble/people-search-tool.d.ts +44 -44
  80. package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +14 -14
  81. package/dist/bubbles/tool-bubble/research-agent-tool.d.ts +4 -4
  82. package/dist/bubbles/tool-bubble/sql-query-tool.d.ts +4 -4
  83. package/dist/bubbles/tool-bubble/tiktok-tool.d.ts +60 -60
  84. package/dist/bubbles/tool-bubble/twitter-tool.d.ts +134 -134
  85. package/dist/bubbles/tool-bubble/yc-scraper-tool.d.ts +8 -8
  86. package/dist/bubbles/tool-bubble/youtube-tool.d.ts +20 -20
  87. package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts +12 -12
  88. package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +8 -8
  89. package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +2 -2
  90. package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +26 -26
  91. package/dist/bubbles.json +2218 -2
  92. package/dist/index.d.ts +4 -0
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +2 -0
  95. package/dist/index.js.map +1 -1
  96. package/package.json +2 -2
@@ -0,0 +1,379 @@
1
+ import { CredentialType } from '@bubblelab/shared-schemas';
2
+ import { ServiceBubble } from '../../../types/service-bubble-class.js';
3
+ import { SlabParamsSchema, SlabResultSchema, } from './slab.schema.js';
4
+ // Slab GraphQL API endpoint
5
+ const SLAB_API_URL = 'https://api.slab.com/v1/graphql';
6
+ /**
7
+ * SlabBubble - Integration with Slab knowledge management platform
8
+ *
9
+ * Provides operations for interacting with Slab:
10
+ * - Search posts across the workspace
11
+ * - Get specific post details
12
+ * - List all organization posts
13
+ * - Get posts within a topic
14
+ * - List all topics
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * // Search for posts
19
+ * const result = await new SlabBubble({
20
+ * operation: 'search_posts',
21
+ * query: 'onboarding guide',
22
+ * first: 10,
23
+ * }).action();
24
+ *
25
+ * // Get a specific post
26
+ * const post = await new SlabBubble({
27
+ * operation: 'get_post',
28
+ * post_id: 'abc123',
29
+ * }).action();
30
+ * ```
31
+ */
32
+ export class SlabBubble extends ServiceBubble {
33
+ // REQUIRED: Static metadata for BubbleFactory
34
+ static service = 'slab';
35
+ static authType = 'basic';
36
+ static bubbleName = 'slab';
37
+ static type = 'service';
38
+ static schema = SlabParamsSchema;
39
+ static resultSchema = SlabResultSchema;
40
+ static shortDescription = 'Slab knowledge management for searching and managing posts';
41
+ static longDescription = `
42
+ Slab is a knowledge management platform for modern teams.
43
+ This bubble provides operations for:
44
+ - Searching posts across the workspace
45
+ - Retrieving specific post details and content
46
+ - Listing all organization posts
47
+ - Getting posts within specific topics
48
+ - Listing all topics in the organization
49
+
50
+ Authentication:
51
+ - Uses API token (available on Business/Enterprise plans)
52
+ - Token is passed via Authorization header
53
+
54
+ Use Cases:
55
+ - Search internal knowledge base from automated workflows
56
+ - Sync documentation with external systems
57
+ - Build AI assistants that leverage internal knowledge
58
+ - Automate content updates across the organization
59
+ `;
60
+ static alias = 'slab-kb';
61
+ constructor(params = {
62
+ operation: 'search_posts',
63
+ query: '',
64
+ }, context) {
65
+ super(params, context);
66
+ }
67
+ /**
68
+ * Choose the appropriate credential for Slab API
69
+ */
70
+ chooseCredential() {
71
+ const params = this.params;
72
+ const credentials = params.credentials;
73
+ if (!credentials || typeof credentials !== 'object') {
74
+ return undefined;
75
+ }
76
+ return credentials[CredentialType.SLAB_CRED];
77
+ }
78
+ /**
79
+ * Test if the credential is valid by making a simple API call
80
+ */
81
+ async testCredential() {
82
+ const apiToken = this.chooseCredential();
83
+ if (!apiToken) {
84
+ return false;
85
+ }
86
+ // Use a simple query to validate the token
87
+ const result = await this.makeSlabRequest(`
88
+ query {
89
+ organization {
90
+ name
91
+ }
92
+ }
93
+ `);
94
+ if (result.errors) {
95
+ throw new Error('Slab API token validation failed');
96
+ }
97
+ return true;
98
+ }
99
+ /**
100
+ * Perform the Slab operation
101
+ */
102
+ async performAction(context) {
103
+ void context;
104
+ const params = this.params;
105
+ const { operation } = params;
106
+ try {
107
+ switch (operation) {
108
+ case 'search_posts':
109
+ return (await this.searchPosts(params));
110
+ case 'get_post':
111
+ return (await this.getPost(params));
112
+ case 'list_posts':
113
+ return (await this.listPosts(params));
114
+ case 'get_topic_posts':
115
+ return (await this.getTopicPosts(params));
116
+ case 'list_topics':
117
+ return (await this.listTopics(params));
118
+ default:
119
+ throw new Error(`Unknown operation: ${operation}`);
120
+ }
121
+ }
122
+ catch (error) {
123
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
124
+ return {
125
+ operation,
126
+ success: false,
127
+ error: errorMessage,
128
+ };
129
+ }
130
+ }
131
+ /**
132
+ * Make an authenticated GraphQL request to Slab
133
+ */
134
+ async makeSlabRequest(query, variables) {
135
+ const apiToken = this.chooseCredential();
136
+ if (!apiToken) {
137
+ throw new Error('Slab API token is required');
138
+ }
139
+ const response = await fetch(SLAB_API_URL, {
140
+ method: 'POST',
141
+ headers: {
142
+ Authorization: `${apiToken}`,
143
+ 'Content-Type': 'application/json',
144
+ },
145
+ body: JSON.stringify({ query, variables }),
146
+ });
147
+ if (!response.ok) {
148
+ const text = await response.text();
149
+ throw new Error(`Slab API error (HTTP ${response.status}): ${text}`);
150
+ }
151
+ const data = (await response.json());
152
+ if (data.errors) {
153
+ const errors = data.errors;
154
+ const errorMsg = errors
155
+ .map((e) => e.message || 'Unknown error')
156
+ .join('; ');
157
+ throw new Error(`Slab GraphQL error: ${errorMsg}`);
158
+ }
159
+ return data;
160
+ }
161
+ /**
162
+ * Search posts by query
163
+ */
164
+ async searchPosts(params) {
165
+ const response = await this.makeSlabRequest(`
166
+ query SearchPosts($query: String!, $first: Int, $after: String) {
167
+ search(query: $query, first: $first, after: $after) {
168
+ pageInfo {
169
+ hasNextPage
170
+ endCursor
171
+ }
172
+ edges {
173
+ cursor
174
+ node {
175
+ ... on PostSearchResult {
176
+ title
177
+ content
178
+ highlight
179
+ post {
180
+ id
181
+ title
182
+ insertedAt
183
+ publishedAt
184
+ owner {
185
+ id
186
+ name
187
+ }
188
+ topics {
189
+ id
190
+ name
191
+ }
192
+ }
193
+ }
194
+ }
195
+ }
196
+ }
197
+ }
198
+ `, {
199
+ query: params.query,
200
+ first: params.first,
201
+ after: params.after,
202
+ });
203
+ const searchData = response.data?.search;
204
+ const edges = searchData?.edges || [];
205
+ const pageInfo = searchData?.pageInfo;
206
+ const posts = edges
207
+ .map((edge) => {
208
+ const node = edge.node;
209
+ if (!node || !node.post)
210
+ return null;
211
+ const post = node.post;
212
+ return {
213
+ id: post.id,
214
+ title: node.title || post.title,
215
+ highlight: node.highlight,
216
+ content: node.content,
217
+ insertedAt: post.insertedAt,
218
+ publishedAt: post.publishedAt,
219
+ owner: post.owner,
220
+ topics: post.topics,
221
+ };
222
+ })
223
+ .filter((p) => p !== null);
224
+ return {
225
+ operation: 'search_posts',
226
+ success: true,
227
+ posts,
228
+ has_more: pageInfo?.hasNextPage || false,
229
+ end_cursor: pageInfo?.endCursor,
230
+ error: '',
231
+ };
232
+ }
233
+ /**
234
+ * Get a specific post by ID
235
+ */
236
+ async getPost(params) {
237
+ const response = await this.makeSlabRequest(`
238
+ query GetPost($id: ID!) {
239
+ post(id: $id) {
240
+ id
241
+ title
242
+ content
243
+ insertedAt
244
+ publishedAt
245
+ updatedAt
246
+ archivedAt
247
+ version
248
+ owner {
249
+ id
250
+ name
251
+ }
252
+ topics {
253
+ id
254
+ name
255
+ }
256
+ }
257
+ }
258
+ `, { id: params.post_id });
259
+ const post = response.data?.post;
260
+ return {
261
+ operation: 'get_post',
262
+ success: true,
263
+ post: post
264
+ ? {
265
+ id: post.id,
266
+ title: post.title,
267
+ content: post.content,
268
+ insertedAt: post.insertedAt,
269
+ publishedAt: post.publishedAt,
270
+ updatedAt: post.updatedAt,
271
+ archivedAt: post.archivedAt,
272
+ version: post.version,
273
+ owner: post.owner,
274
+ topics: post.topics,
275
+ }
276
+ : undefined,
277
+ error: '',
278
+ };
279
+ }
280
+ /**
281
+ * List all organization posts
282
+ */
283
+ async listPosts(params) {
284
+ void params;
285
+ // organization.posts returns SlimPost type (limited fields)
286
+ const response = await this.makeSlabRequest(`
287
+ query {
288
+ organization {
289
+ posts {
290
+ id
291
+ title
292
+ publishedAt
293
+ archivedAt
294
+ }
295
+ }
296
+ }
297
+ `);
298
+ const org = response.data?.organization;
299
+ const posts = org?.posts || [];
300
+ return {
301
+ operation: 'list_posts',
302
+ success: true,
303
+ posts: posts.map((p) => ({
304
+ id: p.id,
305
+ title: p.title,
306
+ publishedAt: p.publishedAt,
307
+ archivedAt: p.archivedAt,
308
+ })),
309
+ error: '',
310
+ };
311
+ }
312
+ /**
313
+ * Get posts within a specific topic
314
+ */
315
+ async getTopicPosts(params) {
316
+ const response = await this.makeSlabRequest(`
317
+ query GetTopicPosts($id: ID!) {
318
+ topic(id: $id) {
319
+ posts {
320
+ id
321
+ title
322
+ content
323
+ insertedAt
324
+ publishedAt
325
+ updatedAt
326
+ owner {
327
+ id
328
+ name
329
+ }
330
+ }
331
+ }
332
+ }
333
+ `, { id: params.topic_id });
334
+ const topic = response.data?.topic;
335
+ const posts = topic?.posts || [];
336
+ return {
337
+ operation: 'get_topic_posts',
338
+ success: true,
339
+ posts: posts.map((p) => ({
340
+ id: p.id,
341
+ title: p.title,
342
+ content: p.content,
343
+ insertedAt: p.insertedAt,
344
+ publishedAt: p.publishedAt,
345
+ updatedAt: p.updatedAt,
346
+ owner: p.owner,
347
+ })),
348
+ error: '',
349
+ };
350
+ }
351
+ /**
352
+ * List all topics in the organization
353
+ */
354
+ async listTopics(params) {
355
+ void params;
356
+ const response = await this.makeSlabRequest(`
357
+ query {
358
+ organization {
359
+ topics {
360
+ id
361
+ name
362
+ }
363
+ }
364
+ }
365
+ `);
366
+ const org = response.data?.organization;
367
+ const topics = org?.topics || [];
368
+ return {
369
+ operation: 'list_topics',
370
+ success: true,
371
+ topics: topics.map((t) => ({
372
+ id: t.id,
373
+ name: t.name,
374
+ })),
375
+ error: '',
376
+ };
377
+ }
378
+ }
379
+ //# sourceMappingURL=slab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slab.js","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/slab/slab.ts"],"names":[],"mappings":"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"}