@bubblelab/bubble-core 0.1.17 → 0.1.19

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 (115) hide show
  1. package/dist/bubble-bundle.d.ts +84 -79
  2. package/dist/bubble-factory.js +1 -1
  3. package/dist/bubble-factory.js.map +1 -1
  4. package/dist/bubbles/service-bubble/agi-inc.d.ts +112 -112
  5. package/dist/bubbles/service-bubble/ai-agent.d.ts +8 -8
  6. package/dist/bubbles/service-bubble/airtable.d.ts +152 -152
  7. package/dist/bubbles/service-bubble/apify/apify.d.ts +8 -8
  8. package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts +20 -20
  9. package/dist/bubbles/service-bubble/browserbase/browserbase.schema.d.ts +8 -8
  10. package/dist/bubbles/service-bubble/eleven-labs.d.ts +28 -28
  11. package/dist/bubbles/service-bubble/firecrawl.d.ts +140 -140
  12. package/dist/bubbles/service-bubble/followupboss.d.ts +128 -128
  13. package/dist/bubbles/service-bubble/github.d.ts +104 -104
  14. package/dist/bubbles/service-bubble/gmail.d.ts +456 -456
  15. package/dist/bubbles/service-bubble/google-calendar.d.ts +120 -120
  16. package/dist/bubbles/service-bubble/google-drive.d.ts +92 -92
  17. package/dist/bubbles/service-bubble/google-sheets/google-sheets.d.ts +22 -22
  18. package/dist/bubbles/service-bubble/google-sheets/google-sheets.schema.d.ts +10 -10
  19. package/dist/bubbles/service-bubble/hello-world.d.ts +4 -4
  20. package/dist/bubbles/service-bubble/http.d.ts +16 -16
  21. package/dist/bubbles/service-bubble/insforge-db.d.ts +10 -10
  22. package/dist/bubbles/service-bubble/notion/notion.d.ts +76 -76
  23. package/dist/bubbles/service-bubble/postgresql.d.ts +10 -10
  24. package/dist/bubbles/service-bubble/resend.d.ts +32 -32
  25. package/dist/bubbles/service-bubble/slack/index.d.ts +3 -0
  26. package/dist/bubbles/service-bubble/slack/index.d.ts.map +1 -0
  27. package/dist/bubbles/service-bubble/slack/index.js +6 -0
  28. package/dist/bubbles/service-bubble/slack/index.js.map +1 -0
  29. package/dist/bubbles/service-bubble/slack/slack.d.ts +6812 -0
  30. package/dist/bubbles/service-bubble/slack/slack.d.ts.map +1 -0
  31. package/dist/bubbles/service-bubble/slack/slack.js +1840 -0
  32. package/dist/bubbles/service-bubble/slack/slack.js.map +1 -0
  33. package/dist/bubbles/service-bubble/slack/slack.schema.d.ts +3980 -0
  34. package/dist/bubbles/service-bubble/slack/slack.schema.d.ts.map +1 -0
  35. package/dist/bubbles/service-bubble/slack/slack.schema.js +1061 -0
  36. package/dist/bubbles/service-bubble/slack/slack.schema.js.map +1 -0
  37. package/dist/bubbles/service-bubble/slack/slack.utils.d.ts +141 -0
  38. package/dist/bubbles/service-bubble/slack/slack.utils.d.ts.map +1 -0
  39. package/dist/bubbles/service-bubble/slack/slack.utils.js +410 -0
  40. package/dist/bubbles/service-bubble/slack/slack.utils.js.map +1 -0
  41. package/dist/bubbles/service-bubble/slack.d.ts +1 -6811
  42. package/dist/bubbles/service-bubble/slack.d.ts.map +1 -1
  43. package/dist/bubbles/service-bubble/slack.js +2 -1829
  44. package/dist/bubbles/service-bubble/slack.js.map +1 -1
  45. package/dist/bubbles/service-bubble/storage.d.ts +20 -20
  46. package/dist/bubbles/service-bubble/telegram.d.ts +246 -246
  47. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.d.ts +16 -16
  48. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.schema.d.ts +6 -6
  49. package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +4 -4
  50. package/dist/bubbles/tool-bubble/chart-js-tool.d.ts +4 -4
  51. package/dist/bubbles/tool-bubble/code-edit-tool.d.ts +4 -4
  52. package/dist/bubbles/tool-bubble/get-bubble-details-tool.d.ts +4 -4
  53. package/dist/bubbles/tool-bubble/get-trigger-detail-tool.d.ts +4 -4
  54. package/dist/bubbles/tool-bubble/google-maps-tool.d.ts +16 -16
  55. package/dist/bubbles/tool-bubble/instagram-tool.d.ts +4 -4
  56. package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +34 -34
  57. package/dist/bubbles/tool-bubble/list-bubbles-tool.d.ts +4 -4
  58. package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +14 -14
  59. package/dist/bubbles/tool-bubble/research-agent-tool.d.ts +4 -4
  60. package/dist/bubbles/tool-bubble/sql-query-tool.d.ts +8 -8
  61. package/dist/bubbles/tool-bubble/tiktok-tool.d.ts +12 -12
  62. package/dist/bubbles/tool-bubble/tool-template.d.ts +4 -4
  63. package/dist/bubbles/tool-bubble/twitter-tool.d.ts +14 -14
  64. package/dist/bubbles/tool-bubble/web-crawl-tool.d.ts +4 -4
  65. package/dist/bubbles/tool-bubble/web-extract-tool.d.ts +4 -4
  66. package/dist/bubbles/tool-bubble/web-scrape-tool.d.ts +4 -4
  67. package/dist/bubbles/tool-bubble/web-search-tool.d.ts +10 -10
  68. package/dist/bubbles/tool-bubble/youtube-tool.d.ts +14 -14
  69. package/dist/bubbles/workflow-bubble/database-analyzer.workflow.d.ts +4 -4
  70. package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts +16 -16
  71. package/dist/bubbles/workflow-bubble/parse-document.workflow.d.ts +4 -4
  72. package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +32 -32
  73. package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.d.ts +8 -8
  74. package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +8 -8
  75. package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts.map +1 -1
  76. package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.js +2 -2
  77. package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.js.map +1 -1
  78. package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +40 -40
  79. package/dist/bubbles/workflow-bubble/slack-notifier.workflow.d.ts +4 -4
  80. package/dist/bubbles/workflow-bubble/slack-notifier.workflow.js +1 -1
  81. package/dist/bubbles/workflow-bubble/slack-notifier.workflow.js.map +1 -1
  82. package/dist/bubbles.json +2 -2
  83. package/dist/index.d.ts +1 -1
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +1 -1
  86. package/dist/index.js.map +1 -1
  87. package/package.json +2 -2
  88. package/dist/bubbles/service-bubble/browserbase/browserbase.integration.flow.d.ts +0 -37
  89. package/dist/bubbles/service-bubble/browserbase/browserbase.integration.flow.d.ts.map +0 -1
  90. package/dist/bubbles/service-bubble/browserbase/browserbase.integration.flow.js +0 -203
  91. package/dist/bubbles/service-bubble/browserbase/browserbase.integration.flow.js.map +0 -1
  92. package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts +0 -1358
  93. package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts.map +0 -1
  94. package/dist/bubbles/service-bubble/crustdata/crustdata.js +0 -219
  95. package/dist/bubbles/service-bubble/crustdata/crustdata.js.map +0 -1
  96. package/dist/bubbles/service-bubble/crustdata/crustdata.schema.d.ts +0 -1604
  97. package/dist/bubbles/service-bubble/crustdata/crustdata.schema.d.ts.map +0 -1
  98. package/dist/bubbles/service-bubble/crustdata/crustdata.schema.js +0 -194
  99. package/dist/bubbles/service-bubble/crustdata/crustdata.schema.js.map +0 -1
  100. package/dist/bubbles/service-bubble/crustdata/index.d.ts +0 -3
  101. package/dist/bubbles/service-bubble/crustdata/index.d.ts.map +0 -1
  102. package/dist/bubbles/service-bubble/crustdata/index.js +0 -3
  103. package/dist/bubbles/service-bubble/crustdata/index.js.map +0 -1
  104. package/dist/bubbles/service-bubble/http.integration.flow.d.ts +0 -49
  105. package/dist/bubbles/service-bubble/http.integration.flow.d.ts.map +0 -1
  106. package/dist/bubbles/service-bubble/http.integration.flow.js +0 -425
  107. package/dist/bubbles/service-bubble/http.integration.flow.js.map +0 -1
  108. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.integration.flow.d.ts +0 -31
  109. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.integration.flow.d.ts.map +0 -1
  110. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.integration.flow.js +0 -100
  111. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.integration.flow.js.map +0 -1
  112. package/dist/bubbles/tool-bubble/company-enrichment-tool.d.ts +0 -740
  113. package/dist/bubbles/tool-bubble/company-enrichment-tool.d.ts.map +0 -1
  114. package/dist/bubbles/tool-bubble/company-enrichment-tool.js +0 -350
  115. package/dist/bubbles/tool-bubble/company-enrichment-tool.js.map +0 -1
@@ -154,7 +154,7 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
154
154
  verbatim?: boolean | undefined;
155
155
  }>, "many">>;
156
156
  }, "strip", z.ZodTypeAny, {
157
- type: "file" | "image" | "input" | "section" | "header" | "divider" | "context" | "actions";
157
+ type: "image" | "file" | "input" | "section" | "header" | "divider" | "context" | "actions";
158
158
  title?: {
159
159
  type: "plain_text";
160
160
  text: string;
@@ -173,7 +173,6 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
173
173
  verbatim?: boolean | undefined;
174
174
  }[] | undefined;
175
175
  image_url?: string | undefined;
176
- optional?: boolean | undefined;
177
176
  alt_text?: string | undefined;
178
177
  elements?: {
179
178
  type: "plain_text" | "mrkdwn";
@@ -181,13 +180,14 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
181
180
  emoji?: boolean | undefined;
182
181
  verbatim?: boolean | undefined;
183
182
  }[] | undefined;
183
+ optional?: boolean | undefined;
184
184
  block_id?: string | undefined;
185
185
  accessory?: unknown;
186
186
  element?: unknown;
187
187
  label?: unknown;
188
188
  hint?: unknown;
189
189
  }, {
190
- type: "file" | "image" | "input" | "section" | "header" | "divider" | "context" | "actions";
190
+ type: "image" | "file" | "input" | "section" | "header" | "divider" | "context" | "actions";
191
191
  title?: {
192
192
  type: "plain_text";
193
193
  text: string;
@@ -206,7 +206,6 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
206
206
  verbatim?: boolean | undefined;
207
207
  }[] | undefined;
208
208
  image_url?: string | undefined;
209
- optional?: boolean | undefined;
210
209
  alt_text?: string | undefined;
211
210
  elements?: {
212
211
  type: "plain_text" | "mrkdwn";
@@ -214,6 +213,7 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
214
213
  emoji?: boolean | undefined;
215
214
  verbatim?: boolean | undefined;
216
215
  }[] | undefined;
216
+ optional?: boolean | undefined;
217
217
  block_id?: string | undefined;
218
218
  accessory?: unknown;
219
219
  element?: unknown;
@@ -253,8 +253,8 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
253
253
  error: z.ZodString;
254
254
  success: z.ZodBoolean;
255
255
  }, "strip", z.ZodTypeAny, {
256
- success: boolean;
257
256
  error: string;
257
+ success: boolean;
258
258
  response: string;
259
259
  iterations: number;
260
260
  metadata: {
@@ -263,13 +263,8 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
263
263
  wordCount: number;
264
264
  blockCount?: number | undefined;
265
265
  };
266
- toolCalls?: {
267
- tool: string;
268
- input?: unknown;
269
- output?: unknown;
270
- }[] | undefined;
271
266
  blocks?: {
272
- type: "file" | "image" | "input" | "section" | "header" | "divider" | "context" | "actions";
267
+ type: "image" | "file" | "input" | "section" | "header" | "divider" | "context" | "actions";
273
268
  title?: {
274
269
  type: "plain_text";
275
270
  text: string;
@@ -288,7 +283,6 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
288
283
  verbatim?: boolean | undefined;
289
284
  }[] | undefined;
290
285
  image_url?: string | undefined;
291
- optional?: boolean | undefined;
292
286
  alt_text?: string | undefined;
293
287
  elements?: {
294
288
  type: "plain_text" | "mrkdwn";
@@ -296,15 +290,21 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
296
290
  emoji?: boolean | undefined;
297
291
  verbatim?: boolean | undefined;
298
292
  }[] | undefined;
293
+ optional?: boolean | undefined;
299
294
  block_id?: string | undefined;
300
295
  accessory?: unknown;
301
296
  element?: unknown;
302
297
  label?: unknown;
303
298
  hint?: unknown;
304
299
  }[] | undefined;
300
+ toolCalls?: {
301
+ tool: string;
302
+ input?: unknown;
303
+ output?: unknown;
304
+ }[] | undefined;
305
305
  }, {
306
- success: boolean;
307
306
  error: string;
307
+ success: boolean;
308
308
  response: string;
309
309
  iterations: number;
310
310
  metadata: {
@@ -313,13 +313,8 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
313
313
  wordCount: number;
314
314
  blockCount?: number | undefined;
315
315
  };
316
- toolCalls?: {
317
- tool: string;
318
- input?: unknown;
319
- output?: unknown;
320
- }[] | undefined;
321
316
  blocks?: {
322
- type: "file" | "image" | "input" | "section" | "header" | "divider" | "context" | "actions";
317
+ type: "image" | "file" | "input" | "section" | "header" | "divider" | "context" | "actions";
323
318
  title?: {
324
319
  type: "plain_text";
325
320
  text: string;
@@ -338,7 +333,6 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
338
333
  verbatim?: boolean | undefined;
339
334
  }[] | undefined;
340
335
  image_url?: string | undefined;
341
- optional?: boolean | undefined;
342
336
  alt_text?: string | undefined;
343
337
  elements?: {
344
338
  type: "plain_text" | "mrkdwn";
@@ -346,12 +340,18 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
346
340
  emoji?: boolean | undefined;
347
341
  verbatim?: boolean | undefined;
348
342
  }[] | undefined;
343
+ optional?: boolean | undefined;
349
344
  block_id?: string | undefined;
350
345
  accessory?: unknown;
351
346
  element?: unknown;
352
347
  label?: unknown;
353
348
  hint?: unknown;
354
349
  }[] | undefined;
350
+ toolCalls?: {
351
+ tool: string;
352
+ input?: unknown;
353
+ output?: unknown;
354
+ }[] | undefined;
355
355
  }>;
356
356
  type SlackFormatterAgentParams = z.input<typeof SlackFormatterAgentParamsSchema>;
357
357
  type SlackFormatterAgentParamsParsed = z.output<typeof SlackFormatterAgentParamsSchema>;
@@ -512,7 +512,7 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
512
512
  verbatim?: boolean | undefined;
513
513
  }>, "many">>;
514
514
  }, "strip", z.ZodTypeAny, {
515
- type: "file" | "image" | "input" | "section" | "header" | "divider" | "context" | "actions";
515
+ type: "image" | "file" | "input" | "section" | "header" | "divider" | "context" | "actions";
516
516
  title?: {
517
517
  type: "plain_text";
518
518
  text: string;
@@ -531,7 +531,6 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
531
531
  verbatim?: boolean | undefined;
532
532
  }[] | undefined;
533
533
  image_url?: string | undefined;
534
- optional?: boolean | undefined;
535
534
  alt_text?: string | undefined;
536
535
  elements?: {
537
536
  type: "plain_text" | "mrkdwn";
@@ -539,13 +538,14 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
539
538
  emoji?: boolean | undefined;
540
539
  verbatim?: boolean | undefined;
541
540
  }[] | undefined;
541
+ optional?: boolean | undefined;
542
542
  block_id?: string | undefined;
543
543
  accessory?: unknown;
544
544
  element?: unknown;
545
545
  label?: unknown;
546
546
  hint?: unknown;
547
547
  }, {
548
- type: "file" | "image" | "input" | "section" | "header" | "divider" | "context" | "actions";
548
+ type: "image" | "file" | "input" | "section" | "header" | "divider" | "context" | "actions";
549
549
  title?: {
550
550
  type: "plain_text";
551
551
  text: string;
@@ -564,7 +564,6 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
564
564
  verbatim?: boolean | undefined;
565
565
  }[] | undefined;
566
566
  image_url?: string | undefined;
567
- optional?: boolean | undefined;
568
567
  alt_text?: string | undefined;
569
568
  elements?: {
570
569
  type: "plain_text" | "mrkdwn";
@@ -572,6 +571,7 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
572
571
  emoji?: boolean | undefined;
573
572
  verbatim?: boolean | undefined;
574
573
  }[] | undefined;
574
+ optional?: boolean | undefined;
575
575
  block_id?: string | undefined;
576
576
  accessory?: unknown;
577
577
  element?: unknown;
@@ -611,8 +611,8 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
611
611
  error: z.ZodString;
612
612
  success: z.ZodBoolean;
613
613
  }, "strip", z.ZodTypeAny, {
614
- success: boolean;
615
614
  error: string;
615
+ success: boolean;
616
616
  response: string;
617
617
  iterations: number;
618
618
  metadata: {
@@ -621,13 +621,8 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
621
621
  wordCount: number;
622
622
  blockCount?: number | undefined;
623
623
  };
624
- toolCalls?: {
625
- tool: string;
626
- input?: unknown;
627
- output?: unknown;
628
- }[] | undefined;
629
624
  blocks?: {
630
- type: "file" | "image" | "input" | "section" | "header" | "divider" | "context" | "actions";
625
+ type: "image" | "file" | "input" | "section" | "header" | "divider" | "context" | "actions";
631
626
  title?: {
632
627
  type: "plain_text";
633
628
  text: string;
@@ -646,7 +641,6 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
646
641
  verbatim?: boolean | undefined;
647
642
  }[] | undefined;
648
643
  image_url?: string | undefined;
649
- optional?: boolean | undefined;
650
644
  alt_text?: string | undefined;
651
645
  elements?: {
652
646
  type: "plain_text" | "mrkdwn";
@@ -654,15 +648,21 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
654
648
  emoji?: boolean | undefined;
655
649
  verbatim?: boolean | undefined;
656
650
  }[] | undefined;
651
+ optional?: boolean | undefined;
657
652
  block_id?: string | undefined;
658
653
  accessory?: unknown;
659
654
  element?: unknown;
660
655
  label?: unknown;
661
656
  hint?: unknown;
662
657
  }[] | undefined;
658
+ toolCalls?: {
659
+ tool: string;
660
+ input?: unknown;
661
+ output?: unknown;
662
+ }[] | undefined;
663
663
  }, {
664
- success: boolean;
665
664
  error: string;
665
+ success: boolean;
666
666
  response: string;
667
667
  iterations: number;
668
668
  metadata: {
@@ -671,13 +671,8 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
671
671
  wordCount: number;
672
672
  blockCount?: number | undefined;
673
673
  };
674
- toolCalls?: {
675
- tool: string;
676
- input?: unknown;
677
- output?: unknown;
678
- }[] | undefined;
679
674
  blocks?: {
680
- type: "file" | "image" | "input" | "section" | "header" | "divider" | "context" | "actions";
675
+ type: "image" | "file" | "input" | "section" | "header" | "divider" | "context" | "actions";
681
676
  title?: {
682
677
  type: "plain_text";
683
678
  text: string;
@@ -696,7 +691,6 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
696
691
  verbatim?: boolean | undefined;
697
692
  }[] | undefined;
698
693
  image_url?: string | undefined;
699
- optional?: boolean | undefined;
700
694
  alt_text?: string | undefined;
701
695
  elements?: {
702
696
  type: "plain_text" | "mrkdwn";
@@ -704,12 +698,18 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
704
698
  emoji?: boolean | undefined;
705
699
  verbatim?: boolean | undefined;
706
700
  }[] | undefined;
701
+ optional?: boolean | undefined;
707
702
  block_id?: string | undefined;
708
703
  accessory?: unknown;
709
704
  element?: unknown;
710
705
  label?: unknown;
711
706
  hint?: unknown;
712
707
  }[] | undefined;
708
+ toolCalls?: {
709
+ tool: string;
710
+ input?: unknown;
711
+ output?: unknown;
712
+ }[] | undefined;
713
713
  }>;
714
714
  static readonly shortDescription = "AI agent for creating well-formatted Slack messages with adjustable verbosity and technicality";
715
715
  static readonly longDescription = "\n An AI agent that specializes in generating properly formatted Slack messages with:\n - Adjustable verbosity levels (1-5): from concise bullet points to comprehensive explanations\n - Adjustable technicality levels (1-5): from plain English to expert terminology\n - Native Slack markdown formatting (bold, italic, code blocks, lists)\n - Optional Slack Block Kit JSON for rich interactive messages\n - Tool integration for dynamic content generation\n \n Perfect for:\n - Creating consistent Slack notifications with appropriate detail level\n - Adapting any content for different audiences\n - Generating interactive Slack messages with Block Kit\n - Formatting summaries, reports, and updates for Slack channels\n - Building engaging team communications with proper structure\n - Converting any information into Slack-friendly format\n ";
@@ -148,8 +148,8 @@ declare const SlackNotifierResultSchema: z.ZodObject<{
148
148
  originalLength?: number | undefined;
149
149
  }>>;
150
150
  }, "strip", z.ZodTypeAny, {
151
- success: boolean;
152
151
  error: string;
152
+ success: boolean;
153
153
  messageInfo?: {
154
154
  channelName?: string | undefined;
155
155
  messageTimestamp?: string | undefined;
@@ -163,8 +163,8 @@ declare const SlackNotifierResultSchema: z.ZodObject<{
163
163
  originalLength?: number | undefined;
164
164
  } | undefined;
165
165
  }, {
166
- success: boolean;
167
166
  error: string;
167
+ success: boolean;
168
168
  messageInfo?: {
169
169
  channelName?: string | undefined;
170
170
  messageTimestamp?: string | undefined;
@@ -344,8 +344,8 @@ export declare class SlackNotifierWorkflowBubble extends WorkflowBubble<SlackNot
344
344
  originalLength?: number | undefined;
345
345
  }>>;
346
346
  }, "strip", z.ZodTypeAny, {
347
- success: boolean;
348
347
  error: string;
348
+ success: boolean;
349
349
  messageInfo?: {
350
350
  channelName?: string | undefined;
351
351
  messageTimestamp?: string | undefined;
@@ -359,8 +359,8 @@ export declare class SlackNotifierWorkflowBubble extends WorkflowBubble<SlackNot
359
359
  originalLength?: number | undefined;
360
360
  } | undefined;
361
361
  }, {
362
- success: boolean;
363
362
  error: string;
363
+ success: boolean;
364
364
  messageInfo?: {
365
365
  channelName?: string | undefined;
366
366
  messageTimestamp?: string | undefined;
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { WorkflowBubble } from '../../types/workflow-bubble-class.js';
3
- import { SlackBubble } from '../service-bubble/slack.js';
3
+ import { SlackBubble } from '../service-bubble/slack';
4
4
  import { AIAgentBubble } from '../service-bubble/ai-agent.js';
5
5
  import { CredentialType, AvailableModels, } from '@bubblelab/shared-schemas';
6
6
  // Parameter schema with user-friendly names and clear descriptions
@@ -1 +1 @@
1
- {"version":3,"file":"slack-notifier.workflow.js","sourceRoot":"","sources":["../../../src/bubbles/workflow-bubble/slack-notifier.workflow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slack-notifier.workflow.js","sourceRoot":"","sources":["../../../src/bubbles/workflow-bubble/slack-notifier.workflow.ts"],"names":[],"mappings":"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"}
package/dist/bubbles.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "1.0.0",
3
- "generatedAt": "2026-01-19T08:23:48.140Z",
3
+ "generatedAt": "2026-01-19T12:59:03.762Z",
4
4
  "totalCount": 50,
5
5
  "bubbles": [
6
6
  {
@@ -52,7 +52,7 @@
52
52
  "useCase": "General purpose bubble for various workflow needs",
53
53
  "inputSchema": "Complex schema - see usage example for structure",
54
54
  "outputSchema": "Complex schema - see usage example for structure",
55
- "usageExample": "// Send Message example\nconst slack_send_message = new SlackBubble({\n operation: \"send_message\", // Send a message to a Slack channel or DM. Required scopes: chat:write (add chat:write.public for public channels bot has not joined, add im:write to send DMs to users)\n channel: \"example string\", // Channel ID (e.g., C1234567890), channel name (e.g., general or #general), or user ID for DM (e.g., U1234567890 - requires im:write scope)\n text: \"example string\", // Message text content\n username: \"example string\", // Override bot username for this message\n icon_emoji: \"example string\", // Override bot icon with emoji (e.g., :robot_face:)\n icon_url: \"example string\", // Override bot icon with custom image URL\n attachments: [{ color: \"example string\" // Color bar accent (hex color or good/warning/danger), pretext: \"example string\" // Text that appears before the main attachment content, author_name: \"example string\" // Author name displayed at the top, author_link: \"example string\" // URL to link the author name, author_icon: \"example string\" // Author icon image URL, title: \"example string\" // Attachment title text, title_link: \"example string\" // URL to link the title, text: \"example string\" // Main attachment text content, fields: [{ title: \"example string\" // Field title, value: \"example string\" // Field value, short: true // Whether field should be displayed side-by-side }] // Array of field objects for structured data, image_url: \"example string\" // URL of image to display, thumb_url: \"example string\" // URL of thumbnail image, footer: \"example string\" // Footer text, footer_icon: \"example string\" // Footer icon URL, ts: 42 // Timestamp for the attachment }], // Legacy message attachments\n blocks: [{ type: \"example string\" // Block element type (section, divider, button, etc.), text: { type: \"plain_text\" // options: \"plain_text\", \"mrkdwn\" // Text formatting type, text: \"example string\" // The actual text content, emoji: true, verbatim: true } // Text object for the block element, elements: [{ type: \"plain_text\" // options: \"plain_text\", \"mrkdwn\", \"image\" // Element type, text: \"example string\" // Text content, image_url: \"example string\" // Image URL for image elements, alt_text: \"example string\" // Alt text for image elements, emoji: true, verbatim: true }] // Elements array for context blocks }], // Block Kit structured message blocks\n thread_ts: \"example string\", // Timestamp of parent message to reply in thread\n reply_broadcast: false // default, // Broadcast thread reply to channel\n unfurl_links: true // default, // Enable automatic link unfurling\n unfurl_media: true // default, // Enable automatic media unfurling\n});\n\nconst result = await slack_send_message.action();\n// outputSchema for result.data when operation === 'send_message':\n// {\n// operation: \"send_message\" // Send a message to a Slack channel or DM,\n// ok: boolean // Whether the Slack API call was successful,\n// channel: string | undefined // Channel ID where the message was sent,\n// ts: string | undefined // Timestamp of the sent message,\n// message: { type: string // Message type (usually \"message\"), ts: string // Message timestamp (unique identifier), user: string | undefined // User ID who sent the message, bot_id: string | undefined // Bot ID if message was sent by a bot, bot_profile: { name: string | undefined // Bot display name } | undefined // Bot profile information if message was sent by a bot, username: string | undefined // Username of the bot or user who sent the message, text: string | undefined // Message text content, thread_ts: string | undefined // Timestamp of parent message if this is a thread reply, parent_user_id: string | undefined // User ID of thread parent message author, reply_count: number | undefined // Number of replies in this thread, reply_users_count: number | undefined // Number of unique users who replied in thread, latest_reply: string | undefined // Timestamp of most recent reply in thread, reply_users: string[] | undefined // Array of user IDs who replied in thread, is_locked: boolean | undefined // True if thread is locked, subscribed: boolean | undefined // True if current user is subscribed to thread, attachments: unknown[] | undefined // Legacy message attachments, blocks: unknown[] | undefined // Block Kit structured content, reactions: { name: string // Emoji name without colons, users: string[] // User IDs who reacted with this emoji, count: number // Total count of this reaction }[] | undefined // Array of emoji reactions on this message } | undefined // Details of the sent message,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// List Channels example\nconst slack_list_channels = new SlackBubble({\n operation: \"list_channels\", // List all channels in the Slack workspace. Required scopes: channels:read (public), groups:read (private), im:read (DMs), mpim:read (group DMs)\n types: [\"public_channel\",\"private_channel\"] // default, // Types of channels to include in results\n exclude_archived: true // default, // Exclude archived channels from results\n limit: 50 // default, // Maximum number of channels to return (1-1000)\n cursor: \"example string\", // Cursor for pagination to get next set of results\n});\n\nconst result = await slack_list_channels.action();\n// outputSchema for result.data when operation === 'list_channels':\n// {\n// operation: \"list_channels\" // List all channels in the Slack workspace,\n// ok: boolean // Whether the Slack API call was successful,\n// channels: { id: string // Unique channel identifier, name: string // Channel name without # prefix, is_channel: boolean | undefined // True if this is a public channel, is_group: boolean | undefined // True if this is a private channel, is_im: boolean | undefined // True if this is a direct message, is_mpim: boolean | undefined // True if this is a multi-person direct message, is_private: boolean | undefined // True if this is a private channel, created: number // Unix timestamp when channel was created, is_archived: boolean // True if channel is archived, is_general: boolean | undefined // True if this is the #general channel, unlinked: number | undefined // Unix timestamp when channel was unlinked, name_normalized: string | undefined // Normalized channel name, is_shared: boolean | undefined // True if channel is shared with other workspaces, is_ext_shared: boolean | undefined // True if channel is shared externally, is_org_shared: boolean | undefined // True if channel is shared across organization, shared_team_ids: string[] | undefined // IDs of teams this channel is shared with, pending_shared: string[] | undefined // Pending shared connections, pending_connected_team_ids: string[] | undefined // Pending team connection IDs, is_pending_ext_shared: boolean | undefined // True if external sharing is pending, is_member: boolean | undefined // True if the bot is a member of this channel, is_open: boolean | undefined // True if the channel is open, topic: { value: string // Topic text, creator: string // User ID who set the topic, last_set: number // Unix timestamp when topic was last set } | undefined // Channel topic information, purpose: { value: string // Purpose text, creator: string // User ID who set the purpose, last_set: number // Unix timestamp when purpose was last set } | undefined // Channel purpose information, num_members: number | undefined // Number of members in the channel }[] | undefined // Array of channel objects,\n// response_metadata: { next_cursor: string // Cursor for pagination to get next set of results } | undefined // Metadata for pagination,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// Get Channel Info example\nconst slack_get_channel_info = new SlackBubble({\n operation: \"get_channel_info\", // Get detailed information about a specific channel. Required scopes: channels:read (public), groups:read (private), im:read (DMs), mpim:read (group DMs)\n channel: \"example string\", // Channel ID (e.g., C1234567890) or channel name (e.g., general or #general)\n include_locale: false // default, // Include locale information in the response\n});\n\nconst result = await slack_get_channel_info.action();\n// outputSchema for result.data when operation === 'get_channel_info':\n// {\n// operation: \"get_channel_info\" // Get detailed information about a specific channel,\n// ok: boolean // Whether the Slack API call was successful,\n// channel: { id: string // Unique channel identifier, name: string // Channel name without # prefix, is_channel: boolean | undefined // True if this is a public channel, is_group: boolean | undefined // True if this is a private channel, is_im: boolean | undefined // True if this is a direct message, is_mpim: boolean | undefined // True if this is a multi-person direct message, is_private: boolean | undefined // True if this is a private channel, created: number // Unix timestamp when channel was created, is_archived: boolean // True if channel is archived, is_general: boolean | undefined // True if this is the #general channel, unlinked: number | undefined // Unix timestamp when channel was unlinked, name_normalized: string | undefined // Normalized channel name, is_shared: boolean | undefined // True if channel is shared with other workspaces, is_ext_shared: boolean | undefined // True if channel is shared externally, is_org_shared: boolean | undefined // True if channel is shared across organization, shared_team_ids: string[] | undefined // IDs of teams this channel is shared with, pending_shared: string[] | undefined // Pending shared connections, pending_connected_team_ids: string[] | undefined // Pending team connection IDs, is_pending_ext_shared: boolean | undefined // True if external sharing is pending, is_member: boolean | undefined // True if the bot is a member of this channel, is_open: boolean | undefined // True if the channel is open, topic: { value: string // Topic text, creator: string // User ID who set the topic, last_set: number // Unix timestamp when topic was last set } | undefined // Channel topic information, purpose: { value: string // Purpose text, creator: string // User ID who set the purpose, last_set: number // Unix timestamp when purpose was last set } | undefined // Channel purpose information, num_members: number | undefined // Number of members in the channel } | undefined // Channel information object,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// Get User Info example\nconst slack_get_user_info = new SlackBubble({\n operation: \"get_user_info\", // Get detailed information about a specific user. Required scopes: users:read (add users:read.email to access email field)\n user: \"example string\", // User ID to get information about\n include_locale: false // default, // Include locale information in the response\n});\n\nconst result = await slack_get_user_info.action();\n// outputSchema for result.data when operation === 'get_user_info':\n// {\n// operation: \"get_user_info\" // Get detailed information about a specific user,\n// ok: boolean // Whether the Slack API call was successful,\n// user: { id: string // Unique user identifier, team_id: string | undefined // Team/workspace ID, name: string // Username (handle without @), deleted: boolean | undefined // True if user account is deleted, color: string | undefined // Color code for user in UI, real_name: string | undefined // Users real name, tz: string | undefined // Timezone identifier, tz_label: string | undefined // Human-readable timezone label, tz_offset: number | undefined // Timezone offset from UTC in seconds, profile: { title: string | undefined // Job title, phone: string | undefined // Phone number, skype: string | undefined // Skype username, real_name: string | undefined // Real name from profile, real_name_normalized: string | undefined // Normalized real name, display_name: string | undefined // Display name, display_name_normalized: string | undefined // Normalized display name, fields: Record<string, unknown> | undefined // Custom profile fields, status_text: string | undefined // Current status text, status_emoji: string | undefined // Current status emoji, status_expiration: number | undefined // Unix timestamp when status expires, avatar_hash: string | undefined // Hash for avatar image, image_original: string | undefined // URL of original avatar image, is_custom_image: boolean | undefined // True if using custom avatar, email: string | undefined // Email address, first_name: string | undefined // First name, last_name: string | undefined // Last name, image_24: string | undefined // 24x24 pixel avatar URL, image_32: string | undefined // 32x32 pixel avatar URL, image_48: string | undefined // 48x48 pixel avatar URL, image_72: string | undefined // 72x72 pixel avatar URL, image_192: string | undefined // 192x192 pixel avatar URL, image_512: string | undefined // 512x512 pixel avatar URL, image_1024: string | undefined // 1024x1024 pixel avatar URL } | undefined // User profile information, is_admin: boolean | undefined // True if user is workspace admin, is_owner: boolean | undefined // True if user is workspace owner, is_primary_owner: boolean | undefined // True if user is primary workspace owner, is_restricted: boolean | undefined // True if user is restricted (single-channel guest), is_ultra_restricted: boolean | undefined // True if user is ultra restricted (multi-channel guest), is_bot: boolean | undefined // True if this is a bot user, is_app_user: boolean | undefined // True if this is an app user, updated: number | undefined // Unix timestamp when user was last updated, has_2fa: boolean | undefined // True if user has two-factor authentication enabled } | undefined // User information object,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// List Users example\nconst slack_list_users = new SlackBubble({\n operation: \"list_users\", // List all users in the Slack workspace. Required scopes: users:read (add users:read.email to access email field)\n limit: 50 // default, // Maximum number of users to return (1-1000)\n cursor: \"example string\", // Cursor for pagination to get next set of results\n include_locale: false // default, // Include locale information in the response\n});\n\nconst result = await slack_list_users.action();\n// outputSchema for result.data when operation === 'list_users':\n// {\n// operation: \"list_users\" // List all users in the Slack workspace,\n// ok: boolean // Whether the Slack API call was successful,\n// members: { id: string // Unique user identifier, team_id: string | undefined // Team/workspace ID, name: string // Username (handle without @), deleted: boolean | undefined // True if user account is deleted, color: string | undefined // Color code for user in UI, real_name: string | undefined // Users real name, tz: string | undefined // Timezone identifier, tz_label: string | undefined // Human-readable timezone label, tz_offset: number | undefined // Timezone offset from UTC in seconds, profile: { title: string | undefined // Job title, phone: string | undefined // Phone number, skype: string | undefined // Skype username, real_name: string | undefined // Real name from profile, real_name_normalized: string | undefined // Normalized real name, display_name: string | undefined // Display name, display_name_normalized: string | undefined // Normalized display name, fields: Record<string, unknown> | undefined // Custom profile fields, status_text: string | undefined // Current status text, status_emoji: string | undefined // Current status emoji, status_expiration: number | undefined // Unix timestamp when status expires, avatar_hash: string | undefined // Hash for avatar image, image_original: string | undefined // URL of original avatar image, is_custom_image: boolean | undefined // True if using custom avatar, email: string | undefined // Email address, first_name: string | undefined // First name, last_name: string | undefined // Last name, image_24: string | undefined // 24x24 pixel avatar URL, image_32: string | undefined // 32x32 pixel avatar URL, image_48: string | undefined // 48x48 pixel avatar URL, image_72: string | undefined // 72x72 pixel avatar URL, image_192: string | undefined // 192x192 pixel avatar URL, image_512: string | undefined // 512x512 pixel avatar URL, image_1024: string | undefined // 1024x1024 pixel avatar URL } | undefined // User profile information, is_admin: boolean | undefined // True if user is workspace admin, is_owner: boolean | undefined // True if user is workspace owner, is_primary_owner: boolean | undefined // True if user is primary workspace owner, is_restricted: boolean | undefined // True if user is restricted (single-channel guest), is_ultra_restricted: boolean | undefined // True if user is ultra restricted (multi-channel guest), is_bot: boolean | undefined // True if this is a bot user, is_app_user: boolean | undefined // True if this is an app user, updated: number | undefined // Unix timestamp when user was last updated, has_2fa: boolean | undefined // True if user has two-factor authentication enabled }[] | undefined // Array of user objects,\n// response_metadata: { next_cursor: string // Cursor for pagination to get next set of results } | undefined // Metadata for pagination,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// Get Conversation History example\nconst slack_get_conversation_history = new SlackBubble({\n operation: \"get_conversation_history\", // Retrieve message history from a channel or direct message. Required scopes: channels:history (public), groups:history (private), im:history (DMs), mpim:history (group DMs)\n channel: \"example string\", // Channel ID (e.g., C1234567890) or channel name (e.g., general or #general)\n latest: \"example string\", // End of time range of messages to include (timestamp)\n oldest: \"example string\", // Start of time range of messages to include (timestamp)\n inclusive: false // default, // Include messages with latest or oldest timestamps in results\n limit: 20 // default, // Maximum number of messages to return (1-1000)\n cursor: \"example string\", // Cursor for pagination to get next set of results\n});\n\nconst result = await slack_get_conversation_history.action();\n// outputSchema for result.data when operation === 'get_conversation_history':\n// {\n// operation: \"get_conversation_history\" // Retrieve message history from a channel or direct message,\n// ok: boolean // Whether the Slack API call was successful,\n// messages: { type: string // Message type (usually \"message\"), ts: string // Message timestamp (unique identifier), user: string | undefined // User ID who sent the message, bot_id: string | undefined // Bot ID if message was sent by a bot, bot_profile: { name: string | undefined // Bot display name } | undefined // Bot profile information if message was sent by a bot, username: string | undefined // Username of the bot or user who sent the message, text: string | undefined // Message text content, thread_ts: string | undefined // Timestamp of parent message if this is a thread reply, parent_user_id: string | undefined // User ID of thread parent message author, reply_count: number | undefined // Number of replies in this thread, reply_users_count: number | undefined // Number of unique users who replied in thread, latest_reply: string | undefined // Timestamp of most recent reply in thread, reply_users: string[] | undefined // Array of user IDs who replied in thread, is_locked: boolean | undefined // True if thread is locked, subscribed: boolean | undefined // True if current user is subscribed to thread, attachments: unknown[] | undefined // Legacy message attachments, blocks: unknown[] | undefined // Block Kit structured content, reactions: { name: string // Emoji name without colons, users: string[] // User IDs who reacted with this emoji, count: number // Total count of this reaction }[] | undefined // Array of emoji reactions on this message }[] | undefined // Array of message objects,\n// has_more: boolean | undefined // Whether there are more messages to retrieve,\n// response_metadata: { next_cursor: string // Cursor for pagination to get next set of results } | undefined // Metadata for pagination,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// Get Thread Replies example\nconst slack_get_thread_replies = new SlackBubble({\n operation: \"get_thread_replies\", // Retrieve all replies to a thread in a channel. Required scopes: channels:history (public), groups:history (private), im:history (DMs), mpim:history (group DMs)\n channel: \"example string\", // Channel ID where the thread exists\n ts: \"example string\", // Timestamp of the parent message to get replies for\n latest: \"example string\", // End of time range of messages to include (timestamp)\n oldest: \"example string\", // Start of time range of messages to include (timestamp)\n inclusive: false // default, // Include messages with latest or oldest timestamps in results\n limit: 100 // default, // Maximum number of messages to return (1-1000)\n cursor: \"example string\", // Cursor for pagination to get next set of results\n});\n\nconst result = await slack_get_thread_replies.action();\n// outputSchema for result.data when operation === 'get_thread_replies':\n// {\n// operation: \"get_thread_replies\" // Retrieve all replies to a thread in a channel,\n// ok: boolean // Whether the Slack API call was successful,\n// messages: { type: string // Message type (usually \"message\"), ts: string // Message timestamp (unique identifier), user: string | undefined // User ID who sent the message, bot_id: string | undefined // Bot ID if message was sent by a bot, bot_profile: { name: string | undefined // Bot display name } | undefined // Bot profile information if message was sent by a bot, username: string | undefined // Username of the bot or user who sent the message, text: string | undefined // Message text content, thread_ts: string | undefined // Timestamp of parent message if this is a thread reply, parent_user_id: string | undefined // User ID of thread parent message author, reply_count: number | undefined // Number of replies in this thread, reply_users_count: number | undefined // Number of unique users who replied in thread, latest_reply: string | undefined // Timestamp of most recent reply in thread, reply_users: string[] | undefined // Array of user IDs who replied in thread, is_locked: boolean | undefined // True if thread is locked, subscribed: boolean | undefined // True if current user is subscribed to thread, attachments: unknown[] | undefined // Legacy message attachments, blocks: unknown[] | undefined // Block Kit structured content, reactions: { name: string // Emoji name without colons, users: string[] // User IDs who reacted with this emoji, count: number // Total count of this reaction }[] | undefined // Array of emoji reactions on this message }[] | undefined // Array of message objects in the thread,\n// has_more: boolean | undefined // Whether there are more messages to retrieve,\n// response_metadata: { next_cursor: string // Cursor for pagination to get next set of results } | undefined // Metadata for pagination,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// Update Message example\nconst slack_update_message = new SlackBubble({\n operation: \"update_message\", // Update an existing message in a channel. Required scopes: chat:write\n channel: \"example string\", // Channel ID (e.g., C1234567890) or channel name (e.g., general or #general) where the message is located\n ts: \"example string\", // Timestamp of the message to update\n text: \"example string\", // New text content for the message\n attachments: [{ color: \"example string\" // Color bar accent (hex color or good/warning/danger), pretext: \"example string\" // Text that appears before the main attachment content, author_name: \"example string\" // Author name displayed at the top, author_link: \"example string\" // URL to link the author name, author_icon: \"example string\" // Author icon image URL, title: \"example string\" // Attachment title text, title_link: \"example string\" // URL to link the title, text: \"example string\" // Main attachment text content, fields: [{ title: \"example string\" // Field title, value: \"example string\" // Field value, short: true // Whether field should be displayed side-by-side }] // Array of field objects for structured data, image_url: \"example string\" // URL of image to display, thumb_url: \"example string\" // URL of thumbnail image, footer: \"example string\" // Footer text, footer_icon: \"example string\" // Footer icon URL, ts: 42 // Timestamp for the attachment }], // New legacy message attachments\n blocks: [{ type: \"example string\" // Block element type (section, divider, button, etc.), text: { type: \"plain_text\" // options: \"plain_text\", \"mrkdwn\" // Text formatting type, text: \"example string\" // The actual text content, emoji: true, verbatim: true } // Text object for the block element, elements: [{ type: \"plain_text\" // options: \"plain_text\", \"mrkdwn\", \"image\" // Element type, text: \"example string\" // Text content, image_url: \"example string\" // Image URL for image elements, alt_text: \"example string\" // Alt text for image elements, emoji: true, verbatim: true }] // Elements array for context blocks }], // New Block Kit structured message blocks\n});\n\nconst result = await slack_update_message.action();\n// outputSchema for result.data when operation === 'update_message':\n// {\n// operation: \"update_message\" // Update an existing message in a channel,\n// ok: boolean // Whether the Slack API call was successful,\n// channel: string | undefined // Channel ID where the message was updated,\n// ts: string | undefined // Timestamp of the updated message,\n// text: string | undefined // Updated text content of the message,\n// message: { type: string // Message type (usually \"message\"), ts: string // Message timestamp (unique identifier), user: string | undefined // User ID who sent the message, bot_id: string | undefined // Bot ID if message was sent by a bot, bot_profile: { name: string | undefined // Bot display name } | undefined // Bot profile information if message was sent by a bot, username: string | undefined // Username of the bot or user who sent the message, text: string | undefined // Message text content, thread_ts: string | undefined // Timestamp of parent message if this is a thread reply, parent_user_id: string | undefined // User ID of thread parent message author, reply_count: number | undefined // Number of replies in this thread, reply_users_count: number | undefined // Number of unique users who replied in thread, latest_reply: string | undefined // Timestamp of most recent reply in thread, reply_users: string[] | undefined // Array of user IDs who replied in thread, is_locked: boolean | undefined // True if thread is locked, subscribed: boolean | undefined // True if current user is subscribed to thread, attachments: unknown[] | undefined // Legacy message attachments, blocks: unknown[] | undefined // Block Kit structured content, reactions: { name: string // Emoji name without colons, users: string[] // User IDs who reacted with this emoji, count: number // Total count of this reaction }[] | undefined // Array of emoji reactions on this message } | undefined // Details of the updated message,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// Delete Message example\nconst slack_delete_message = new SlackBubble({\n operation: \"delete_message\", // Delete a message from a channel. Required scopes: chat:write. Note: Bot tokens can only delete messages posted by the bot; user tokens can delete any message the user has permission to delete\n channel: \"example string\", // Channel ID (e.g., C1234567890) or channel name (e.g., general or #general) where the message is located\n ts: \"example string\", // Timestamp of the message to delete\n});\n\nconst result = await slack_delete_message.action();\n// outputSchema for result.data when operation === 'delete_message':\n// {\n// operation: \"delete_message\" // Delete a message from a channel,\n// ok: boolean // Whether the Slack API call was successful,\n// channel: string | undefined // Channel ID where the message was deleted,\n// ts: string | undefined // Timestamp of the deleted message,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// Add Reaction example\nconst slack_add_reaction = new SlackBubble({\n operation: \"add_reaction\", // Add an emoji reaction to a message. Required scopes: reactions:write\n name: \"example string\", // Emoji name without colons (e.g., thumbsup, heart)\n channel: \"example string\", // Channel ID (e.g., C1234567890) or channel name (e.g., general or #general) where the message is located\n timestamp: \"example string\", // Timestamp of the message to react to\n});\n\nconst result = await slack_add_reaction.action();\n// outputSchema for result.data when operation === 'add_reaction':\n// {\n// operation: \"add_reaction\" // Add an emoji reaction to a message,\n// ok: boolean // Whether the Slack API call was successful,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// Remove Reaction example\nconst slack_remove_reaction = new SlackBubble({\n operation: \"remove_reaction\", // Remove an emoji reaction from a message. Required scopes: reactions:write\n name: \"example string\", // Emoji name without colons (e.g., thumbsup, heart)\n channel: \"example string\", // Channel ID (e.g., C1234567890) or channel name (e.g., general or #general) where the message is located\n timestamp: \"example string\", // Timestamp of the message to remove reaction from\n});\n\nconst result = await slack_remove_reaction.action();\n// outputSchema for result.data when operation === 'remove_reaction':\n// {\n// operation: \"remove_reaction\" // Remove an emoji reaction from a message,\n// ok: boolean // Whether the Slack API call was successful,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// Join Channel example\nconst slack_join_channel = new SlackBubble({\n operation: \"join_channel\", // Join a public Slack channel. Required scopes: channels:join (bot token) or channels:write (user token)\n channel: \"example string\", // Channel ID (e.g., C1234567890) or channel name (e.g., general or #general) to join\n});\n\nconst result = await slack_join_channel.action();\n// outputSchema for result.data when operation === 'join_channel':\n// {\n// operation: \"join_channel\" // Join a public Slack channel,\n// ok: boolean // Whether the Slack API call was successful,\n// channel: { id: string // Unique channel identifier, name: string // Channel name without # prefix, is_channel: boolean | undefined // True if this is a public channel, is_group: boolean | undefined // True if this is a private channel, is_im: boolean | undefined // True if this is a direct message, is_mpim: boolean | undefined // True if this is a multi-person direct message, is_private: boolean | undefined // True if this is a private channel, created: number // Unix timestamp when channel was created, is_archived: boolean // True if channel is archived, is_general: boolean | undefined // True if this is the #general channel, unlinked: number | undefined // Unix timestamp when channel was unlinked, name_normalized: string | undefined // Normalized channel name, is_shared: boolean | undefined // True if channel is shared with other workspaces, is_ext_shared: boolean | undefined // True if channel is shared externally, is_org_shared: boolean | undefined // True if channel is shared across organization, shared_team_ids: string[] | undefined // IDs of teams this channel is shared with, pending_shared: string[] | undefined // Pending shared connections, pending_connected_team_ids: string[] | undefined // Pending team connection IDs, is_pending_ext_shared: boolean | undefined // True if external sharing is pending, is_member: boolean | undefined // True if the bot is a member of this channel, is_open: boolean | undefined // True if the channel is open, topic: { value: string // Topic text, creator: string // User ID who set the topic, last_set: number // Unix timestamp when topic was last set } | undefined // Channel topic information, purpose: { value: string // Purpose text, creator: string // User ID who set the purpose, last_set: number // Unix timestamp when purpose was last set } | undefined // Channel purpose information, num_members: number | undefined // Number of members in the channel } | undefined // Channel information object after joining,\n// already_in_channel: boolean | undefined // Whether the bot was already a member of the channel,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// Upload File example\nconst slack_upload_file = new SlackBubble({\n operation: \"upload_file\", // Upload a file to a Slack channel. Required scopes: files:write\n channel: \"example string\", // Channel ID (e.g., C1234567890), channel name (e.g., general or #general), or user ID for DM\n file_path: \"example string\", // Local file path to upload\n filename: \"example string\", // Override filename for the upload\n title: \"example string\", // Title for the file\n initial_comment: \"example string\", // Initial comment to post with the file\n thread_ts: \"example string\", // Timestamp of parent message to upload file in thread\n});\n\nconst result = await slack_upload_file.action();\n// outputSchema for result.data when operation === 'upload_file':\n// {\n// operation: \"upload_file\" // Upload a file to a Slack channel,\n// ok: boolean // Whether the Slack API call was successful,\n// file: { id: string // Unique file identifier, created: number // Unix timestamp when file was created, timestamp: number // Unix timestamp when file was uploaded, name: string // Original filename, title: string | undefined // File title, mimetype: string // MIME type of the file, filetype: string // File type extension, pretty_type: string // Human-readable file type, user: string // User ID who uploaded the file, editable: boolean // Whether the file is editable, size: number // File size in bytes, mode: string // File sharing mode, is_external: boolean // Whether file is from external source, external_type: string // External file type if applicable, is_public: boolean // Whether file is publicly accessible, public_url_shared: boolean // Whether public URL is shared, display_as_bot: boolean // Whether file is displayed as uploaded by bot, username: string // Username of uploader, url_private: string // Private URL to access file, url_private_download: string // Private download URL, permalink: string // Permanent link to file, permalink_public: string | undefined // Public permanent link, shares: { public: Record<string, { reply_users: string[] // User IDs who replied, reply_users_count: number // Number of unique users who replied, reply_count: number // Total number of replies, ts: string // Timestamp of the share, channel_name: string // Name of the channel, team_id: string // Team ID }[]> | undefined // Public channel shares, private: Record<string, { reply_users: string[] // User IDs who replied, reply_users_count: number // Number of unique users who replied, reply_count: number // Total number of replies, ts: string // Timestamp of the share, channel_name: string // Name of the channel, team_id: string // Team ID }[]> | undefined // Private channel shares } | undefined // Information about where file is shared, channels: string[] | undefined // Channel IDs where file is shared, groups: string[] | undefined // Private group IDs where file is shared, ims: string[] | undefined // Direct message IDs where file is shared, has_rich_preview: boolean | undefined // Whether file has rich preview } | undefined // File information object,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// Schedule Message example\nconst slack_schedule_message = new SlackBubble({\n operation: \"schedule_message\", // Schedule a message to be sent at a future time. Required scopes: chat:write. Max 120 days in advance.\n channel: \"example string\", // Channel ID (e.g., C1234567890), channel name (e.g., general or #general), or user ID for DM\n text: \"example string\", // Message text content\n post_at: 42, // Unix timestamp (seconds) for when to send the message. Must be within 120 days from now.\n thread_ts: \"example string\", // Timestamp of parent message to reply in thread\n blocks: [{ type: \"example string\" // Block element type (section, divider, button, etc.), text: { type: \"plain_text\" // options: \"plain_text\", \"mrkdwn\" // Text formatting type, text: \"example string\" // The actual text content, emoji: true, verbatim: true } // Text object for the block element, elements: [{ type: \"plain_text\" // options: \"plain_text\", \"mrkdwn\", \"image\" // Element type, text: \"example string\" // Text content, image_url: \"example string\" // Image URL for image elements, alt_text: \"example string\" // Alt text for image elements, emoji: true, verbatim: true }] // Elements array for context blocks }], // Block Kit structured message blocks\n unfurl_links: true // default, // Enable automatic link unfurling\n unfurl_media: true // default, // Enable automatic media unfurling\n});\n\nconst result = await slack_schedule_message.action();\n// outputSchema for result.data when operation === 'schedule_message':\n// {\n// operation: \"schedule_message\" // Schedule a message to be sent at a future time,\n// ok: boolean // Whether the Slack API call was successful,\n// channel: string | undefined // Channel ID where message will be posted,\n// scheduled_message_id: string | undefined // Unique identifier for the scheduled message,\n// post_at: number | undefined // Unix timestamp when message will be posted,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n throw new Error(`slack failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
55
+ "usageExample": "// Send Message example\nconst slack_send_message = new SlackBubble({\n operation: \"send_message\", // Send a message to a Slack channel or DM. Required scopes: chat:write (add chat:write.public for public channels bot has not joined, add im:write to send DMs to users)\n channel: \"example string\", // Channel ID (e.g., C1234567890), channel name (e.g., general or #general), or user ID for DM (e.g., U1234567890 - requires im:write scope)\n text: \"example string\", // Message text content\n username: \"example string\", // Override bot username for this message\n icon_emoji: \"example string\", // Override bot icon with emoji (e.g., :robot_face:)\n icon_url: \"example string\", // Override bot icon with custom image URL\n attachments: [{ color: \"example string\" // Color bar accent (hex color or good/warning/danger), pretext: \"example string\" // Text that appears before the main attachment content, author_name: \"example string\" // Author name displayed at the top, author_link: \"example string\" // URL to link the author name, author_icon: \"example string\" // Author icon image URL, title: \"example string\" // Attachment title text, title_link: \"example string\" // URL to link the title, text: \"example string\" // Main attachment text content, fields: [{ title: \"example string\" // Field title, value: \"example string\" // Field value, short: true // Whether field should be displayed side-by-side }] // Array of field objects for structured data, image_url: \"example string\" // URL of image to display, thumb_url: \"example string\" // URL of thumbnail image, footer: \"example string\" // Footer text, footer_icon: \"example string\" // Footer icon URL, ts: 42 // Timestamp for the attachment }], // Legacy message attachments\n blocks: [{ type: \"example string\" // Block element type (section, divider, button, etc.), text: { type: \"plain_text\" // options: \"plain_text\", \"mrkdwn\" // Text formatting type, text: \"example string\" // The actual text content, emoji: true, verbatim: true } // Text object for the block element, elements: [{ type: \"plain_text\" // options: \"plain_text\", \"mrkdwn\", \"image\" // Element type, text: \"example string\" // Text content, image_url: \"example string\" // Image URL for image elements, alt_text: \"example string\" // Alt text for image elements, emoji: true, verbatim: true }] // Elements array for context blocks }], // Block Kit structured message blocks\n thread_ts: \"example string\", // Timestamp of parent message to reply in thread\n reply_broadcast: false // default, // Broadcast thread reply to channel\n unfurl_links: true // default, // Enable automatic link unfurling\n unfurl_media: true // default, // Enable automatic media unfurling\n});\n\nconst result = await slack_send_message.action();\n// outputSchema for result.data when operation === 'send_message':\n// {\n// operation: \"send_message\" // Send a message to a Slack channel or DM,\n// ok: boolean // Whether the Slack API call was successful,\n// channel: string | undefined // Channel ID where the message was sent,\n// ts: string | undefined // Timestamp of the sent message,\n// message: { type: string // Message type (usually \"message\"), ts: string | undefined // Message timestamp (unique identifier), user: string | undefined // User ID who sent the message, bot_id: string | undefined // Bot ID if message was sent by a bot, bot_profile: { name: string | undefined // Bot display name } | undefined // Bot profile information if message was sent by a bot, username: string | undefined // Username of the bot or user who sent the message, text: string | undefined // Message text content, thread_ts: string | undefined // Timestamp of parent message if this is a thread reply, parent_user_id: string | undefined // User ID of thread parent message author, reply_count: number | undefined // Number of replies in this thread, reply_users_count: number | undefined // Number of unique users who replied in thread, latest_reply: string | undefined // Timestamp of most recent reply in thread, reply_users: string[] | undefined // Array of user IDs who replied in thread, is_locked: boolean | undefined // True if thread is locked, subscribed: boolean | undefined // True if current user is subscribed to thread, attachments: unknown[] | undefined // Legacy message attachments, blocks: unknown[] | undefined // Block Kit structured content, reactions: { name: string // Emoji name without colons, users: string[] // User IDs who reacted with this emoji, count: number // Total count of this reaction }[] | undefined // Array of emoji reactions on this message } | undefined // Details of the sent message,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// List Channels example\nconst slack_list_channels = new SlackBubble({\n operation: \"list_channels\", // List all channels in the Slack workspace. Required scopes: channels:read (public), groups:read (private), im:read (DMs), mpim:read (group DMs)\n types: [\"public_channel\",\"private_channel\"] // default, // Types of channels to include in results\n exclude_archived: true // default, // Exclude archived channels from results\n limit: 50 // default, // Maximum number of channels to return (1-1000)\n cursor: \"example string\", // Cursor for pagination to get next set of results\n});\n\nconst result = await slack_list_channels.action();\n// outputSchema for result.data when operation === 'list_channels':\n// {\n// operation: \"list_channels\" // List all channels in the Slack workspace,\n// ok: boolean // Whether the Slack API call was successful,\n// channels: { id: string // Unique channel identifier, name: string // Channel name without # prefix, is_channel: boolean | undefined // True if this is a public channel, is_group: boolean | undefined // True if this is a private channel, is_im: boolean | undefined // True if this is a direct message, is_mpim: boolean | undefined // True if this is a multi-person direct message, is_private: boolean | undefined // True if this is a private channel, created: number // Unix timestamp when channel was created, is_archived: boolean // True if channel is archived, is_general: boolean | undefined // True if this is the #general channel, unlinked: number | undefined // Unix timestamp when channel was unlinked, name_normalized: string | undefined // Normalized channel name, is_shared: boolean | undefined // True if channel is shared with other workspaces, is_ext_shared: boolean | undefined // True if channel is shared externally, is_org_shared: boolean | undefined // True if channel is shared across organization, shared_team_ids: string[] | undefined // IDs of teams this channel is shared with, pending_shared: string[] | undefined // Pending shared connections, pending_connected_team_ids: string[] | undefined // Pending team connection IDs, is_pending_ext_shared: boolean | undefined // True if external sharing is pending, is_member: boolean | undefined // True if the bot is a member of this channel, is_open: boolean | undefined // True if the channel is open, topic: { value: string // Topic text, creator: string // User ID who set the topic, last_set: number // Unix timestamp when topic was last set } | undefined // Channel topic information, purpose: { value: string // Purpose text, creator: string // User ID who set the purpose, last_set: number // Unix timestamp when purpose was last set } | undefined // Channel purpose information, num_members: number | undefined // Number of members in the channel }[] | undefined // Array of channel objects,\n// response_metadata: { next_cursor: string // Cursor for pagination to get next set of results } | undefined // Metadata for pagination,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// Get Channel Info example\nconst slack_get_channel_info = new SlackBubble({\n operation: \"get_channel_info\", // Get detailed information about a specific channel. Required scopes: channels:read (public), groups:read (private), im:read (DMs), mpim:read (group DMs)\n channel: \"example string\", // Channel ID (e.g., C1234567890) or channel name (e.g., general or #general)\n include_locale: false // default, // Include locale information in the response\n});\n\nconst result = await slack_get_channel_info.action();\n// outputSchema for result.data when operation === 'get_channel_info':\n// {\n// operation: \"get_channel_info\" // Get detailed information about a specific channel,\n// ok: boolean // Whether the Slack API call was successful,\n// channel: { id: string // Unique channel identifier, name: string // Channel name without # prefix, is_channel: boolean | undefined // True if this is a public channel, is_group: boolean | undefined // True if this is a private channel, is_im: boolean | undefined // True if this is a direct message, is_mpim: boolean | undefined // True if this is a multi-person direct message, is_private: boolean | undefined // True if this is a private channel, created: number // Unix timestamp when channel was created, is_archived: boolean // True if channel is archived, is_general: boolean | undefined // True if this is the #general channel, unlinked: number | undefined // Unix timestamp when channel was unlinked, name_normalized: string | undefined // Normalized channel name, is_shared: boolean | undefined // True if channel is shared with other workspaces, is_ext_shared: boolean | undefined // True if channel is shared externally, is_org_shared: boolean | undefined // True if channel is shared across organization, shared_team_ids: string[] | undefined // IDs of teams this channel is shared with, pending_shared: string[] | undefined // Pending shared connections, pending_connected_team_ids: string[] | undefined // Pending team connection IDs, is_pending_ext_shared: boolean | undefined // True if external sharing is pending, is_member: boolean | undefined // True if the bot is a member of this channel, is_open: boolean | undefined // True if the channel is open, topic: { value: string // Topic text, creator: string // User ID who set the topic, last_set: number // Unix timestamp when topic was last set } | undefined // Channel topic information, purpose: { value: string // Purpose text, creator: string // User ID who set the purpose, last_set: number // Unix timestamp when purpose was last set } | undefined // Channel purpose information, num_members: number | undefined // Number of members in the channel } | undefined // Channel information object,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// Get User Info example\nconst slack_get_user_info = new SlackBubble({\n operation: \"get_user_info\", // Get detailed information about a specific user. Required scopes: users:read (add users:read.email to access email field)\n user: \"example string\", // User ID to get information about\n include_locale: false // default, // Include locale information in the response\n});\n\nconst result = await slack_get_user_info.action();\n// outputSchema for result.data when operation === 'get_user_info':\n// {\n// operation: \"get_user_info\" // Get detailed information about a specific user,\n// ok: boolean // Whether the Slack API call was successful,\n// user: { id: string // Unique user identifier, team_id: string | undefined // Team/workspace ID, name: string // Username (handle without @), deleted: boolean | undefined // True if user account is deleted, color: string | undefined // Color code for user in UI, real_name: string | undefined // Users real name, tz: string | undefined // Timezone identifier, tz_label: string | undefined // Human-readable timezone label, tz_offset: number | undefined // Timezone offset from UTC in seconds, profile: { title: string | undefined // Job title, phone: string | undefined // Phone number, skype: string | undefined // Skype username, real_name: string | undefined // Real name from profile, real_name_normalized: string | undefined // Normalized real name, display_name: string | undefined // Display name, display_name_normalized: string | undefined // Normalized display name, fields: Record<string, unknown> | undefined // Custom profile fields, status_text: string | undefined // Current status text, status_emoji: string | undefined // Current status emoji, status_expiration: number | undefined // Unix timestamp when status expires, avatar_hash: string | undefined // Hash for avatar image, image_original: string | undefined // URL of original avatar image, is_custom_image: boolean | undefined // True if using custom avatar, email: string | undefined // Email address, first_name: string | undefined // First name, last_name: string | undefined // Last name, image_24: string | undefined // 24x24 pixel avatar URL, image_32: string | undefined // 32x32 pixel avatar URL, image_48: string | undefined // 48x48 pixel avatar URL, image_72: string | undefined // 72x72 pixel avatar URL, image_192: string | undefined // 192x192 pixel avatar URL, image_512: string | undefined // 512x512 pixel avatar URL, image_1024: string | undefined // 1024x1024 pixel avatar URL } | undefined // User profile information, is_admin: boolean | undefined // True if user is workspace admin, is_owner: boolean | undefined // True if user is workspace owner, is_primary_owner: boolean | undefined // True if user is primary workspace owner, is_restricted: boolean | undefined // True if user is restricted (single-channel guest), is_ultra_restricted: boolean | undefined // True if user is ultra restricted (multi-channel guest), is_bot: boolean | undefined // True if this is a bot user, is_app_user: boolean | undefined // True if this is an app user, updated: number | undefined // Unix timestamp when user was last updated, has_2fa: boolean | undefined // True if user has two-factor authentication enabled } | undefined // User information object,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// List Users example\nconst slack_list_users = new SlackBubble({\n operation: \"list_users\", // List all users in the Slack workspace. Required scopes: users:read (add users:read.email to access email field)\n limit: 50 // default, // Maximum number of users to return (1-1000)\n cursor: \"example string\", // Cursor for pagination to get next set of results\n include_locale: false // default, // Include locale information in the response\n});\n\nconst result = await slack_list_users.action();\n// outputSchema for result.data when operation === 'list_users':\n// {\n// operation: \"list_users\" // List all users in the Slack workspace,\n// ok: boolean // Whether the Slack API call was successful,\n// members: { id: string // Unique user identifier, team_id: string | undefined // Team/workspace ID, name: string // Username (handle without @), deleted: boolean | undefined // True if user account is deleted, color: string | undefined // Color code for user in UI, real_name: string | undefined // Users real name, tz: string | undefined // Timezone identifier, tz_label: string | undefined // Human-readable timezone label, tz_offset: number | undefined // Timezone offset from UTC in seconds, profile: { title: string | undefined // Job title, phone: string | undefined // Phone number, skype: string | undefined // Skype username, real_name: string | undefined // Real name from profile, real_name_normalized: string | undefined // Normalized real name, display_name: string | undefined // Display name, display_name_normalized: string | undefined // Normalized display name, fields: Record<string, unknown> | undefined // Custom profile fields, status_text: string | undefined // Current status text, status_emoji: string | undefined // Current status emoji, status_expiration: number | undefined // Unix timestamp when status expires, avatar_hash: string | undefined // Hash for avatar image, image_original: string | undefined // URL of original avatar image, is_custom_image: boolean | undefined // True if using custom avatar, email: string | undefined // Email address, first_name: string | undefined // First name, last_name: string | undefined // Last name, image_24: string | undefined // 24x24 pixel avatar URL, image_32: string | undefined // 32x32 pixel avatar URL, image_48: string | undefined // 48x48 pixel avatar URL, image_72: string | undefined // 72x72 pixel avatar URL, image_192: string | undefined // 192x192 pixel avatar URL, image_512: string | undefined // 512x512 pixel avatar URL, image_1024: string | undefined // 1024x1024 pixel avatar URL } | undefined // User profile information, is_admin: boolean | undefined // True if user is workspace admin, is_owner: boolean | undefined // True if user is workspace owner, is_primary_owner: boolean | undefined // True if user is primary workspace owner, is_restricted: boolean | undefined // True if user is restricted (single-channel guest), is_ultra_restricted: boolean | undefined // True if user is ultra restricted (multi-channel guest), is_bot: boolean | undefined // True if this is a bot user, is_app_user: boolean | undefined // True if this is an app user, updated: number | undefined // Unix timestamp when user was last updated, has_2fa: boolean | undefined // True if user has two-factor authentication enabled }[] | undefined // Array of user objects,\n// response_metadata: { next_cursor: string // Cursor for pagination to get next set of results } | undefined // Metadata for pagination,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// Get Conversation History example\nconst slack_get_conversation_history = new SlackBubble({\n operation: \"get_conversation_history\", // Retrieve message history from a channel or direct message. Required scopes: channels:history (public), groups:history (private), im:history (DMs), mpim:history (group DMs)\n channel: \"example string\", // Channel ID (e.g., C1234567890) or channel name (e.g., general or #general)\n latest: \"example string\", // End of time range of messages to include (timestamp)\n oldest: \"example string\", // Start of time range of messages to include (timestamp)\n inclusive: false // default, // Include messages with latest or oldest timestamps in results\n limit: 20 // default, // Maximum number of messages to return (1-1000)\n cursor: \"example string\", // Cursor for pagination to get next set of results\n});\n\nconst result = await slack_get_conversation_history.action();\n// outputSchema for result.data when operation === 'get_conversation_history':\n// {\n// operation: \"get_conversation_history\" // Retrieve message history from a channel or direct message,\n// ok: boolean // Whether the Slack API call was successful,\n// messages: { type: string // Message type (usually \"message\"), ts: string | undefined // Message timestamp (unique identifier), user: string | undefined // User ID who sent the message, bot_id: string | undefined // Bot ID if message was sent by a bot, bot_profile: { name: string | undefined // Bot display name } | undefined // Bot profile information if message was sent by a bot, username: string | undefined // Username of the bot or user who sent the message, text: string | undefined // Message text content, thread_ts: string | undefined // Timestamp of parent message if this is a thread reply, parent_user_id: string | undefined // User ID of thread parent message author, reply_count: number | undefined // Number of replies in this thread, reply_users_count: number | undefined // Number of unique users who replied in thread, latest_reply: string | undefined // Timestamp of most recent reply in thread, reply_users: string[] | undefined // Array of user IDs who replied in thread, is_locked: boolean | undefined // True if thread is locked, subscribed: boolean | undefined // True if current user is subscribed to thread, attachments: unknown[] | undefined // Legacy message attachments, blocks: unknown[] | undefined // Block Kit structured content, reactions: { name: string // Emoji name without colons, users: string[] // User IDs who reacted with this emoji, count: number // Total count of this reaction }[] | undefined // Array of emoji reactions on this message }[] | undefined // Array of message objects,\n// has_more: boolean | undefined // Whether there are more messages to retrieve,\n// response_metadata: { next_cursor: string // Cursor for pagination to get next set of results } | undefined // Metadata for pagination,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// Get Thread Replies example\nconst slack_get_thread_replies = new SlackBubble({\n operation: \"get_thread_replies\", // Retrieve all replies to a thread in a channel. Required scopes: channels:history (public), groups:history (private), im:history (DMs), mpim:history (group DMs)\n channel: \"example string\", // Channel ID where the thread exists\n ts: \"example string\", // Timestamp of the parent message to get replies for\n latest: \"example string\", // End of time range of messages to include (timestamp)\n oldest: \"example string\", // Start of time range of messages to include (timestamp)\n inclusive: false // default, // Include messages with latest or oldest timestamps in results\n limit: 100 // default, // Maximum number of messages to return (1-1000)\n cursor: \"example string\", // Cursor for pagination to get next set of results\n});\n\nconst result = await slack_get_thread_replies.action();\n// outputSchema for result.data when operation === 'get_thread_replies':\n// {\n// operation: \"get_thread_replies\" // Retrieve all replies to a thread in a channel,\n// ok: boolean // Whether the Slack API call was successful,\n// messages: { type: string // Message type (usually \"message\"), ts: string | undefined // Message timestamp (unique identifier), user: string | undefined // User ID who sent the message, bot_id: string | undefined // Bot ID if message was sent by a bot, bot_profile: { name: string | undefined // Bot display name } | undefined // Bot profile information if message was sent by a bot, username: string | undefined // Username of the bot or user who sent the message, text: string | undefined // Message text content, thread_ts: string | undefined // Timestamp of parent message if this is a thread reply, parent_user_id: string | undefined // User ID of thread parent message author, reply_count: number | undefined // Number of replies in this thread, reply_users_count: number | undefined // Number of unique users who replied in thread, latest_reply: string | undefined // Timestamp of most recent reply in thread, reply_users: string[] | undefined // Array of user IDs who replied in thread, is_locked: boolean | undefined // True if thread is locked, subscribed: boolean | undefined // True if current user is subscribed to thread, attachments: unknown[] | undefined // Legacy message attachments, blocks: unknown[] | undefined // Block Kit structured content, reactions: { name: string // Emoji name without colons, users: string[] // User IDs who reacted with this emoji, count: number // Total count of this reaction }[] | undefined // Array of emoji reactions on this message }[] | undefined // Array of message objects in the thread,\n// has_more: boolean | undefined // Whether there are more messages to retrieve,\n// response_metadata: { next_cursor: string // Cursor for pagination to get next set of results } | undefined // Metadata for pagination,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// Update Message example\nconst slack_update_message = new SlackBubble({\n operation: \"update_message\", // Update an existing message in a channel. Required scopes: chat:write\n channel: \"example string\", // Channel ID (e.g., C1234567890) or channel name (e.g., general or #general) where the message is located\n ts: \"example string\", // Timestamp of the message to update\n text: \"example string\", // New text content for the message\n attachments: [{ color: \"example string\" // Color bar accent (hex color or good/warning/danger), pretext: \"example string\" // Text that appears before the main attachment content, author_name: \"example string\" // Author name displayed at the top, author_link: \"example string\" // URL to link the author name, author_icon: \"example string\" // Author icon image URL, title: \"example string\" // Attachment title text, title_link: \"example string\" // URL to link the title, text: \"example string\" // Main attachment text content, fields: [{ title: \"example string\" // Field title, value: \"example string\" // Field value, short: true // Whether field should be displayed side-by-side }] // Array of field objects for structured data, image_url: \"example string\" // URL of image to display, thumb_url: \"example string\" // URL of thumbnail image, footer: \"example string\" // Footer text, footer_icon: \"example string\" // Footer icon URL, ts: 42 // Timestamp for the attachment }], // New legacy message attachments\n blocks: [{ type: \"example string\" // Block element type (section, divider, button, etc.), text: { type: \"plain_text\" // options: \"plain_text\", \"mrkdwn\" // Text formatting type, text: \"example string\" // The actual text content, emoji: true, verbatim: true } // Text object for the block element, elements: [{ type: \"plain_text\" // options: \"plain_text\", \"mrkdwn\", \"image\" // Element type, text: \"example string\" // Text content, image_url: \"example string\" // Image URL for image elements, alt_text: \"example string\" // Alt text for image elements, emoji: true, verbatim: true }] // Elements array for context blocks }], // New Block Kit structured message blocks\n});\n\nconst result = await slack_update_message.action();\n// outputSchema for result.data when operation === 'update_message':\n// {\n// operation: \"update_message\" // Update an existing message in a channel,\n// ok: boolean // Whether the Slack API call was successful,\n// channel: string | undefined // Channel ID where the message was updated,\n// ts: string | undefined // Timestamp of the updated message,\n// text: string | undefined // Updated text content of the message,\n// message: { type: string // Message type (usually \"message\"), ts: string | undefined // Message timestamp (unique identifier), user: string | undefined // User ID who sent the message, bot_id: string | undefined // Bot ID if message was sent by a bot, bot_profile: { name: string | undefined // Bot display name } | undefined // Bot profile information if message was sent by a bot, username: string | undefined // Username of the bot or user who sent the message, text: string | undefined // Message text content, thread_ts: string | undefined // Timestamp of parent message if this is a thread reply, parent_user_id: string | undefined // User ID of thread parent message author, reply_count: number | undefined // Number of replies in this thread, reply_users_count: number | undefined // Number of unique users who replied in thread, latest_reply: string | undefined // Timestamp of most recent reply in thread, reply_users: string[] | undefined // Array of user IDs who replied in thread, is_locked: boolean | undefined // True if thread is locked, subscribed: boolean | undefined // True if current user is subscribed to thread, attachments: unknown[] | undefined // Legacy message attachments, blocks: unknown[] | undefined // Block Kit structured content, reactions: { name: string // Emoji name without colons, users: string[] // User IDs who reacted with this emoji, count: number // Total count of this reaction }[] | undefined // Array of emoji reactions on this message } | undefined // Details of the updated message,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// Delete Message example\nconst slack_delete_message = new SlackBubble({\n operation: \"delete_message\", // Delete a message from a channel. Required scopes: chat:write. Note: Bot tokens can only delete messages posted by the bot; user tokens can delete any message the user has permission to delete\n channel: \"example string\", // Channel ID (e.g., C1234567890) or channel name (e.g., general or #general) where the message is located\n ts: \"example string\", // Timestamp of the message to delete\n});\n\nconst result = await slack_delete_message.action();\n// outputSchema for result.data when operation === 'delete_message':\n// {\n// operation: \"delete_message\" // Delete a message from a channel,\n// ok: boolean // Whether the Slack API call was successful,\n// channel: string | undefined // Channel ID where the message was deleted,\n// ts: string | undefined // Timestamp of the deleted message,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// Add Reaction example\nconst slack_add_reaction = new SlackBubble({\n operation: \"add_reaction\", // Add an emoji reaction to a message. Required scopes: reactions:write\n name: \"example string\", // Emoji name without colons (e.g., thumbsup, heart)\n channel: \"example string\", // Channel ID (e.g., C1234567890) or channel name (e.g., general or #general) where the message is located\n timestamp: \"example string\", // Timestamp of the message to react to\n});\n\nconst result = await slack_add_reaction.action();\n// outputSchema for result.data when operation === 'add_reaction':\n// {\n// operation: \"add_reaction\" // Add an emoji reaction to a message,\n// ok: boolean // Whether the Slack API call was successful,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// Remove Reaction example\nconst slack_remove_reaction = new SlackBubble({\n operation: \"remove_reaction\", // Remove an emoji reaction from a message. Required scopes: reactions:write\n name: \"example string\", // Emoji name without colons (e.g., thumbsup, heart)\n channel: \"example string\", // Channel ID (e.g., C1234567890) or channel name (e.g., general or #general) where the message is located\n timestamp: \"example string\", // Timestamp of the message to remove reaction from\n});\n\nconst result = await slack_remove_reaction.action();\n// outputSchema for result.data when operation === 'remove_reaction':\n// {\n// operation: \"remove_reaction\" // Remove an emoji reaction from a message,\n// ok: boolean // Whether the Slack API call was successful,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// Join Channel example\nconst slack_join_channel = new SlackBubble({\n operation: \"join_channel\", // Join a public Slack channel. Required scopes: channels:join (bot token) or channels:write (user token)\n channel: \"example string\", // Channel ID (e.g., C1234567890) or channel name (e.g., general or #general) to join\n});\n\nconst result = await slack_join_channel.action();\n// outputSchema for result.data when operation === 'join_channel':\n// {\n// operation: \"join_channel\" // Join a public Slack channel,\n// ok: boolean // Whether the Slack API call was successful,\n// channel: { id: string // Unique channel identifier, name: string // Channel name without # prefix, is_channel: boolean | undefined // True if this is a public channel, is_group: boolean | undefined // True if this is a private channel, is_im: boolean | undefined // True if this is a direct message, is_mpim: boolean | undefined // True if this is a multi-person direct message, is_private: boolean | undefined // True if this is a private channel, created: number // Unix timestamp when channel was created, is_archived: boolean // True if channel is archived, is_general: boolean | undefined // True if this is the #general channel, unlinked: number | undefined // Unix timestamp when channel was unlinked, name_normalized: string | undefined // Normalized channel name, is_shared: boolean | undefined // True if channel is shared with other workspaces, is_ext_shared: boolean | undefined // True if channel is shared externally, is_org_shared: boolean | undefined // True if channel is shared across organization, shared_team_ids: string[] | undefined // IDs of teams this channel is shared with, pending_shared: string[] | undefined // Pending shared connections, pending_connected_team_ids: string[] | undefined // Pending team connection IDs, is_pending_ext_shared: boolean | undefined // True if external sharing is pending, is_member: boolean | undefined // True if the bot is a member of this channel, is_open: boolean | undefined // True if the channel is open, topic: { value: string // Topic text, creator: string // User ID who set the topic, last_set: number // Unix timestamp when topic was last set } | undefined // Channel topic information, purpose: { value: string // Purpose text, creator: string // User ID who set the purpose, last_set: number // Unix timestamp when purpose was last set } | undefined // Channel purpose information, num_members: number | undefined // Number of members in the channel } | undefined // Channel information object after joining,\n// already_in_channel: boolean | undefined // Whether the bot was already a member of the channel,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// Upload File example\nconst slack_upload_file = new SlackBubble({\n operation: \"upload_file\", // Upload a file to a Slack channel. Required scopes: files:write\n channel: \"example string\", // Channel ID (e.g., C1234567890), channel name (e.g., general or #general), or user ID for DM\n file_path: \"example string\", // Local file path to upload\n filename: \"example string\", // Override filename for the upload\n title: \"example string\", // Title for the file\n initial_comment: \"example string\", // Initial comment to post with the file\n thread_ts: \"example string\", // Timestamp of parent message to upload file in thread\n});\n\nconst result = await slack_upload_file.action();\n// outputSchema for result.data when operation === 'upload_file':\n// {\n// operation: \"upload_file\" // Upload a file to a Slack channel,\n// ok: boolean // Whether the Slack API call was successful,\n// file: { id: string // Unique file identifier, created: number // Unix timestamp when file was created, timestamp: number // Unix timestamp when file was uploaded, name: string // Original filename, title: string | undefined // File title, mimetype: string // MIME type of the file, filetype: string // File type extension, pretty_type: string // Human-readable file type, user: string // User ID who uploaded the file, editable: boolean // Whether the file is editable, size: number // File size in bytes, mode: string // File sharing mode, is_external: boolean // Whether file is from external source, external_type: string // External file type if applicable, is_public: boolean // Whether file is publicly accessible, public_url_shared: boolean // Whether public URL is shared, display_as_bot: boolean // Whether file is displayed as uploaded by bot, username: string // Username of uploader, url_private: string // Private URL to access file, url_private_download: string // Private download URL, permalink: string // Permanent link to file, permalink_public: string | undefined // Public permanent link, shares: { public: Record<string, { reply_users: string[] // User IDs who replied, reply_users_count: number // Number of unique users who replied, reply_count: number // Total number of replies, ts: string // Timestamp of the share, channel_name: string // Name of the channel, team_id: string // Team ID }[]> | undefined // Public channel shares, private: Record<string, { reply_users: string[] // User IDs who replied, reply_users_count: number // Number of unique users who replied, reply_count: number // Total number of replies, ts: string // Timestamp of the share, channel_name: string // Name of the channel, team_id: string // Team ID }[]> | undefined // Private channel shares } | undefined // Information about where file is shared, channels: string[] | undefined // Channel IDs where file is shared, groups: string[] | undefined // Private group IDs where file is shared, ims: string[] | undefined // Direct message IDs where file is shared, has_rich_preview: boolean | undefined // Whether file has rich preview } | undefined // File information object,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// Schedule Message example\nconst slack_schedule_message = new SlackBubble({\n operation: \"schedule_message\", // Schedule a message to be sent at a future time. Required scopes: chat:write. Max 120 days in advance.\n channel: \"example string\", // Channel ID (e.g., C1234567890), channel name (e.g., general or #general), or user ID for DM\n text: \"example string\", // Message text content\n post_at: 42, // Unix timestamp (seconds) for when to send the message. Must be within 120 days from now.\n thread_ts: \"example string\", // Timestamp of parent message to reply in thread\n blocks: [{ type: \"example string\" // Block element type (section, divider, button, etc.), text: { type: \"plain_text\" // options: \"plain_text\", \"mrkdwn\" // Text formatting type, text: \"example string\" // The actual text content, emoji: true, verbatim: true } // Text object for the block element, elements: [{ type: \"plain_text\" // options: \"plain_text\", \"mrkdwn\", \"image\" // Element type, text: \"example string\" // Text content, image_url: \"example string\" // Image URL for image elements, alt_text: \"example string\" // Alt text for image elements, emoji: true, verbatim: true }] // Elements array for context blocks }], // Block Kit structured message blocks\n unfurl_links: true // default, // Enable automatic link unfurling\n unfurl_media: true // default, // Enable automatic media unfurling\n});\n\nconst result = await slack_schedule_message.action();\n// outputSchema for result.data when operation === 'schedule_message':\n// {\n// operation: \"schedule_message\" // Schedule a message to be sent at a future time,\n// ok: boolean // Whether the Slack API call was successful,\n// channel: string | undefined // Channel ID where message will be posted,\n// scheduled_message_id: string | undefined // Unique identifier for the scheduled message,\n// post_at: number | undefined // Unix timestamp when message will be posted,\n// error: string // Error message if operation failed,\n// success: boolean // Whether the operation was successful\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n throw new Error(`slack failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
56
56
  "requiredCredentials": [
57
57
  "SLACK_CRED"
58
58
  ]
package/dist/index.d.ts CHANGED
@@ -12,7 +12,7 @@ export type { BubbleTriggerEvent } from '@bubblelab/shared-schemas';
12
12
  export { HelloWorldBubble } from './bubbles/service-bubble/hello-world.js';
13
13
  export { AIAgentBubble, type StreamingCallback, type ToolHookContext, type ToolHookBefore, type ToolHookAfter, type AfterLLMCallContext, type AfterLLMCallHook, type ConversationMessage, } from './bubbles/service-bubble/ai-agent.js';
14
14
  export { PostgreSQLBubble } from './bubbles/service-bubble/postgresql.js';
15
- export { SlackBubble } from './bubbles/service-bubble/slack.js';
15
+ export { SlackBubble } from './bubbles/service-bubble/slack/index.js';
16
16
  export { TelegramBubble } from './bubbles/service-bubble/telegram.js';
17
17
  export { ResendBubble } from './bubbles/service-bubble/resend.js';
18
18
  export { HttpBubble } from './bubbles/service-bubble/http.js';