@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,203 @@
1
+ import { BubbleFlow, BrowserBaseBubble, } from '@bubblelab/bubble-core';
2
+ export class BrowserBaseIntegrationTest extends BubbleFlow {
3
+ sessionId = null;
4
+ // Starts a new browser session
5
+ async startSession() {
6
+ const result = await new BrowserBaseBubble({
7
+ operation: 'start_session',
8
+ viewport_width: 1280,
9
+ viewport_height: 900,
10
+ }).action();
11
+ if (!result.success ||
12
+ result.data?.operation !== 'start_session' ||
13
+ !result.data.session_id) {
14
+ throw new Error(`Failed to start session: ${result.error}`);
15
+ }
16
+ this.sessionId = result.data.session_id;
17
+ return result.data;
18
+ }
19
+ // Navigates to a URL
20
+ async navigateTo(url) {
21
+ if (!this.sessionId)
22
+ throw new Error('No active session');
23
+ const result = await new BrowserBaseBubble({
24
+ operation: 'navigate',
25
+ session_id: this.sessionId,
26
+ url: url,
27
+ wait_until: 'domcontentloaded',
28
+ timeout: 30000,
29
+ }).action();
30
+ if (!result.success || result.data?.operation !== 'navigate') {
31
+ throw new Error(`Failed to navigate: ${result.error}`);
32
+ }
33
+ return result.data;
34
+ }
35
+ // Gets page content
36
+ async getContent(selector) {
37
+ if (!this.sessionId)
38
+ throw new Error('No active session');
39
+ const result = await new BrowserBaseBubble({
40
+ operation: 'get_content',
41
+ session_id: this.sessionId,
42
+ selector: selector,
43
+ content_type: 'text',
44
+ }).action();
45
+ if (!result.success || result.data?.operation !== 'get_content') {
46
+ throw new Error(`Failed to get content: ${result.error}`);
47
+ }
48
+ return result.data;
49
+ }
50
+ // Evaluates JavaScript in the page
51
+ async evaluate(script) {
52
+ if (!this.sessionId)
53
+ throw new Error('No active session');
54
+ const result = await new BrowserBaseBubble({
55
+ operation: 'evaluate',
56
+ session_id: this.sessionId,
57
+ script: script,
58
+ }).action();
59
+ if (!result.success || result.data?.operation !== 'evaluate') {
60
+ throw new Error(`Failed to evaluate: ${result.error}`);
61
+ }
62
+ return result.data;
63
+ }
64
+ // Takes a screenshot
65
+ async screenshot() {
66
+ if (!this.sessionId)
67
+ throw new Error('No active session');
68
+ const result = await new BrowserBaseBubble({
69
+ operation: 'screenshot',
70
+ session_id: this.sessionId,
71
+ format: 'png',
72
+ full_page: false,
73
+ }).action();
74
+ if (!result.success || result.data?.operation !== 'screenshot') {
75
+ throw new Error(`Failed to take screenshot: ${result.error}`);
76
+ }
77
+ return result.data;
78
+ }
79
+ // Waits for a selector
80
+ async waitForSelector(selector, timeout) {
81
+ if (!this.sessionId)
82
+ throw new Error('No active session');
83
+ const result = await new BrowserBaseBubble({
84
+ operation: 'wait',
85
+ session_id: this.sessionId,
86
+ wait_type: 'selector',
87
+ selector: selector,
88
+ timeout: timeout,
89
+ }).action();
90
+ if (!result.success || result.data?.operation !== 'wait') {
91
+ throw new Error(`Failed to wait for selector: ${result.error}`);
92
+ }
93
+ return result.data;
94
+ }
95
+ // Gets cookies from the browser
96
+ async getCookies(domainFilter) {
97
+ if (!this.sessionId)
98
+ throw new Error('No active session');
99
+ const result = await new BrowserBaseBubble({
100
+ operation: 'get_cookies',
101
+ session_id: this.sessionId,
102
+ domain_filter: domainFilter,
103
+ }).action();
104
+ if (!result.success || result.data?.operation !== 'get_cookies') {
105
+ throw new Error(`Failed to get cookies: ${result.error}`);
106
+ }
107
+ return result.data;
108
+ }
109
+ // Ends the browser session
110
+ async endSession() {
111
+ if (!this.sessionId)
112
+ return;
113
+ const result = await new BrowserBaseBubble({
114
+ operation: 'end_session',
115
+ session_id: this.sessionId,
116
+ }).action();
117
+ if (!result.success) {
118
+ throw new Error(`Failed to end session: ${result.error}`);
119
+ }
120
+ return result.data;
121
+ }
122
+ async handle(payload) {
123
+ const { testUrl = 'https://www.example.com' } = payload;
124
+ const results = [];
125
+ try {
126
+ // 1. Start browser session
127
+ const startData = await this.startSession();
128
+ results.push({
129
+ operation: 'start_session',
130
+ success: true,
131
+ details: `Session: ${startData.session_id}, Context: ${startData.context_id}`,
132
+ });
133
+ // 2. Navigate to test URL
134
+ const navData = await this.navigateTo(testUrl);
135
+ results.push({
136
+ operation: 'navigate',
137
+ success: true,
138
+ details: `Navigated to: ${navData.url}`,
139
+ });
140
+ // 3. Wait for body to be present
141
+ await this.waitForSelector('body', 5000);
142
+ results.push({
143
+ operation: 'wait_for_selector',
144
+ success: true,
145
+ details: 'Body element found',
146
+ });
147
+ // 4. Get page title via evaluate
148
+ const evalData = await this.evaluate('document.title');
149
+ results.push({
150
+ operation: 'evaluate',
151
+ success: true,
152
+ details: `Page title: ${evalData.result}`,
153
+ });
154
+ // 5. Get page content
155
+ const contentData = await this.getContent('body');
156
+ const contentPreview = (contentData.content || '').substring(0, 100);
157
+ results.push({
158
+ operation: 'get_content',
159
+ success: true,
160
+ details: `Content preview: ${contentPreview}...`,
161
+ });
162
+ // 6. Take screenshot
163
+ const screenshotData = await this.screenshot();
164
+ const screenshotSize = screenshotData.data?.length || 0;
165
+ results.push({
166
+ operation: 'screenshot',
167
+ success: true,
168
+ details: `Screenshot taken, format: ${screenshotData.format}, size: ${screenshotSize} chars`,
169
+ });
170
+ // 7. Get cookies
171
+ const cookiesData = await this.getCookies();
172
+ results.push({
173
+ operation: 'get_cookies',
174
+ success: true,
175
+ details: `Found ${cookiesData.cookies?.length || 0} cookies`,
176
+ });
177
+ // 8. End session
178
+ await this.endSession();
179
+ results.push({
180
+ operation: 'end_session',
181
+ success: true,
182
+ details: 'Session closed successfully',
183
+ });
184
+ return {
185
+ sessionId: this.sessionId || '',
186
+ testResults: results,
187
+ };
188
+ }
189
+ catch (error) {
190
+ // Ensure session is cleaned up on error
191
+ if (this.sessionId) {
192
+ try {
193
+ await this.endSession();
194
+ }
195
+ catch {
196
+ // Ignore cleanup errors
197
+ }
198
+ }
199
+ throw error;
200
+ }
201
+ }
202
+ }
203
+ //# sourceMappingURL=browserbase.integration.flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browserbase.integration.flow.js","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/browserbase/browserbase.integration.flow.ts"],"names":[],"mappings":"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"}