@bubblelab/bubble-core 0.1.195 → 0.1.197

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 (109) hide show
  1. package/dist/bubble-bundle.d.ts +160 -160
  2. package/dist/bubbles/service-bubble/agi-inc.d.ts +60 -60
  3. package/dist/bubbles/service-bubble/ai-agent.d.ts +32 -32
  4. package/dist/bubbles/service-bubble/ai-agent.d.ts.map +1 -1
  5. package/dist/bubbles/service-bubble/ai-agent.js +17 -2
  6. package/dist/bubbles/service-bubble/ai-agent.js.map +1 -1
  7. package/dist/bubbles/service-bubble/airtable.d.ts +50 -50
  8. package/dist/bubbles/service-bubble/apify/actors/google-maps-scraper.d.ts +2 -2
  9. package/dist/bubbles/service-bubble/apify/actors/instagram-hashtag-scraper.d.ts +4 -4
  10. package/dist/bubbles/service-bubble/apify/actors/instagram-scraper.d.ts +12 -12
  11. package/dist/bubbles/service-bubble/apify/actors/linkedin-jobs-scraper.d.ts +2 -2
  12. package/dist/bubbles/service-bubble/apify/actors/linkedin-posts-search.d.ts +8 -8
  13. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-detail.d.ts +52 -52
  14. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-posts.d.ts +18 -18
  15. package/dist/bubbles/service-bubble/apify/actors/tiktok-scraper.d.ts +10 -10
  16. package/dist/bubbles/service-bubble/apify/actors/twitter-scraper.d.ts +27 -27
  17. package/dist/bubbles/service-bubble/apify/actors/youtube-scraper.d.ts +8 -8
  18. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts +131 -131
  19. package/dist/bubbles/service-bubble/apify/apify.d.ts +12 -12
  20. package/dist/bubbles/service-bubble/ashby/ashby.d.ts +62 -62
  21. package/dist/bubbles/service-bubble/ashby/ashby.schema.d.ts +84 -84
  22. package/dist/bubbles/service-bubble/attio/attio.d.ts +28 -28
  23. package/dist/bubbles/service-bubble/attio/attio.schema.d.ts +28 -28
  24. package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts +28 -28
  25. package/dist/bubbles/service-bubble/browserbase/browserbase.schema.d.ts +30 -30
  26. package/dist/bubbles/service-bubble/confluence/confluence.d.ts +24 -24
  27. package/dist/bubbles/service-bubble/confluence/confluence.schema.d.ts +24 -24
  28. package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts +126 -126
  29. package/dist/bubbles/service-bubble/crustdata/crustdata.schema.d.ts +158 -158
  30. package/dist/bubbles/service-bubble/eleven-labs.d.ts +28 -28
  31. package/dist/bubbles/service-bubble/firecrawl.d.ts +783 -783
  32. package/dist/bubbles/service-bubble/followupboss.d.ts +140 -140
  33. package/dist/bubbles/service-bubble/fullenrich/fullenrich.d.ts +68 -68
  34. package/dist/bubbles/service-bubble/fullenrich/fullenrich.schema.d.ts +108 -108
  35. package/dist/bubbles/service-bubble/github.d.ts +84 -84
  36. package/dist/bubbles/service-bubble/gmail.d.ts +80 -80
  37. package/dist/bubbles/service-bubble/google-calendar.d.ts +138 -138
  38. package/dist/bubbles/service-bubble/google-drive.d.ts +60 -60
  39. package/dist/bubbles/service-bubble/google-sheets/google-sheets.d.ts +44 -44
  40. package/dist/bubbles/service-bubble/google-sheets/google-sheets.schema.d.ts +48 -48
  41. package/dist/bubbles/service-bubble/hello-world.d.ts +8 -8
  42. package/dist/bubbles/service-bubble/http.d.ts +16 -16
  43. package/dist/bubbles/service-bubble/hubspot/hubspot.d.ts +8 -8
  44. package/dist/bubbles/service-bubble/hubspot/hubspot.schema.d.ts +8 -8
  45. package/dist/bubbles/service-bubble/insforge-db.d.ts +8 -8
  46. package/dist/bubbles/service-bubble/jira/jira.d.ts +86 -86
  47. package/dist/bubbles/service-bubble/jira/jira.schema.d.ts +94 -94
  48. package/dist/bubbles/service-bubble/linear/linear.d.ts +32 -32
  49. package/dist/bubbles/service-bubble/linear/linear.schema.d.ts +32 -32
  50. package/dist/bubbles/service-bubble/notion/notion.d.ts +522 -522
  51. package/dist/bubbles/service-bubble/notion/property-schemas.d.ts +8 -8
  52. package/dist/bubbles/service-bubble/postgresql.d.ts +8 -8
  53. package/dist/bubbles/service-bubble/posthog/posthog.d.ts +22 -22
  54. package/dist/bubbles/service-bubble/posthog/posthog.schema.d.ts +26 -26
  55. package/dist/bubbles/service-bubble/resend.d.ts +28 -28
  56. package/dist/bubbles/service-bubble/sendsafely/sendsafely.d.ts +10 -10
  57. package/dist/bubbles/service-bubble/sendsafely/sendsafely.schema.d.ts +12 -12
  58. package/dist/bubbles/service-bubble/slack/slack.d.ts +252 -252
  59. package/dist/bubbles/service-bubble/storage.d.ts +20 -20
  60. package/dist/bubbles/service-bubble/stripe/stripe.d.ts +125 -125
  61. package/dist/bubbles/service-bubble/stripe/stripe.schema.d.ts +143 -143
  62. package/dist/bubbles/service-bubble/telegram.d.ts +1562 -1562
  63. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.d.ts +13 -13
  64. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.schema.d.ts +13 -13
  65. package/dist/bubbles/tool-bubble/browser-tools/_shared/schema.d.ts +2 -2
  66. package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/schema.d.ts +2 -2
  67. package/dist/bubbles/tool-bubble/browser-tools/linkedin-accept-invitations/tool.d.ts +2 -2
  68. package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/schema.d.ts +2 -2
  69. package/dist/bubbles/tool-bubble/browser-tools/linkedin-connection/tool.d.ts +2 -2
  70. package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/schema.d.ts +2 -2
  71. package/dist/bubbles/tool-bubble/browser-tools/linkedin-received-invitations/tool.d.ts +2 -2
  72. package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/schema.d.ts +2 -2
  73. package/dist/bubbles/tool-bubble/browser-tools/linkedin-sent-invitations/tool.d.ts +2 -2
  74. package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +16 -16
  75. package/dist/bubbles/tool-bubble/chart-js-tool.d.ts +26 -26
  76. package/dist/bubbles/tool-bubble/code-edit-tool.d.ts +4 -4
  77. package/dist/bubbles/tool-bubble/company-enrichment-tool.d.ts +52 -52
  78. package/dist/bubbles/tool-bubble/get-bubble-details-tool.d.ts +4 -4
  79. package/dist/bubbles/tool-bubble/get-trigger-detail-tool.d.ts +4 -4
  80. package/dist/bubbles/tool-bubble/google-maps-tool.d.ts +4 -4
  81. package/dist/bubbles/tool-bubble/instagram-tool.d.ts +14 -14
  82. package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +186 -186
  83. package/dist/bubbles/tool-bubble/list-airtable-bases-tool.d.ts +4 -4
  84. package/dist/bubbles/tool-bubble/list-airtable-tables-tool.d.ts +4 -4
  85. package/dist/bubbles/tool-bubble/list-bubbles-tool.d.ts +4 -4
  86. package/dist/bubbles/tool-bubble/list-capabilities-tool.d.ts +4 -4
  87. package/dist/bubbles/tool-bubble/people-search-tool.d.ts +14 -14
  88. package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +28 -28
  89. package/dist/bubbles/tool-bubble/research-agent-tool.d.ts +14 -14
  90. package/dist/bubbles/tool-bubble/sql-query-tool.d.ts +4 -4
  91. package/dist/bubbles/tool-bubble/tiktok-tool.d.ts +28 -28
  92. package/dist/bubbles/tool-bubble/tool-template.d.ts +4 -4
  93. package/dist/bubbles/tool-bubble/twitter-tool.d.ts +54 -54
  94. package/dist/bubbles/tool-bubble/web-crawl-tool.d.ts +22 -22
  95. package/dist/bubbles/tool-bubble/web-extract-tool.d.ts +8 -8
  96. package/dist/bubbles/tool-bubble/web-scrape-tool.d.ts +8 -8
  97. package/dist/bubbles/tool-bubble/web-search-tool.d.ts +8 -8
  98. package/dist/bubbles/tool-bubble/yc-scraper-tool.d.ts +22 -22
  99. package/dist/bubbles/tool-bubble/youtube-tool.d.ts +18 -18
  100. package/dist/bubbles/workflow-bubble/database-analyzer.workflow.d.ts +4 -4
  101. package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts +38 -38
  102. package/dist/bubbles/workflow-bubble/parse-document.workflow.d.ts +18 -18
  103. package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +72 -72
  104. package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.d.ts +52 -52
  105. package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +38 -38
  106. package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +100 -100
  107. package/dist/bubbles/workflow-bubble/slack-notifier.workflow.d.ts +18 -18
  108. package/dist/bubbles.json +21 -11
  109. package/package.json +2 -2
@@ -35,15 +35,15 @@ declare const SlackNotifierParamsSchema: z.ZodObject<{
35
35
  * AI model configuration for content formatting
36
36
  */
37
37
  aiModel: z.ZodOptional<z.ZodObject<{
38
- model: z.ZodDefault<z.ZodEnum<["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-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"]>>;
38
+ model: z.ZodDefault<z.ZodEnum<["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", "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"]>>;
39
39
  temperature: z.ZodDefault<z.ZodNumber>;
40
40
  maxTokens: z.ZodDefault<z.ZodNumber>;
41
41
  }, "strip", z.ZodTypeAny, {
42
- 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" | "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";
42
+ 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" | "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";
43
43
  temperature: number;
44
44
  maxTokens: number;
45
45
  }, {
46
- 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" | "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;
46
+ 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" | "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;
47
47
  temperature?: number | undefined;
48
48
  maxTokens?: number | undefined;
49
49
  }>>;
@@ -54,14 +54,14 @@ declare const SlackNotifierParamsSchema: z.ZodObject<{
54
54
  }, "strip", z.ZodTypeAny, {
55
55
  contentToFormat: string;
56
56
  targetChannel: string;
57
- messageStyle: "concise" | "detailed" | "professional" | "casual" | "technical";
57
+ messageStyle: "professional" | "casual" | "technical" | "concise" | "detailed";
58
58
  includeFormatting: boolean;
59
59
  maxMessageLength: number;
60
60
  credentials?: Partial<Record<CredentialType, string>> | undefined;
61
61
  originalUserQuery?: string | undefined;
62
62
  messageTitle?: string | undefined;
63
63
  aiModel?: {
64
- 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" | "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";
64
+ 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" | "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";
65
65
  temperature: number;
66
66
  maxTokens: number;
67
67
  } | undefined;
@@ -71,11 +71,11 @@ 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?: "concise" | "detailed" | "professional" | "casual" | "technical" | undefined;
74
+ messageStyle?: "professional" | "casual" | "technical" | "concise" | "detailed" | undefined;
75
75
  includeFormatting?: boolean | undefined;
76
76
  maxMessageLength?: number | undefined;
77
77
  aiModel?: {
78
- 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" | "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;
78
+ 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" | "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;
79
79
  temperature?: number | undefined;
80
80
  maxTokens?: number | undefined;
81
81
  } | undefined;
@@ -148,8 +148,8 @@ declare const SlackNotifierResultSchema: z.ZodObject<{
148
148
  originalLength?: number | undefined;
149
149
  }>>;
150
150
  }, "strip", z.ZodTypeAny, {
151
- error: string;
152
151
  success: boolean;
152
+ error: string;
153
153
  messageInfo?: {
154
154
  channelName?: string | undefined;
155
155
  messageTimestamp?: string | undefined;
@@ -163,8 +163,8 @@ declare const SlackNotifierResultSchema: z.ZodObject<{
163
163
  originalLength?: number | undefined;
164
164
  } | undefined;
165
165
  }, {
166
- error: string;
167
166
  success: boolean;
167
+ error: string;
168
168
  messageInfo?: {
169
169
  channelName?: string | undefined;
170
170
  messageTimestamp?: string | undefined;
@@ -233,15 +233,15 @@ export declare class SlackNotifierWorkflowBubble extends WorkflowBubble<SlackNot
233
233
  * AI model configuration for content formatting
234
234
  */
235
235
  aiModel: z.ZodOptional<z.ZodObject<{
236
- model: z.ZodDefault<z.ZodEnum<["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-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"]>>;
236
+ model: z.ZodDefault<z.ZodEnum<["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", "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"]>>;
237
237
  temperature: z.ZodDefault<z.ZodNumber>;
238
238
  maxTokens: z.ZodDefault<z.ZodNumber>;
239
239
  }, "strip", z.ZodTypeAny, {
240
- 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" | "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";
240
+ 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" | "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";
241
241
  temperature: number;
242
242
  maxTokens: number;
243
243
  }, {
244
- 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" | "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;
244
+ 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" | "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;
245
245
  temperature?: number | undefined;
246
246
  maxTokens?: number | undefined;
247
247
  }>>;
@@ -252,14 +252,14 @@ export declare class SlackNotifierWorkflowBubble extends WorkflowBubble<SlackNot
252
252
  }, "strip", z.ZodTypeAny, {
253
253
  contentToFormat: string;
254
254
  targetChannel: string;
255
- messageStyle: "concise" | "detailed" | "professional" | "casual" | "technical";
255
+ messageStyle: "professional" | "casual" | "technical" | "concise" | "detailed";
256
256
  includeFormatting: boolean;
257
257
  maxMessageLength: number;
258
258
  credentials?: Partial<Record<CredentialType, string>> | undefined;
259
259
  originalUserQuery?: string | undefined;
260
260
  messageTitle?: string | undefined;
261
261
  aiModel?: {
262
- 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" | "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";
262
+ 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" | "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";
263
263
  temperature: number;
264
264
  maxTokens: number;
265
265
  } | undefined;
@@ -269,11 +269,11 @@ 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?: "concise" | "detailed" | "professional" | "casual" | "technical" | undefined;
272
+ messageStyle?: "professional" | "casual" | "technical" | "concise" | "detailed" | undefined;
273
273
  includeFormatting?: boolean | undefined;
274
274
  maxMessageLength?: number | undefined;
275
275
  aiModel?: {
276
- 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" | "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;
276
+ 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" | "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;
277
277
  temperature?: number | undefined;
278
278
  maxTokens?: number | undefined;
279
279
  } | undefined;
@@ -344,8 +344,8 @@ export declare class SlackNotifierWorkflowBubble extends WorkflowBubble<SlackNot
344
344
  originalLength?: number | undefined;
345
345
  }>>;
346
346
  }, "strip", z.ZodTypeAny, {
347
- error: string;
348
347
  success: boolean;
348
+ error: string;
349
349
  messageInfo?: {
350
350
  channelName?: string | undefined;
351
351
  messageTimestamp?: string | undefined;
@@ -359,8 +359,8 @@ export declare class SlackNotifierWorkflowBubble extends WorkflowBubble<SlackNot
359
359
  originalLength?: number | undefined;
360
360
  } | undefined;
361
361
  }, {
362
- error: string;
363
362
  success: boolean;
363
+ error: string;
364
364
  messageInfo?: {
365
365
  channelName?: string | undefined;
366
366
  messageTimestamp?: string | undefined;
package/dist/bubbles.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "2.0.0",
3
- "generatedAt": "2026-02-23T07:21:54.282Z",
3
+ "generatedAt": "2026-02-23T14:26:52.080Z",
4
4
  "totalCount": 69,
5
5
  "bubbles": [
6
6
  {
@@ -202,6 +202,7 @@
202
202
  "google/gemini-3-pro-preview",
203
203
  "google/gemini-3-pro-image-preview",
204
204
  "google/gemini-3-flash-preview",
205
+ "google/gemini-3.1-pro-preview",
205
206
  "anthropic/claude-sonnet-4-5",
206
207
  "anthropic/claude-sonnet-4-6",
207
208
  "anthropic/claude-opus-4-5",
@@ -281,6 +282,7 @@
281
282
  "google/gemini-3-pro-preview",
282
283
  "google/gemini-3-pro-image-preview",
283
284
  "google/gemini-3-flash-preview",
285
+ "google/gemini-3.1-pro-preview",
284
286
  "anthropic/claude-sonnet-4-5",
285
287
  "anthropic/claude-sonnet-4-6",
286
288
  "anthropic/claude-opus-4-5",
@@ -334,7 +336,7 @@
334
336
  ],
335
337
  "additionalProperties": false,
336
338
  "default": {
337
- "model": "google/gemini-3-flash-preview"
339
+ "model": "google/gemini-2.5-flash-lite"
338
340
  },
339
341
  "description": "Backup model configuration to use if the primary model fails."
340
342
  }
@@ -344,7 +346,7 @@
344
346
  ],
345
347
  "additionalProperties": false,
346
348
  "default": {
347
- "model": "google/gemini-3-flash-preview",
349
+ "model": "google/gemini-2.5-flash-lite",
348
350
  "temperature": 1,
349
351
  "maxTokens": 65536,
350
352
  "maxRetries": 3,
@@ -599,7 +601,7 @@
599
601
  ],
600
602
  "additionalProperties": false
601
603
  },
602
- "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\", \"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\", \"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\", \"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: 40 // default, // Maximum number of iterations for the agent workflow, 5 iterations per turn of conversation,\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 }] // 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);",
604
+ "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\", \"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\", \"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\", \"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: 40 // default, // Maximum number of iterations for the agent workflow, 5 iterations per turn of conversation,\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 }] // 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);",
603
605
  "requiredCredentials": [
604
606
  "OPENAI_CRED",
605
607
  "GOOGLE_GEMINI_CRED",
@@ -32513,6 +32515,7 @@
32513
32515
  "google/gemini-3-pro-preview",
32514
32516
  "google/gemini-3-pro-image-preview",
32515
32517
  "google/gemini-3-flash-preview",
32518
+ "google/gemini-3.1-pro-preview",
32516
32519
  "anthropic/claude-sonnet-4-5",
32517
32520
  "anthropic/claude-sonnet-4-6",
32518
32521
  "anthropic/claude-opus-4-5",
@@ -32614,7 +32617,7 @@
32614
32617
  ],
32615
32618
  "additionalProperties": false
32616
32619
  },
32617
- "usageExample": "// Example usage of slack-notifier bubble\nconst slackNotifier = new SlackNotifierWorkflowBubble({\n contentToFormat: \"example string\", // Raw content or data to format for Slack,\n originalUserQuery: \"example string\", // Original user question or context,\n targetChannel: \"example string\", // Slack channel name (without #) or channel ID,\n messageTitle: \"example string\", // Custom title for the Slack message,\n messageStyle: \"professional\" // options: \"professional\", \"casual\", \"technical\", \"concise\", \"detailed\", // Style and tone for message formatting,\n includeFormatting: true // default, // Include emojis and rich Slack formatting,\n maxMessageLength: 3000 // default, // Maximum message length for Slack,\n aiModel: { 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\", \"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\", temperature: 0.3 // default, maxTokens: 50000 // default }, // AI model settings for content formatting,\n});\n\nconst result = await slackNotifier.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// success: boolean,\n// error: string,\n// messageInfo: { messageTimestamp: string | undefined, channelId: string | undefined, channelName: string | undefined, formattedMessage: string | undefined, messageLength: number | undefined } | undefined,\n// formattingInfo: { modelUsed: string | undefined, wasTruncated: boolean, originalLength: number | undefined } | undefined\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
32620
+ "usageExample": "// Example usage of slack-notifier bubble\nconst slackNotifier = new SlackNotifierWorkflowBubble({\n contentToFormat: \"example string\", // Raw content or data to format for Slack,\n originalUserQuery: \"example string\", // Original user question or context,\n targetChannel: \"example string\", // Slack channel name (without #) or channel ID,\n messageTitle: \"example string\", // Custom title for the Slack message,\n messageStyle: \"professional\" // options: \"professional\", \"casual\", \"technical\", \"concise\", \"detailed\", // Style and tone for message formatting,\n includeFormatting: true // default, // Include emojis and rich Slack formatting,\n maxMessageLength: 3000 // default, // Maximum message length for Slack,\n aiModel: { 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\", \"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\", temperature: 0.3 // default, maxTokens: 50000 // default }, // AI model settings for content formatting,\n});\n\nconst result = await slackNotifier.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// success: boolean,\n// error: string,\n// messageInfo: { messageTimestamp: string | undefined, channelId: string | undefined, channelName: string | undefined, formattedMessage: string | undefined, messageLength: number | undefined } | undefined,\n// formattingInfo: { modelUsed: string | undefined, wasTruncated: boolean, originalLength: number | undefined } | undefined\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
32618
32621
  "requiredCredentials": [
32619
32622
  "SLACK_CRED",
32620
32623
  "SLACK_API",
@@ -32691,6 +32694,7 @@
32691
32694
  "google/gemini-3-pro-preview",
32692
32695
  "google/gemini-3-pro-image-preview",
32693
32696
  "google/gemini-3-flash-preview",
32697
+ "google/gemini-3.1-pro-preview",
32694
32698
  "anthropic/claude-sonnet-4-5",
32695
32699
  "anthropic/claude-sonnet-4-6",
32696
32700
  "anthropic/claude-opus-4-5",
@@ -32876,7 +32880,7 @@
32876
32880
  ],
32877
32881
  "additionalProperties": false
32878
32882
  },
32879
- "usageExample": "// Example usage of slack-data-assistant bubble\nconst slackDataAssistant = new SlackDataAssistantWorkflow({\n slackChannel: \"example string\", // Slack channel ID where the bot will respond,\n slackThreadTs: \"example string\", // Thread timestamp if replying to a thread,\n userQuestion: \"example string\", // The user question from Slack,\n userName: \"example string\", // Name of the user asking the question,\n name: \"Data Assistant\" // default, // Name of the AI assistant (e.g., \"DataBot\", \"Analytics Assistant\"),\n dataSourceType: \"postgresql\" // options: \"postgresql\", \"mysql\", \"sqlite\", \"mariadb\", \"mssql\", // Type of database to analyze,\n databaseUrl: \"example string\", // Database connection URL (if not using credentials),\n ignoreSSLErrors: false // default, // Ignore SSL certificate errors for database connection,\n aiModel: \"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\", \"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 for query generation,\n temperature: 0.3 // default, // Temperature for AI responses (lower = more focused),\n verbosity: \"1\" // options: \"1\", \"2\", \"3\", \"4\", \"5\", // Response verbosity level (1=concise, 5=comprehensive),\n technicality: \"1\" // options: \"1\", \"2\", \"3\", \"4\", \"5\", // Technical complexity level (1=plain English, 5=expert),\n includeQuery: true // default, // Include the SQL query in the response,\n includeExplanation: true // default, // Include query explanation in the response,\n injectedMetadata: { tables: { \"example_key\": { \"example_key\": \"example string\" } }, tableNotes: { \"example_key\": \"example string\" }, rules: [\"example string\"] }, // Additional database context injected from user credentials metadata,\n additionalContext: \"example string\", // Additional context about how to answer the question,\n maxQueries: 20 // default, // Maximum number of queries to run,\n});\n\nconst result = await slackDataAssistant.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// success: boolean // Whether the workflow completed successfully,\n// error: string // Error message if workflow failed,\n// query: string | undefined // Generated SQL query,\n// queryExplanation: string | undefined // Explanation of the query,\n// queryResults: Record<string, unknown>[] | undefined // Results from the database query,\n// formattedResponse: string | undefined // Formatted response for Slack,\n// slackBlocks: unknown[] | undefined // Slack block kit formatted message,\n// slackMessageTs: string | undefined // Timestamp of sent Slack message,\n// isDataQuestion: boolean | undefined // Whether the question was data-related,\n// metadata: { executionTime: number // Total execution time in milliseconds, rowCount: number | undefined // Number of rows returned, wordCount: number | undefined // Word count of response } | undefined\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
32883
+ "usageExample": "// Example usage of slack-data-assistant bubble\nconst slackDataAssistant = new SlackDataAssistantWorkflow({\n slackChannel: \"example string\", // Slack channel ID where the bot will respond,\n slackThreadTs: \"example string\", // Thread timestamp if replying to a thread,\n userQuestion: \"example string\", // The user question from Slack,\n userName: \"example string\", // Name of the user asking the question,\n name: \"Data Assistant\" // default, // Name of the AI assistant (e.g., \"DataBot\", \"Analytics Assistant\"),\n dataSourceType: \"postgresql\" // options: \"postgresql\", \"mysql\", \"sqlite\", \"mariadb\", \"mssql\", // Type of database to analyze,\n databaseUrl: \"example string\", // Database connection URL (if not using credentials),\n ignoreSSLErrors: false // default, // Ignore SSL certificate errors for database connection,\n aiModel: \"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\", \"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 for query generation,\n temperature: 0.3 // default, // Temperature for AI responses (lower = more focused),\n verbosity: \"1\" // options: \"1\", \"2\", \"3\", \"4\", \"5\", // Response verbosity level (1=concise, 5=comprehensive),\n technicality: \"1\" // options: \"1\", \"2\", \"3\", \"4\", \"5\", // Technical complexity level (1=plain English, 5=expert),\n includeQuery: true // default, // Include the SQL query in the response,\n includeExplanation: true // default, // Include query explanation in the response,\n injectedMetadata: { tables: { \"example_key\": { \"example_key\": \"example string\" } }, tableNotes: { \"example_key\": \"example string\" }, rules: [\"example string\"] }, // Additional database context injected from user credentials metadata,\n additionalContext: \"example string\", // Additional context about how to answer the question,\n maxQueries: 20 // default, // Maximum number of queries to run,\n});\n\nconst result = await slackDataAssistant.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// success: boolean // Whether the workflow completed successfully,\n// error: string // Error message if workflow failed,\n// query: string | undefined // Generated SQL query,\n// queryExplanation: string | undefined // Explanation of the query,\n// queryResults: Record<string, unknown>[] | undefined // Results from the database query,\n// formattedResponse: string | undefined // Formatted response for Slack,\n// slackBlocks: unknown[] | undefined // Slack block kit formatted message,\n// slackMessageTs: string | undefined // Timestamp of sent Slack message,\n// isDataQuestion: boolean | undefined // Whether the question was data-related,\n// metadata: { executionTime: number // Total execution time in milliseconds, rowCount: number | undefined // Number of rows returned, wordCount: number | undefined // Word count of response } | undefined\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
32880
32884
  "requiredCredentials": [
32881
32885
  "DATABASE_CRED",
32882
32886
  "SLACK_CRED",
@@ -32957,6 +32961,7 @@
32957
32961
  "google/gemini-3-pro-preview",
32958
32962
  "google/gemini-3-pro-image-preview",
32959
32963
  "google/gemini-3-flash-preview",
32964
+ "google/gemini-3.1-pro-preview",
32960
32965
  "anthropic/claude-sonnet-4-5",
32961
32966
  "anthropic/claude-sonnet-4-6",
32962
32967
  "anthropic/claude-opus-4-5",
@@ -33285,7 +33290,7 @@
33285
33290
  ],
33286
33291
  "additionalProperties": false
33287
33292
  },
33288
- "usageExample": "// Example usage of slack-formatter-agent bubble\nconst slackFormatterAgent = new SlackFormatterAgentBubble({\n message: \"example string\", // The message or question to send to the AI agent,\n verbosity: \"1\" // options: \"1\", \"2\", \"3\", \"4\", \"5\", // Response verbosity level (1-5): 1=concise bullet points, 5=comprehensive explanations,\n technicality: \"1\" // options: \"1\", \"2\", \"3\", \"4\", \"5\", // Technical complexity level (1-5): 1=plain English, 5=expert terminology,\n includeBlockKit: true // default, // Include Slack Block Kit JSON for rich formatting,\n includeQuery: false // default, // Include the query that was executed in the response,\n includeExplanation: false // default, // Include explanation of what the query does and why it was chosen,\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\", \"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: 0.7 // default // Temperature for response randomness (0 = deterministic, 2 = very random), maxTokens: 10000 // default // Maximum number of tokens to generate in response } // structure, // AI model configuration including provider, temperature, and tokens,\n tools: [{ name: \"example string\" // Name of the tool bubble to enable for the AI agent, config: {} // Configuration for the tool bubble }] // example for array, // Array of tool bubbles the AI agent can use,\n maxIterations: 10 // default, // Maximum number of iterations for the agent workflow,\n additionalContext: \"example string\", // Additional context about how to answer the question,\n});\n\nconst result = await slackFormatterAgent.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 formatted response in Slack markdown,\n// blocks: { type: \"section\" | \"header\" | \"divider\" | \"context\" | \"actions\" | \"input\" | \"file\" | \"image\" | \"table\", text: { type: \"plain_text\" | \"mrkdwn\", text: string, emoji: boolean | undefined, verbatim: boolean | undefined } | undefined, block_id: string | undefined, accessory: unknown | undefined, fields: { type: \"plain_text\" | \"mrkdwn\", text: string, emoji: boolean | undefined, verbatim: boolean | undefined }[] | undefined, element: unknown | undefined, label: unknown | undefined, hint: unknown | undefined, optional: boolean | undefined, alt_text: string | undefined, image_url: string | undefined, title: { type: \"plain_text\", text: string, emoji: boolean | undefined } | undefined, elements: { type: \"plain_text\" | \"mrkdwn\", text: string, emoji: boolean | undefined, verbatim: boolean | undefined }[] | undefined }[] | undefined // Slack Block Kit formatted blocks for rich message display,\n// metadata: { verbosityLevel: string // Applied verbosity level, technicalityLevel: string // Applied technicality level, wordCount: number // Total word count of response, blockCount: number | undefined // Number of Slack blocks generated } // Metadata about the formatting,\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 }[] | undefined // Array of tool calls made during the conversation,\n// iterations: number // Number of back-and-forth iterations in the agent workflow,\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);",
33293
+ "usageExample": "// Example usage of slack-formatter-agent bubble\nconst slackFormatterAgent = new SlackFormatterAgentBubble({\n message: \"example string\", // The message or question to send to the AI agent,\n verbosity: \"1\" // options: \"1\", \"2\", \"3\", \"4\", \"5\", // Response verbosity level (1-5): 1=concise bullet points, 5=comprehensive explanations,\n technicality: \"1\" // options: \"1\", \"2\", \"3\", \"4\", \"5\", // Technical complexity level (1-5): 1=plain English, 5=expert terminology,\n includeBlockKit: true // default, // Include Slack Block Kit JSON for rich formatting,\n includeQuery: false // default, // Include the query that was executed in the response,\n includeExplanation: false // default, // Include explanation of what the query does and why it was chosen,\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\", \"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: 0.7 // default // Temperature for response randomness (0 = deterministic, 2 = very random), maxTokens: 10000 // default // Maximum number of tokens to generate in response } // structure, // AI model configuration including provider, temperature, and tokens,\n tools: [{ name: \"example string\" // Name of the tool bubble to enable for the AI agent, config: {} // Configuration for the tool bubble }] // example for array, // Array of tool bubbles the AI agent can use,\n maxIterations: 10 // default, // Maximum number of iterations for the agent workflow,\n additionalContext: \"example string\", // Additional context about how to answer the question,\n});\n\nconst result = await slackFormatterAgent.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 formatted response in Slack markdown,\n// blocks: { type: \"section\" | \"header\" | \"divider\" | \"context\" | \"actions\" | \"input\" | \"file\" | \"image\" | \"table\", text: { type: \"plain_text\" | \"mrkdwn\", text: string, emoji: boolean | undefined, verbatim: boolean | undefined } | undefined, block_id: string | undefined, accessory: unknown | undefined, fields: { type: \"plain_text\" | \"mrkdwn\", text: string, emoji: boolean | undefined, verbatim: boolean | undefined }[] | undefined, element: unknown | undefined, label: unknown | undefined, hint: unknown | undefined, optional: boolean | undefined, alt_text: string | undefined, image_url: string | undefined, title: { type: \"plain_text\", text: string, emoji: boolean | undefined } | undefined, elements: { type: \"plain_text\" | \"mrkdwn\", text: string, emoji: boolean | undefined, verbatim: boolean | undefined }[] | undefined }[] | undefined // Slack Block Kit formatted blocks for rich message display,\n// metadata: { verbosityLevel: string // Applied verbosity level, technicalityLevel: string // Applied technicality level, wordCount: number // Total word count of response, blockCount: number | undefined // Number of Slack blocks generated } // Metadata about the formatting,\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 }[] | undefined // Array of tool calls made during the conversation,\n// iterations: number // Number of back-and-forth iterations in the agent workflow,\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);",
33289
33294
  "requiredCredentials": [
33290
33295
  "OPENAI_CRED",
33291
33296
  "GOOGLE_GEMINI_CRED",
@@ -34074,6 +34079,7 @@
34074
34079
  "google/gemini-3-pro-preview",
34075
34080
  "google/gemini-3-pro-image-preview",
34076
34081
  "google/gemini-3-flash-preview",
34082
+ "google/gemini-3.1-pro-preview",
34077
34083
  "anthropic/claude-sonnet-4-5",
34078
34084
  "anthropic/claude-sonnet-4-6",
34079
34085
  "anthropic/claude-opus-4-5",
@@ -34233,6 +34239,7 @@
34233
34239
  "google/gemini-3-pro-preview",
34234
34240
  "google/gemini-3-pro-image-preview",
34235
34241
  "google/gemini-3-flash-preview",
34242
+ "google/gemini-3.1-pro-preview",
34236
34243
  "anthropic/claude-sonnet-4-5",
34237
34244
  "anthropic/claude-sonnet-4-6",
34238
34245
  "anthropic/claude-opus-4-5",
@@ -34592,7 +34599,7 @@
34592
34599
  }
34593
34600
  ]
34594
34601
  },
34595
- "usageExample": "// Identify example\nconst pdfOcrWorkflow_identify = new PDFOcrWorkflow({\n mode: \"identify\", // Identify form fields and generate descriptive names\n pdfData: \"example string\", // Base64 encoded PDF data\n discoveryOptions: { targetPage: 42 // Extract fields from specific page only (default: all pages) } // structure, // Options for PDF field discovery\n imageOptions: { format: \"png\" // options: \"png\", \"jpeg\" // Output image format, quality: 0.8 // default // JPEG quality (0.1-1.0, only for JPEG format), dpi: 150 // default // Output DPI (dots per inch), pages: [42] // Specific page numbers to convert (1-indexed). If not provided, converts all pages } // structure, // Options for PDF to images conversion\n aiOptions: { 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\", \"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 for field identification, temperature: 0.3 // default // Temperature for AI responses (lower = more consistent), maxTokens: 50000 // default // Maximum tokens for AI response, jsonMode: true // default // Enable JSON mode to ensure clean JSON output } // structure, // AI agent configuration options\n});\n\nconst result = await pdfOcrWorkflow_identify.action();\n// outputSchema for result.data when operation === 'identify':\n// {\n// mode: \"identify\" // Result from identify mode,\n// extractedFields: { id: number // Field ID from discovery or auto-generated, fieldName: string // Descriptive name generated based on PDF content, confidence: number // AI confidence in the field identification (0.0-1.0) }[] // Array of identified fields with descriptive names,\n// discoveryData: { totalFields: number, fieldsWithCoordinates: number, pages: number[] } // Summary of field discovery results,\n// imageData: { totalPages: number, convertedPages: number, format: string, dpi: number } // Summary of image conversion results,\n// aiAnalysis: { model: string, iterations: number, processingTime: number | undefined } // AI analysis metadata,\n// success: boolean // Whether the workflow completed successfully,\n// error: string // Error message if workflow failed\n// }\n\n\n// Autofill example\nconst pdfOcrWorkflow_autofill = new PDFOcrWorkflow({\n mode: \"autofill\", // Identify form fields and autofill with client information\n pdfData: \"example string\", // Base64 encoded PDF data\n clientInformation: \"example string\", // Free text containing client information to use for autofilling form fields\n discoveryOptions: { targetPage: 42 // Extract fields from specific page only (default: all pages) } // structure, // Options for PDF field discovery\n imageOptions: { format: \"png\" // options: \"png\", \"jpeg\" // Output image format, quality: 0.8 // default // JPEG quality (0.1-1.0, only for JPEG format), dpi: 150 // default // Output DPI (dots per inch), pages: [42] // Specific page numbers to convert (1-indexed). If not provided, converts all pages } // structure, // Options for PDF to images conversion\n aiOptions: { 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\", \"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 for field identification and autofill, temperature: 0.3 // default // Temperature for AI responses (lower = more consistent), maxTokens: 50000 // default // Maximum tokens for AI response, jsonMode: true // default // Enable JSON mode to ensure clean JSON output } // structure, // AI agent configuration options\n});\n\nconst result = await pdfOcrWorkflow_autofill.action();\n// outputSchema for result.data when operation === 'autofill':\n// {\n// mode: \"autofill\" // Result from autofill mode,\n// extractedFields: { id: number // Field ID from discovery or auto-generated, originalFieldName: string | undefined // Original field name from discovery for precise matching, fieldName: string // Descriptive name generated based on PDF content, value: string // Value to fill in the field based on client information, confidence: number // AI confidence in the field identification and value assignment (0.0-1.0) }[] // Array of identified fields with values for autofill,\n// filledPdfData: string // Base64 encoded filled PDF data,\n// discoveryData: { totalFields: number, fieldsWithCoordinates: number, pages: number[] } // Summary of field discovery results,\n// imageData: { totalPages: number, convertedPages: number, format: string, dpi: number } // Summary of image conversion results,\n// aiAnalysis: { model: string, iterations: number, processingTime: number | undefined } // AI analysis metadata,\n// fillResults: { filledFields: number, successfullyFilled: number } // Summary of PDF filling results,\n// success: boolean // Whether the workflow completed successfully,\n// error: string // Error message if workflow failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n throw new Error(`pdf-ocr-workflow failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
34602
+ "usageExample": "// Identify example\nconst pdfOcrWorkflow_identify = new PDFOcrWorkflow({\n mode: \"identify\", // Identify form fields and generate descriptive names\n pdfData: \"example string\", // Base64 encoded PDF data\n discoveryOptions: { targetPage: 42 // Extract fields from specific page only (default: all pages) } // structure, // Options for PDF field discovery\n imageOptions: { format: \"png\" // options: \"png\", \"jpeg\" // Output image format, quality: 0.8 // default // JPEG quality (0.1-1.0, only for JPEG format), dpi: 150 // default // Output DPI (dots per inch), pages: [42] // Specific page numbers to convert (1-indexed). If not provided, converts all pages } // structure, // Options for PDF to images conversion\n aiOptions: { 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\", \"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 for field identification, temperature: 0.3 // default // Temperature for AI responses (lower = more consistent), maxTokens: 50000 // default // Maximum tokens for AI response, jsonMode: true // default // Enable JSON mode to ensure clean JSON output } // structure, // AI agent configuration options\n});\n\nconst result = await pdfOcrWorkflow_identify.action();\n// outputSchema for result.data when operation === 'identify':\n// {\n// mode: \"identify\" // Result from identify mode,\n// extractedFields: { id: number // Field ID from discovery or auto-generated, fieldName: string // Descriptive name generated based on PDF content, confidence: number // AI confidence in the field identification (0.0-1.0) }[] // Array of identified fields with descriptive names,\n// discoveryData: { totalFields: number, fieldsWithCoordinates: number, pages: number[] } // Summary of field discovery results,\n// imageData: { totalPages: number, convertedPages: number, format: string, dpi: number } // Summary of image conversion results,\n// aiAnalysis: { model: string, iterations: number, processingTime: number | undefined } // AI analysis metadata,\n// success: boolean // Whether the workflow completed successfully,\n// error: string // Error message if workflow failed\n// }\n\n\n// Autofill example\nconst pdfOcrWorkflow_autofill = new PDFOcrWorkflow({\n mode: \"autofill\", // Identify form fields and autofill with client information\n pdfData: \"example string\", // Base64 encoded PDF data\n clientInformation: \"example string\", // Free text containing client information to use for autofilling form fields\n discoveryOptions: { targetPage: 42 // Extract fields from specific page only (default: all pages) } // structure, // Options for PDF field discovery\n imageOptions: { format: \"png\" // options: \"png\", \"jpeg\" // Output image format, quality: 0.8 // default // JPEG quality (0.1-1.0, only for JPEG format), dpi: 150 // default // Output DPI (dots per inch), pages: [42] // Specific page numbers to convert (1-indexed). If not provided, converts all pages } // structure, // Options for PDF to images conversion\n aiOptions: { 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\", \"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 for field identification and autofill, temperature: 0.3 // default // Temperature for AI responses (lower = more consistent), maxTokens: 50000 // default // Maximum tokens for AI response, jsonMode: true // default // Enable JSON mode to ensure clean JSON output } // structure, // AI agent configuration options\n});\n\nconst result = await pdfOcrWorkflow_autofill.action();\n// outputSchema for result.data when operation === 'autofill':\n// {\n// mode: \"autofill\" // Result from autofill mode,\n// extractedFields: { id: number // Field ID from discovery or auto-generated, originalFieldName: string | undefined // Original field name from discovery for precise matching, fieldName: string // Descriptive name generated based on PDF content, value: string // Value to fill in the field based on client information, confidence: number // AI confidence in the field identification and value assignment (0.0-1.0) }[] // Array of identified fields with values for autofill,\n// filledPdfData: string // Base64 encoded filled PDF data,\n// discoveryData: { totalFields: number, fieldsWithCoordinates: number, pages: number[] } // Summary of field discovery results,\n// imageData: { totalPages: number, convertedPages: number, format: string, dpi: number } // Summary of image conversion results,\n// aiAnalysis: { model: string, iterations: number, processingTime: number | undefined } // AI analysis metadata,\n// fillResults: { filledFields: number, successfullyFilled: number } // Summary of PDF filling results,\n// success: boolean // Whether the workflow completed successfully,\n// error: string // Error message if workflow failed\n// }\n\n\n// Always check success status before using data\nif (!result.success) {\n throw new Error(`pdf-ocr-workflow failed: ${result.error}`);\n}\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
34596
34603
  "requiredCredentials": [
34597
34604
  "GOOGLE_GEMINI_CRED",
34598
34605
  "OPENAI_CRED",
@@ -34699,6 +34706,7 @@
34699
34706
  "google/gemini-3-pro-preview",
34700
34707
  "google/gemini-3-pro-image-preview",
34701
34708
  "google/gemini-3-flash-preview",
34709
+ "google/gemini-3.1-pro-preview",
34702
34710
  "anthropic/claude-sonnet-4-5",
34703
34711
  "anthropic/claude-sonnet-4-6",
34704
34712
  "anthropic/claude-opus-4-5",
@@ -34926,7 +34934,7 @@
34926
34934
  ],
34927
34935
  "additionalProperties": false
34928
34936
  },
34929
- "usageExample": "// Example usage of generate-document-workflow bubble\nconst generateDocumentWorkflow = new GenerateDocumentWorkflow({\n documents: [{ content: \"example string\", index: 42, metadata: { originalFilename: \"example string\", pageCount: 42, uploadedImages: [{ pageNumber: 42, fileName: \"example string\", fileUrl: \"example string\" }] } }], // Array of document objects with content, index, and metadata,\n outputDescription: \"example string\", // Description of what the user wants to extract (e.g., \"expense tracking with vendor, amount, date, category\"),\n outputFormat: \"html\" // options: \"html\", \"csv\", \"json\", // Output format for the structured data,\n aiOptions: { 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\", \"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 for document analysis, temperature: 0.1 // default // Temperature for AI responses (lower = more consistent), maxTokens: 50000 // default // Maximum tokens for AI response, jsonMode: true // default // Enable JSON mode to ensure clean JSON output } // structure, // AI agent configuration options,\n});\n\nconst result = await generateDocumentWorkflow.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// columns: { name: string // Column name, type: \"string\" | \"number\" | \"integer\" | \"float\" | \"date\" | \"boolean\" // Data type of the column, description: string // Description of what this column contains }[] // Column definitions for the structured data,\n// rows: Record<string, unknown>[] // Array of data rows extracted from documents,\n// metadata: { totalDocuments: number // Number of documents processed, totalRows: number // Number of data rows extracted, totalColumns: number // Number of columns in the result, processingTime: number // Processing time in milliseconds, extractedFrom: string[] // Summary of document sources } // Metadata about the extraction process,\n// generatedFiles: { html: string | undefined // Generated HTML table, csv: string | undefined // Generated CSV data, json: string | undefined // Generated JSON data } // Generated files in requested formats,\n// aiAnalysis: { model: string // AI model used, iterations: number // Number of AI iterations, processingTime: number | undefined // AI processing time } // AI analysis metadata,\n// success: boolean // Whether the workflow completed successfully,\n// error: string // Error message if workflow failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
34937
+ "usageExample": "// Example usage of generate-document-workflow bubble\nconst generateDocumentWorkflow = new GenerateDocumentWorkflow({\n documents: [{ content: \"example string\", index: 42, metadata: { originalFilename: \"example string\", pageCount: 42, uploadedImages: [{ pageNumber: 42, fileName: \"example string\", fileUrl: \"example string\" }] } }], // Array of document objects with content, index, and metadata,\n outputDescription: \"example string\", // Description of what the user wants to extract (e.g., \"expense tracking with vendor, amount, date, category\"),\n outputFormat: \"html\" // options: \"html\", \"csv\", \"json\", // Output format for the structured data,\n aiOptions: { 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\", \"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 for document analysis, temperature: 0.1 // default // Temperature for AI responses (lower = more consistent), maxTokens: 50000 // default // Maximum tokens for AI response, jsonMode: true // default // Enable JSON mode to ensure clean JSON output } // structure, // AI agent configuration options,\n});\n\nconst result = await generateDocumentWorkflow.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// columns: { name: string // Column name, type: \"string\" | \"number\" | \"integer\" | \"float\" | \"date\" | \"boolean\" // Data type of the column, description: string // Description of what this column contains }[] // Column definitions for the structured data,\n// rows: Record<string, unknown>[] // Array of data rows extracted from documents,\n// metadata: { totalDocuments: number // Number of documents processed, totalRows: number // Number of data rows extracted, totalColumns: number // Number of columns in the result, processingTime: number // Processing time in milliseconds, extractedFrom: string[] // Summary of document sources } // Metadata about the extraction process,\n// generatedFiles: { html: string | undefined // Generated HTML table, csv: string | undefined // Generated CSV data, json: string | undefined // Generated JSON data } // Generated files in requested formats,\n// aiAnalysis: { model: string // AI model used, iterations: number // Number of AI iterations, processingTime: number | undefined // AI processing time } // AI analysis metadata,\n// success: boolean // Whether the workflow completed successfully,\n// error: string // Error message if workflow failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
34930
34938
  "requiredCredentials": [
34931
34939
  "GOOGLE_GEMINI_CRED",
34932
34940
  "OPENAI_CRED",
@@ -35057,6 +35065,7 @@
35057
35065
  "google/gemini-3-pro-preview",
35058
35066
  "google/gemini-3-pro-image-preview",
35059
35067
  "google/gemini-3-flash-preview",
35068
+ "google/gemini-3.1-pro-preview",
35060
35069
  "anthropic/claude-sonnet-4-5",
35061
35070
  "anthropic/claude-sonnet-4-6",
35062
35071
  "anthropic/claude-opus-4-5",
@@ -35347,7 +35356,7 @@
35347
35356
  ],
35348
35357
  "additionalProperties": false
35349
35358
  },
35350
- "usageExample": "// Example usage of parse-document-workflow bubble\nconst parseDocumentWorkflow = new ParseDocumentWorkflow({\n documentData: \"example string\", // Base64 encoded document data (PDF or image) OR R2 file URL starting with https://,\n documentType: \"pdf\" // options: \"pdf\", \"image\", // Type of document being processed,\n isFileUrl: false // default, // Set to true if documentData is an R2 file URL instead of base64,\n conversionOptions: { preserveStructure: true // default // Maintain original document structure and hierarchy, includeVisualDescriptions: true // default // Include detailed descriptions of charts, images, and diagrams, extractNumericalData: true // default // Extract specific numerical values from charts and tables, combinePages: false // default // Deprecated: Pages are always kept separate with clear headers } // structure, // Options for document conversion and parsing,\n imageOptions: { format: \"png\" // options: \"png\", \"jpeg\" // Output image format for PDF conversion, quality: 0.9 // default // Image quality (0.1-1.0, higher = better quality), dpi: 200 // default // Output DPI for PDF conversion (higher = better quality), pages: [42] // Specific page numbers to process (1-indexed) } // structure, // Options for PDF to images conversion,\n aiOptions: { 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\", \"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 for document analysis and conversion, temperature: 0.4 // default // Temperature for AI responses (balanced for accuracy vs recitation), maxTokens: 2000 // default // Maximum tokens for AI response, jsonMode: false // default // Use JSON mode for structured output } // structure, // AI agent configuration options,\n storageOptions: { uploadImages: false // default // Whether to upload converted page images to S3, bucketName: \"example string\" // S3 bucket name for image uploads, pageImageUrls: [{ pageNumber: 42, uploadUrl: \"example string\", fileName: \"example string\" }] // Pre-generated upload URLs for page images, userId: \"example string\" // User ID for secure file isolation }, // Storage options for uploading page images,\n});\n\nconst result = await parseDocumentWorkflow.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// markdown: string // Generated markdown content from the document,\n// pages: { pageNumber: number // Page number (1-indexed), markdown: string // Markdown content for this page, hasCharts: boolean // Whether this page contains charts or graphs, hasTables: boolean // Whether this page contains tables, hasImages: boolean // Whether this page contains images }[] // Per-page analysis results,\n// metadata: { totalPages: number // Total number of pages processed, processedPages: number // Number of pages successfully processed, hasVisualElements: boolean // Whether document contains charts, tables, or images, processingTime: number // Total processing time in milliseconds, imageFormat: string // Image format used for conversion, imageDpi: number // DPI used for image conversion } // Metadata about the parsing process,\n// conversionSummary: { totalCharacters: number // Total characters in generated markdown, tablesExtracted: number // Number of tables converted to markdown, chartsDescribed: number // Number of charts and graphs described, imagesDescribed: number // Number of images described } // Summary of conversion results,\n// aiAnalysis: { model: string // AI model used for analysis, iterations: number // Number of AI iterations, processingTime: number // AI processing time in milliseconds } // AI analysis metadata,\n// uploadedImages: { pageNumber: number, fileName: string, fileUrl: string | undefined, uploaded: boolean }[] | undefined // Information about uploaded page images,\n// success: boolean // Whether the workflow completed successfully,\n// error: string // Error message if workflow failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
35359
+ "usageExample": "// Example usage of parse-document-workflow bubble\nconst parseDocumentWorkflow = new ParseDocumentWorkflow({\n documentData: \"example string\", // Base64 encoded document data (PDF or image) OR R2 file URL starting with https://,\n documentType: \"pdf\" // options: \"pdf\", \"image\", // Type of document being processed,\n isFileUrl: false // default, // Set to true if documentData is an R2 file URL instead of base64,\n conversionOptions: { preserveStructure: true // default // Maintain original document structure and hierarchy, includeVisualDescriptions: true // default // Include detailed descriptions of charts, images, and diagrams, extractNumericalData: true // default // Extract specific numerical values from charts and tables, combinePages: false // default // Deprecated: Pages are always kept separate with clear headers } // structure, // Options for document conversion and parsing,\n imageOptions: { format: \"png\" // options: \"png\", \"jpeg\" // Output image format for PDF conversion, quality: 0.9 // default // Image quality (0.1-1.0, higher = better quality), dpi: 200 // default // Output DPI for PDF conversion (higher = better quality), pages: [42] // Specific page numbers to process (1-indexed) } // structure, // Options for PDF to images conversion,\n aiOptions: { 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\", \"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 for document analysis and conversion, temperature: 0.4 // default // Temperature for AI responses (balanced for accuracy vs recitation), maxTokens: 2000 // default // Maximum tokens for AI response, jsonMode: false // default // Use JSON mode for structured output } // structure, // AI agent configuration options,\n storageOptions: { uploadImages: false // default // Whether to upload converted page images to S3, bucketName: \"example string\" // S3 bucket name for image uploads, pageImageUrls: [{ pageNumber: 42, uploadUrl: \"example string\", fileName: \"example string\" }] // Pre-generated upload URLs for page images, userId: \"example string\" // User ID for secure file isolation }, // Storage options for uploading page images,\n});\n\nconst result = await parseDocumentWorkflow.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// markdown: string // Generated markdown content from the document,\n// pages: { pageNumber: number // Page number (1-indexed), markdown: string // Markdown content for this page, hasCharts: boolean // Whether this page contains charts or graphs, hasTables: boolean // Whether this page contains tables, hasImages: boolean // Whether this page contains images }[] // Per-page analysis results,\n// metadata: { totalPages: number // Total number of pages processed, processedPages: number // Number of pages successfully processed, hasVisualElements: boolean // Whether document contains charts, tables, or images, processingTime: number // Total processing time in milliseconds, imageFormat: string // Image format used for conversion, imageDpi: number // DPI used for image conversion } // Metadata about the parsing process,\n// conversionSummary: { totalCharacters: number // Total characters in generated markdown, tablesExtracted: number // Number of tables converted to markdown, chartsDescribed: number // Number of charts and graphs described, imagesDescribed: number // Number of images described } // Summary of conversion results,\n// aiAnalysis: { model: string // AI model used for analysis, iterations: number // Number of AI iterations, processingTime: number // AI processing time in milliseconds } // AI analysis metadata,\n// uploadedImages: { pageNumber: number, fileName: string, fileUrl: string | undefined, uploaded: boolean }[] | undefined // Information about uploaded page images,\n// success: boolean // Whether the workflow completed successfully,\n// error: string // Error message if workflow failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
35351
35360
  "requiredCredentials": [
35352
35361
  "GOOGLE_GEMINI_CRED",
35353
35362
  "OPENAI_CRED",
@@ -36756,6 +36765,7 @@
36756
36765
  "google/gemini-3-pro-preview",
36757
36766
  "google/gemini-3-pro-image-preview",
36758
36767
  "google/gemini-3-flash-preview",
36768
+ "google/gemini-3.1-pro-preview",
36759
36769
  "anthropic/claude-sonnet-4-5",
36760
36770
  "anthropic/claude-sonnet-4-6",
36761
36771
  "anthropic/claude-opus-4-5",
@@ -36843,7 +36853,7 @@
36843
36853
  ],
36844
36854
  "additionalProperties": false
36845
36855
  },
36846
- "usageExample": "// Example usage of research-agent-tool bubble\nconst researchAgentTool = new ResearchAgentTool({\n task: \"example string\", // The research task that requires searching the internet and gathering information,\n expectedResultSchema: \"example string\", // Zod schema that defines the expected structure of the research result. Example: z.object({ trends: z.array(z.string()).describe(\"An array of trends\"), summary: z.string().describe(\"A summary of the trends\") }),\n 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\", \"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\", // Model to use for the research agent (default: google/gemini-3-pro-preview),\n maxTokens: 40000 // default, // Maximum number of tokens for the research agent (default: 40000),\n maxIterations: 400 // default, // Maximum number of iterations for the research agent (default: 100),\n});\n\nconst result = await researchAgentTool.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// result: unknown // The research result matching the expected JSON schema structure, parsed to object,\n// summary: string // 1-2 sentence summary of what research was conducted and completed,\n// sourcesUsed: string[] // Array of URLs and sources that were searched and scraped during research,\n// iterationsUsed: number // Number of AI agent iterations used to complete the research,\n// success: boolean // Whether the research task was completed successfully,\n// error: string // Error message if research failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
36856
+ "usageExample": "// Example usage of research-agent-tool bubble\nconst researchAgentTool = new ResearchAgentTool({\n task: \"example string\", // The research task that requires searching the internet and gathering information,\n expectedResultSchema: \"example string\", // Zod schema that defines the expected structure of the research result. Example: z.object({ trends: z.array(z.string()).describe(\"An array of trends\"), summary: z.string().describe(\"A summary of the trends\") }),\n 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\", \"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\", // Model to use for the research agent (default: google/gemini-3-pro-preview),\n maxTokens: 40000 // default, // Maximum number of tokens for the research agent (default: 40000),\n maxIterations: 400 // default, // Maximum number of iterations for the research agent (default: 100),\n});\n\nconst result = await researchAgentTool.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// result: unknown // The research result matching the expected JSON schema structure, parsed to object,\n// summary: string // 1-2 sentence summary of what research was conducted and completed,\n// sourcesUsed: string[] // Array of URLs and sources that were searched and scraped during research,\n// iterationsUsed: number // Number of AI agent iterations used to complete the research,\n// success: boolean // Whether the research task was completed successfully,\n// error: string // Error message if research failed\n// }\n\n// Access the actual data\nconst actualData = result.data;\nconsole.log(actualData);",
36847
36857
  "requiredCredentials": [
36848
36858
  "FIRECRAWL_API_KEY",
36849
36859
  "GOOGLE_GEMINI_CRED",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bubblelab/bubble-core",
3
- "version": "0.1.195",
3
+ "version": "0.1.197",
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.195"
44
+ "@bubblelab/shared-schemas": "0.1.197"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@types/node": "^20.12.12",