@bubblelab/bubble-core 0.1.263 → 0.1.266

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 (160) hide show
  1. package/dist/bubble-bundle.d.ts +128 -128
  2. package/dist/bubble-trigger/index.d.ts +2 -0
  3. package/dist/bubble-trigger/index.d.ts.map +1 -0
  4. package/dist/bubble-trigger/index.js +2 -0
  5. package/dist/bubble-trigger/index.js.map +1 -0
  6. package/dist/bubble-trigger/types.d.ts +87 -0
  7. package/dist/bubble-trigger/types.d.ts.map +1 -0
  8. package/dist/bubble-trigger/types.js +14 -0
  9. package/dist/bubble-trigger/types.js.map +1 -0
  10. package/dist/bubbles/service-bubble/agi-inc.d.ts +20 -20
  11. package/dist/bubbles/service-bubble/ai-agent.d.ts +92 -92
  12. package/dist/bubbles/service-bubble/ai-agent.d.ts.map +1 -1
  13. package/dist/bubbles/service-bubble/ai-agent.js +9 -6
  14. package/dist/bubbles/service-bubble/ai-agent.js.map +1 -1
  15. package/dist/bubbles/service-bubble/airtable.d.ts +76 -76
  16. package/dist/bubbles/service-bubble/apify/actors/app-rankings-scraper.d.ts +6 -6
  17. package/dist/bubbles/service-bubble/apify/actors/instagram-hashtag-scraper.d.ts +2 -2
  18. package/dist/bubbles/service-bubble/apify/actors/instagram-scraper.d.ts +8 -8
  19. package/dist/bubbles/service-bubble/apify/actors/linkedin-jobs-scraper.d.ts +2 -2
  20. package/dist/bubbles/service-bubble/apify/actors/linkedin-posts-search.d.ts +22 -22
  21. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-detail.d.ts +38 -38
  22. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-posts.d.ts +52 -52
  23. package/dist/bubbles/service-bubble/apify/actors/tiktok-scraper.d.ts +6 -6
  24. package/dist/bubbles/service-bubble/apify/actors/twitter-scraper.d.ts +12 -12
  25. package/dist/bubbles/service-bubble/apify/actors/youtube-scraper.d.ts +12 -12
  26. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts +132 -132
  27. package/dist/bubbles/service-bubble/apify/apify.d.ts +18 -18
  28. package/dist/bubbles/service-bubble/asana/asana.d.ts +1 -1
  29. package/dist/bubbles/service-bubble/asana/asana.schema.d.ts +1 -1
  30. package/dist/bubbles/service-bubble/ashby/ashby.d.ts +16 -16
  31. package/dist/bubbles/service-bubble/ashby/ashby.schema.d.ts +22 -22
  32. package/dist/bubbles/service-bubble/assembled/assembled.d.ts +6 -6
  33. package/dist/bubbles/service-bubble/assembled/assembled.schema.d.ts +6 -6
  34. package/dist/bubbles/service-bubble/attio/attio.d.ts +6 -6
  35. package/dist/bubbles/service-bubble/attio/attio.schema.d.ts +6 -6
  36. package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts +1 -1
  37. package/dist/bubbles/service-bubble/browserbase/browserbase.schema.d.ts +1 -1
  38. package/dist/bubbles/service-bubble/capability-pipeline.d.ts.map +1 -1
  39. package/dist/bubbles/service-bubble/capability-pipeline.js +25 -18
  40. package/dist/bubbles/service-bubble/capability-pipeline.js.map +1 -1
  41. package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts +4 -4
  42. package/dist/bubbles/service-bubble/crustdata/crustdata.schema.d.ts +8 -8
  43. package/dist/bubbles/service-bubble/discord/discord.d.ts +12 -12
  44. package/dist/bubbles/service-bubble/discord/discord.schema.d.ts +12 -12
  45. package/dist/bubbles/service-bubble/docusign/docusign.d.ts +1101 -0
  46. package/dist/bubbles/service-bubble/docusign/docusign.d.ts.map +1 -0
  47. package/dist/bubbles/service-bubble/docusign/docusign.js +730 -0
  48. package/dist/bubbles/service-bubble/docusign/docusign.js.map +1 -0
  49. package/dist/bubbles/service-bubble/docusign/docusign.schema.d.ts +1035 -0
  50. package/dist/bubbles/service-bubble/docusign/docusign.schema.d.ts.map +1 -0
  51. package/dist/bubbles/service-bubble/docusign/docusign.schema.js +304 -0
  52. package/dist/bubbles/service-bubble/docusign/docusign.schema.js.map +1 -0
  53. package/dist/bubbles/service-bubble/docusign/index.d.ts +4 -0
  54. package/dist/bubbles/service-bubble/docusign/index.d.ts.map +1 -0
  55. package/dist/bubbles/service-bubble/docusign/index.js +3 -0
  56. package/dist/bubbles/service-bubble/docusign/index.js.map +1 -0
  57. package/dist/bubbles/service-bubble/firecrawl.d.ts +330 -330
  58. package/dist/bubbles/service-bubble/followupboss.d.ts +4 -4
  59. package/dist/bubbles/service-bubble/github.d.ts +60 -60
  60. package/dist/bubbles/service-bubble/gmail.d.ts +164 -164
  61. package/dist/bubbles/service-bubble/google-calendar.d.ts +6 -6
  62. package/dist/bubbles/service-bubble/google-drive.d.ts +4 -4
  63. package/dist/bubbles/service-bubble/google-sheets.d.ts +1811 -0
  64. package/dist/bubbles/service-bubble/google-sheets.d.ts.map +1 -0
  65. package/dist/bubbles/service-bubble/google-sheets.js +904 -0
  66. package/dist/bubbles/service-bubble/google-sheets.js.map +1 -0
  67. package/dist/bubbles/service-bubble/http.d.ts +6 -6
  68. package/dist/bubbles/service-bubble/hubspot/hubspot.d.ts +2 -2
  69. package/dist/bubbles/service-bubble/hubspot/hubspot.schema.d.ts +2 -2
  70. package/dist/bubbles/service-bubble/insforge-db.d.ts +8 -8
  71. package/dist/bubbles/service-bubble/jira/jira.d.ts +30 -30
  72. package/dist/bubbles/service-bubble/jira/jira.schema.d.ts +36 -36
  73. package/dist/bubbles/service-bubble/looker/index.d.ts +3 -0
  74. package/dist/bubbles/service-bubble/looker/index.d.ts.map +1 -0
  75. package/dist/bubbles/service-bubble/looker/index.js +3 -0
  76. package/dist/bubbles/service-bubble/looker/index.js.map +1 -0
  77. package/dist/bubbles/service-bubble/looker/looker.d.ts +768 -0
  78. package/dist/bubbles/service-bubble/looker/looker.d.ts.map +1 -0
  79. package/dist/bubbles/service-bubble/looker/looker.js +319 -0
  80. package/dist/bubbles/service-bubble/looker/looker.js.map +1 -0
  81. package/dist/bubbles/service-bubble/looker/looker.schema.d.ts +735 -0
  82. package/dist/bubbles/service-bubble/looker/looker.schema.d.ts.map +1 -0
  83. package/dist/bubbles/service-bubble/looker/looker.schema.js +264 -0
  84. package/dist/bubbles/service-bubble/looker/looker.schema.js.map +1 -0
  85. package/dist/bubbles/service-bubble/notion/notion.d.ts +168 -168
  86. package/dist/bubbles/service-bubble/notion/property-schemas.d.ts +16 -16
  87. package/dist/bubbles/service-bubble/postgresql.d.ts +8 -8
  88. package/dist/bubbles/service-bubble/posthog/posthog.d.ts +10 -10
  89. package/dist/bubbles/service-bubble/posthog/posthog.schema.d.ts +14 -14
  90. package/dist/bubbles/service-bubble/pylon/index.d.ts +3 -0
  91. package/dist/bubbles/service-bubble/pylon/index.d.ts.map +1 -0
  92. package/dist/bubbles/service-bubble/pylon/index.js +3 -0
  93. package/dist/bubbles/service-bubble/pylon/index.js.map +1 -0
  94. package/dist/bubbles/service-bubble/pylon/pylon.d.ts +435 -0
  95. package/dist/bubbles/service-bubble/pylon/pylon.d.ts.map +1 -0
  96. package/dist/bubbles/service-bubble/pylon/pylon.js +375 -0
  97. package/dist/bubbles/service-bubble/pylon/pylon.js.map +1 -0
  98. package/dist/bubbles/service-bubble/pylon/pylon.schema.d.ts +408 -0
  99. package/dist/bubbles/service-bubble/pylon/pylon.schema.d.ts.map +1 -0
  100. package/dist/bubbles/service-bubble/pylon/pylon.schema.js +249 -0
  101. package/dist/bubbles/service-bubble/pylon/pylon.schema.js.map +1 -0
  102. package/dist/bubbles/service-bubble/resend.d.ts +4 -4
  103. package/dist/bubbles/service-bubble/slack/slack.d.ts +392 -392
  104. package/dist/bubbles/service-bubble/slack.d.ts +5869 -0
  105. package/dist/bubbles/service-bubble/slack.d.ts.map +1 -0
  106. package/dist/bubbles/service-bubble/slack.js +1536 -0
  107. package/dist/bubbles/service-bubble/slack.js.map +1 -0
  108. package/dist/bubbles/service-bubble/snowflake/snowflake.d.ts +4 -4
  109. package/dist/bubbles/service-bubble/snowflake/snowflake.schema.d.ts +4 -4
  110. package/dist/bubbles/service-bubble/stripe/stripe.d.ts +24 -24
  111. package/dist/bubbles/service-bubble/stripe/stripe.schema.d.ts +28 -28
  112. package/dist/bubbles/service-bubble/xero/xero.d.ts +2 -2
  113. package/dist/bubbles/service-bubble/xero/xero.schema.d.ts +2 -2
  114. package/dist/bubbles/service-bubble/zendesk/zendesk.d.ts +20 -20
  115. package/dist/bubbles/service-bubble/zendesk/zendesk.schema.d.ts +20 -20
  116. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.d.ts +6 -6
  117. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.schema.d.ts +8 -8
  118. package/dist/bubbles/tool-bubble/app-rankings-tool.d.ts +8 -8
  119. package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +4 -4
  120. package/dist/bubbles/tool-bubble/chart-js-tool.d.ts +4 -4
  121. package/dist/bubbles/tool-bubble/company-enrichment-tool.d.ts +20 -20
  122. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.d.ts +3 -0
  123. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.d.ts.map +1 -0
  124. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.js +3 -0
  125. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.js.map +1 -0
  126. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.d.ts +160 -0
  127. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.d.ts.map +1 -0
  128. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.js +706 -0
  129. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.js.map +1 -0
  130. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.d.ts +93 -0
  131. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.d.ts.map +1 -0
  132. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.js +50 -0
  133. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.js.map +1 -0
  134. package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +384 -384
  135. package/dist/bubbles/tool-bubble/people-search-tool.d.ts +44 -44
  136. package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +10 -10
  137. package/dist/bubbles/tool-bubble/research-agent-tool.d.ts +4 -4
  138. package/dist/bubbles/tool-bubble/sql-query-tool.d.ts +4 -4
  139. package/dist/bubbles/tool-bubble/tiktok-tool.d.ts +60 -60
  140. package/dist/bubbles/tool-bubble/twitter-tool.d.ts +134 -134
  141. package/dist/bubbles/tool-bubble/yc-scraper-tool.d.ts +8 -8
  142. package/dist/bubbles/tool-bubble/youtube-tool.d.ts +20 -20
  143. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts +114 -0
  144. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts.map +1 -0
  145. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js +777 -0
  146. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js.map +1 -0
  147. package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts +12 -12
  148. package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +8 -8
  149. package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +2 -2
  150. package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +34 -34
  151. package/dist/bubbles.json +3 -3
  152. package/dist/types/ai-models.d.ts +4 -0
  153. package/dist/types/ai-models.d.ts.map +1 -0
  154. package/dist/types/ai-models.js +16 -0
  155. package/dist/types/ai-models.js.map +1 -0
  156. package/dist/utils/param-helper.d.ts +2 -0
  157. package/dist/utils/param-helper.d.ts.map +1 -0
  158. package/dist/utils/param-helper.js +5 -0
  159. package/dist/utils/param-helper.js.map +1 -0
  160. package/package.json +2 -2
@@ -61,12 +61,12 @@ declare const SlackFormatterAgentParamsSchema: z.ZodObject<{
61
61
  additionalContext?: string | undefined;
62
62
  }, {
63
63
  message: string;
64
- credentials?: Partial<Record<CredentialType, string>> | undefined;
65
64
  model?: {
66
65
  model?: "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" | "google/gemini-3.1-pro-preview" | "google/gemini-3.1-flash-lite-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-sonnet-4-6" | "anthropic/claude-opus-4-5" | "anthropic/claude-opus-4-6" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-sonnet-4.6" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/anthropic/claude-opus-4.6" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research" | undefined;
67
66
  temperature?: number | undefined;
68
67
  maxTokens?: number | undefined;
69
68
  } | undefined;
69
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
70
70
  tools?: {
71
71
  name: string;
72
72
  credentials?: Partial<Record<CredentialType, string>> | undefined;
@@ -154,13 +154,14 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
154
154
  verbatim?: boolean | undefined;
155
155
  }>, "many">>;
156
156
  }, "strip", z.ZodTypeAny, {
157
- type: "table" | "image" | "context" | "input" | "file" | "section" | "divider" | "header" | "actions";
157
+ type: "context" | "input" | "image" | "file" | "divider" | "section" | "header" | "actions" | "table";
158
158
  title?: {
159
159
  type: "plain_text";
160
160
  text: string;
161
161
  emoji?: boolean | undefined;
162
162
  } | undefined;
163
163
  optional?: boolean | undefined;
164
+ element?: unknown;
164
165
  text?: {
165
166
  type: "plain_text" | "mrkdwn";
166
167
  text: string;
@@ -168,32 +169,32 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
168
169
  verbatim?: boolean | undefined;
169
170
  } | undefined;
170
171
  image_url?: string | undefined;
171
- element?: unknown;
172
172
  fields?: {
173
173
  type: "plain_text" | "mrkdwn";
174
174
  text: string;
175
175
  emoji?: boolean | undefined;
176
176
  verbatim?: boolean | undefined;
177
177
  }[] | undefined;
178
+ alt_text?: string | undefined;
178
179
  elements?: {
179
180
  type: "plain_text" | "mrkdwn";
180
181
  text: string;
181
182
  emoji?: boolean | undefined;
182
183
  verbatim?: boolean | undefined;
183
184
  }[] | undefined;
184
- alt_text?: string | undefined;
185
185
  block_id?: string | undefined;
186
186
  accessory?: unknown;
187
187
  label?: unknown;
188
188
  hint?: unknown;
189
189
  }, {
190
- type: "table" | "image" | "context" | "input" | "file" | "section" | "divider" | "header" | "actions";
190
+ type: "context" | "input" | "image" | "file" | "divider" | "section" | "header" | "actions" | "table";
191
191
  title?: {
192
192
  type: "plain_text";
193
193
  text: string;
194
194
  emoji?: boolean | undefined;
195
195
  } | undefined;
196
196
  optional?: boolean | undefined;
197
+ element?: unknown;
197
198
  text?: {
198
199
  type: "plain_text" | "mrkdwn";
199
200
  text: string;
@@ -201,20 +202,19 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
201
202
  verbatim?: boolean | undefined;
202
203
  } | undefined;
203
204
  image_url?: string | undefined;
204
- element?: unknown;
205
205
  fields?: {
206
206
  type: "plain_text" | "mrkdwn";
207
207
  text: string;
208
208
  emoji?: boolean | undefined;
209
209
  verbatim?: boolean | undefined;
210
210
  }[] | undefined;
211
+ alt_text?: string | undefined;
211
212
  elements?: {
212
213
  type: "plain_text" | "mrkdwn";
213
214
  text: string;
214
215
  emoji?: boolean | undefined;
215
216
  verbatim?: boolean | undefined;
216
217
  }[] | undefined;
217
- alt_text?: string | undefined;
218
218
  block_id?: string | undefined;
219
219
  accessory?: unknown;
220
220
  label?: unknown;
@@ -255,27 +255,28 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
255
255
  }, "strip", z.ZodTypeAny, {
256
256
  error: string;
257
257
  success: boolean;
258
+ response: string;
259
+ iterations: number;
258
260
  metadata: {
259
261
  verbosityLevel: string;
260
262
  technicalityLevel: string;
261
263
  wordCount: number;
262
264
  blockCount?: number | undefined;
263
265
  };
264
- response: string;
265
- iterations: number;
266
266
  toolCalls?: {
267
267
  tool: string;
268
268
  input?: unknown;
269
269
  output?: unknown;
270
270
  }[] | undefined;
271
271
  blocks?: {
272
- type: "table" | "image" | "context" | "input" | "file" | "section" | "divider" | "header" | "actions";
272
+ type: "context" | "input" | "image" | "file" | "divider" | "section" | "header" | "actions" | "table";
273
273
  title?: {
274
274
  type: "plain_text";
275
275
  text: string;
276
276
  emoji?: boolean | undefined;
277
277
  } | undefined;
278
278
  optional?: boolean | undefined;
279
+ element?: unknown;
279
280
  text?: {
280
281
  type: "plain_text" | "mrkdwn";
281
282
  text: string;
@@ -283,20 +284,19 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
283
284
  verbatim?: boolean | undefined;
284
285
  } | undefined;
285
286
  image_url?: string | undefined;
286
- element?: unknown;
287
287
  fields?: {
288
288
  type: "plain_text" | "mrkdwn";
289
289
  text: string;
290
290
  emoji?: boolean | undefined;
291
291
  verbatim?: boolean | undefined;
292
292
  }[] | undefined;
293
+ alt_text?: string | undefined;
293
294
  elements?: {
294
295
  type: "plain_text" | "mrkdwn";
295
296
  text: string;
296
297
  emoji?: boolean | undefined;
297
298
  verbatim?: boolean | undefined;
298
299
  }[] | undefined;
299
- alt_text?: string | undefined;
300
300
  block_id?: string | undefined;
301
301
  accessory?: unknown;
302
302
  label?: unknown;
@@ -305,27 +305,28 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
305
305
  }, {
306
306
  error: string;
307
307
  success: boolean;
308
+ response: string;
309
+ iterations: number;
308
310
  metadata: {
309
311
  verbosityLevel: string;
310
312
  technicalityLevel: string;
311
313
  wordCount: number;
312
314
  blockCount?: number | undefined;
313
315
  };
314
- response: string;
315
- iterations: number;
316
316
  toolCalls?: {
317
317
  tool: string;
318
318
  input?: unknown;
319
319
  output?: unknown;
320
320
  }[] | undefined;
321
321
  blocks?: {
322
- type: "table" | "image" | "context" | "input" | "file" | "section" | "divider" | "header" | "actions";
322
+ type: "context" | "input" | "image" | "file" | "divider" | "section" | "header" | "actions" | "table";
323
323
  title?: {
324
324
  type: "plain_text";
325
325
  text: string;
326
326
  emoji?: boolean | undefined;
327
327
  } | undefined;
328
328
  optional?: boolean | undefined;
329
+ element?: unknown;
329
330
  text?: {
330
331
  type: "plain_text" | "mrkdwn";
331
332
  text: string;
@@ -333,20 +334,19 @@ declare const SlackFormatterAgentResultSchema: z.ZodObject<{
333
334
  verbatim?: boolean | undefined;
334
335
  } | undefined;
335
336
  image_url?: string | undefined;
336
- element?: unknown;
337
337
  fields?: {
338
338
  type: "plain_text" | "mrkdwn";
339
339
  text: string;
340
340
  emoji?: boolean | undefined;
341
341
  verbatim?: boolean | undefined;
342
342
  }[] | undefined;
343
+ alt_text?: string | undefined;
343
344
  elements?: {
344
345
  type: "plain_text" | "mrkdwn";
345
346
  text: string;
346
347
  emoji?: boolean | undefined;
347
348
  verbatim?: boolean | undefined;
348
349
  }[] | undefined;
349
- alt_text?: string | undefined;
350
350
  block_id?: string | undefined;
351
351
  accessory?: unknown;
352
352
  label?: unknown;
@@ -419,12 +419,12 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
419
419
  additionalContext?: string | undefined;
420
420
  }, {
421
421
  message: string;
422
- credentials?: Partial<Record<CredentialType, string>> | undefined;
423
422
  model?: {
424
423
  model?: "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" | "google/gemini-3.1-pro-preview" | "google/gemini-3.1-flash-lite-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-sonnet-4-6" | "anthropic/claude-opus-4-5" | "anthropic/claude-opus-4-6" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-sonnet-4.6" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/anthropic/claude-opus-4.6" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research" | undefined;
425
424
  temperature?: number | undefined;
426
425
  maxTokens?: number | undefined;
427
426
  } | undefined;
427
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
428
428
  tools?: {
429
429
  name: string;
430
430
  credentials?: Partial<Record<CredentialType, string>> | undefined;
@@ -512,13 +512,14 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
512
512
  verbatim?: boolean | undefined;
513
513
  }>, "many">>;
514
514
  }, "strip", z.ZodTypeAny, {
515
- type: "table" | "image" | "context" | "input" | "file" | "section" | "divider" | "header" | "actions";
515
+ type: "context" | "input" | "image" | "file" | "divider" | "section" | "header" | "actions" | "table";
516
516
  title?: {
517
517
  type: "plain_text";
518
518
  text: string;
519
519
  emoji?: boolean | undefined;
520
520
  } | undefined;
521
521
  optional?: boolean | undefined;
522
+ element?: unknown;
522
523
  text?: {
523
524
  type: "plain_text" | "mrkdwn";
524
525
  text: string;
@@ -526,32 +527,32 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
526
527
  verbatim?: boolean | undefined;
527
528
  } | undefined;
528
529
  image_url?: string | undefined;
529
- element?: unknown;
530
530
  fields?: {
531
531
  type: "plain_text" | "mrkdwn";
532
532
  text: string;
533
533
  emoji?: boolean | undefined;
534
534
  verbatim?: boolean | undefined;
535
535
  }[] | undefined;
536
+ alt_text?: string | undefined;
536
537
  elements?: {
537
538
  type: "plain_text" | "mrkdwn";
538
539
  text: string;
539
540
  emoji?: boolean | undefined;
540
541
  verbatim?: boolean | undefined;
541
542
  }[] | undefined;
542
- alt_text?: string | undefined;
543
543
  block_id?: string | undefined;
544
544
  accessory?: unknown;
545
545
  label?: unknown;
546
546
  hint?: unknown;
547
547
  }, {
548
- type: "table" | "image" | "context" | "input" | "file" | "section" | "divider" | "header" | "actions";
548
+ type: "context" | "input" | "image" | "file" | "divider" | "section" | "header" | "actions" | "table";
549
549
  title?: {
550
550
  type: "plain_text";
551
551
  text: string;
552
552
  emoji?: boolean | undefined;
553
553
  } | undefined;
554
554
  optional?: boolean | undefined;
555
+ element?: unknown;
555
556
  text?: {
556
557
  type: "plain_text" | "mrkdwn";
557
558
  text: string;
@@ -559,20 +560,19 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
559
560
  verbatim?: boolean | undefined;
560
561
  } | undefined;
561
562
  image_url?: string | undefined;
562
- element?: unknown;
563
563
  fields?: {
564
564
  type: "plain_text" | "mrkdwn";
565
565
  text: string;
566
566
  emoji?: boolean | undefined;
567
567
  verbatim?: boolean | undefined;
568
568
  }[] | undefined;
569
+ alt_text?: string | undefined;
569
570
  elements?: {
570
571
  type: "plain_text" | "mrkdwn";
571
572
  text: string;
572
573
  emoji?: boolean | undefined;
573
574
  verbatim?: boolean | undefined;
574
575
  }[] | undefined;
575
- alt_text?: string | undefined;
576
576
  block_id?: string | undefined;
577
577
  accessory?: unknown;
578
578
  label?: unknown;
@@ -613,27 +613,28 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
613
613
  }, "strip", z.ZodTypeAny, {
614
614
  error: string;
615
615
  success: boolean;
616
+ response: string;
617
+ iterations: number;
616
618
  metadata: {
617
619
  verbosityLevel: string;
618
620
  technicalityLevel: string;
619
621
  wordCount: number;
620
622
  blockCount?: number | undefined;
621
623
  };
622
- response: string;
623
- iterations: number;
624
624
  toolCalls?: {
625
625
  tool: string;
626
626
  input?: unknown;
627
627
  output?: unknown;
628
628
  }[] | undefined;
629
629
  blocks?: {
630
- type: "table" | "image" | "context" | "input" | "file" | "section" | "divider" | "header" | "actions";
630
+ type: "context" | "input" | "image" | "file" | "divider" | "section" | "header" | "actions" | "table";
631
631
  title?: {
632
632
  type: "plain_text";
633
633
  text: string;
634
634
  emoji?: boolean | undefined;
635
635
  } | undefined;
636
636
  optional?: boolean | undefined;
637
+ element?: unknown;
637
638
  text?: {
638
639
  type: "plain_text" | "mrkdwn";
639
640
  text: string;
@@ -641,20 +642,19 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
641
642
  verbatim?: boolean | undefined;
642
643
  } | undefined;
643
644
  image_url?: string | undefined;
644
- element?: unknown;
645
645
  fields?: {
646
646
  type: "plain_text" | "mrkdwn";
647
647
  text: string;
648
648
  emoji?: boolean | undefined;
649
649
  verbatim?: boolean | undefined;
650
650
  }[] | undefined;
651
+ alt_text?: string | undefined;
651
652
  elements?: {
652
653
  type: "plain_text" | "mrkdwn";
653
654
  text: string;
654
655
  emoji?: boolean | undefined;
655
656
  verbatim?: boolean | undefined;
656
657
  }[] | undefined;
657
- alt_text?: string | undefined;
658
658
  block_id?: string | undefined;
659
659
  accessory?: unknown;
660
660
  label?: unknown;
@@ -663,27 +663,28 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
663
663
  }, {
664
664
  error: string;
665
665
  success: boolean;
666
+ response: string;
667
+ iterations: number;
666
668
  metadata: {
667
669
  verbosityLevel: string;
668
670
  technicalityLevel: string;
669
671
  wordCount: number;
670
672
  blockCount?: number | undefined;
671
673
  };
672
- response: string;
673
- iterations: number;
674
674
  toolCalls?: {
675
675
  tool: string;
676
676
  input?: unknown;
677
677
  output?: unknown;
678
678
  }[] | undefined;
679
679
  blocks?: {
680
- type: "table" | "image" | "context" | "input" | "file" | "section" | "divider" | "header" | "actions";
680
+ type: "context" | "input" | "image" | "file" | "divider" | "section" | "header" | "actions" | "table";
681
681
  title?: {
682
682
  type: "plain_text";
683
683
  text: string;
684
684
  emoji?: boolean | undefined;
685
685
  } | undefined;
686
686
  optional?: boolean | undefined;
687
+ element?: unknown;
687
688
  text?: {
688
689
  type: "plain_text" | "mrkdwn";
689
690
  text: string;
@@ -691,20 +692,19 @@ export declare class SlackFormatterAgentBubble extends WorkflowBubble<SlackForma
691
692
  verbatim?: boolean | undefined;
692
693
  } | undefined;
693
694
  image_url?: string | undefined;
694
- element?: unknown;
695
695
  fields?: {
696
696
  type: "plain_text" | "mrkdwn";
697
697
  text: string;
698
698
  emoji?: boolean | undefined;
699
699
  verbatim?: boolean | undefined;
700
700
  }[] | undefined;
701
+ alt_text?: string | undefined;
701
702
  elements?: {
702
703
  type: "plain_text" | "mrkdwn";
703
704
  text: string;
704
705
  emoji?: boolean | undefined;
705
706
  verbatim?: boolean | undefined;
706
707
  }[] | undefined;
707
- alt_text?: string | undefined;
708
708
  block_id?: string | undefined;
709
709
  accessory?: unknown;
710
710
  label?: unknown;
package/dist/bubbles.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "2.0.0",
3
- "generatedAt": "2026-03-31T05:11:27.765Z",
3
+ "generatedAt": "2026-04-01T22:46:39.357Z",
4
4
  "totalCount": 80,
5
5
  "bubbles": [
6
6
  {
@@ -340,7 +340,7 @@
340
340
  "default": {
341
341
  "model": "google/gemini-3-flash-preview"
342
342
  },
343
- "description": "Backup model configuration to use if the primary model fails."
343
+ "description": "Backup model if the primary fails. Defaults to GOOGLE_FLAGSHIP (Gemini 3 Flash) when omitted."
344
344
  }
345
345
  },
346
346
  "required": [
@@ -635,7 +635,7 @@
635
635
  ],
636
636
  "additionalProperties": false
637
637
  },
638
- "usageExample": "// Example usage of ai-agent bubble\nconst aiAgent = new AIAgentBubble({\n message: \"example string\", // The message or question to send to the AI agent,\n images: [{ type: \"base64\" // default, data: \"example string\", mimeType: \"image/png\" // default, description: \"example string\" }] // example for array, // Array of base64 encoded images to include with the message (for multimodal AI models). Example: [{type: \"base64\", data: \"base64...\", mimeType: \"image/png\", description: \"A beautiful image of a cat\"}] or [{type: \"url\", url: \"https://example.com/image.png\", description: \"A beautiful image of a cat\"}],\n conversationHistory: [{ role: \"user\" // options: \"user\", \"assistant\", \"tool\" // The role of the message sender, content: \"example string\" // The message content, toolCallId: \"example string\" // Tool call ID for tool messages, name: \"example string\" // Tool name for tool messages }], // Previous conversation messages for multi-turn conversations. When provided, messages are sent as separate turns to enable KV cache optimization. Format: [{role: \"user\", content: \"...\"}, {role: \"assistant\", content: \"...\"}, ...],\n systemPrompt: \"You are a helpful AI assistant\" // default, // System prompt that defines the AI agents behavior and personality,\n name: \"AI Agent\" // default, // A friendly name for the AI agent,\n model: { model: \"openai/gpt-5\" // options: \"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\", \"google/gemini-3.1-pro-preview\", \"google/gemini-3.1-flash-lite-preview\", \"anthropic/claude-sonnet-4-5\", \"anthropic/claude-sonnet-4-6\", \"anthropic/claude-opus-4-5\", \"anthropic/claude-opus-4-6\", \"anthropic/claude-haiku-4-5\", \"openrouter/x-ai/grok-code-fast-1\", \"openrouter/z-ai/glm-4.6\", \"openrouter/z-ai/glm-4.7\", \"openrouter/anthropic/claude-sonnet-4.5\", \"openrouter/anthropic/claude-sonnet-4.6\", \"openrouter/anthropic/claude-opus-4.5\", \"openrouter/anthropic/claude-opus-4.6\", \"openrouter/google/gemini-3-pro-preview\", \"openrouter/morph/morph-v3-large\", \"openrouter/openai/gpt-oss-120b\", \"openrouter/openai/o3-deep-research\", \"openrouter/openai/o4-mini-deep-research\" // AI model to use (format: provider/model-name)., temperature: 1 // default // Temperature for response randomness (0 = deterministic, 2 = very random), maxTokens: 64000 // default // Maximum number of tokens to generate in response, keep at default of 40000 unless the response is expected to be certain length, reasoningEffort: \"low\" // options: \"low\", \"medium\", \"high\" // Reasoning effort for model. If not specified, uses primary model reasoningEffort., maxRetries: 3 // default // Maximum number of retries for API calls (default: 3). Useful for handling transient errors like 503 Service Unavailable., provider: [\"example string\"] // Providers for ai agent (open router only)., jsonMode: false // default // When true, returns clean JSON response, you must provide the exact JSON schema in the system prompt, backupModel: { model: \"openai/gpt-5\" // options: \"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\", \"google/gemini-3.1-pro-preview\", \"google/gemini-3.1-flash-lite-preview\", \"anthropic/claude-sonnet-4-5\", \"anthropic/claude-sonnet-4-6\", \"anthropic/claude-opus-4-5\", \"anthropic/claude-opus-4-6\", \"anthropic/claude-haiku-4-5\", \"openrouter/x-ai/grok-code-fast-1\", \"openrouter/z-ai/glm-4.6\", \"openrouter/z-ai/glm-4.7\", \"openrouter/anthropic/claude-sonnet-4.5\", \"openrouter/anthropic/claude-sonnet-4.6\", \"openrouter/anthropic/claude-opus-4.5\", \"openrouter/anthropic/claude-opus-4.6\", \"openrouter/google/gemini-3-pro-preview\", \"openrouter/morph/morph-v3-large\", \"openrouter/openai/gpt-oss-120b\", \"openrouter/openai/o3-deep-research\", \"openrouter/openai/o4-mini-deep-research\" // Backup AI model to use if the primary model fails (format: provider/model-name)., temperature: 42 // Temperature for backup model. If not specified, uses primary model temperature., maxTokens: 42 // Max tokens for backup model. If not specified, uses primary model maxTokens., reasoningEffort: \"low\" // options: \"low\", \"medium\", \"high\" // Reasoning effort for backup model. If not specified, uses primary model reasoningEffort., maxRetries: 42 // Max retries for backup model. If not specified, uses primary model maxRetries. } // structure // Backup model configuration to use if the primary model fails. } // structure, // AI model configuration including provider, temperature, and tokens, retries, and json mode. Always include this.,\n tools: [{ name: \"web-search-tool\" // options: \"web-search-tool\", \"web-scrape-tool\", \"web-crawl-tool\", \"web-extract-tool\", \"research-agent-tool\", \"reddit-scrape-tool\", \"instagram-tool\", \"list-bubbles-tool\", \"list-capabilities-tool\", \"get-bubble-details-tool\", \"get-trigger-detail-tool\", \"bubbleflow-validation-tool\", \"code-edit-tool\", \"chart-js-tool\", \"amazon-shopping-tool\", \"linkedin-tool\", \"tiktok-tool\", \"twitter-tool\", \"google-maps-tool\", \"app-rankings-tool\", \"youtube-tool\", \"people-search-tool\", \"sql-query-tool\" // Name of the tool type or tool bubble to enable for the AI agent, config: {} // Configuration for the tool or tool bubble }] // example for array, // Array of tool config objects: [{ name: \"web-search-tool\" }, { name: \"web-scrape-tool\" }]. Each object requires a \"name\" field. Available tool names: web-search-tool, web-scrape-tool, web-crawl-tool, web-extract-tool, instagram-tool. If using image models, set tools to [],\n customTools: [{ name: \"example string\" // Unique name for your custom tool (e.g., \"calculate-tax\"), description: \"example string\" // Description of what the tool does - helps the AI know when to use it, schema: {} // Zod schema object defining the tool parameters. Can be either a plain object (e.g., { amount: z.number() }) or a Zod object directly (e.g., z.object({ amount: z.number() })). }] // example for array, // Array of custom runtime-defined tools with their own schemas and functions. Use this to add domain-specific tools without pre-registration. Example: [{ name: \"calculate-tax\", description: \"Calculates sales tax\", schema: { amount: z.number() }, func: async (input) => {...} }],\n maxIterations: 80 // default, // Maximum number of iterations for the agent workflow, 5 iterations per turn of conversation,\n credentialPool: { \"example_key\": [{ id: 42, name: \"example string\", value: \"example string\" }] }, // All available credentials per type with metadata. Used by master agent for delegation credential selection.,\n streaming: false // default, // Enable real-time streaming of tokens, tool calls, and iteration progress,\n capabilities: [{ id: \"example string\" // Capability ID (e.g., \"google-doc-knowledge-base\"), inputs: { \"example_key\": [\"example string\"] } // structure // Input parameter values for this capability, context: \"example string\" // Free-text context injected into this capability subagent system prompt (e.g., workspace-specific details, naming conventions, project prefixes) }] // example for array, // Capabilities that extend the agent with bundled tools, prompts, and credentials. Example: [{ id: \"google-doc-knowledge-base\", inputs: { docId: \"your-doc-id\" } }],\n expectedOutputSchema: \"example string\", // Zod schema or JSON schema string that defines the expected structure of the AI response. When provided, automatically enables JSON mode and instructs the AI to output in the exact format. Example: z.object({ summary: z.string(), items: z.array(z.object({ name: z.string(), score: z.number() })) }),\n memoryEnabled: true // default, // Enable persistent memory across conversations. When true, the agent can recall and save information about people, topics, and events between conversations.,\n enableSlackHistory: false // default, // Enable Slack thread history injection. When true, the agent receives full conversation history from Slack threads including user names, timezones, and images.,\n});\n\nconst result = await aiAgent.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// response: string // The AI agents final response to the user message. For text responses, returns plain text. If JSON mode is enabled, returns a JSON string. For image generation models (like gemini-2.5-flash-image-preview), returns base64-encoded image data with data URI format (data:image/png;base64,...),\n// reasoning: string | null | undefined // The reasoning/thinking tokens from the model (if available). Present for deep research models and reasoning models.,\n// toolCalls: { tool: string // Name of the tool that was called, input: unknown // Input parameters passed to the tool, output: unknown // Output returned by the tool }[] // Array of tool calls made during the conversation,\n// iterations: number // Number of back-and-forth iterations in the agent workflow,\n// totalCost: number | undefined // Total cost in USD for this request (includes tokens + web search for deep research models),\n// error: string // Error message of the run, undefined if successful,\n// success: boolean // Whether the agent execution completed successfully\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
638
+ "usageExample": "// Example usage of ai-agent bubble\nconst aiAgent = new AIAgentBubble({\n message: \"example string\", // The message or question to send to the AI agent,\n images: [{ type: \"base64\" // default, data: \"example string\", mimeType: \"image/png\" // default, description: \"example string\" }] // example for array, // Array of base64 encoded images to include with the message (for multimodal AI models). Example: [{type: \"base64\", data: \"base64...\", mimeType: \"image/png\", description: \"A beautiful image of a cat\"}] or [{type: \"url\", url: \"https://example.com/image.png\", description: \"A beautiful image of a cat\"}],\n conversationHistory: [{ role: \"user\" // options: \"user\", \"assistant\", \"tool\" // The role of the message sender, content: \"example string\" // The message content, toolCallId: \"example string\" // Tool call ID for tool messages, name: \"example string\" // Tool name for tool messages }], // Previous conversation messages for multi-turn conversations. When provided, messages are sent as separate turns to enable KV cache optimization. Format: [{role: \"user\", content: \"...\"}, {role: \"assistant\", content: \"...\"}, ...],\n systemPrompt: \"You are a helpful AI assistant\" // default, // System prompt that defines the AI agents behavior and personality,\n name: \"AI Agent\" // default, // A friendly name for the AI agent,\n model: { model: \"openai/gpt-5\" // options: \"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\", \"google/gemini-3.1-pro-preview\", \"google/gemini-3.1-flash-lite-preview\", \"anthropic/claude-sonnet-4-5\", \"anthropic/claude-sonnet-4-6\", \"anthropic/claude-opus-4-5\", \"anthropic/claude-opus-4-6\", \"anthropic/claude-haiku-4-5\", \"openrouter/x-ai/grok-code-fast-1\", \"openrouter/z-ai/glm-4.6\", \"openrouter/z-ai/glm-4.7\", \"openrouter/anthropic/claude-sonnet-4.5\", \"openrouter/anthropic/claude-sonnet-4.6\", \"openrouter/anthropic/claude-opus-4.5\", \"openrouter/anthropic/claude-opus-4.6\", \"openrouter/google/gemini-3-pro-preview\", \"openrouter/morph/morph-v3-large\", \"openrouter/openai/gpt-oss-120b\", \"openrouter/openai/o3-deep-research\", \"openrouter/openai/o4-mini-deep-research\" // AI model to use (format: provider/model-name)., temperature: 1 // default // Temperature for response randomness (0 = deterministic, 2 = very random), maxTokens: 64000 // default // Maximum number of tokens to generate in response, keep at default of 40000 unless the response is expected to be certain length, reasoningEffort: \"low\" // options: \"low\", \"medium\", \"high\" // Reasoning effort for model. If not specified, uses primary model reasoningEffort., maxRetries: 3 // default // Maximum number of retries for API calls (default: 3). Useful for handling transient errors like 503 Service Unavailable., provider: [\"example string\"] // Providers for ai agent (open router only)., jsonMode: false // default // When true, returns clean JSON response, you must provide the exact JSON schema in the system prompt, backupModel: { model: \"openai/gpt-5\" // options: \"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\", \"google/gemini-3.1-pro-preview\", \"google/gemini-3.1-flash-lite-preview\", \"anthropic/claude-sonnet-4-5\", \"anthropic/claude-sonnet-4-6\", \"anthropic/claude-opus-4-5\", \"anthropic/claude-opus-4-6\", \"anthropic/claude-haiku-4-5\", \"openrouter/x-ai/grok-code-fast-1\", \"openrouter/z-ai/glm-4.6\", \"openrouter/z-ai/glm-4.7\", \"openrouter/anthropic/claude-sonnet-4.5\", \"openrouter/anthropic/claude-sonnet-4.6\", \"openrouter/anthropic/claude-opus-4.5\", \"openrouter/anthropic/claude-opus-4.6\", \"openrouter/google/gemini-3-pro-preview\", \"openrouter/morph/morph-v3-large\", \"openrouter/openai/gpt-oss-120b\", \"openrouter/openai/o3-deep-research\", \"openrouter/openai/o4-mini-deep-research\" // Backup AI model to use if the primary model fails (format: provider/model-name)., temperature: 42 // Temperature for backup model. If not specified, uses primary model temperature., maxTokens: 42 // Max tokens for backup model. If not specified, uses primary model maxTokens., reasoningEffort: \"low\" // options: \"low\", \"medium\", \"high\" // Reasoning effort for backup model. If not specified, uses primary model reasoningEffort., maxRetries: 42 // Max retries for backup model. If not specified, uses primary model maxRetries. } // structure // Backup model if the primary fails. Defaults to GOOGLE_FLAGSHIP (Gemini 3 Flash) when omitted. } // structure, // AI model configuration including provider, temperature, and tokens, retries, and json mode. Always include this.,\n tools: [{ name: \"web-search-tool\" // options: \"web-search-tool\", \"web-scrape-tool\", \"web-crawl-tool\", \"web-extract-tool\", \"research-agent-tool\", \"reddit-scrape-tool\", \"instagram-tool\", \"list-bubbles-tool\", \"list-capabilities-tool\", \"get-bubble-details-tool\", \"get-trigger-detail-tool\", \"bubbleflow-validation-tool\", \"code-edit-tool\", \"chart-js-tool\", \"amazon-shopping-tool\", \"linkedin-tool\", \"tiktok-tool\", \"twitter-tool\", \"google-maps-tool\", \"app-rankings-tool\", \"youtube-tool\", \"people-search-tool\", \"sql-query-tool\" // Name of the tool type or tool bubble to enable for the AI agent, config: {} // Configuration for the tool or tool bubble }] // example for array, // Array of tool config objects: [{ name: \"web-search-tool\" }, { name: \"web-scrape-tool\" }]. Each object requires a \"name\" field. Available tool names: web-search-tool, web-scrape-tool, web-crawl-tool, web-extract-tool, instagram-tool. If using image models, set tools to [],\n customTools: [{ name: \"example string\" // Unique name for your custom tool (e.g., \"calculate-tax\"), description: \"example string\" // Description of what the tool does - helps the AI know when to use it, schema: {} // Zod schema object defining the tool parameters. Can be either a plain object (e.g., { amount: z.number() }) or a Zod object directly (e.g., z.object({ amount: z.number() })). }] // example for array, // Array of custom runtime-defined tools with their own schemas and functions. Use this to add domain-specific tools without pre-registration. Example: [{ name: \"calculate-tax\", description: \"Calculates sales tax\", schema: { amount: z.number() }, func: async (input) => {...} }],\n maxIterations: 80 // default, // Maximum number of iterations for the agent workflow, 5 iterations per turn of conversation,\n credentialPool: { \"example_key\": [{ id: 42, name: \"example string\", value: \"example string\" }] }, // All available credentials per type with metadata. Used by master agent for delegation credential selection.,\n streaming: false // default, // Enable real-time streaming of tokens, tool calls, and iteration progress,\n capabilities: [{ id: \"example string\" // Capability ID (e.g., \"google-doc-knowledge-base\"), inputs: { \"example_key\": [\"example string\"] } // structure // Input parameter values for this capability, context: \"example string\" // Free-text context injected into this capability subagent system prompt (e.g., workspace-specific details, naming conventions, project prefixes) }] // example for array, // Capabilities that extend the agent with bundled tools, prompts, and credentials. Example: [{ id: \"google-doc-knowledge-base\", inputs: { docId: \"your-doc-id\" } }],\n expectedOutputSchema: \"example string\", // Zod schema or JSON schema string that defines the expected structure of the AI response. When provided, automatically enables JSON mode and instructs the AI to output in the exact format. Example: z.object({ summary: z.string(), items: z.array(z.object({ name: z.string(), score: z.number() })) }),\n memoryEnabled: true // default, // Enable persistent memory across conversations. When true, the agent can recall and save information about people, topics, and events between conversations.,\n enableSlackHistory: false // default, // Enable Slack thread history injection. When true, the agent receives full conversation history from Slack threads including user names, timezones, and images.,\n});\n\nconst result = await aiAgent.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// response: string // The AI agents final response to the user message. For text responses, returns plain text. If JSON mode is enabled, returns a JSON string. For image generation models (like gemini-2.5-flash-image-preview), returns base64-encoded image data with data URI format (data:image/png;base64,...),\n// reasoning: string | null | undefined // The reasoning/thinking tokens from the model (if available). Present for deep research models and reasoning models.,\n// toolCalls: { tool: string // Name of the tool that was called, input: unknown // Input parameters passed to the tool, output: unknown // Output returned by the tool }[] // Array of tool calls made during the conversation,\n// iterations: number // Number of back-and-forth iterations in the agent workflow,\n// totalCost: number | undefined // Total cost in USD for this request (includes tokens + web search for deep research models),\n// error: string // Error message of the run, undefined if successful,\n// success: boolean // Whether the agent execution completed successfully\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
639
639
  "requiredCredentials": [
640
640
  "OPENAI_CRED",
641
641
  "GOOGLE_GEMINI_CRED",
@@ -0,0 +1,4 @@
1
+ import { z } from 'zod';
2
+ export declare const AvailableModels: z.ZodEnum<["openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-o4-mini", "openai/gpt-4o", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-flash-image-preview", "anthropic/claude-sonnet-4-5-20250929"]>;
3
+ export type AvailableModel = z.infer<typeof AvailableModels>;
4
+ //# sourceMappingURL=ai-models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-models.d.ts","sourceRoot":"","sources":["../../src/types/ai-models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,eAAe,8PAa1B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { z } from 'zod';
2
+ // Define available models with provider/name combinations
3
+ export const AvailableModels = z.enum([
4
+ // OpenAI models
5
+ 'openai/gpt-5',
6
+ 'openai/gpt-5-mini',
7
+ 'openai/gpt-o4-mini',
8
+ 'openai/gpt-4o',
9
+ // Google Gemini models
10
+ 'google/gemini-2.5-pro',
11
+ 'google/gemini-2.5-flash',
12
+ 'google/gemini-2.5-flash-lite',
13
+ 'google/gemini-2.5-flash-image-preview',
14
+ 'anthropic/claude-sonnet-4-5-20250929',
15
+ ]);
16
+ //# sourceMappingURL=ai-models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-models.js","sourceRoot":"","sources":["../../src/types/ai-models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,0DAA0D;AAC1D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC;IACpC,gBAAgB;IAChB,cAAc;IACd,mBAAmB;IACnB,oBAAoB;IACpB,eAAe;IACf,uBAAuB;IACvB,uBAAuB;IACvB,yBAAyB;IACzB,8BAA8B;IAC9B,uCAAuC;IAEvC,sCAAsC;CACvC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function sanitizeParams(params: Record<string, unknown>): Record<string, unknown>;
2
+ //# sourceMappingURL=param-helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"param-helper.d.ts","sourceRoot":"","sources":["../../src/utils/param-helper.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKzB"}
@@ -0,0 +1,5 @@
1
+ export function sanitizeParams(params) {
2
+ // Remove credentials from params
3
+ return Object.fromEntries(Object.entries(params).filter(([key]) => !key.startsWith('credentials')));
4
+ }
5
+ //# sourceMappingURL=param-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"param-helper.js","sourceRoot":"","sources":["../../src/utils/param-helper.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAC5B,MAA+B;IAE/B,iCAAiC;IACjC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CACzE,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bubblelab/bubble-core",
3
- "version": "0.1.263",
3
+ "version": "0.1.266",
4
4
  "type": "module",
5
5
  "license": "Apache-2.0",
6
6
  "main": "./dist/index.js",
@@ -41,7 +41,7 @@
41
41
  "puppeteer-core": "^24.10.0",
42
42
  "resend": "^4.8.0",
43
43
  "zod": "^3.24.1",
44
- "@bubblelab/shared-schemas": "0.1.263"
44
+ "@bubblelab/shared-schemas": "0.1.266"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@types/node": "^20.12.12",