@bubblelab/bubble-core 0.1.21 → 0.1.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/dist/bubble-bundle.d.ts +194 -91
  2. package/dist/bubble-factory.d.ts.map +1 -1
  3. package/dist/bubble-factory.js +10 -2
  4. package/dist/bubble-factory.js.map +1 -1
  5. package/dist/bubbles/service-bubble/agi-inc.d.ts +96 -96
  6. package/dist/bubbles/service-bubble/ai-agent.d.ts +54 -54
  7. package/dist/bubbles/service-bubble/airtable.d.ts +80 -80
  8. package/dist/bubbles/service-bubble/apify/apify.d.ts +4 -4
  9. package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts +27 -27
  10. package/dist/bubbles/service-bubble/browserbase/browserbase.schema.d.ts +8 -8
  11. package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts +2784 -0
  12. package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts.map +1 -0
  13. package/dist/bubbles/service-bubble/crustdata/crustdata.js +338 -0
  14. package/dist/bubbles/service-bubble/crustdata/crustdata.js.map +1 -0
  15. package/dist/bubbles/service-bubble/crustdata/crustdata.schema.d.ts +3995 -0
  16. package/dist/bubbles/service-bubble/{slack/slack.schema.d.ts.map → crustdata/crustdata.schema.d.ts.map} +1 -1
  17. package/dist/bubbles/service-bubble/crustdata/crustdata.schema.js +425 -0
  18. package/dist/bubbles/service-bubble/crustdata/crustdata.schema.js.map +1 -0
  19. package/dist/bubbles/service-bubble/crustdata/index.d.ts +3 -0
  20. package/dist/bubbles/service-bubble/crustdata/index.d.ts.map +1 -0
  21. package/dist/bubbles/service-bubble/crustdata/index.js +5 -0
  22. package/dist/bubbles/service-bubble/crustdata/index.js.map +1 -0
  23. package/dist/bubbles/service-bubble/eleven-labs.d.ts +28 -28
  24. package/dist/bubbles/service-bubble/firecrawl.d.ts +980 -980
  25. package/dist/bubbles/service-bubble/followupboss.d.ts +393 -393
  26. package/dist/bubbles/service-bubble/github.d.ts +188 -188
  27. package/dist/bubbles/service-bubble/gmail.d.ts +148 -148
  28. package/dist/bubbles/service-bubble/google-calendar.d.ts +134 -134
  29. package/dist/bubbles/service-bubble/google-drive.d.ts +26 -26
  30. package/dist/bubbles/service-bubble/google-drive.js +2 -2
  31. package/dist/bubbles/service-bubble/google-drive.js.map +1 -1
  32. package/dist/bubbles/service-bubble/google-sheets/google-sheets.d.ts +30 -30
  33. package/dist/bubbles/service-bubble/google-sheets/google-sheets.schema.d.ts +10 -10
  34. package/dist/bubbles/service-bubble/hello-world.d.ts +4 -4
  35. package/dist/bubbles/service-bubble/http.d.ts +12 -12
  36. package/dist/bubbles/service-bubble/insforge-db.d.ts +4 -4
  37. package/dist/bubbles/service-bubble/notion/notion.d.ts +1011 -1011
  38. package/dist/bubbles/service-bubble/postgresql.d.ts +4 -4
  39. package/dist/bubbles/service-bubble/resend.d.ts +28 -28
  40. package/dist/bubbles/service-bubble/slack/slack.d.ts +445 -439
  41. package/dist/bubbles/service-bubble/slack/slack.d.ts.map +1 -1
  42. package/dist/bubbles/service-bubble/slack/slack.js +89 -2
  43. package/dist/bubbles/service-bubble/slack/slack.js.map +1 -1
  44. package/dist/bubbles/service-bubble/storage.d.ts +40 -40
  45. package/dist/bubbles/service-bubble/telegram.d.ts +1889 -1889
  46. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.d.ts +14 -14
  47. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.schema.d.ts +6 -6
  48. package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +12 -12
  49. package/dist/bubbles/tool-bubble/chart-js-tool.d.ts +16 -16
  50. package/dist/bubbles/tool-bubble/code-edit-tool.d.ts +4 -4
  51. package/dist/bubbles/tool-bubble/company-enrichment-tool.d.ts +740 -0
  52. package/dist/bubbles/tool-bubble/company-enrichment-tool.d.ts.map +1 -0
  53. package/dist/bubbles/tool-bubble/company-enrichment-tool.js +351 -0
  54. package/dist/bubbles/tool-bubble/company-enrichment-tool.js.map +1 -0
  55. package/dist/bubbles/tool-bubble/google-maps-tool.d.ts +24 -24
  56. package/dist/bubbles/tool-bubble/instagram-tool.d.ts +18 -18
  57. package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +148 -148
  58. package/dist/bubbles/tool-bubble/people-search-tool.d.ts +934 -0
  59. package/dist/bubbles/tool-bubble/people-search-tool.d.ts.map +1 -0
  60. package/dist/bubbles/tool-bubble/people-search-tool.js +675 -0
  61. package/dist/bubbles/tool-bubble/people-search-tool.js.map +1 -0
  62. package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +20 -20
  63. package/dist/bubbles/tool-bubble/sql-query-tool.d.ts +8 -8
  64. package/dist/bubbles/tool-bubble/tiktok-tool.d.ts +20 -20
  65. package/dist/bubbles/tool-bubble/twitter-tool.d.ts +54 -54
  66. package/dist/bubbles/tool-bubble/web-crawl-tool.d.ts +14 -14
  67. package/dist/bubbles/tool-bubble/web-search-tool.d.ts +16 -16
  68. package/dist/bubbles/tool-bubble/youtube-tool.d.ts +18 -18
  69. package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts +24 -24
  70. package/dist/bubbles/workflow-bubble/parse-document.workflow.d.ts +4 -4
  71. package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +90 -90
  72. package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.d.ts +8 -8
  73. package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +28 -28
  74. package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +36 -36
  75. package/dist/bubbles/workflow-bubble/slack-notifier.workflow.d.ts +4 -4
  76. package/dist/bubbles.json +40 -2
  77. package/dist/index.d.ts +5 -0
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +3 -0
  80. package/dist/index.js.map +1 -1
  81. package/dist/utils/schema-comparison.d.ts +16 -0
  82. package/dist/utils/schema-comparison.d.ts.map +1 -1
  83. package/dist/utils/schema-comparison.js +98 -6
  84. package/dist/utils/schema-comparison.js.map +1 -1
  85. package/package.json +2 -2
  86. package/dist/bubbles/service-bubble/google-sheets/google-sheets.integration.flow.d.ts +0 -31
  87. package/dist/bubbles/service-bubble/google-sheets/google-sheets.integration.flow.d.ts.map +0 -1
  88. package/dist/bubbles/service-bubble/google-sheets/google-sheets.integration.flow.js +0 -184
  89. package/dist/bubbles/service-bubble/google-sheets/google-sheets.integration.flow.js.map +0 -1
  90. package/dist/bubbles/service-bubble/slack/slack.schema.d.ts +0 -3980
  91. package/dist/bubbles/service-bubble/slack/slack.schema.js +0 -1061
  92. package/dist/bubbles/service-bubble/slack/slack.schema.js.map +0 -1
  93. package/dist/bubbles/service-bubble/slack.d.ts +0 -2
  94. package/dist/bubbles/service-bubble/slack.d.ts.map +0 -1
  95. package/dist/bubbles/service-bubble/slack.js +0 -3
  96. package/dist/bubbles/service-bubble/slack.js.map +0 -1
@@ -36,17 +36,18 @@ declare const SlackDataAssistantParamsSchema: z.ZodObject<{
36
36
  }, "strip", z.ZodTypeAny, {
37
37
  name: string;
38
38
  temperature: number;
39
- dataSourceType: "postgresql" | "mysql" | "sqlite" | "mariadb" | "mssql";
40
- ignoreSSLErrors: boolean;
41
- aiModel: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/x-ai/grok-4.1-fast" | "openrouter/openai/gpt-oss-120b" | "openrouter/deepseek/deepseek-chat-v3.1";
42
- slackChannel: string;
43
- userQuestion: string;
44
39
  verbosity: "1" | "2" | "3" | "4" | "5";
45
40
  technicality: "1" | "2" | "3" | "4" | "5";
46
41
  includeQuery: boolean;
47
42
  includeExplanation: boolean;
43
+ dataSourceType: "postgresql" | "mysql" | "sqlite" | "mssql" | "mariadb";
44
+ ignoreSSLErrors: boolean;
45
+ aiModel: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/x-ai/grok-4.1-fast" | "openrouter/openai/gpt-oss-120b" | "openrouter/deepseek/deepseek-chat-v3.1";
46
+ slackChannel: string;
47
+ userQuestion: string;
48
48
  maxQueries: number;
49
49
  credentials?: Partial<Record<CredentialType, string>> | undefined;
50
+ additionalContext?: string | undefined;
50
51
  userName?: string | undefined;
51
52
  injectedMetadata?: {
52
53
  tables?: Record<string, Record<string, string>> | undefined;
@@ -55,15 +56,19 @@ declare const SlackDataAssistantParamsSchema: z.ZodObject<{
55
56
  } | undefined;
56
57
  slackThreadTs?: string | undefined;
57
58
  databaseUrl?: string | undefined;
58
- additionalContext?: string | undefined;
59
59
  }, {
60
60
  slackChannel: string;
61
61
  userQuestion: string;
62
62
  name?: string | undefined;
63
63
  credentials?: Partial<Record<CredentialType, string>> | undefined;
64
64
  temperature?: number | undefined;
65
+ verbosity?: "1" | "2" | "3" | "4" | "5" | undefined;
66
+ technicality?: "1" | "2" | "3" | "4" | "5" | undefined;
67
+ includeQuery?: boolean | undefined;
68
+ includeExplanation?: boolean | undefined;
69
+ additionalContext?: string | undefined;
65
70
  userName?: string | undefined;
66
- dataSourceType?: "postgresql" | "mysql" | "sqlite" | "mariadb" | "mssql" | undefined;
71
+ dataSourceType?: "postgresql" | "mysql" | "sqlite" | "mssql" | "mariadb" | undefined;
67
72
  ignoreSSLErrors?: boolean | undefined;
68
73
  injectedMetadata?: {
69
74
  tables?: Record<string, Record<string, string>> | undefined;
@@ -73,11 +78,6 @@ declare const SlackDataAssistantParamsSchema: z.ZodObject<{
73
78
  aiModel?: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/x-ai/grok-4.1-fast" | "openrouter/openai/gpt-oss-120b" | "openrouter/deepseek/deepseek-chat-v3.1" | undefined;
74
79
  slackThreadTs?: string | undefined;
75
80
  databaseUrl?: string | undefined;
76
- verbosity?: "1" | "2" | "3" | "4" | "5" | undefined;
77
- technicality?: "1" | "2" | "3" | "4" | "5" | undefined;
78
- includeQuery?: boolean | undefined;
79
- includeExplanation?: boolean | undefined;
80
- additionalContext?: string | undefined;
81
81
  maxQueries?: number | undefined;
82
82
  }>;
83
83
  declare const SlackDataAssistantResultSchema: z.ZodObject<{
@@ -106,12 +106,12 @@ declare const SlackDataAssistantResultSchema: z.ZodObject<{
106
106
  }, "strip", z.ZodTypeAny, {
107
107
  success: boolean;
108
108
  error: string;
109
- query?: string | undefined;
110
109
  metadata?: {
111
110
  executionTime: number;
112
111
  rowCount?: number | undefined;
113
112
  wordCount?: number | undefined;
114
113
  } | undefined;
114
+ query?: string | undefined;
115
115
  queryExplanation?: string | undefined;
116
116
  queryResults?: Record<string, unknown>[] | undefined;
117
117
  formattedResponse?: string | undefined;
@@ -121,12 +121,12 @@ declare const SlackDataAssistantResultSchema: z.ZodObject<{
121
121
  }, {
122
122
  success: boolean;
123
123
  error: string;
124
- query?: string | undefined;
125
124
  metadata?: {
126
125
  executionTime: number;
127
126
  rowCount?: number | undefined;
128
127
  wordCount?: number | undefined;
129
128
  } | undefined;
129
+ query?: string | undefined;
130
130
  queryExplanation?: string | undefined;
131
131
  queryResults?: Record<string, unknown>[] | undefined;
132
132
  formattedResponse?: string | undefined;
@@ -174,17 +174,18 @@ export declare class SlackDataAssistantWorkflow extends WorkflowBubble<SlackData
174
174
  }, "strip", z.ZodTypeAny, {
175
175
  name: string;
176
176
  temperature: number;
177
- dataSourceType: "postgresql" | "mysql" | "sqlite" | "mariadb" | "mssql";
178
- ignoreSSLErrors: boolean;
179
- aiModel: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/x-ai/grok-4.1-fast" | "openrouter/openai/gpt-oss-120b" | "openrouter/deepseek/deepseek-chat-v3.1";
180
- slackChannel: string;
181
- userQuestion: string;
182
177
  verbosity: "1" | "2" | "3" | "4" | "5";
183
178
  technicality: "1" | "2" | "3" | "4" | "5";
184
179
  includeQuery: boolean;
185
180
  includeExplanation: boolean;
181
+ dataSourceType: "postgresql" | "mysql" | "sqlite" | "mssql" | "mariadb";
182
+ ignoreSSLErrors: boolean;
183
+ aiModel: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/x-ai/grok-4.1-fast" | "openrouter/openai/gpt-oss-120b" | "openrouter/deepseek/deepseek-chat-v3.1";
184
+ slackChannel: string;
185
+ userQuestion: string;
186
186
  maxQueries: number;
187
187
  credentials?: Partial<Record<CredentialType, string>> | undefined;
188
+ additionalContext?: string | undefined;
188
189
  userName?: string | undefined;
189
190
  injectedMetadata?: {
190
191
  tables?: Record<string, Record<string, string>> | undefined;
@@ -193,15 +194,19 @@ export declare class SlackDataAssistantWorkflow extends WorkflowBubble<SlackData
193
194
  } | undefined;
194
195
  slackThreadTs?: string | undefined;
195
196
  databaseUrl?: string | undefined;
196
- additionalContext?: string | undefined;
197
197
  }, {
198
198
  slackChannel: string;
199
199
  userQuestion: string;
200
200
  name?: string | undefined;
201
201
  credentials?: Partial<Record<CredentialType, string>> | undefined;
202
202
  temperature?: number | undefined;
203
+ verbosity?: "1" | "2" | "3" | "4" | "5" | undefined;
204
+ technicality?: "1" | "2" | "3" | "4" | "5" | undefined;
205
+ includeQuery?: boolean | undefined;
206
+ includeExplanation?: boolean | undefined;
207
+ additionalContext?: string | undefined;
203
208
  userName?: string | undefined;
204
- dataSourceType?: "postgresql" | "mysql" | "sqlite" | "mariadb" | "mssql" | undefined;
209
+ dataSourceType?: "postgresql" | "mysql" | "sqlite" | "mssql" | "mariadb" | undefined;
205
210
  ignoreSSLErrors?: boolean | undefined;
206
211
  injectedMetadata?: {
207
212
  tables?: Record<string, Record<string, string>> | undefined;
@@ -211,11 +216,6 @@ export declare class SlackDataAssistantWorkflow extends WorkflowBubble<SlackData
211
216
  aiModel?: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/x-ai/grok-4.1-fast" | "openrouter/openai/gpt-oss-120b" | "openrouter/deepseek/deepseek-chat-v3.1" | undefined;
212
217
  slackThreadTs?: string | undefined;
213
218
  databaseUrl?: string | undefined;
214
- verbosity?: "1" | "2" | "3" | "4" | "5" | undefined;
215
- technicality?: "1" | "2" | "3" | "4" | "5" | undefined;
216
- includeQuery?: boolean | undefined;
217
- includeExplanation?: boolean | undefined;
218
- additionalContext?: string | undefined;
219
219
  maxQueries?: number | undefined;
220
220
  }>;
221
221
  static readonly resultSchema: z.ZodObject<{
@@ -244,12 +244,12 @@ export declare class SlackDataAssistantWorkflow extends WorkflowBubble<SlackData
244
244
  }, "strip", z.ZodTypeAny, {
245
245
  success: boolean;
246
246
  error: string;
247
- query?: string | undefined;
248
247
  metadata?: {
249
248
  executionTime: number;
250
249
  rowCount?: number | undefined;
251
250
  wordCount?: number | undefined;
252
251
  } | undefined;
252
+ query?: string | undefined;
253
253
  queryExplanation?: string | undefined;
254
254
  queryResults?: Record<string, unknown>[] | undefined;
255
255
  formattedResponse?: string | undefined;
@@ -259,12 +259,12 @@ export declare class SlackDataAssistantWorkflow extends WorkflowBubble<SlackData
259
259
  }, {
260
260
  success: boolean;
261
261
  error: string;
262
- query?: string | undefined;
263
262
  metadata?: {
264
263
  executionTime: number;
265
264
  rowCount?: number | undefined;
266
265
  wordCount?: number | undefined;
267
266
  } | undefined;
267
+ query?: string | undefined;
268
268
  queryExplanation?: string | undefined;
269
269
  queryResults?: Record<string, unknown>[] | undefined;
270
270
  formattedResponse?: string | undefined;
@@ -54,9 +54,9 @@ declare const SlackFormatterAgentParamsSchema: z.ZodObject<{
54
54
  maxIterations: number;
55
55
  verbosity: "1" | "2" | "3" | "4" | "5";
56
56
  technicality: "1" | "2" | "3" | "4" | "5";
57
+ includeBlockKit: boolean;
57
58
  includeQuery: boolean;
58
59
  includeExplanation: boolean;
59
- includeBlockKit: boolean;
60
60
  credentials?: Partial<Record<CredentialType, string>> | undefined;
61
61
  additionalContext?: string | undefined;
62
62
  }, {
@@ -75,10 +75,10 @@ declare const SlackFormatterAgentParamsSchema: z.ZodObject<{
75
75
  maxIterations?: number | undefined;
76
76
  verbosity?: "1" | "2" | "3" | "4" | "5" | undefined;
77
77
  technicality?: "1" | "2" | "3" | "4" | "5" | undefined;
78
+ includeBlockKit?: boolean | undefined;
78
79
  includeQuery?: boolean | undefined;
79
80
  includeExplanation?: boolean | undefined;
80
81
  additionalContext?: string | undefined;
81
- includeBlockKit?: boolean | undefined;
82
82
  }>;
83
83
  declare const SlackFormatterAgentResultSchema: z.ZodObject<{
84
84
  response: z.ZodString;
@@ -173,6 +173,7 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
173
173
  verbatim?: boolean | undefined;
174
174
  } | undefined;
175
175
  image_url?: string | undefined;
176
+ optional?: boolean | undefined;
176
177
  alt_text?: string | undefined;
177
178
  elements?: {
178
179
  type: "plain_text" | "mrkdwn";
@@ -180,11 +181,10 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
180
181
  emoji?: boolean | undefined;
181
182
  verbatim?: boolean | undefined;
182
183
  }[] | undefined;
183
- label?: unknown;
184
- optional?: boolean | undefined;
185
- element?: unknown;
186
184
  block_id?: string | undefined;
187
185
  accessory?: unknown;
186
+ element?: unknown;
187
+ label?: unknown;
188
188
  hint?: unknown;
189
189
  }, {
190
190
  type: "input" | "image" | "file" | "section" | "header" | "divider" | "context" | "actions";
@@ -206,6 +206,7 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
206
206
  verbatim?: boolean | undefined;
207
207
  } | undefined;
208
208
  image_url?: string | undefined;
209
+ optional?: boolean | undefined;
209
210
  alt_text?: string | undefined;
210
211
  elements?: {
211
212
  type: "plain_text" | "mrkdwn";
@@ -213,11 +214,10 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
213
214
  emoji?: boolean | undefined;
214
215
  verbatim?: boolean | undefined;
215
216
  }[] | undefined;
216
- label?: unknown;
217
- optional?: boolean | undefined;
218
- element?: unknown;
219
217
  block_id?: string | undefined;
220
218
  accessory?: unknown;
219
+ element?: unknown;
220
+ label?: unknown;
221
221
  hint?: unknown;
222
222
  }>, "many">>;
223
223
  metadata: z.ZodObject<{
@@ -226,14 +226,14 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
226
226
  wordCount: z.ZodNumber;
227
227
  blockCount: z.ZodOptional<z.ZodNumber>;
228
228
  }, "strip", z.ZodTypeAny, {
229
- wordCount: number;
230
229
  verbosityLevel: string;
231
230
  technicalityLevel: string;
231
+ wordCount: number;
232
232
  blockCount?: number | undefined;
233
233
  }, {
234
- wordCount: number;
235
234
  verbosityLevel: string;
236
235
  technicalityLevel: string;
236
+ wordCount: number;
237
237
  blockCount?: number | undefined;
238
238
  }>;
239
239
  toolCalls: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -258,9 +258,9 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
258
258
  response: string;
259
259
  iterations: number;
260
260
  metadata: {
261
- wordCount: number;
262
261
  verbosityLevel: string;
263
262
  technicalityLevel: string;
263
+ wordCount: number;
264
264
  blockCount?: number | undefined;
265
265
  };
266
266
  toolCalls?: {
@@ -288,6 +288,7 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
288
288
  verbatim?: boolean | undefined;
289
289
  } | undefined;
290
290
  image_url?: string | undefined;
291
+ optional?: boolean | undefined;
291
292
  alt_text?: string | undefined;
292
293
  elements?: {
293
294
  type: "plain_text" | "mrkdwn";
@@ -295,11 +296,10 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
295
296
  emoji?: boolean | undefined;
296
297
  verbatim?: boolean | undefined;
297
298
  }[] | undefined;
298
- label?: unknown;
299
- optional?: boolean | undefined;
300
- element?: unknown;
301
299
  block_id?: string | undefined;
302
300
  accessory?: unknown;
301
+ element?: unknown;
302
+ label?: unknown;
303
303
  hint?: unknown;
304
304
  }[] | undefined;
305
305
  }, {
@@ -308,9 +308,9 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
308
308
  response: string;
309
309
  iterations: number;
310
310
  metadata: {
311
- wordCount: number;
312
311
  verbosityLevel: string;
313
312
  technicalityLevel: string;
313
+ wordCount: number;
314
314
  blockCount?: number | undefined;
315
315
  };
316
316
  toolCalls?: {
@@ -338,6 +338,7 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
338
338
  verbatim?: boolean | undefined;
339
339
  } | undefined;
340
340
  image_url?: string | undefined;
341
+ optional?: boolean | undefined;
341
342
  alt_text?: string | undefined;
342
343
  elements?: {
343
344
  type: "plain_text" | "mrkdwn";
@@ -345,11 +346,10 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
345
346
  emoji?: boolean | undefined;
346
347
  verbatim?: boolean | undefined;
347
348
  }[] | undefined;
348
- label?: unknown;
349
- optional?: boolean | undefined;
350
- element?: unknown;
351
349
  block_id?: string | undefined;
352
350
  accessory?: unknown;
351
+ element?: unknown;
352
+ label?: unknown;
353
353
  hint?: unknown;
354
354
  }[] | undefined;
355
355
  }>;
@@ -412,9 +412,9 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
412
412
  maxIterations: number;
413
413
  verbosity: "1" | "2" | "3" | "4" | "5";
414
414
  technicality: "1" | "2" | "3" | "4" | "5";
415
+ includeBlockKit: boolean;
415
416
  includeQuery: boolean;
416
417
  includeExplanation: boolean;
417
- includeBlockKit: boolean;
418
418
  credentials?: Partial<Record<CredentialType, string>> | undefined;
419
419
  additionalContext?: string | undefined;
420
420
  }, {
@@ -433,10 +433,10 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
433
433
  maxIterations?: number | undefined;
434
434
  verbosity?: "1" | "2" | "3" | "4" | "5" | undefined;
435
435
  technicality?: "1" | "2" | "3" | "4" | "5" | undefined;
436
+ includeBlockKit?: boolean | undefined;
436
437
  includeQuery?: boolean | undefined;
437
438
  includeExplanation?: boolean | undefined;
438
439
  additionalContext?: string | undefined;
439
- includeBlockKit?: boolean | undefined;
440
440
  }>;
441
441
  static readonly resultSchema: z.ZodObject<{
442
442
  response: z.ZodString;
@@ -531,6 +531,7 @@ 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;
534
535
  alt_text?: string | undefined;
535
536
  elements?: {
536
537
  type: "plain_text" | "mrkdwn";
@@ -538,11 +539,10 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
538
539
  emoji?: boolean | undefined;
539
540
  verbatim?: boolean | undefined;
540
541
  }[] | undefined;
541
- label?: unknown;
542
- optional?: boolean | undefined;
543
- element?: unknown;
544
542
  block_id?: string | undefined;
545
543
  accessory?: unknown;
544
+ element?: unknown;
545
+ label?: unknown;
546
546
  hint?: unknown;
547
547
  }, {
548
548
  type: "input" | "image" | "file" | "section" | "header" | "divider" | "context" | "actions";
@@ -564,6 +564,7 @@ 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;
567
568
  alt_text?: string | undefined;
568
569
  elements?: {
569
570
  type: "plain_text" | "mrkdwn";
@@ -571,11 +572,10 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
571
572
  emoji?: boolean | undefined;
572
573
  verbatim?: boolean | undefined;
573
574
  }[] | undefined;
574
- label?: unknown;
575
- optional?: boolean | undefined;
576
- element?: unknown;
577
575
  block_id?: string | undefined;
578
576
  accessory?: unknown;
577
+ element?: unknown;
578
+ label?: unknown;
579
579
  hint?: unknown;
580
580
  }>, "many">>;
581
581
  metadata: z.ZodObject<{
@@ -584,14 +584,14 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
584
584
  wordCount: z.ZodNumber;
585
585
  blockCount: z.ZodOptional<z.ZodNumber>;
586
586
  }, "strip", z.ZodTypeAny, {
587
- wordCount: number;
588
587
  verbosityLevel: string;
589
588
  technicalityLevel: string;
589
+ wordCount: number;
590
590
  blockCount?: number | undefined;
591
591
  }, {
592
- wordCount: number;
593
592
  verbosityLevel: string;
594
593
  technicalityLevel: string;
594
+ wordCount: number;
595
595
  blockCount?: number | undefined;
596
596
  }>;
597
597
  toolCalls: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -616,9 +616,9 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
616
616
  response: string;
617
617
  iterations: number;
618
618
  metadata: {
619
- wordCount: number;
620
619
  verbosityLevel: string;
621
620
  technicalityLevel: string;
621
+ wordCount: number;
622
622
  blockCount?: number | undefined;
623
623
  };
624
624
  toolCalls?: {
@@ -646,6 +646,7 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
646
646
  verbatim?: boolean | undefined;
647
647
  } | undefined;
648
648
  image_url?: string | undefined;
649
+ optional?: boolean | undefined;
649
650
  alt_text?: string | undefined;
650
651
  elements?: {
651
652
  type: "plain_text" | "mrkdwn";
@@ -653,11 +654,10 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
653
654
  emoji?: boolean | undefined;
654
655
  verbatim?: boolean | undefined;
655
656
  }[] | undefined;
656
- label?: unknown;
657
- optional?: boolean | undefined;
658
- element?: unknown;
659
657
  block_id?: string | undefined;
660
658
  accessory?: unknown;
659
+ element?: unknown;
660
+ label?: unknown;
661
661
  hint?: unknown;
662
662
  }[] | undefined;
663
663
  }, {
@@ -666,9 +666,9 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
666
666
  response: string;
667
667
  iterations: number;
668
668
  metadata: {
669
- wordCount: number;
670
669
  verbosityLevel: string;
671
670
  technicalityLevel: string;
671
+ wordCount: number;
672
672
  blockCount?: number | undefined;
673
673
  };
674
674
  toolCalls?: {
@@ -696,6 +696,7 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
696
696
  verbatim?: boolean | undefined;
697
697
  } | undefined;
698
698
  image_url?: string | undefined;
699
+ optional?: boolean | undefined;
699
700
  alt_text?: string | undefined;
700
701
  elements?: {
701
702
  type: "plain_text" | "mrkdwn";
@@ -703,11 +704,10 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
703
704
  emoji?: boolean | undefined;
704
705
  verbatim?: boolean | undefined;
705
706
  }[] | undefined;
706
- label?: unknown;
707
- optional?: boolean | undefined;
708
- element?: unknown;
709
707
  block_id?: string | undefined;
710
708
  accessory?: unknown;
709
+ element?: unknown;
710
+ label?: unknown;
711
711
  hint?: unknown;
712
712
  }[] | undefined;
713
713
  }>;
@@ -54,7 +54,7 @@ declare const SlackNotifierParamsSchema: z.ZodObject<{
54
54
  }, "strip", z.ZodTypeAny, {
55
55
  contentToFormat: string;
56
56
  targetChannel: string;
57
- messageStyle: "professional" | "casual" | "technical" | "concise" | "detailed";
57
+ messageStyle: "concise" | "detailed" | "professional" | "casual" | "technical";
58
58
  includeFormatting: boolean;
59
59
  maxMessageLength: number;
60
60
  credentials?: Partial<Record<CredentialType, string>> | undefined;
@@ -71,7 +71,7 @@ declare const SlackNotifierParamsSchema: z.ZodObject<{
71
71
  credentials?: Partial<Record<CredentialType, string>> | undefined;
72
72
  originalUserQuery?: string | undefined;
73
73
  messageTitle?: string | undefined;
74
- messageStyle?: "professional" | "casual" | "technical" | "concise" | "detailed" | undefined;
74
+ messageStyle?: "concise" | "detailed" | "professional" | "casual" | "technical" | undefined;
75
75
  includeFormatting?: boolean | undefined;
76
76
  maxMessageLength?: number | undefined;
77
77
  aiModel?: {
@@ -252,7 +252,7 @@ export declare class SlackNotifierWorkflowBubble extends WorkflowBubble<SlackNot
252
252
  }, "strip", z.ZodTypeAny, {
253
253
  contentToFormat: string;
254
254
  targetChannel: string;
255
- messageStyle: "professional" | "casual" | "technical" | "concise" | "detailed";
255
+ messageStyle: "concise" | "detailed" | "professional" | "casual" | "technical";
256
256
  includeFormatting: boolean;
257
257
  maxMessageLength: number;
258
258
  credentials?: Partial<Record<CredentialType, string>> | undefined;
@@ -269,7 +269,7 @@ export declare class SlackNotifierWorkflowBubble extends WorkflowBubble<SlackNot
269
269
  credentials?: Partial<Record<CredentialType, string>> | undefined;
270
270
  originalUserQuery?: string | undefined;
271
271
  messageTitle?: string | undefined;
272
- messageStyle?: "professional" | "casual" | "technical" | "concise" | "detailed" | undefined;
272
+ messageStyle?: "concise" | "detailed" | "professional" | "casual" | "technical" | undefined;
273
273
  includeFormatting?: boolean | undefined;
274
274
  maxMessageLength?: number | undefined;
275
275
  aiModel?: {
package/dist/bubbles.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": "1.0.0",
3
- "generatedAt": "2026-01-19T22:51:40.585Z",
4
- "totalCount": 50,
3
+ "generatedAt": "2026-01-20T07:54:59.350Z",
4
+ "totalCount": 53,
5
5
  "bubbles": [
6
6
  {
7
7
  "name": "hello-world",
@@ -666,6 +666,19 @@
666
666
  "CLOUDFLARE_R2_ACCOUNT_ID"
667
667
  ]
668
668
  },
669
+ {
670
+ "name": "people-search-tool",
671
+ "alias": "people",
672
+ "type": "tool",
673
+ "shortDescription": "Comprehensive people search by company, title, location, skills, and more",
674
+ "useCase": "General purpose bubble for various workflow needs",
675
+ "inputSchema": "{\n companyName: string | undefined // Current company name to search within (e.g., \"Google\", \"Microsoft\"),\n companyLinkedinUrl: string | undefined // Company LinkedIn URL for precise matching (e.g., \"https://www.linkedin.com/company/google\"),\n jobTitle: string | undefined // Current job title to search for (e.g., \"Software Engineer\", \"CEO\"). Use jobTitles array for multiple titles.,\n jobTitles: string[] | undefined // Multiple job titles to search for with OR logic (e.g., [\"Senior Hardware Engineer\", \"Technical Product Manager\"]). Use this when searching for people with any of several roles.,\n location: string | undefined // Location/region to filter by with fuzzy matching (e.g., \"San Francisco Bay Area\", \"New York\"),\n locationRadius: { location: string // Center point location (e.g., \"San Francisco\", \"New York City\"), radiusMiles: number // Search radius in miles (e.g., 75) } | undefined // Geographic radius search - find people within X miles of a location,\n skills: string[] | undefined // Skills to filter by (e.g., [\"Python\", \"Machine Learning\", \"React\"]),\n languages: string[] | undefined // Languages spoken (e.g., [\"English\", \"Spanish\", \"Mandarin\"]),\n minYearsExperience: number | undefined // Minimum total years of professional experience,\n maxYearsExperience: number | undefined // Maximum total years of professional experience,\n seniorityLevels: string[] | undefined // Seniority levels (e.g., [\"CXO\", \"Vice President\", \"Director\", \"Manager\", \"Senior\", \"Entry\"]),\n functionCategories: string[] | undefined // Job function categories (e.g., [\"Engineering\", \"Sales\", \"Marketing\", \"Finance\", \"Operations\", \"HR\"]),\n companyIndustries: string[] | undefined // Company industries to filter by (e.g., [\"Technology\", \"Healthcare\", \"Finance\"]),\n minCompanyHeadcount: number | undefined // Minimum company employee count (e.g., 100 for companies with 100+ employees),\n maxCompanyHeadcount: number | undefined // Maximum company employee count (e.g., 1000 for companies under 1000 employees),\n minYearsAtCompany: number | undefined // Minimum years at current company (tenure filter),\n pastCompanyName: string | undefined // Past company name - find people who previously worked at a company,\n pastJobTitle: string | undefined // Past job title - find people who previously held a specific title,\n schoolName: string | undefined // School/university name (e.g., \"Stanford University\", \"MIT\"),\n country: string | undefined // Country to filter by (e.g., \"United States\", \"United Kingdom\", \"Germany\"),\n city: string | undefined // City to filter by (e.g., \"San Francisco\", \"New York\", \"London\"),\n recentlyChangedJobs: boolean | undefined // Filter to people who recently changed jobs (useful for outreach),\n minConnections: number | undefined // Minimum number of LinkedIn connections,\n excludeCompanies: string[] | undefined // Company names to exclude from results,\n excludeProfiles: string[] | undefined // LinkedIn profile URLs to exclude from results,\n limit: number | undefined // Maximum results to return (default: 20, max: 100),\n credentials: Record<string, string> | undefined // Required credentials (auto-injected)\n}",
676
+ "outputSchema": "{\n people: { name: string | null // Full name, title: string | null // Current job title, headline: string | null // LinkedIn headline, linkedinUrl: string | null // LinkedIn profile URL, profilePictureUrl: string | null // Profile picture URL, emails: string[] | null // Email addresses, twitterHandle: string | null // Twitter/X handle, websites: string[] | null // Personal/professional websites, seniorityLevel: string | null // Seniority level (CXO, Vice President, Director, etc.), yearsOfExperience: number | null // Total years of professional experience, recentlyChangedJobs: boolean | null // Whether this person recently changed jobs, location: string | null // Location/region, locationCity: string | null // City, locationCountry: string | null // Country, skills: string[] | null // Professional skills, languages: string[] | null // Languages spoken, summary: string | null // Professional summary, numConnections: number | null // Number of LinkedIn connections, currentEmployers: { title: string | null // Job title, companyName: string | null // Company name, companyLinkedinUrl: string | null // Company LinkedIn URL, seniorityLevel: string | null // Seniority level, functionCategory: string | null // Function category, startDate: string | null // Start date, yearsAtCompany: number | null // Years at company, companyHeadcount: number | null // Company headcount, companyIndustries: string[] | null // Company industries }[] | null // Current employment, pastEmployers: { title: string | null // Job title, companyName: string | null // Company name, startDate: string | null // Start date, endDate: string | null // End date }[] | null // Past employment, education: { instituteName: string | null // Institution name, degreeName: string | null // Degree name, fieldOfStudy: string | null // Field of study }[] | null // Education history }[] // List of people found,\n totalCount: number // Total number of people available,\n success: boolean // Whether the operation was successful,\n error: string // Error message if operation failed\n}",
677
+ "usageExample": "// Example usage of people-search-tool bubble\nconst peopleSearchTool = new PeopleSearchTool({\n companyName: \"example string\", // Current company name to search within (e.g., \"Google\", \"Microsoft\"),\n companyLinkedinUrl: \"example string\", // Company LinkedIn URL for precise matching (e.g., \"https://www.linkedin.com/company/google\"),\n jobTitle: \"example string\", // Current job title to search for (e.g., \"Software Engineer\", \"CEO\"). Use jobTitles array for multiple titles.,\n jobTitles: [\"example string\"], // Multiple job titles to search for with OR logic (e.g., [\"Senior Hardware Engineer\", \"Technical Product Manager\"]). Use this when searching for people with any of several roles.,\n location: \"example string\", // Location/region to filter by with fuzzy matching (e.g., \"San Francisco Bay Area\", \"New York\"),\n locationRadius: { location: \"example string\" // Center point location (e.g., \"San Francisco\", \"New York City\"), radiusMiles: 42 // Search radius in miles (e.g., 75) }, // Geographic radius search - find people within X miles of a location,\n skills: [\"example string\"], // Skills to filter by (e.g., [\"Python\", \"Machine Learning\", \"React\"]),\n languages: [\"example string\"], // Languages spoken (e.g., [\"English\", \"Spanish\", \"Mandarin\"]),\n minYearsExperience: 42, // Minimum total years of professional experience,\n maxYearsExperience: 42, // Maximum total years of professional experience,\n seniorityLevels: [\"example string\"], // Seniority levels (e.g., [\"CXO\", \"Vice President\", \"Director\", \"Manager\", \"Senior\", \"Entry\"]),\n functionCategories: [\"example string\"], // Job function categories (e.g., [\"Engineering\", \"Sales\", \"Marketing\", \"Finance\", \"Operations\", \"HR\"]),\n companyIndustries: [\"example string\"], // Company industries to filter by (e.g., [\"Technology\", \"Healthcare\", \"Finance\"]),\n minCompanyHeadcount: 42, // Minimum company employee count (e.g., 100 for companies with 100+ employees),\n maxCompanyHeadcount: 42, // Maximum company employee count (e.g., 1000 for companies under 1000 employees),\n minYearsAtCompany: 42, // Minimum years at current company (tenure filter),\n pastCompanyName: \"example string\", // Past company name - find people who previously worked at a company,\n pastJobTitle: \"example string\", // Past job title - find people who previously held a specific title,\n schoolName: \"example string\", // School/university name (e.g., \"Stanford University\", \"MIT\"),\n country: \"example string\", // Country to filter by (e.g., \"United States\", \"United Kingdom\", \"Germany\"),\n city: \"example string\", // City to filter by (e.g., \"San Francisco\", \"New York\", \"London\"),\n recentlyChangedJobs: true, // Filter to people who recently changed jobs (useful for outreach),\n minConnections: 42, // Minimum number of LinkedIn connections,\n excludeCompanies: [\"example string\"], // Company names to exclude from results,\n excludeProfiles: [\"example string\"], // LinkedIn profile URLs to exclude from results,\n limit: 20 // default, // Maximum results to return (default: 20, max: 100),\n});\n\nconst result = await peopleSearchTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n// people: { name: string | null // Full name, title: string | null // Current job title, headline: string | null // LinkedIn headline, linkedinUrl: string | null // LinkedIn profile URL, profilePictureUrl: string | null // Profile picture URL, emails: string[] | null // Email addresses, twitterHandle: string | null // Twitter/X handle, websites: string[] | null // Personal/professional websites, seniorityLevel: string | null // Seniority level (CXO, Vice President, Director, etc.), yearsOfExperience: number | null // Total years of professional experience, recentlyChangedJobs: boolean | null // Whether this person recently changed jobs, location: string | null // Location/region, locationCity: string | null // City, locationCountry: string | null // Country, skills: string[] | null // Professional skills, languages: string[] | null // Languages spoken, summary: string | null // Professional summary, numConnections: number | null // Number of LinkedIn connections, currentEmployers: { title: string | null // Job title, companyName: string | null // Company name, companyLinkedinUrl: string | null // Company LinkedIn URL, seniorityLevel: string | null // Seniority level, functionCategory: string | null // Function category, startDate: string | null // Start date, yearsAtCompany: number | null // Years at company, companyHeadcount: number | null // Company headcount, companyIndustries: string[] | null // Company industries }[] | null // Current employment, pastEmployers: { title: string | null // Job title, companyName: string | null // Company name, startDate: string | null // Start date, endDate: string | null // End date }[] | null // Past employment, education: { instituteName: string | null // Institution name, degreeName: string | null // Degree name, fieldOfStudy: string | null // Field of study }[] | null // Education history }[] // List of people found,\n// totalCount: number // Total number of people available,\n// success: boolean // Whether the operation was successful,\n// error: string // Error message if operation failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
678
+ "requiredCredentials": [
679
+ "CRUSTDATA_API_KEY"
680
+ ]
681
+ },
669
682
  {
670
683
  "name": "amazon-shopping-tool",
671
684
  "alias": "amazon",
@@ -681,6 +694,31 @@
681
694
  "CLOUDFLARE_R2_SECRET_KEY",
682
695
  "CLOUDFLARE_R2_ACCOUNT_ID"
683
696
  ]
697
+ },
698
+ {
699
+ "name": "crustdata",
700
+ "type": "service",
701
+ "shortDescription": "Crustdata API for company data enrichment and people search",
702
+ "useCase": "- Lead generation and sales prospecting",
703
+ "inputSchema": "Complex schema - see usage example for structure",
704
+ "outputSchema": "Complex schema - see usage example for structure",
705
+ "usageExample": "// Identify example\nconst crustdata_identify = new CrustdataBubble({\n operation: \"identify\", // Identify a company and get its Crustdata ID (FREE)\n query_company_name: \"example string\", // Company name to search for\n query_company_website: \"example string\", // Company website domain (e.g., \"stripe.com\")\n query_company_linkedin_url: \"example string\", // Company LinkedIn URL\n count: 1 // default, // Maximum number of results to return (default: 1, max: 25)\n});\n\nconst result = await crustdata_identify.action();\n// outputSchema for result.data when operation === 'identify':\n// {\n// operation: \"identify\" // Company identification operation,\n// success: boolean // Whether the operation was successful,\n// results: { company_id: number | null | undefined, company_name: string | null | undefined, linkedin_profile_url: string | null | undefined, company_website_domain: string | null | undefined, linkedin_headcount: number | null | undefined, score: number | null | undefined }[] | undefined // Array of matching companies,\n// error: string // Error message if operation failed\n// }\n\n\n// Enrich example\nconst crustdata_enrich = new CrustdataBubble({\n operation: \"enrich\", // Enrich company data with contacts (1 credit)\n company_domain: \"example string\", // Company website domain (e.g., \"stripe.com\")\n company_linkedin_url: \"example string\", // Company LinkedIn URL\n company_id: 42, // Crustdata company ID (from identify operation)\n fields: \"decision_makers,cxos,founders.profiles\" // default, // Comma-separated fields to retrieve (default: \"decision_makers,cxos,founders.profiles\")\n enrich_realtime: false // default, // If true, fetch fresh data from LinkedIn (slower but more accurate)\n});\n\nconst result = await crustdata_enrich.action();\n// outputSchema for result.data when operation === 'enrich':\n// {\n// operation: \"enrich\" // Company enrichment operation,\n// success: boolean // Whether the operation was successful,\n// company: { name: string | null | undefined, linkedin_id: string | null | undefined, linkedin_profile_url: string | null | undefined, company_website_domain: string | null | undefined, company_website: string | null | undefined, hq_country: string | null | undefined, hq_city: string | null | undefined, year_founded: string | null | undefined, headcount: number | null | undefined, linkedin_headcount: number | null | undefined, linkedin_followers: number | null | undefined, industry: string | null | undefined, description: string | null | undefined, all_industries: string[] | null | undefined, estimated_revenue: string | null | undefined, funding_stage: string | null | undefined, total_funding: string | null | undefined, last_funding_round_date: string | null | undefined, last_funding_round_type: string | null | undefined } | null | undefined // Enriched company information,\n// decision_makers: { linkedin_profile_url: string | null | undefined, linkedin_flagship_url: string | null | undefined, name: string | null | undefined, first_name: string | null | undefined, last_name: string | null | undefined, headline: string | null | undefined, location: string | null | undefined, profile_picture_url: string | null | undefined, title: string | null | undefined, emails: string[] | null | undefined, twitter_handle: string | null | undefined, github_profile_id: string | null | undefined, skills: string[] | null | undefined, languages: string[] | null | undefined, summary: string | null | undefined, current_positions: { title: string | null | undefined, company_name: string | null | undefined, company_linkedin_url: string | null | undefined, start_date: string | null | undefined, description: string | null | undefined }[] | null | undefined, past_positions: { title: string | null | undefined, company_name: string | null | undefined, start_date: string | null | undefined, end_date: string | null | undefined }[] | null | undefined, education: { institute_name: string | null | undefined, degree_name: string | null | undefined, field_of_study: string | null | undefined }[] | null | undefined }[] | null | undefined // Decision makers at the company,\n// cxos: { linkedin_profile_url: string | null | undefined, linkedin_flagship_url: string | null | undefined, name: string | null | undefined, first_name: string | null | undefined, last_name: string | null | undefined, headline: string | null | undefined, location: string | null | undefined, profile_picture_url: string | null | undefined, title: string | null | undefined, emails: string[] | null | undefined, twitter_handle: string | null | undefined, github_profile_id: string | null | undefined, skills: string[] | null | undefined, languages: string[] | null | undefined, summary: string | null | undefined, current_positions: { title: string | null | undefined, company_name: string | null | undefined, company_linkedin_url: string | null | undefined, start_date: string | null | undefined, description: string | null | undefined }[] | null | undefined, past_positions: { title: string | null | undefined, company_name: string | null | undefined, start_date: string | null | undefined, end_date: string | null | undefined }[] | null | undefined, education: { institute_name: string | null | undefined, degree_name: string | null | undefined, field_of_study: string | null | undefined }[] | null | undefined }[] | null | undefined // C-level executives at the company,\n// founders: { profiles: { linkedin_profile_url: string | null | undefined, linkedin_flagship_url: string | null | undefined, name: string | null | undefined, first_name: string | null | undefined, last_name: string | null | undefined, headline: string | null | undefined, location: string | null | undefined, profile_picture_url: string | null | undefined, title: string | null | undefined, emails: string[] | null | undefined, twitter_handle: string | null | undefined, github_profile_id: string | null | undefined, skills: string[] | null | undefined, languages: string[] | null | undefined, summary: string | null | undefined, current_positions: { title: string | null | undefined, company_name: string | null | undefined, company_linkedin_url: string | null | undefined, start_date: string | null | undefined, description: string | null | undefined }[] | null | undefined, past_positions: { title: string | null | undefined, company_name: string | null | undefined, start_date: string | null | undefined, end_date: string | null | undefined }[] | null | undefined, education: { institute_name: string | null | undefined, degree_name: string | null | undefined, field_of_study: string | null | undefined }[] | null | undefined }[] | null | undefined } | null | undefined // Founders of the company,\n// error: string // Error message if operation failed\n// }\n\n\n// Person Search Db example\nconst crustdata_person_search_db = new CrustdataBubble({\n operation: \"person_search_db\", // Search people in database with advanced filtering (3 credits per 100 results)\n filters: { column: \"example string\" // Field to filter on (e.g., \"current_employers.title\", \"region\"), type: \"=\" // options: \"=\", \"!=\", \"in\", \"not_in\", \">\", \"<\", \"=>\", \"=<\", \"(.)\", \"[.]\", \"geo_distance\" // Filter operator, value: { location: \"example string\" // Center point location name (e.g., \"San Francisco\"), distance: 42 // Radius distance, unit: \"km\" // options: \"km\", \"mi\", \"miles\", \"m\", \"meters\", \"ft\", \"feet\" // Distance unit (default: km) } // Value(s) to match }, // Filter conditions - single condition or nested AND/OR groups\n sorts: [{ column: \"example string\" // Field to sort by (e.g., \"years_of_experience_raw\", \"num_of_connections\"), order: \"asc\" // options: \"asc\", \"desc\" // Sort order }], // Sort criteria to order results\n cursor: \"example string\", // Pagination cursor from previous response\n limit: 20 // default, // Results per page (default: 20, max: 1,000)\n preview: false // default, // Preview mode returns basic profile details (0 credits)\n post_processing: { exclude_profiles: [\"example string\"] // LinkedIn profile URLs to exclude (max 50,000), exclude_names: [\"example string\"] // Names to exclude from results }, // Post-processing options like excluding profiles or names\n});\n\nconst result = await crustdata_person_search_db.action();\n// outputSchema for result.data when operation === 'person_search_db':\n// {\n// operation: \"person_search_db\" // PersonDB search operation,\n// success: boolean // Whether the operation was successful,\n// profiles: { person_id: number | undefined, name: string | null | undefined, first_name: string | null | undefined, last_name: string | null | undefined, headline: string | null | undefined, summary: string | null | undefined, region: string | null | undefined, location_details: { city: string | null | undefined, state: string | null | undefined, country: string | null | undefined, continent: string | null | undefined } | null | undefined, location_city: string | null | undefined, location_state: string | null | undefined, location_country: string | null | undefined, linkedin_profile_url: string | null | undefined, flagship_profile_url: string | null | undefined, profile_picture_url: string | null | undefined, num_of_connections: number | null | undefined, years_of_experience_raw: number | null | undefined, recently_changed_jobs: boolean | null | undefined, skills: string[] | null | undefined, languages: string[] | null | undefined, current_employers: { title: string | null | undefined, company_name: string | null | undefined, name: string | null | undefined, linkedin_id: string | null | undefined, company_linkedin_profile_url: string | null | undefined, company_website_domain: string | null | undefined, company_hq_location: string | null | undefined, company_type: string | null | undefined, company_headcount_latest: number | null | undefined, company_headcount_range: string | null | undefined, company_industries: string[] | null | undefined, seniority_level: string | null | undefined, function_category: string | null | undefined, start_date: string | null | undefined, end_date: string | null | undefined, years_at_company_raw: number | null | undefined, description: string | null | undefined, location: string | null | undefined }[] | null | undefined, past_employers: { title: string | null | undefined, company_name: string | null | undefined, name: string | null | undefined, linkedin_id: string | null | undefined, company_linkedin_profile_url: string | null | undefined, company_website_domain: string | null | undefined, company_hq_location: string | null | undefined, company_type: string | null | undefined, company_headcount_latest: number | null | undefined, company_headcount_range: string | null | undefined, company_industries: string[] | null | undefined, seniority_level: string | null | undefined, function_category: string | null | undefined, start_date: string | null | undefined, end_date: string | null | undefined, years_at_company_raw: number | null | undefined, description: string | null | undefined, location: string | null | undefined }[] | null | undefined, all_employers: { title: string | null | undefined, company_name: string | null | undefined, name: string | null | undefined, linkedin_id: string | null | undefined, company_linkedin_profile_url: string | null | undefined, company_website_domain: string | null | undefined, company_hq_location: string | null | undefined, company_type: string | null | undefined, company_headcount_latest: number | null | undefined, company_headcount_range: string | null | undefined, company_industries: string[] | null | undefined, seniority_level: string | null | undefined, function_category: string | null | undefined, start_date: string | null | undefined, end_date: string | null | undefined, years_at_company_raw: number | null | undefined, description: string | null | undefined, location: string | null | undefined }[] | null | undefined, education_background: { degree_name: string | null | undefined, institute_name: string | null | undefined, field_of_study: string | null | undefined, start_date: string | null | undefined, end_date: string | null | undefined }[] | null | undefined, certifications: { name: string | null | undefined, issued_date: string | null | undefined, issuing_authority: string | null | undefined }[] | null | undefined, honors: { title: string | null | undefined, issued_date: string | null | undefined, issuer: string | null | undefined }[] | null | undefined, emails: string[] | null | undefined, websites: string[] | null | undefined, twitter_handle: string | null | undefined }[] | undefined // Array of people profiles found,\n// total_count: number | undefined // Total number of profiles matching the search criteria,\n// next_cursor: string | undefined // Cursor for fetching the next page of results,\n// error: string // Error message if operation failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n throw new Error(`crustdata failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
706
+ "requiredCredentials": [
707
+ "CRUSTDATA_API_KEY"
708
+ ]
709
+ },
710
+ {
711
+ "name": "company-enrichment-tool",
712
+ "alias": "enrich",
713
+ "type": "tool",
714
+ "shortDescription": "Get key contacts (executives, decision makers) from any company for lead generation",
715
+ "useCase": "General purpose bubble for various workflow needs",
716
+ "inputSchema": "{\n companyIdentifier: string // Company name, domain (e.g., \"stripe.com\"), or LinkedIn URL. Auto-detects type.,\n limit: number | undefined // Maximum contacts to return (default: 10),\n credentials: Record<string, string> | undefined // Required credentials (auto-injected)\n}",
717
+ "outputSchema": "{\n contacts: { name: string | null // Full name, title: string | null // Current job title, headline: string | null // LinkedIn headline, linkedinUrl: string | null // LinkedIn profile URL, profilePictureUrl: string | null // Profile picture URL, emails: string[] | null // Email addresses, twitterHandle: string | null // Twitter/X handle, role: \"cxo\" | \"decision_maker\" | \"founder\" // Role classification, location: string | null // Location, skills: string[] | null // Professional skills, languages: string[] | null // Languages spoken, summary: string | null // Professional summary, currentEmployment: { title: string | null // Job title, companyName: string | null // Company name, companyLinkedinUrl: string | null // Company LinkedIn URL, startDate: string | null // Start date, description: string | null // Role description }[] | null // Current employment positions, pastEmployment: { title: string | null // Job title, companyName: string | null // Company name, startDate: string | null // Start date, endDate: string | null // End date }[] | null // Past employment positions, education: { instituteName: string | null // Institution name, degreeName: string | null // Degree name, fieldOfStudy: string | null // Field of study }[] | null // Education history }[] // List of contacts at the company,\n company: { name: string | null // Company name, linkedinUrl: string | null // Company LinkedIn URL, website: string | null // Company website, industry: string | null // Industry, description: string | null // Company description, headcount: number | null // Employee count, hqCity: string | null // Headquarters city, hqCountry: string | null // Headquarters country, yearFounded: number | null // Year founded, fundingStage: string | null // Funding stage, totalFunding: string | null // Total funding raised } | null // Company information,\n totalContacts: number // Total number of contacts found,\n success: boolean // Whether the operation was successful,\n error: string // Error message if operation failed\n}",
718
+ "usageExample": "// Example usage of company-enrichment-tool bubble\nconst companyEnrichmentTool = new CompanyEnrichmentTool({\n companyIdentifier: \"example string\", // Company name, domain (e.g., \"stripe.com\"), or LinkedIn URL. Auto-detects type.,\n limit: 10 // default, // Maximum contacts to return (default: 10),\n});\n\nconst result = await companyEnrichmentTool.action();\n\n// Always check success status before using data\nif (!result.success) {\n throw new Error(`${metadata.name} failed: ${result.error}`);\n}\n\n// outputSchema for result.data:\n// {\n// contacts: { name: string | null // Full name, title: string | null // Current job title, headline: string | null // LinkedIn headline, linkedinUrl: string | null // LinkedIn profile URL, profilePictureUrl: string | null // Profile picture URL, emails: string[] | null // Email addresses, twitterHandle: string | null // Twitter/X handle, role: \"cxo\" | \"decision_maker\" | \"founder\" // Role classification, location: string | null // Location, skills: string[] | null // Professional skills, languages: string[] | null // Languages spoken, summary: string | null // Professional summary, currentEmployment: { title: string | null // Job title, companyName: string | null // Company name, companyLinkedinUrl: string | null // Company LinkedIn URL, startDate: string | null // Start date, description: string | null // Role description }[] | null // Current employment positions, pastEmployment: { title: string | null // Job title, companyName: string | null // Company name, startDate: string | null // Start date, endDate: string | null // End date }[] | null // Past employment positions, education: { instituteName: string | null // Institution name, degreeName: string | null // Degree name, fieldOfStudy: string | null // Field of study }[] | null // Education history }[] // List of contacts at the company,\n// company: { name: string | null // Company name, linkedinUrl: string | null // Company LinkedIn URL, website: string | null // Company website, industry: string | null // Industry, description: string | null // Company description, headcount: number | null // Employee count, hqCity: string | null // Headquarters city, hqCountry: string | null // Headquarters country, yearFounded: number | null // Year founded, fundingStage: string | null // Funding stage, totalFunding: string | null // Total funding raised } | null // Company information,\n// totalContacts: number // Total number of contacts found,\n// success: boolean // Whether the operation was successful,\n// error: string // Error message if operation failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
719
+ "requiredCredentials": [
720
+ "CRUSTDATA_API_KEY"
721
+ ]
684
722
  }
685
723
  ]
686
724
  }