@bubblelab/bubble-core 0.1.11 → 0.1.13

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 (143) hide show
  1. package/dist/bubble-bundle.d.ts +183 -117
  2. package/dist/bubble-factory.d.ts +2 -3
  3. package/dist/bubble-factory.d.ts.map +1 -1
  4. package/dist/bubble-factory.js +28 -96
  5. package/dist/bubble-factory.js.map +1 -1
  6. package/dist/bubbles/service-bubble/ai-agent.d.ts +14 -14
  7. package/dist/bubbles/service-bubble/ai-agent.d.ts.map +1 -1
  8. package/dist/bubbles/service-bubble/ai-agent.js +3 -6
  9. package/dist/bubbles/service-bubble/ai-agent.js.map +1 -1
  10. package/dist/bubbles/service-bubble/apify/apify.d.ts +5 -5
  11. package/dist/bubbles/service-bubble/apify/apify.d.ts.map +1 -1
  12. package/dist/bubbles/service-bubble/apify/apify.js +20 -8
  13. package/dist/bubbles/service-bubble/apify/apify.js.map +1 -1
  14. package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts +542 -0
  15. package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts.map +1 -0
  16. package/dist/bubbles/service-bubble/browserbase/browserbase.integration.flow.d.ts +37 -0
  17. package/dist/bubbles/service-bubble/browserbase/browserbase.integration.flow.d.ts.map +1 -0
  18. package/dist/bubbles/service-bubble/browserbase/browserbase.integration.flow.js +203 -0
  19. package/dist/bubbles/service-bubble/browserbase/browserbase.integration.flow.js.map +1 -0
  20. package/dist/bubbles/service-bubble/browserbase/browserbase.js +593 -0
  21. package/dist/bubbles/service-bubble/browserbase/browserbase.js.map +1 -0
  22. package/dist/bubbles/service-bubble/browserbase/browserbase.schema.d.ts +518 -0
  23. package/dist/bubbles/service-bubble/browserbase/browserbase.schema.d.ts.map +1 -0
  24. package/dist/bubbles/service-bubble/browserbase/browserbase.schema.js +311 -0
  25. package/dist/bubbles/service-bubble/browserbase/browserbase.schema.js.map +1 -0
  26. package/dist/bubbles/service-bubble/browserbase/index.d.ts +3 -0
  27. package/dist/bubbles/service-bubble/browserbase/index.d.ts.map +1 -0
  28. package/dist/bubbles/service-bubble/browserbase/index.js +3 -0
  29. package/dist/bubbles/service-bubble/browserbase/index.js.map +1 -0
  30. package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts +1358 -0
  31. package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts.map +1 -0
  32. package/dist/bubbles/service-bubble/crustdata/crustdata.js +219 -0
  33. package/dist/bubbles/service-bubble/crustdata/crustdata.js.map +1 -0
  34. package/dist/bubbles/service-bubble/crustdata/crustdata.schema.d.ts +1604 -0
  35. package/dist/bubbles/service-bubble/crustdata/crustdata.schema.d.ts.map +1 -0
  36. package/dist/bubbles/service-bubble/crustdata/crustdata.schema.js +194 -0
  37. package/dist/bubbles/service-bubble/crustdata/crustdata.schema.js.map +1 -0
  38. package/dist/bubbles/service-bubble/crustdata/index.d.ts +3 -0
  39. package/dist/bubbles/service-bubble/crustdata/index.d.ts.map +1 -0
  40. package/dist/bubbles/service-bubble/crustdata/index.js +3 -0
  41. package/dist/bubbles/service-bubble/crustdata/index.js.map +1 -0
  42. package/dist/bubbles/service-bubble/firecrawl.d.ts +4 -4
  43. package/dist/bubbles/service-bubble/firecrawl.js +1 -1
  44. package/dist/bubbles/service-bubble/firecrawl.js.map +1 -1
  45. package/dist/bubbles/service-bubble/github.d.ts +0 -6
  46. package/dist/bubbles/service-bubble/github.d.ts.map +1 -1
  47. package/dist/bubbles/service-bubble/github.js +1 -7
  48. package/dist/bubbles/service-bubble/github.js.map +1 -1
  49. package/dist/bubbles/service-bubble/gmail.d.ts +84 -84
  50. package/dist/bubbles/service-bubble/google-drive.d.ts +32 -32
  51. package/dist/bubbles/service-bubble/http.d.ts +13 -1
  52. package/dist/bubbles/service-bubble/http.d.ts.map +1 -1
  53. package/dist/bubbles/service-bubble/http.integration.flow.d.ts +49 -0
  54. package/dist/bubbles/service-bubble/http.integration.flow.d.ts.map +1 -0
  55. package/dist/bubbles/service-bubble/http.integration.flow.js +425 -0
  56. package/dist/bubbles/service-bubble/http.integration.flow.js.map +1 -0
  57. package/dist/bubbles/service-bubble/http.js +40 -4
  58. package/dist/bubbles/service-bubble/http.js.map +1 -1
  59. package/dist/bubbles/service-bubble/resend.d.ts +4 -4
  60. package/dist/bubbles/service-bubble/slack.d.ts +978 -35
  61. package/dist/bubbles/service-bubble/slack.d.ts.map +1 -1
  62. package/dist/bubbles/service-bubble/slack.js +320 -26
  63. package/dist/bubbles/service-bubble/slack.js.map +1 -1
  64. package/dist/bubbles/service-bubble/storage.d.ts +1 -1
  65. package/dist/bubbles/service-bubble/storage.d.ts.map +1 -1
  66. package/dist/bubbles/service-bubble/storage.js +2 -2
  67. package/dist/bubbles/service-bubble/storage.js.map +1 -1
  68. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.d.ts +494 -0
  69. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.d.ts.map +1 -0
  70. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.integration.flow.d.ts +31 -0
  71. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.integration.flow.d.ts.map +1 -0
  72. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.integration.flow.js +100 -0
  73. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.integration.flow.js.map +1 -0
  74. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.js +1301 -0
  75. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.js.map +1 -0
  76. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.schema.d.ts +473 -0
  77. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.schema.d.ts.map +1 -0
  78. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.schema.js +230 -0
  79. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.schema.js.map +1 -0
  80. package/dist/bubbles/tool-bubble/amazon-shopping-tool/index.d.ts +3 -0
  81. package/dist/bubbles/tool-bubble/amazon-shopping-tool/index.d.ts.map +1 -0
  82. package/dist/bubbles/tool-bubble/amazon-shopping-tool/index.js +3 -0
  83. package/dist/bubbles/tool-bubble/amazon-shopping-tool/index.js.map +1 -0
  84. package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +8 -8
  85. package/dist/bubbles/tool-bubble/company-enrichment-tool.d.ts +740 -0
  86. package/dist/bubbles/tool-bubble/company-enrichment-tool.d.ts.map +1 -0
  87. package/dist/bubbles/tool-bubble/company-enrichment-tool.js +350 -0
  88. package/dist/bubbles/tool-bubble/company-enrichment-tool.js.map +1 -0
  89. package/dist/bubbles/tool-bubble/get-trigger-detail-tool.d.ts +146 -0
  90. package/dist/bubbles/tool-bubble/get-trigger-detail-tool.d.ts.map +1 -0
  91. package/dist/bubbles/tool-bubble/get-trigger-detail-tool.js +128 -0
  92. package/dist/bubbles/tool-bubble/get-trigger-detail-tool.js.map +1 -0
  93. package/dist/bubbles/tool-bubble/google-maps-tool.d.ts.map +1 -1
  94. package/dist/bubbles/tool-bubble/google-maps-tool.js +1 -0
  95. package/dist/bubbles/tool-bubble/google-maps-tool.js.map +1 -1
  96. package/dist/bubbles/tool-bubble/instagram-tool.d.ts.map +1 -1
  97. package/dist/bubbles/tool-bubble/instagram-tool.js +2 -0
  98. package/dist/bubbles/tool-bubble/instagram-tool.js.map +1 -1
  99. package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +6 -6
  100. package/dist/bubbles/tool-bubble/linkedin-tool.d.ts.map +1 -1
  101. package/dist/bubbles/tool-bubble/linkedin-tool.js +6 -4
  102. package/dist/bubbles/tool-bubble/linkedin-tool.js.map +1 -1
  103. package/dist/bubbles/tool-bubble/research-agent-tool.d.ts.map +1 -1
  104. package/dist/bubbles/tool-bubble/research-agent-tool.js +6 -1
  105. package/dist/bubbles/tool-bubble/research-agent-tool.js.map +1 -1
  106. package/dist/bubbles/tool-bubble/tiktok-tool.d.ts +8 -8
  107. package/dist/bubbles/tool-bubble/twitter-tool.d.ts +10 -10
  108. package/dist/bubbles/tool-bubble/twitter-tool.d.ts.map +1 -1
  109. package/dist/bubbles/tool-bubble/twitter-tool.js +3 -0
  110. package/dist/bubbles/tool-bubble/twitter-tool.js.map +1 -1
  111. package/dist/bubbles/tool-bubble/web-scrape-tool.d.ts +6 -6
  112. package/dist/bubbles/tool-bubble/web-scrape-tool.d.ts.map +1 -1
  113. package/dist/bubbles/tool-bubble/web-scrape-tool.js +4 -1
  114. package/dist/bubbles/tool-bubble/web-scrape-tool.js.map +1 -1
  115. package/dist/bubbles/tool-bubble/youtube-tool.d.ts.map +1 -1
  116. package/dist/bubbles/tool-bubble/youtube-tool.js +3 -0
  117. package/dist/bubbles/tool-bubble/youtube-tool.js.map +1 -1
  118. package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +24 -24
  119. package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +8 -8
  120. package/dist/bubbles.json +64 -15
  121. package/dist/index.d.ts +3 -0
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/index.js +3 -0
  124. package/dist/index.js.map +1 -1
  125. package/dist/logging/BubbleLogger.d.ts +10 -0
  126. package/dist/logging/BubbleLogger.d.ts.map +1 -1
  127. package/dist/logging/BubbleLogger.js +14 -0
  128. package/dist/logging/BubbleLogger.js.map +1 -1
  129. package/dist/logging/StreamingBubbleLogger.d.ts +8 -0
  130. package/dist/logging/StreamingBubbleLogger.d.ts.map +1 -1
  131. package/dist/logging/StreamingBubbleLogger.js +29 -0
  132. package/dist/logging/StreamingBubbleLogger.js.map +1 -1
  133. package/dist/types/available-tools.d.ts +1 -1
  134. package/dist/types/available-tools.d.ts.map +1 -1
  135. package/dist/types/available-tools.js +7 -0
  136. package/dist/types/available-tools.js.map +1 -1
  137. package/dist/types/base-bubble-class.d.ts.map +1 -1
  138. package/dist/types/base-bubble-class.js +0 -8
  139. package/dist/types/base-bubble-class.js.map +1 -1
  140. package/dist/types/tool-bubble-class.d.ts.map +1 -1
  141. package/dist/types/tool-bubble-class.js +58 -8
  142. package/dist/types/tool-bubble-class.js.map +1 -1
  143. package/package.json +3 -2
@@ -0,0 +1,542 @@
1
+ import { type Browser, type Page } from 'puppeteer-core';
2
+ import { ServiceBubble } from '../../../types/service-bubble-class.js';
3
+ import type { BubbleContext } from '../../../types/bubble.js';
4
+ import { CredentialType } from '@bubblelab/shared-schemas';
5
+ import { type BrowserBaseParamsInput, type BrowserBaseResult } from './browserbase.schema.js';
6
+ /**
7
+ * Active browser session stored in memory
8
+ */
9
+ interface ActiveSession {
10
+ sessionId: string;
11
+ contextId: string;
12
+ browser: Browser;
13
+ page: Page;
14
+ connectUrl: string;
15
+ }
16
+ /**
17
+ * BrowserBase Service Bubble
18
+ *
19
+ * Provides browser automation capabilities using BrowserBase cloud browsers.
20
+ * Supports session management, navigation, clicking, typing, JavaScript
21
+ * execution, content extraction, screenshots, and cookie management.
22
+ *
23
+ * Features:
24
+ * - Cloud-based browser sessions (BrowserBase)
25
+ * - Session persistence via context IDs
26
+ * - Cookie injection for authenticated sessions
27
+ * - Full page automation (click, type, evaluate)
28
+ * - Screenshot and content extraction
29
+ *
30
+ * Use cases:
31
+ * - Automated shopping workflows (Amazon, etc.)
32
+ * - Web scraping with authentication
33
+ * - Form automation and submission
34
+ * - Browser-based testing
35
+ *
36
+ * Security Features:
37
+ * - Sessions are isolated in BrowserBase cloud
38
+ * - Credentials are handled securely
39
+ * - Sessions are properly closed and cleaned up
40
+ */
41
+ export declare class BrowserBaseBubble<T extends BrowserBaseParamsInput = BrowserBaseParamsInput> extends ServiceBubble<T, Extract<BrowserBaseResult, {
42
+ operation: T['operation'];
43
+ }>> {
44
+ static readonly type: "service";
45
+ static readonly service = "browserbase";
46
+ static readonly authType: "apikey";
47
+ static readonly bubbleName = "browserbase";
48
+ static readonly schema: import("zod").ZodDiscriminatedUnion<"operation", [import("zod").ZodObject<{
49
+ operation: import("zod").ZodLiteral<"start_session">;
50
+ context_id: import("zod").ZodOptional<import("zod").ZodString>;
51
+ cookies: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
52
+ name: import("zod").ZodString;
53
+ value: import("zod").ZodString;
54
+ domain: import("zod").ZodString;
55
+ path: import("zod").ZodString;
56
+ expires: import("zod").ZodNumber;
57
+ httpOnly: import("zod").ZodBoolean;
58
+ secure: import("zod").ZodBoolean;
59
+ }, "strip", import("zod").ZodTypeAny, {
60
+ value: string;
61
+ path: string;
62
+ name: string;
63
+ domain: string;
64
+ expires: number;
65
+ httpOnly: boolean;
66
+ secure: boolean;
67
+ }, {
68
+ value: string;
69
+ path: string;
70
+ name: string;
71
+ domain: string;
72
+ expires: number;
73
+ httpOnly: boolean;
74
+ secure: boolean;
75
+ }>, "many">>;
76
+ viewport_width: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNumber>>;
77
+ viewport_height: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNumber>>;
78
+ credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
79
+ }, "strip", import("zod").ZodTypeAny, {
80
+ operation: "start_session";
81
+ viewport_width: number;
82
+ viewport_height: number;
83
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
84
+ cookies?: {
85
+ value: string;
86
+ path: string;
87
+ name: string;
88
+ domain: string;
89
+ expires: number;
90
+ httpOnly: boolean;
91
+ secure: boolean;
92
+ }[] | undefined;
93
+ context_id?: string | undefined;
94
+ }, {
95
+ operation: "start_session";
96
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
97
+ cookies?: {
98
+ value: string;
99
+ path: string;
100
+ name: string;
101
+ domain: string;
102
+ expires: number;
103
+ httpOnly: boolean;
104
+ secure: boolean;
105
+ }[] | undefined;
106
+ context_id?: string | undefined;
107
+ viewport_width?: number | undefined;
108
+ viewport_height?: number | undefined;
109
+ }>, import("zod").ZodObject<{
110
+ operation: import("zod").ZodLiteral<"navigate">;
111
+ session_id: import("zod").ZodString;
112
+ url: import("zod").ZodString;
113
+ wait_until: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodEnum<["load", "domcontentloaded", "networkidle0", "networkidle2"]>>>;
114
+ timeout: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNumber>>;
115
+ credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
116
+ }, "strip", import("zod").ZodTypeAny, {
117
+ url: string;
118
+ timeout: number;
119
+ operation: "navigate";
120
+ session_id: string;
121
+ wait_until: "load" | "domcontentloaded" | "networkidle0" | "networkidle2";
122
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
123
+ }, {
124
+ url: string;
125
+ operation: "navigate";
126
+ session_id: string;
127
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
128
+ timeout?: number | undefined;
129
+ wait_until?: "load" | "domcontentloaded" | "networkidle0" | "networkidle2" | undefined;
130
+ }>, import("zod").ZodObject<{
131
+ operation: import("zod").ZodLiteral<"click">;
132
+ session_id: import("zod").ZodString;
133
+ selector: import("zod").ZodString;
134
+ wait_for_navigation: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>;
135
+ timeout: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNumber>>;
136
+ credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
137
+ }, "strip", import("zod").ZodTypeAny, {
138
+ timeout: number;
139
+ operation: "click";
140
+ session_id: string;
141
+ selector: string;
142
+ wait_for_navigation: boolean;
143
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
144
+ }, {
145
+ operation: "click";
146
+ session_id: string;
147
+ selector: string;
148
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
149
+ timeout?: number | undefined;
150
+ wait_for_navigation?: boolean | undefined;
151
+ }>, import("zod").ZodObject<{
152
+ operation: import("zod").ZodLiteral<"type">;
153
+ session_id: import("zod").ZodString;
154
+ selector: import("zod").ZodString;
155
+ text: import("zod").ZodString;
156
+ clear_first: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>;
157
+ delay: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNumber>>;
158
+ credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
159
+ }, "strip", import("zod").ZodTypeAny, {
160
+ text: string;
161
+ operation: "type";
162
+ session_id: string;
163
+ selector: string;
164
+ delay: number;
165
+ clear_first: boolean;
166
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
167
+ }, {
168
+ text: string;
169
+ operation: "type";
170
+ session_id: string;
171
+ selector: string;
172
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
173
+ delay?: number | undefined;
174
+ clear_first?: boolean | undefined;
175
+ }>, import("zod").ZodObject<{
176
+ operation: import("zod").ZodLiteral<"evaluate">;
177
+ session_id: import("zod").ZodString;
178
+ script: import("zod").ZodString;
179
+ credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
180
+ }, "strip", import("zod").ZodTypeAny, {
181
+ script: string;
182
+ operation: "evaluate";
183
+ session_id: string;
184
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
185
+ }, {
186
+ script: string;
187
+ operation: "evaluate";
188
+ session_id: string;
189
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
190
+ }>, import("zod").ZodObject<{
191
+ operation: import("zod").ZodLiteral<"get_content">;
192
+ session_id: import("zod").ZodString;
193
+ selector: import("zod").ZodOptional<import("zod").ZodString>;
194
+ content_type: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodEnum<["html", "text", "outer_html"]>>>;
195
+ credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
196
+ }, "strip", import("zod").ZodTypeAny, {
197
+ operation: "get_content";
198
+ content_type: "text" | "html" | "outer_html";
199
+ session_id: string;
200
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
201
+ selector?: string | undefined;
202
+ }, {
203
+ operation: "get_content";
204
+ session_id: string;
205
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
206
+ content_type?: "text" | "html" | "outer_html" | undefined;
207
+ selector?: string | undefined;
208
+ }>, import("zod").ZodObject<{
209
+ operation: import("zod").ZodLiteral<"screenshot">;
210
+ session_id: import("zod").ZodString;
211
+ selector: import("zod").ZodOptional<import("zod").ZodString>;
212
+ full_page: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodBoolean>>;
213
+ format: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodEnum<["png", "jpeg", "webp"]>>>;
214
+ quality: import("zod").ZodOptional<import("zod").ZodNumber>;
215
+ credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
216
+ }, "strip", import("zod").ZodTypeAny, {
217
+ format: "png" | "jpeg" | "webp";
218
+ operation: "screenshot";
219
+ session_id: string;
220
+ full_page: boolean;
221
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
222
+ quality?: number | undefined;
223
+ selector?: string | undefined;
224
+ }, {
225
+ operation: "screenshot";
226
+ session_id: string;
227
+ format?: "png" | "jpeg" | "webp" | undefined;
228
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
229
+ quality?: number | undefined;
230
+ selector?: string | undefined;
231
+ full_page?: boolean | undefined;
232
+ }>, import("zod").ZodObject<{
233
+ operation: import("zod").ZodLiteral<"wait">;
234
+ session_id: import("zod").ZodString;
235
+ wait_type: import("zod").ZodEnum<["selector", "timeout", "navigation"]>;
236
+ selector: import("zod").ZodOptional<import("zod").ZodString>;
237
+ timeout: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodNumber>>;
238
+ credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
239
+ }, "strip", import("zod").ZodTypeAny, {
240
+ timeout: number;
241
+ operation: "wait";
242
+ session_id: string;
243
+ wait_type: "timeout" | "selector" | "navigation";
244
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
245
+ selector?: string | undefined;
246
+ }, {
247
+ operation: "wait";
248
+ session_id: string;
249
+ wait_type: "timeout" | "selector" | "navigation";
250
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
251
+ timeout?: number | undefined;
252
+ selector?: string | undefined;
253
+ }>, import("zod").ZodObject<{
254
+ operation: import("zod").ZodLiteral<"get_cookies">;
255
+ session_id: import("zod").ZodString;
256
+ domain_filter: import("zod").ZodOptional<import("zod").ZodString>;
257
+ credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
258
+ }, "strip", import("zod").ZodTypeAny, {
259
+ operation: "get_cookies";
260
+ session_id: string;
261
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
262
+ domain_filter?: string | undefined;
263
+ }, {
264
+ operation: "get_cookies";
265
+ session_id: string;
266
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
267
+ domain_filter?: string | undefined;
268
+ }>, import("zod").ZodObject<{
269
+ operation: import("zod").ZodLiteral<"end_session">;
270
+ session_id: import("zod").ZodString;
271
+ credentials: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodNativeEnum<typeof CredentialType>, import("zod").ZodString>>;
272
+ }, "strip", import("zod").ZodTypeAny, {
273
+ operation: "end_session";
274
+ session_id: string;
275
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
276
+ }, {
277
+ operation: "end_session";
278
+ session_id: string;
279
+ credentials?: Partial<Record<CredentialType, string>> | undefined;
280
+ }>]>;
281
+ static readonly resultSchema: import("zod").ZodDiscriminatedUnion<"operation", [import("zod").ZodObject<{
282
+ operation: import("zod").ZodLiteral<"start_session">;
283
+ success: import("zod").ZodBoolean;
284
+ session_id: import("zod").ZodOptional<import("zod").ZodString>;
285
+ context_id: import("zod").ZodOptional<import("zod").ZodString>;
286
+ debug_url: import("zod").ZodOptional<import("zod").ZodString>;
287
+ error: import("zod").ZodString;
288
+ }, "strip", import("zod").ZodTypeAny, {
289
+ error: string;
290
+ success: boolean;
291
+ operation: "start_session";
292
+ session_id?: string | undefined;
293
+ context_id?: string | undefined;
294
+ debug_url?: string | undefined;
295
+ }, {
296
+ error: string;
297
+ success: boolean;
298
+ operation: "start_session";
299
+ session_id?: string | undefined;
300
+ context_id?: string | undefined;
301
+ debug_url?: string | undefined;
302
+ }>, import("zod").ZodObject<{
303
+ operation: import("zod").ZodLiteral<"navigate">;
304
+ success: import("zod").ZodBoolean;
305
+ url: import("zod").ZodOptional<import("zod").ZodString>;
306
+ error: import("zod").ZodString;
307
+ }, "strip", import("zod").ZodTypeAny, {
308
+ error: string;
309
+ success: boolean;
310
+ operation: "navigate";
311
+ url?: string | undefined;
312
+ }, {
313
+ error: string;
314
+ success: boolean;
315
+ operation: "navigate";
316
+ url?: string | undefined;
317
+ }>, import("zod").ZodObject<{
318
+ operation: import("zod").ZodLiteral<"click">;
319
+ success: import("zod").ZodBoolean;
320
+ error: import("zod").ZodString;
321
+ }, "strip", import("zod").ZodTypeAny, {
322
+ error: string;
323
+ success: boolean;
324
+ operation: "click";
325
+ }, {
326
+ error: string;
327
+ success: boolean;
328
+ operation: "click";
329
+ }>, import("zod").ZodObject<{
330
+ operation: import("zod").ZodLiteral<"type">;
331
+ success: import("zod").ZodBoolean;
332
+ error: import("zod").ZodString;
333
+ }, "strip", import("zod").ZodTypeAny, {
334
+ error: string;
335
+ success: boolean;
336
+ operation: "type";
337
+ }, {
338
+ error: string;
339
+ success: boolean;
340
+ operation: "type";
341
+ }>, import("zod").ZodObject<{
342
+ operation: import("zod").ZodLiteral<"evaluate">;
343
+ success: import("zod").ZodBoolean;
344
+ result: import("zod").ZodOptional<import("zod").ZodUnknown>;
345
+ error: import("zod").ZodString;
346
+ }, "strip", import("zod").ZodTypeAny, {
347
+ error: string;
348
+ success: boolean;
349
+ operation: "evaluate";
350
+ result?: unknown;
351
+ }, {
352
+ error: string;
353
+ success: boolean;
354
+ operation: "evaluate";
355
+ result?: unknown;
356
+ }>, import("zod").ZodObject<{
357
+ operation: import("zod").ZodLiteral<"get_content">;
358
+ success: import("zod").ZodBoolean;
359
+ content: import("zod").ZodOptional<import("zod").ZodString>;
360
+ error: import("zod").ZodString;
361
+ }, "strip", import("zod").ZodTypeAny, {
362
+ error: string;
363
+ success: boolean;
364
+ operation: "get_content";
365
+ content?: string | undefined;
366
+ }, {
367
+ error: string;
368
+ success: boolean;
369
+ operation: "get_content";
370
+ content?: string | undefined;
371
+ }>, import("zod").ZodObject<{
372
+ operation: import("zod").ZodLiteral<"screenshot">;
373
+ success: import("zod").ZodBoolean;
374
+ data: import("zod").ZodOptional<import("zod").ZodString>;
375
+ format: import("zod").ZodOptional<import("zod").ZodString>;
376
+ error: import("zod").ZodString;
377
+ }, "strip", import("zod").ZodTypeAny, {
378
+ error: string;
379
+ success: boolean;
380
+ operation: "screenshot";
381
+ format?: string | undefined;
382
+ data?: string | undefined;
383
+ }, {
384
+ error: string;
385
+ success: boolean;
386
+ operation: "screenshot";
387
+ format?: string | undefined;
388
+ data?: string | undefined;
389
+ }>, import("zod").ZodObject<{
390
+ operation: import("zod").ZodLiteral<"wait">;
391
+ success: import("zod").ZodBoolean;
392
+ error: import("zod").ZodString;
393
+ }, "strip", import("zod").ZodTypeAny, {
394
+ error: string;
395
+ success: boolean;
396
+ operation: "wait";
397
+ }, {
398
+ error: string;
399
+ success: boolean;
400
+ operation: "wait";
401
+ }>, import("zod").ZodObject<{
402
+ operation: import("zod").ZodLiteral<"get_cookies">;
403
+ success: import("zod").ZodBoolean;
404
+ cookies: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
405
+ name: import("zod").ZodString;
406
+ value: import("zod").ZodString;
407
+ domain: import("zod").ZodString;
408
+ path: import("zod").ZodString;
409
+ expires: import("zod").ZodNumber;
410
+ httpOnly: import("zod").ZodBoolean;
411
+ secure: import("zod").ZodBoolean;
412
+ }, "strip", import("zod").ZodTypeAny, {
413
+ value: string;
414
+ path: string;
415
+ name: string;
416
+ domain: string;
417
+ expires: number;
418
+ httpOnly: boolean;
419
+ secure: boolean;
420
+ }, {
421
+ value: string;
422
+ path: string;
423
+ name: string;
424
+ domain: string;
425
+ expires: number;
426
+ httpOnly: boolean;
427
+ secure: boolean;
428
+ }>, "many">>;
429
+ error: import("zod").ZodString;
430
+ }, "strip", import("zod").ZodTypeAny, {
431
+ error: string;
432
+ success: boolean;
433
+ operation: "get_cookies";
434
+ cookies?: {
435
+ value: string;
436
+ path: string;
437
+ name: string;
438
+ domain: string;
439
+ expires: number;
440
+ httpOnly: boolean;
441
+ secure: boolean;
442
+ }[] | undefined;
443
+ }, {
444
+ error: string;
445
+ success: boolean;
446
+ operation: "get_cookies";
447
+ cookies?: {
448
+ value: string;
449
+ path: string;
450
+ name: string;
451
+ domain: string;
452
+ expires: number;
453
+ httpOnly: boolean;
454
+ secure: boolean;
455
+ }[] | undefined;
456
+ }>, import("zod").ZodObject<{
457
+ operation: import("zod").ZodLiteral<"end_session">;
458
+ success: import("zod").ZodBoolean;
459
+ error: import("zod").ZodString;
460
+ }, "strip", import("zod").ZodTypeAny, {
461
+ error: string;
462
+ success: boolean;
463
+ operation: "end_session";
464
+ }, {
465
+ error: string;
466
+ success: boolean;
467
+ operation: "end_session";
468
+ }>]>;
469
+ static readonly shortDescription = "Browser automation service using BrowserBase cloud browsers";
470
+ static readonly longDescription = "\n BrowserBase service integration for cloud-based browser automation.\n\n Features:\n - Cloud-based browser sessions\n - Session persistence via context IDs\n - Cookie injection for authenticated sessions\n - Full page automation (click, type, evaluate)\n - Screenshot and content extraction\n - Cross-browser support\n\n Use cases:\n - Automated shopping workflows (Amazon, etc.)\n - Web scraping with authentication\n - Form automation and submission\n - Browser-based testing\n\n Security Features:\n - Sessions are isolated in BrowserBase cloud\n - Credentials are handled securely\n - Sessions are properly closed and cleaned up\n ";
471
+ static readonly alias = "browser";
472
+ private static activeSessions;
473
+ constructor(params?: T, context?: BubbleContext, instanceId?: string);
474
+ /**
475
+ * Get BrowserBase configuration from environment
476
+ */
477
+ private getConfig;
478
+ /**
479
+ * Make an API request to BrowserBase
480
+ */
481
+ private browserbaseApi;
482
+ /**
483
+ * Parse browser session credential data (cookies + contextId)
484
+ * Credential is base64-encoded JSON to avoid escaping issues
485
+ */
486
+ private parseBrowserSessionCredential;
487
+ testCredential(): Promise<boolean>;
488
+ protected performAction(context?: BubbleContext): Promise<Extract<BrowserBaseResult, {
489
+ operation: T['operation'];
490
+ }>>;
491
+ /**
492
+ * Start a new browser session
493
+ */
494
+ private startSession;
495
+ /**
496
+ * Navigate to a URL
497
+ */
498
+ private navigate;
499
+ /**
500
+ * Click an element
501
+ */
502
+ private click;
503
+ /**
504
+ * Type text into an element
505
+ */
506
+ private typeText;
507
+ /**
508
+ * Execute JavaScript in page context
509
+ */
510
+ private evaluate;
511
+ /**
512
+ * Get page or element content
513
+ */
514
+ private getContent;
515
+ /**
516
+ * Take a screenshot
517
+ */
518
+ private screenshot;
519
+ /**
520
+ * Wait for a condition
521
+ */
522
+ private waitFor;
523
+ /**
524
+ * Get cookies from the browser
525
+ */
526
+ private getCookies;
527
+ /**
528
+ * End a browser session
529
+ */
530
+ private endSession;
531
+ protected chooseCredential(): string | undefined;
532
+ /**
533
+ * Get an active session by ID (for use by other bubbles)
534
+ */
535
+ static getSession(sessionId: string): ActiveSession | undefined;
536
+ /**
537
+ * Check if a session is active
538
+ */
539
+ static hasSession(sessionId: string): boolean;
540
+ }
541
+ export {};
542
+ //# sourceMappingURL=browserbase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browserbase.d.ts","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/browserbase/browserbase.ts"],"names":[],"mappings":"AAAA,OAAkB,EAAE,KAAK,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAKL,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EAGvB,MAAM,yBAAyB,CAAC;AAWjC;;GAEG;AACH,UAAU,aAAa;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACpB;AA2BD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,iBAAiB,CAC5B,CAAC,SAAS,sBAAsB,GAAG,sBAAsB,CACzD,SAAQ,aAAa,CACrB,CAAC,EACD,OAAO,CAAC,iBAAiB,EAAE;IAAE,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,CAAA;CAAE,CAAC,CAC1D;IACC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IAC1C,MAAM,CAAC,QAAQ,CAAC,OAAO,iBAAiB;IACxC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IAC7C,MAAM,CAAC,QAAQ,CAAC,UAAU,iBAAiB;IAC3C,MAAM,CAAC,QAAQ,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAA2B;IACjD,MAAM,CAAC,QAAQ,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAA2B;IACvD,MAAM,CAAC,QAAQ,CAAC,gBAAgB,iEACgC;IAChE,MAAM,CAAC,QAAQ,CAAC,eAAe,urBAqB7B;IACF,MAAM,CAAC,QAAQ,CAAC,KAAK,aAAa;IAGlC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAyC;gBAGpE,MAAM,GAAE,CAEF,EACN,OAAO,CAAC,EAAE,aAAa,EACvB,UAAU,CAAC,EAAE,MAAM;IAKrB;;OAEG;IACH,OAAO,CAAC,SAAS;IAejB;;OAEG;YACW,cAAc;IAiC5B;;;OAGG;IACH,OAAO,CAAC,6BAA6B;IAwBxB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;cAe/B,aAAa,CAC3B,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE;QAAE,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,CAAA;KAAE,CAAC,CAAC;IAyFrE;;OAEG;YACW,YAAY;IA0I1B;;OAEG;YACW,QAAQ;IAyBtB;;OAEG;YACW,KAAK;IAmCnB;;OAEG;YACW,QAAQ;IA8BtB;;OAEG;YACW,QAAQ;IAuBtB;;OAEG;YACW,UAAU;IAkCxB;;OAEG;YACW,UAAU;IAuDxB;;OAEG;YACW,OAAO;IA6CrB;;OAEG;YACW,UAAU;IAgCxB;;OAEG;YACW,UAAU;IAoDxB,SAAS,CAAC,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAchD;;OAEG;WACW,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAItE;;OAEG;WACW,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;CAGrD"}
@@ -0,0 +1,37 @@
1
+ import { BubbleFlow, type WebhookEvent } from '@bubblelab/bubble-core';
2
+ export interface Output {
3
+ sessionId: string;
4
+ testResults: {
5
+ operation: string;
6
+ success: boolean;
7
+ details?: string;
8
+ }[];
9
+ }
10
+ /**
11
+ * Payload for the BrowserBase Integration Test workflow.
12
+ */
13
+ export interface BrowserBaseTestPayload extends WebhookEvent {
14
+ /**
15
+ * URL to navigate to for testing
16
+ * @canBeFile false
17
+ */
18
+ testUrl?: string;
19
+ /**
20
+ * Selector to click for testing
21
+ * @canBeFile false
22
+ */
23
+ testSelector?: string;
24
+ }
25
+ export declare class BrowserBaseIntegrationTest extends BubbleFlow<'webhook/http'> {
26
+ private sessionId;
27
+ private startSession;
28
+ private navigateTo;
29
+ private getContent;
30
+ private evaluate;
31
+ private screenshot;
32
+ private waitForSelector;
33
+ private getCookies;
34
+ private endSession;
35
+ handle(payload: BrowserBaseTestPayload): Promise<Output>;
36
+ }
37
+ //# sourceMappingURL=browserbase.integration.flow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browserbase.integration.flow.d.ts","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/browserbase/browserbase.integration.flow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAEV,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,MAAM;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,EAAE,CAAC;CACL;AAED;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,0BAA2B,SAAQ,UAAU,CAAC,cAAc,CAAC;IACxE,OAAO,CAAC,SAAS,CAAuB;YAG1B,YAAY;YAoBZ,UAAU;YAmBV,UAAU;YAkBV,QAAQ;YAiBR,UAAU;YAkBV,eAAe;YAmBf,UAAU;YAiBV,UAAU;IAelB,MAAM,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC;CAuF/D"}