@bubblelab/bubble-core 0.1.9 → 0.1.11

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 (355) hide show
  1. package/dist/bubble-bundle.d.ts +633 -1658
  2. package/dist/bubble-factory.d.ts.map +1 -1
  3. package/dist/bubble-factory.js +165 -43
  4. package/dist/bubble-factory.js.map +1 -1
  5. package/dist/bubble-flow/bubble-flow-class.d.ts +22 -1
  6. package/dist/bubble-flow/bubble-flow-class.d.ts.map +1 -1
  7. package/dist/bubble-flow/bubble-flow-class.js +36 -0
  8. package/dist/bubble-flow/bubble-flow-class.js.map +1 -1
  9. package/dist/bubble-flow/sample/data-analyst-flow.d.ts +1 -1
  10. package/dist/bubble-flow/sample/data-analyst-flow.d.ts.map +1 -1
  11. package/dist/bubble-flow/sample/error-ts.d.ts +1 -1
  12. package/dist/bubble-flow/sample/error-ts.d.ts.map +1 -1
  13. package/dist/bubble-flow/sample/sanitytest.d.ts +1 -1
  14. package/dist/bubble-flow/sample/sanitytest.d.ts.map +1 -1
  15. package/dist/bubble-flow/sample/simple-webhook-2.d.ts +1 -1
  16. package/dist/bubble-flow/sample/simple-webhook-2.d.ts.map +1 -1
  17. package/dist/bubble-flow/sample/simple-webhook.d.ts +1 -1
  18. package/dist/bubble-flow/sample/simple-webhook.d.ts.map +1 -1
  19. package/dist/bubble-flow/sample/simplified-data-analysis.flow.d.ts +1 -1
  20. package/dist/bubble-flow/sample/simplified-data-analysis.flow.d.ts.map +1 -1
  21. package/dist/bubble-flow/sample/simplified-data-analysis.flow.js +6 -3
  22. package/dist/bubble-flow/sample/simplified-data-analysis.flow.js.map +1 -1
  23. package/dist/bubble-flow/sample/slack-v0.1.d.ts +1 -1
  24. package/dist/bubble-flow/sample/slack-v0.1.d.ts.map +1 -1
  25. package/dist/bubble-flow/sample/slackagenttest.d.ts +1 -1
  26. package/dist/bubble-flow/sample/slackagenttest.d.ts.map +1 -1
  27. package/dist/bubbles/service-bubble/agi-inc.d.ts +1121 -0
  28. package/dist/bubbles/service-bubble/agi-inc.d.ts.map +1 -0
  29. package/dist/bubbles/service-bubble/agi-inc.js +730 -0
  30. package/dist/bubbles/service-bubble/agi-inc.js.map +1 -0
  31. package/dist/bubbles/service-bubble/ai-agent.d.ts +297 -85
  32. package/dist/bubbles/service-bubble/ai-agent.d.ts.map +1 -1
  33. package/dist/bubbles/service-bubble/ai-agent.js +535 -399
  34. package/dist/bubbles/service-bubble/ai-agent.js.map +1 -1
  35. package/dist/bubbles/service-bubble/airtable.d.ts +1753 -0
  36. package/dist/bubbles/service-bubble/airtable.d.ts.map +1 -0
  37. package/dist/bubbles/service-bubble/airtable.js +1173 -0
  38. package/dist/bubbles/service-bubble/airtable.js.map +1 -0
  39. package/dist/bubbles/service-bubble/apify/actors/google-maps-scraper.d.ts +240 -0
  40. package/dist/bubbles/service-bubble/apify/actors/google-maps-scraper.d.ts.map +1 -0
  41. package/dist/bubbles/service-bubble/apify/actors/google-maps-scraper.js +119 -0
  42. package/dist/bubbles/service-bubble/apify/actors/google-maps-scraper.js.map +1 -0
  43. package/dist/bubbles/service-bubble/apify/actors/instagram-hashtag-scraper.d.ts +38 -38
  44. package/dist/bubbles/service-bubble/apify/actors/instagram-scraper.d.ts +56 -56
  45. package/dist/bubbles/service-bubble/apify/actors/linkedin-jobs-scraper.d.ts +137 -0
  46. package/dist/bubbles/service-bubble/apify/actors/linkedin-jobs-scraper.d.ts.map +1 -0
  47. package/dist/bubbles/service-bubble/apify/actors/linkedin-jobs-scraper.js +81 -0
  48. package/dist/bubbles/service-bubble/apify/actors/linkedin-jobs-scraper.js.map +1 -0
  49. package/dist/bubbles/service-bubble/apify/actors/linkedin-posts-search.d.ts +27 -27
  50. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-posts.d.ts +38 -38
  51. package/dist/bubbles/service-bubble/apify/actors/tiktok-scraper.d.ts +488 -0
  52. package/dist/bubbles/service-bubble/apify/actors/tiktok-scraper.d.ts.map +1 -0
  53. package/dist/bubbles/service-bubble/apify/actors/tiktok-scraper.js +463 -0
  54. package/dist/bubbles/service-bubble/apify/actors/tiktok-scraper.js.map +1 -0
  55. package/dist/bubbles/service-bubble/apify/actors/twitter-scraper.d.ts +262 -0
  56. package/dist/bubbles/service-bubble/apify/actors/twitter-scraper.d.ts.map +1 -0
  57. package/dist/bubbles/service-bubble/apify/actors/twitter-scraper.js +291 -0
  58. package/dist/bubbles/service-bubble/apify/actors/twitter-scraper.js.map +1 -0
  59. package/dist/bubbles/service-bubble/apify/actors/youtube-scraper.d.ts +184 -0
  60. package/dist/bubbles/service-bubble/apify/actors/youtube-scraper.d.ts.map +1 -0
  61. package/dist/bubbles/service-bubble/apify/actors/youtube-scraper.js +145 -0
  62. package/dist/bubbles/service-bubble/apify/actors/youtube-scraper.js.map +1 -0
  63. package/dist/bubbles/service-bubble/apify/actors/youtube-transcript-scraper.d.ts +52 -0
  64. package/dist/bubbles/service-bubble/apify/actors/youtube-transcript-scraper.d.ts.map +1 -0
  65. package/dist/bubbles/service-bubble/apify/actors/youtube-transcript-scraper.js +29 -0
  66. package/dist/bubbles/service-bubble/apify/actors/youtube-transcript-scraper.js.map +1 -0
  67. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts +1483 -123
  68. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts.map +1 -1
  69. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.js +48 -0
  70. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.js.map +1 -1
  71. package/dist/bubbles/service-bubble/apify/apify.d.ts +156 -11
  72. package/dist/bubbles/service-bubble/apify/apify.d.ts.map +1 -1
  73. package/dist/bubbles/service-bubble/apify/apify.js +205 -32
  74. package/dist/bubbles/service-bubble/apify/apify.js.map +1 -1
  75. package/dist/bubbles/service-bubble/apify/index.d.ts +2 -0
  76. package/dist/bubbles/service-bubble/apify/index.d.ts.map +1 -1
  77. package/dist/bubbles/service-bubble/apify/index.js +3 -0
  78. package/dist/bubbles/service-bubble/apify/index.js.map +1 -1
  79. package/dist/bubbles/service-bubble/apify/types.js +1 -2
  80. package/dist/bubbles/service-bubble/apify/types.js.map +1 -1
  81. package/dist/bubbles/service-bubble/eleven-labs.d.ts +421 -0
  82. package/dist/bubbles/service-bubble/eleven-labs.d.ts.map +1 -0
  83. package/dist/bubbles/service-bubble/eleven-labs.js +479 -0
  84. package/dist/bubbles/service-bubble/eleven-labs.js.map +1 -0
  85. package/dist/bubbles/service-bubble/firecrawl.d.ts +37748 -0
  86. package/dist/bubbles/service-bubble/firecrawl.d.ts.map +1 -0
  87. package/dist/bubbles/service-bubble/firecrawl.js +1489 -0
  88. package/dist/bubbles/service-bubble/firecrawl.js.map +1 -0
  89. package/dist/bubbles/service-bubble/followupboss.d.ts +6822 -0
  90. package/dist/bubbles/service-bubble/followupboss.d.ts.map +1 -0
  91. package/dist/bubbles/service-bubble/followupboss.js +1394 -0
  92. package/dist/bubbles/service-bubble/followupboss.js.map +1 -0
  93. package/dist/bubbles/service-bubble/github.d.ts +2399 -0
  94. package/dist/bubbles/service-bubble/github.d.ts.map +1 -0
  95. package/dist/bubbles/service-bubble/github.js +1052 -0
  96. package/dist/bubbles/service-bubble/github.js.map +1 -0
  97. package/dist/bubbles/service-bubble/gmail.d.ts +726 -232
  98. package/dist/bubbles/service-bubble/gmail.d.ts.map +1 -1
  99. package/dist/bubbles/service-bubble/gmail.js +435 -7
  100. package/dist/bubbles/service-bubble/gmail.js.map +1 -1
  101. package/dist/bubbles/service-bubble/google-calendar.d.ts +8 -8
  102. package/dist/bubbles/service-bubble/google-drive.d.ts +270 -40
  103. package/dist/bubbles/service-bubble/google-drive.d.ts.map +1 -1
  104. package/dist/bubbles/service-bubble/google-drive.js +100 -78
  105. package/dist/bubbles/service-bubble/google-drive.js.map +1 -1
  106. package/dist/bubbles/service-bubble/google-sheets/google-sheets.d.ts +943 -0
  107. package/dist/bubbles/service-bubble/google-sheets/google-sheets.d.ts.map +1 -0
  108. package/dist/bubbles/service-bubble/google-sheets/google-sheets.integration.flow.d.ts +31 -0
  109. package/dist/bubbles/service-bubble/google-sheets/google-sheets.integration.flow.d.ts.map +1 -0
  110. package/dist/bubbles/service-bubble/google-sheets/google-sheets.integration.flow.js +184 -0
  111. package/dist/bubbles/service-bubble/google-sheets/google-sheets.integration.flow.js.map +1 -0
  112. package/dist/bubbles/service-bubble/google-sheets/google-sheets.js +401 -0
  113. package/dist/bubbles/service-bubble/google-sheets/google-sheets.js.map +1 -0
  114. package/dist/bubbles/service-bubble/google-sheets/google-sheets.schema.d.ts +1024 -0
  115. package/dist/bubbles/service-bubble/google-sheets/google-sheets.schema.d.ts.map +1 -0
  116. package/dist/bubbles/service-bubble/{google-sheets.js → google-sheets/google-sheets.schema.js} +45 -409
  117. package/dist/bubbles/service-bubble/google-sheets/google-sheets.schema.js.map +1 -0
  118. package/dist/bubbles/service-bubble/google-sheets/google-sheets.utils.d.ts +38 -0
  119. package/dist/bubbles/service-bubble/google-sheets/google-sheets.utils.d.ts.map +1 -0
  120. package/dist/bubbles/service-bubble/google-sheets/google-sheets.utils.js +183 -0
  121. package/dist/bubbles/service-bubble/google-sheets/google-sheets.utils.js.map +1 -0
  122. package/dist/bubbles/service-bubble/google-sheets/index.d.ts +4 -0
  123. package/dist/bubbles/service-bubble/google-sheets/index.d.ts.map +1 -0
  124. package/dist/bubbles/service-bubble/google-sheets/index.js +4 -0
  125. package/dist/bubbles/service-bubble/google-sheets/index.js.map +1 -0
  126. package/dist/bubbles/service-bubble/hello-world.js +2 -2
  127. package/dist/bubbles/service-bubble/hello-world.js.map +1 -1
  128. package/dist/bubbles/service-bubble/http.d.ts +6 -6
  129. package/dist/bubbles/service-bubble/http.d.ts.map +1 -1
  130. package/dist/bubbles/service-bubble/http.js +7 -1
  131. package/dist/bubbles/service-bubble/http.js.map +1 -1
  132. package/dist/bubbles/service-bubble/insforge-db.d.ts +140 -0
  133. package/dist/bubbles/service-bubble/insforge-db.d.ts.map +1 -0
  134. package/dist/bubbles/service-bubble/insforge-db.js +260 -0
  135. package/dist/bubbles/service-bubble/insforge-db.js.map +1 -0
  136. package/dist/bubbles/service-bubble/notion/index.d.ts +3 -0
  137. package/dist/bubbles/service-bubble/notion/index.d.ts.map +1 -0
  138. package/dist/bubbles/service-bubble/notion/index.js +3 -0
  139. package/dist/bubbles/service-bubble/notion/index.js.map +1 -0
  140. package/dist/bubbles/service-bubble/notion/notion.d.ts +35405 -0
  141. package/dist/bubbles/service-bubble/notion/notion.d.ts.map +1 -0
  142. package/dist/bubbles/service-bubble/notion/notion.js +1492 -0
  143. package/dist/bubbles/service-bubble/notion/notion.js.map +1 -0
  144. package/dist/bubbles/service-bubble/notion/property-schemas.d.ts +1148 -0
  145. package/dist/bubbles/service-bubble/notion/property-schemas.d.ts.map +1 -0
  146. package/dist/bubbles/service-bubble/notion/property-schemas.js +341 -0
  147. package/dist/bubbles/service-bubble/notion/property-schemas.js.map +1 -0
  148. package/dist/bubbles/service-bubble/postgresql.d.ts +8 -8
  149. package/dist/bubbles/service-bubble/resend.d.ts +30 -9
  150. package/dist/bubbles/service-bubble/resend.d.ts.map +1 -1
  151. package/dist/bubbles/service-bubble/resend.js +133 -2
  152. package/dist/bubbles/service-bubble/resend.js.map +1 -1
  153. package/dist/bubbles/service-bubble/slack.d.ts +525 -525
  154. package/dist/bubbles/service-bubble/slack.d.ts.map +1 -1
  155. package/dist/bubbles/service-bubble/slack.js +2 -2
  156. package/dist/bubbles/service-bubble/slack.js.map +1 -1
  157. package/dist/bubbles/service-bubble/storage.d.ts +21 -17
  158. package/dist/bubbles/service-bubble/storage.d.ts.map +1 -1
  159. package/dist/bubbles/service-bubble/storage.js +59 -7
  160. package/dist/bubbles/service-bubble/storage.js.map +1 -1
  161. package/dist/bubbles/service-bubble/telegram.d.ts +7742 -0
  162. package/dist/bubbles/service-bubble/telegram.d.ts.map +1 -0
  163. package/dist/bubbles/service-bubble/telegram.js +1132 -0
  164. package/dist/bubbles/service-bubble/telegram.js.map +1 -0
  165. package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +60 -4
  166. package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts.map +1 -1
  167. package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.js +12 -0
  168. package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.js.map +1 -1
  169. package/dist/bubbles/tool-bubble/chart-js-tool.d.ts +4 -4
  170. package/dist/bubbles/tool-bubble/code-edit-tool.d.ts +188 -0
  171. package/dist/bubbles/tool-bubble/code-edit-tool.d.ts.map +1 -0
  172. package/dist/bubbles/tool-bubble/code-edit-tool.js +321 -0
  173. package/dist/bubbles/tool-bubble/code-edit-tool.js.map +1 -0
  174. package/dist/bubbles/tool-bubble/get-bubble-details-tool.d.ts +8 -4
  175. package/dist/bubbles/tool-bubble/get-bubble-details-tool.d.ts.map +1 -1
  176. package/dist/bubbles/tool-bubble/get-bubble-details-tool.js +132 -19
  177. package/dist/bubbles/tool-bubble/get-bubble-details-tool.js.map +1 -1
  178. package/dist/bubbles/tool-bubble/google-maps-tool.d.ts +455 -0
  179. package/dist/bubbles/tool-bubble/google-maps-tool.d.ts.map +1 -0
  180. package/dist/bubbles/tool-bubble/google-maps-tool.js +205 -0
  181. package/dist/bubbles/tool-bubble/google-maps-tool.js.map +1 -0
  182. package/dist/bubbles/tool-bubble/instagram-tool.d.ts +90 -90
  183. package/dist/bubbles/tool-bubble/instagram-tool.d.ts.map +1 -1
  184. package/dist/bubbles/tool-bubble/instagram-tool.js +2 -2
  185. package/dist/bubbles/tool-bubble/instagram-tool.js.map +1 -1
  186. package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +808 -431
  187. package/dist/bubbles/tool-bubble/linkedin-tool.d.ts.map +1 -1
  188. package/dist/bubbles/tool-bubble/linkedin-tool.js +232 -12
  189. package/dist/bubbles/tool-bubble/linkedin-tool.js.map +1 -1
  190. package/dist/bubbles/tool-bubble/list-bubbles-tool.d.ts +4 -4
  191. package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +21 -16
  192. package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts.map +1 -1
  193. package/dist/bubbles/tool-bubble/reddit-scrape-tool.js +97 -22
  194. package/dist/bubbles/tool-bubble/reddit-scrape-tool.js.map +1 -1
  195. package/dist/bubbles/tool-bubble/research-agent-tool.d.ts +17 -16
  196. package/dist/bubbles/tool-bubble/research-agent-tool.d.ts.map +1 -1
  197. package/dist/bubbles/tool-bubble/research-agent-tool.js +27 -17
  198. package/dist/bubbles/tool-bubble/research-agent-tool.js.map +1 -1
  199. package/dist/bubbles/tool-bubble/sql-query-tool.d.ts +4 -4
  200. package/dist/bubbles/tool-bubble/tiktok-tool.d.ts +485 -0
  201. package/dist/bubbles/tool-bubble/tiktok-tool.d.ts.map +1 -0
  202. package/dist/bubbles/tool-bubble/tiktok-tool.js +226 -0
  203. package/dist/bubbles/tool-bubble/tiktok-tool.js.map +1 -0
  204. package/dist/bubbles/tool-bubble/twitter-tool.d.ts +947 -0
  205. package/dist/bubbles/tool-bubble/twitter-tool.d.ts.map +1 -0
  206. package/dist/bubbles/tool-bubble/twitter-tool.js +494 -0
  207. package/dist/bubbles/tool-bubble/twitter-tool.js.map +1 -0
  208. package/dist/bubbles/tool-bubble/web-crawl-tool.d.ts +32 -26
  209. package/dist/bubbles/tool-bubble/web-crawl-tool.d.ts.map +1 -1
  210. package/dist/bubbles/tool-bubble/web-crawl-tool.js +58 -59
  211. package/dist/bubbles/tool-bubble/web-crawl-tool.js.map +1 -1
  212. package/dist/bubbles/tool-bubble/web-extract-tool.d.ts +4 -4
  213. package/dist/bubbles/tool-bubble/web-extract-tool.d.ts.map +1 -1
  214. package/dist/bubbles/tool-bubble/web-extract-tool.js +17 -17
  215. package/dist/bubbles/tool-bubble/web-extract-tool.js.map +1 -1
  216. package/dist/bubbles/tool-bubble/web-scrape-tool.d.ts +23 -115
  217. package/dist/bubbles/tool-bubble/web-scrape-tool.d.ts.map +1 -1
  218. package/dist/bubbles/tool-bubble/web-scrape-tool.js +51 -72
  219. package/dist/bubbles/tool-bubble/web-scrape-tool.js.map +1 -1
  220. package/dist/bubbles/tool-bubble/web-search-tool.d.ts +18 -6
  221. package/dist/bubbles/tool-bubble/web-search-tool.d.ts.map +1 -1
  222. package/dist/bubbles/tool-bubble/web-search-tool.js +46 -32
  223. package/dist/bubbles/tool-bubble/web-search-tool.js.map +1 -1
  224. package/dist/bubbles/tool-bubble/youtube-tool.d.ts +394 -0
  225. package/dist/bubbles/tool-bubble/youtube-tool.d.ts.map +1 -0
  226. package/dist/bubbles/tool-bubble/youtube-tool.js +352 -0
  227. package/dist/bubbles/tool-bubble/youtube-tool.js.map +1 -0
  228. package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts +78 -78
  229. package/dist/bubbles/workflow-bubble/generate-document.workflow.js +1 -1
  230. package/dist/bubbles/workflow-bubble/parse-document.workflow.d.ts +62 -62
  231. package/dist/bubbles/workflow-bubble/parse-document.workflow.js +1 -1
  232. package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +80 -80
  233. package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts.map +1 -1
  234. package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.js +4 -4
  235. package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.js.map +1 -1
  236. package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.d.ts +52 -52
  237. package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.d.ts.map +1 -1
  238. package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.js +2 -2
  239. package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.js.map +1 -1
  240. package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +32 -32
  241. package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts.map +1 -1
  242. package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.js +6 -6
  243. package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.js.map +1 -1
  244. package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +46 -46
  245. package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts.map +1 -1
  246. package/dist/bubbles/workflow-bubble/slack-formatter-agent.js +24 -4
  247. package/dist/bubbles/workflow-bubble/slack-formatter-agent.js.map +1 -1
  248. package/dist/bubbles/workflow-bubble/slack-notifier.workflow.d.ts +27 -27
  249. package/dist/bubbles/workflow-bubble/slack-notifier.workflow.d.ts.map +1 -1
  250. package/dist/bubbles/workflow-bubble/slack-notifier.workflow.js +8 -8
  251. package/dist/bubbles/workflow-bubble/slack-notifier.workflow.js.map +1 -1
  252. package/dist/bubbles.json +251 -88
  253. package/dist/index.d.ts +27 -6
  254. package/dist/index.d.ts.map +1 -1
  255. package/dist/index.js +18 -4
  256. package/dist/index.js.map +1 -1
  257. package/dist/logging/BubbleLogger.d.ts +45 -16
  258. package/dist/logging/BubbleLogger.d.ts.map +1 -1
  259. package/dist/logging/BubbleLogger.js +197 -89
  260. package/dist/logging/BubbleLogger.js.map +1 -1
  261. package/dist/logging/StreamingBubbleLogger.d.ts +13 -1
  262. package/dist/logging/StreamingBubbleLogger.d.ts.map +1 -1
  263. package/dist/logging/StreamingBubbleLogger.js +56 -13
  264. package/dist/logging/StreamingBubbleLogger.js.map +1 -1
  265. package/dist/logging/WebhookStreamLogger.d.ts +66 -0
  266. package/dist/logging/WebhookStreamLogger.d.ts.map +1 -0
  267. package/dist/logging/WebhookStreamLogger.js +291 -0
  268. package/dist/logging/WebhookStreamLogger.js.map +1 -0
  269. package/dist/types/available-tools.d.ts +1 -1
  270. package/dist/types/available-tools.d.ts.map +1 -1
  271. package/dist/types/available-tools.js +1 -0
  272. package/dist/types/available-tools.js.map +1 -1
  273. package/dist/types/base-bubble-class.d.ts +7 -5
  274. package/dist/types/base-bubble-class.d.ts.map +1 -1
  275. package/dist/types/base-bubble-class.js +63 -40
  276. package/dist/types/base-bubble-class.js.map +1 -1
  277. package/dist/types/bubble.d.ts +3 -10
  278. package/dist/types/bubble.d.ts.map +1 -1
  279. package/dist/types/bubble.js +1 -1
  280. package/dist/types/bubble.js.map +1 -1
  281. package/dist/types/service-bubble-class.d.ts +2 -2
  282. package/dist/types/service-bubble-class.d.ts.map +1 -1
  283. package/dist/types/service-bubble-class.js +2 -2
  284. package/dist/types/service-bubble-class.js.map +1 -1
  285. package/dist/types/tool-bubble-class.d.ts +2 -2
  286. package/dist/types/tool-bubble-class.d.ts.map +1 -1
  287. package/dist/types/tool-bubble-class.js +2 -4
  288. package/dist/types/tool-bubble-class.js.map +1 -1
  289. package/dist/types/workflow-bubble-class.d.ts +2 -2
  290. package/dist/types/workflow-bubble-class.d.ts.map +1 -1
  291. package/dist/types/workflow-bubble-class.js +2 -2
  292. package/dist/types/workflow-bubble-class.js.map +1 -1
  293. package/dist/utils/agent-formatter.d.ts +14 -2
  294. package/dist/utils/agent-formatter.d.ts.map +1 -1
  295. package/dist/utils/agent-formatter.js +176 -28
  296. package/dist/utils/agent-formatter.js.map +1 -1
  297. package/dist/utils/bubbleflow-validation.d.ts +7 -0
  298. package/dist/utils/bubbleflow-validation.d.ts.map +1 -1
  299. package/dist/utils/bubbleflow-validation.js +257 -35
  300. package/dist/utils/bubbleflow-validation.js.map +1 -1
  301. package/dist/utils/error-sanitizer.d.ts +12 -0
  302. package/dist/utils/error-sanitizer.d.ts.map +1 -0
  303. package/dist/utils/error-sanitizer.js +77 -0
  304. package/dist/utils/error-sanitizer.js.map +1 -0
  305. package/dist/utils/json-parsing.d.ts.map +1 -1
  306. package/dist/utils/json-parsing.js +146 -0
  307. package/dist/utils/json-parsing.js.map +1 -1
  308. package/dist/utils/safe-gemini-chat.d.ts +31 -0
  309. package/dist/utils/safe-gemini-chat.d.ts.map +1 -0
  310. package/dist/utils/safe-gemini-chat.js +93 -0
  311. package/dist/utils/safe-gemini-chat.js.map +1 -0
  312. package/dist/utils/schema-comparison.d.ts +92 -0
  313. package/dist/utils/schema-comparison.d.ts.map +1 -0
  314. package/dist/utils/schema-comparison.js +716 -0
  315. package/dist/utils/schema-comparison.js.map +1 -0
  316. package/dist/utils/zod-schema.d.ts +24 -0
  317. package/dist/utils/zod-schema.d.ts.map +1 -0
  318. package/dist/utils/zod-schema.js +56 -0
  319. package/dist/utils/zod-schema.js.map +1 -0
  320. package/package.json +7 -6
  321. package/dist/bubble-trigger/index.d.ts +0 -2
  322. package/dist/bubble-trigger/index.d.ts.map +0 -1
  323. package/dist/bubble-trigger/index.js +0 -2
  324. package/dist/bubble-trigger/index.js.map +0 -1
  325. package/dist/bubble-trigger/types.d.ts +0 -87
  326. package/dist/bubble-trigger/types.d.ts.map +0 -1
  327. package/dist/bubble-trigger/types.js +0 -14
  328. package/dist/bubble-trigger/types.js.map +0 -1
  329. package/dist/bubbles/service-bubble/apify/api-scraper.schema.d.ts +0 -370
  330. package/dist/bubbles/service-bubble/apify/api-scraper.schema.d.ts.map +0 -1
  331. package/dist/bubbles/service-bubble/apify/api-scraper.schema.js +0 -14
  332. package/dist/bubbles/service-bubble/apify/api-scraper.schema.js.map +0 -1
  333. package/dist/bubbles/service-bubble/apify.d.ts +0 -136
  334. package/dist/bubbles/service-bubble/apify.d.ts.map +0 -1
  335. package/dist/bubbles/service-bubble/apify.js +0 -282
  336. package/dist/bubbles/service-bubble/apify.js.map +0 -1
  337. package/dist/bubbles/service-bubble/google-sheets.d.ts +0 -1811
  338. package/dist/bubbles/service-bubble/google-sheets.d.ts.map +0 -1
  339. package/dist/bubbles/service-bubble/google-sheets.js.map +0 -1
  340. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts +0 -114
  341. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts.map +0 -1
  342. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js +0 -782
  343. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js.map +0 -1
  344. package/dist/types/ai-models.d.ts +0 -4
  345. package/dist/types/ai-models.d.ts.map +0 -1
  346. package/dist/types/ai-models.js +0 -20
  347. package/dist/types/ai-models.js.map +0 -1
  348. package/dist/types/api-scraper.schema.d.ts +0 -453
  349. package/dist/types/api-scraper.schema.d.ts.map +0 -1
  350. package/dist/types/api-scraper.schema.js +0 -160
  351. package/dist/types/api-scraper.schema.js.map +0 -1
  352. package/dist/utils/param-helper.d.ts +0 -2
  353. package/dist/utils/param-helper.d.ts.map +0 -1
  354. package/dist/utils/param-helper.js +0 -5
  355. package/dist/utils/param-helper.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-sheets.d.ts","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/google-sheets/google-sheets.ts"],"names":[],"mappings":"AAAA,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,EAIL,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACxB,MAAM,2BAA2B,CAAC;AAGnC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,kBAAkB,CAC7B,CAAC,SAAS,uBAAuB,GAAG,uBAAuB,CAC3D,SAAQ,aAAa,CACrB,CAAC,EACD,OAAO,CAAC,kBAAkB,EAAE;IAAE,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,CAAA;CAAE,CAAC,CAC3D;IACC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IAC1C,MAAM,CAAC,QAAQ,CAAC,OAAO,mBAAmB;IAC1C,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAG,OAAO,CAAU;IAC5C,MAAM,CAAC,QAAQ,CAAC,UAAU,mBAAmB;IAC7C,MAAM,CAAC,QAAQ,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAA4B;IAClD,MAAM,CAAC,QAAQ,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAA4B;IACxD,MAAM,CAAC,QAAQ,CAAC,gBAAgB,0DACyB;IACzD,MAAM,CAAC,QAAQ,CAAC,eAAe,g5BAqB7B;IACF,MAAM,CAAC,QAAQ,CAAC,KAAK,YAAY;gBAG/B,MAAM,GAAE,CAIF,EACN,OAAO,CAAC,EAAE,aAAa;IAKZ,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;YAkBjC,oBAAoB;cAuDlB,aAAa,CAC3B,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE;QAAE,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,CAAA;KAAE,CAAC,CAAC;YA0GxD,UAAU;YAoCV,WAAW;YA6CX,YAAY;YA6CZ,YAAY;YA+CZ,WAAW;YAsBX,eAAe;YAgCf,iBAAiB;YA6CjB,kBAAkB;YAwBlB,iBAAiB;YAuCjB,QAAQ;YAuCR,WAAW;IA6BzB,SAAS,CAAC,gBAAgB,IAAI,MAAM,GAAG,SAAS;CAYjD"}
@@ -0,0 +1,31 @@
1
+ import { BubbleFlow, type WebhookEvent } from '@bubblelab/bubble-core';
2
+ export interface Output {
3
+ spreadsheetId: string;
4
+ spreadsheetUrl: string;
5
+ testResults: {
6
+ operation: string;
7
+ success: boolean;
8
+ details?: string;
9
+ }[];
10
+ }
11
+ /**
12
+ * Payload for the Google Sheets Stress Test workflow.
13
+ */
14
+ export interface SheetsStressTestPayload extends WebhookEvent {
15
+ /**
16
+ * The title for the test spreadsheet that will be created.
17
+ * @canBeFile false
18
+ */
19
+ testTitle?: string;
20
+ }
21
+ export declare class GoogleSheetsStressTest extends BubbleFlow<'webhook/http'> {
22
+ private createTestSpreadsheet;
23
+ private createSheetWithSpaces;
24
+ private writeRawDataWithNulls;
25
+ private readFromRangeWithSpaces;
26
+ private appendToRangeWithSpaces;
27
+ private clearRangeWithSpaces;
28
+ private deleteSheet;
29
+ handle(payload: SheetsStressTestPayload): Promise<Output>;
30
+ }
31
+ //# sourceMappingURL=google-sheets.integration.flow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-sheets.integration.flow.d.ts","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/google-sheets/google-sheets.integration.flow.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAEV,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,MAAM;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,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,uBAAwB,SAAQ,YAAY;IAC3D;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,sBAAuB,SAAQ,UAAU,CAAC,cAAc,CAAC;YAEtD,qBAAqB;YAmBrB,qBAAqB;YAsBrB,qBAAqB;YAqBrB,uBAAuB;YAgBvB,uBAAuB;YAsBvB,oBAAoB;YAepB,WAAW;IAcnB,MAAM,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC;CA0HhE"}
@@ -0,0 +1,184 @@
1
+ import { BubbleFlow, GoogleSheetsBubble, } from '@bubblelab/bubble-core';
2
+ export class GoogleSheetsStressTest extends BubbleFlow {
3
+ // Creates a new Google Spreadsheet with a specific title
4
+ async createTestSpreadsheet(title) {
5
+ const result = await new GoogleSheetsBubble({
6
+ operation: 'create_spreadsheet',
7
+ title: title,
8
+ sheet_titles: ['InitialSheet'],
9
+ }).action();
10
+ if (!result.success ||
11
+ result.data?.operation !== 'create_spreadsheet' ||
12
+ !result.data.spreadsheet) {
13
+ throw new Error(`Failed to create spreadsheet: ${result.error}`);
14
+ }
15
+ return result.data.spreadsheet;
16
+ }
17
+ // Adds a sheet with spaces in the name - tests if bubble handles spaces without manual quoting
18
+ async createSheetWithSpaces(spreadsheetId, sheetName) {
19
+ const result = await new GoogleSheetsBubble({
20
+ operation: 'add_sheet',
21
+ spreadsheet_id: spreadsheetId,
22
+ sheet_title: sheetName,
23
+ }).action();
24
+ if (!result.success ||
25
+ result.data?.operation !== 'add_sheet' ||
26
+ result.data.sheet_id === undefined) {
27
+ throw new Error(`Failed to add sheet with spaces: ${result.error}`);
28
+ }
29
+ return result.data.sheet_id;
30
+ }
31
+ // Writes raw data with nulls/undefineds to test bubble's native null handling
32
+ async writeRawDataWithNulls(spreadsheetId, range, data) {
33
+ const result = await new GoogleSheetsBubble({
34
+ operation: 'write_values',
35
+ spreadsheet_id: spreadsheetId,
36
+ range: range,
37
+ values: data,
38
+ value_input_option: 'RAW',
39
+ }).action();
40
+ if (!result.success) {
41
+ throw new Error(`Failed to write stress test data: ${result.error}`);
42
+ }
43
+ return result.data;
44
+ }
45
+ // Reads data from a range with spaces in sheet name - tests bubble's range parsing
46
+ async readFromRangeWithSpaces(spreadsheetId, range) {
47
+ const result = await new GoogleSheetsBubble({
48
+ operation: 'read_values',
49
+ spreadsheet_id: spreadsheetId,
50
+ range: range,
51
+ value_render_option: 'FORMATTED_VALUE',
52
+ }).action();
53
+ if (!result.success || result.data?.operation !== 'read_values') {
54
+ throw new Error(`Failed to read verification data: ${result.error}`);
55
+ }
56
+ return result.data.values;
57
+ }
58
+ // Appends data to a range with spaces in sheet name
59
+ async appendToRangeWithSpaces(spreadsheetId, range, values) {
60
+ const result = await new GoogleSheetsBubble({
61
+ operation: 'append_values',
62
+ spreadsheet_id: spreadsheetId,
63
+ range: range,
64
+ values: values,
65
+ insert_data_option: 'INSERT_ROWS',
66
+ value_input_option: 'RAW',
67
+ }).action();
68
+ if (!result.success) {
69
+ throw new Error(`Failed to append data: ${result.error}`);
70
+ }
71
+ return result.data;
72
+ }
73
+ // Clears data from a range with spaces in sheet name
74
+ async clearRangeWithSpaces(spreadsheetId, range) {
75
+ const result = await new GoogleSheetsBubble({
76
+ operation: 'clear_values',
77
+ spreadsheet_id: spreadsheetId,
78
+ range: range,
79
+ }).action();
80
+ if (!result.success) {
81
+ throw new Error(`Failed to clear data: ${result.error}`);
82
+ }
83
+ return result.data;
84
+ }
85
+ // Deletes a sheet by ID
86
+ async deleteSheet(spreadsheetId, sheetId) {
87
+ const result = await new GoogleSheetsBubble({
88
+ operation: 'delete_sheet',
89
+ spreadsheet_id: spreadsheetId,
90
+ sheet_id: sheetId,
91
+ }).action();
92
+ if (!result.success) {
93
+ throw new Error(`Failed to delete test sheet: ${result.error}`);
94
+ }
95
+ return result.data;
96
+ }
97
+ async handle(payload) {
98
+ const { testTitle = 'Integration Stress Test' } = payload;
99
+ const results = [];
100
+ const sheetNameWithSpaces = 'Kaus Mode Landing zone';
101
+ // 1. Create Spreadsheet
102
+ const spreadsheet = await this.createTestSpreadsheet(testTitle);
103
+ const spreadsheetId = spreadsheet.spreadsheetId;
104
+ results.push({ operation: 'create_spreadsheet', success: true });
105
+ // 2. Create Sheet with Spaces - NO HELPER
106
+ const sheetId = await this.createSheetWithSpaces(spreadsheetId, sheetNameWithSpaces);
107
+ results.push({ operation: 'add_sheet_with_spaces', success: true });
108
+ // 3. Write Data - RAW DATA WITH NULLS/UNDEFINEDS, NO SANITIZATION
109
+ const rawData = [
110
+ ['Name', 'Age', 'Email', 'Department', 'Salary', 'Active'],
111
+ ['John Doe', 28, 'john@example.com', 'Engineering', 95000, true],
112
+ ['Jane Smith', 34, 'jane@example.com', 'Marketing', 78000, true],
113
+ [null, undefined, 'Mixed', 'Sales', null, false],
114
+ ['Bob Johnson', 42, 'bob@example.com', null, 120000, true],
115
+ ['Alice Williams', 31, null, 'Engineering', 88000, undefined],
116
+ ['End of', 'Test', null, 'HR', 65000, false],
117
+ ];
118
+ // RANGE WITH SPACES - NO QUOTE WRAPPING
119
+ const writeRange = `${sheetNameWithSpaces}!A1:F7`;
120
+ await this.writeRawDataWithNulls(spreadsheetId, writeRange, rawData);
121
+ results.push({ operation: 'write_values_with_nulls', success: true });
122
+ // 4. Read Verification - Multiple read operations to test different scenarios
123
+ // 4a. Read entire written range
124
+ const readRange = `${sheetNameWithSpaces}!A1:F7`;
125
+ const readValues = await this.readFromRangeWithSpaces(spreadsheetId, readRange);
126
+ results.push({
127
+ operation: 'read_values_full_range',
128
+ success: !!readValues && readValues.length > 0,
129
+ details: `Read ${readValues?.length || 0} rows with ${readValues?.[0]?.length || 0} columns`,
130
+ });
131
+ // 4b. Read just headers
132
+ const headerRange = `${sheetNameWithSpaces}!A1:F1`;
133
+ const headerValues = await this.readFromRangeWithSpaces(spreadsheetId, headerRange);
134
+ results.push({
135
+ operation: 'read_headers_only',
136
+ success: !!headerValues && headerValues.length > 0,
137
+ details: `Read headers: ${headerValues?.[0]?.join(', ') || 'no headers'}`,
138
+ });
139
+ // 4c. Read single column
140
+ const columnRange = `${sheetNameWithSpaces}!A:A`;
141
+ const columnValues = await this.readFromRangeWithSpaces(spreadsheetId, columnRange);
142
+ results.push({
143
+ operation: 'read_single_column',
144
+ success: !!columnValues && columnValues.length > 0,
145
+ details: `Read ${columnValues?.length || 0} rows from Name column`,
146
+ });
147
+ // 4d. Read partial range (middle rows)
148
+ const partialRange = `${sheetNameWithSpaces}!B3:E5`;
149
+ const partialValues = await this.readFromRangeWithSpaces(spreadsheetId, partialRange);
150
+ results.push({
151
+ operation: 'read_partial_range',
152
+ success: !!partialValues && partialValues.length > 0,
153
+ details: `Read ${partialValues?.length || 0} rows from partial range`,
154
+ });
155
+ // 5. Append Data - RANGE WITH SPACES, NO QUOTE WRAPPING
156
+ const appendRange = `${sheetNameWithSpaces}!A:A`;
157
+ const appendValues = [
158
+ ['Charlie Brown', 29, 'charlie@example.com', 'Finance', 72000, true],
159
+ ];
160
+ await this.appendToRangeWithSpaces(spreadsheetId, appendRange, appendValues);
161
+ results.push({ operation: 'append_values', success: true });
162
+ // 5a. Read after append to verify
163
+ const postAppendRange = `${sheetNameWithSpaces}!A1:F8`;
164
+ const postAppendValues = await this.readFromRangeWithSpaces(spreadsheetId, postAppendRange);
165
+ results.push({
166
+ operation: 'read_after_append',
167
+ success: !!postAppendValues && postAppendValues.length === 8,
168
+ details: `Read ${postAppendValues?.length || 0} rows after append (expected 8)`,
169
+ });
170
+ // 6. Clear Data - RANGE WITH SPACES, NO QUOTE WRAPPING
171
+ const clearRange = `${sheetNameWithSpaces}!A1:F10`;
172
+ await this.clearRangeWithSpaces(spreadsheetId, clearRange);
173
+ results.push({ operation: 'clear_values', success: true });
174
+ // 7. Delete Sheet
175
+ await this.deleteSheet(spreadsheetId, sheetId);
176
+ results.push({ operation: 'delete_sheet', success: true });
177
+ return {
178
+ spreadsheetId: spreadsheetId,
179
+ spreadsheetUrl: spreadsheet.spreadsheetUrl || '',
180
+ testResults: results,
181
+ };
182
+ }
183
+ }
184
+ //# sourceMappingURL=google-sheets.integration.flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-sheets.integration.flow.js","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/google-sheets/google-sheets.integration.flow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,401 @@
1
+ import { ServiceBubble } from '../../../types/service-bubble-class.js';
2
+ import { CredentialType } from '@bubblelab/shared-schemas';
3
+ import { GoogleSheetsParamsSchema, GoogleSheetsResultSchema, } from './google-sheets.schema.js';
4
+ import { enhanceErrorMessage } from './google-sheets.utils.js';
5
+ /**
6
+ * Google Sheets Service Bubble
7
+ *
8
+ * Comprehensive Google Sheets integration for spreadsheet data management.
9
+ *
10
+ * Features:
11
+ * - Automatic range normalization (quotes sheet names with spaces)
12
+ * - Automatic value sanitization (converts null/undefined to empty strings)
13
+ * - Enhanced error messages with helpful hints
14
+ * - Support for all major Google Sheets operations
15
+ *
16
+ * Use cases:
17
+ * - Read and write spreadsheet data with flexible ranges
18
+ * - Batch operations for efficient data processing
19
+ * - Create and manage spreadsheets and sheets
20
+ * - Clear and append data with various formatting options
21
+ * - Handle formulas, formatted values, and raw data
22
+ *
23
+ * Security Features:
24
+ * - OAuth 2.0 authentication with Google
25
+ * - Scoped access permissions for Google Sheets
26
+ * - Secure data validation and sanitization
27
+ * - User-controlled access to spreadsheet data
28
+ */
29
+ export class GoogleSheetsBubble extends ServiceBubble {
30
+ static type = 'service';
31
+ static service = 'google-sheets';
32
+ static authType = 'oauth';
33
+ static bubbleName = 'google-sheets';
34
+ static schema = GoogleSheetsParamsSchema;
35
+ static resultSchema = GoogleSheetsResultSchema;
36
+ static shortDescription = 'Google Sheets integration for spreadsheet operations';
37
+ static longDescription = `
38
+ Google Sheets service integration for comprehensive spreadsheet data management.
39
+
40
+ Features:
41
+ - Automatic range normalization (sheet names with spaces are automatically quoted)
42
+ - Automatic value sanitization (null/undefined converted to empty strings)
43
+ - Enhanced error messages with helpful hints
44
+ - Support for all major Google Sheets operations
45
+
46
+ Use cases:
47
+ - Read and write spreadsheet data with flexible ranges
48
+ - Batch operations for efficient data processing
49
+ - Create and manage spreadsheets and sheets
50
+ - Clear and append data with various formatting options
51
+ - Handle formulas, formatted values, and raw data
52
+
53
+ Security Features:
54
+ - OAuth 2.0 authentication with Google
55
+ - Scoped access permissions for Google Sheets
56
+ - Secure data validation and sanitization
57
+ - User-controlled access to spreadsheet data
58
+ `;
59
+ static alias = 'sheets';
60
+ constructor(params = {
61
+ operation: 'read_values',
62
+ spreadsheet_id: '',
63
+ range: 'Sheet1!A1:B10',
64
+ }, context) {
65
+ super(params, context);
66
+ }
67
+ async testCredential() {
68
+ const credential = this.chooseCredential();
69
+ if (!credential) {
70
+ throw new Error('Google Sheets credentials are required');
71
+ }
72
+ try {
73
+ // Test the credentials by validating the OAuth access token using Google's tokeninfo endpoint
74
+ const response = await fetch(`https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=${encodeURIComponent(credential)}`);
75
+ // A successful response indicates that the access token is valid
76
+ return response.ok;
77
+ }
78
+ catch {
79
+ return false;
80
+ }
81
+ }
82
+ async makeSheetsApiRequest(endpoint, method = 'GET', body, headers = {}, spreadsheetId, range) {
83
+ const url = endpoint.startsWith('https://')
84
+ ? endpoint
85
+ : `https://sheets.googleapis.com/v4${endpoint}`;
86
+ const requestHeaders = {
87
+ Authorization: `Bearer ${this.chooseCredential()}`,
88
+ 'Content-Type': 'application/json',
89
+ ...headers,
90
+ };
91
+ const requestInit = {
92
+ method,
93
+ headers: requestHeaders,
94
+ };
95
+ if (body && method !== 'GET') {
96
+ requestInit.body = JSON.stringify(body);
97
+ }
98
+ const response = await fetch(url, requestInit);
99
+ if (!response.ok) {
100
+ const errorText = await response.text();
101
+ // Extract spreadsheet ID from endpoint if not provided
102
+ const extractedSpreadsheetId = spreadsheetId ||
103
+ endpoint.match(/\/spreadsheets\/([^/]+)/)?.[1] ||
104
+ undefined;
105
+ const enhancedError = enhanceErrorMessage(errorText, response.status, response.statusText, extractedSpreadsheetId, range);
106
+ throw new Error(enhancedError);
107
+ }
108
+ // Handle empty responses
109
+ const contentType = response.headers.get('content-type');
110
+ if (contentType && contentType.includes('application/json')) {
111
+ return await response.json();
112
+ }
113
+ else {
114
+ return await response.text();
115
+ }
116
+ }
117
+ async performAction(context) {
118
+ void context;
119
+ const { operation } = this.params;
120
+ try {
121
+ const result = await (async () => {
122
+ // Cast to output type since base class already parsed input through Zod
123
+ const parsedParams = this.params;
124
+ switch (operation) {
125
+ case 'read_values':
126
+ return await this.readValues(parsedParams);
127
+ case 'write_values':
128
+ return await this.writeValues(parsedParams);
129
+ case 'update_values':
130
+ return await this.updateValues(parsedParams);
131
+ case 'append_values':
132
+ return await this.appendValues(parsedParams);
133
+ case 'clear_values':
134
+ return await this.clearValues(parsedParams);
135
+ case 'batch_read_values':
136
+ return await this.batchReadValues(parsedParams);
137
+ case 'batch_update_values':
138
+ return await this.batchUpdateValues(parsedParams);
139
+ case 'get_spreadsheet_info':
140
+ return await this.getSpreadsheetInfo(parsedParams);
141
+ case 'create_spreadsheet':
142
+ return await this.createSpreadsheet(parsedParams);
143
+ case 'add_sheet':
144
+ return await this.addSheet(parsedParams);
145
+ case 'delete_sheet':
146
+ return await this.deleteSheet(parsedParams);
147
+ default:
148
+ throw new Error(`Unsupported operation: ${operation}`);
149
+ }
150
+ })();
151
+ return result;
152
+ }
153
+ catch (error) {
154
+ return {
155
+ operation,
156
+ success: false,
157
+ error: error instanceof Error ? error.message : 'Unknown error occurred',
158
+ };
159
+ }
160
+ }
161
+ async readValues(params) {
162
+ const { spreadsheet_id, range, major_dimension, value_render_option, date_time_render_option, } = params;
163
+ const queryParams = new URLSearchParams({
164
+ majorDimension: major_dimension || 'ROWS',
165
+ valueRenderOption: value_render_option || 'FORMATTED_VALUE',
166
+ dateTimeRenderOption: date_time_render_option || 'SERIAL_NUMBER',
167
+ });
168
+ const response = await this.makeSheetsApiRequest(`/spreadsheets/${spreadsheet_id}/values/${encodeURIComponent(range)}?${queryParams.toString()}`, 'GET', undefined, {}, undefined, range);
169
+ return {
170
+ operation: 'read_values',
171
+ success: true,
172
+ range: response.range,
173
+ values: response.values || [],
174
+ major_dimension: response.majorDimension,
175
+ error: '',
176
+ };
177
+ }
178
+ async writeValues(params) {
179
+ const { spreadsheet_id, range, values, major_dimension, value_input_option, include_values_in_response, } = params;
180
+ const queryParams = new URLSearchParams({
181
+ valueInputOption: value_input_option || 'USER_ENTERED',
182
+ includeValuesInResponse: include_values_in_response?.toString() || 'false',
183
+ });
184
+ const body = {
185
+ range,
186
+ majorDimension: major_dimension,
187
+ values,
188
+ };
189
+ const response = await this.makeSheetsApiRequest(`/spreadsheets/${spreadsheet_id}/values/${encodeURIComponent(range)}?${queryParams.toString()}`, 'PUT', body, {}, undefined, range);
190
+ return {
191
+ operation: 'write_values',
192
+ success: true,
193
+ updated_range: response.updatedRange,
194
+ updated_rows: response.updatedRows,
195
+ updated_columns: response.updatedColumns,
196
+ updated_cells: response.updatedCells,
197
+ updated_data: response.updatedData,
198
+ error: '',
199
+ };
200
+ }
201
+ async updateValues(params) {
202
+ const { spreadsheet_id, range, values, major_dimension, value_input_option, include_values_in_response, } = params;
203
+ const queryParams = new URLSearchParams({
204
+ valueInputOption: value_input_option || 'USER_ENTERED',
205
+ includeValuesInResponse: include_values_in_response?.toString() || 'false',
206
+ });
207
+ const body = {
208
+ range,
209
+ majorDimension: major_dimension,
210
+ values,
211
+ };
212
+ const response = await this.makeSheetsApiRequest(`/spreadsheets/${spreadsheet_id}/values/${encodeURIComponent(range)}?${queryParams.toString()}`, 'PUT', body, {}, undefined, range);
213
+ return {
214
+ operation: 'update_values',
215
+ success: true,
216
+ updated_range: response.updatedRange,
217
+ updated_rows: response.updatedRows,
218
+ updated_columns: response.updatedColumns,
219
+ updated_cells: response.updatedCells,
220
+ updated_data: response.updatedData,
221
+ error: '',
222
+ };
223
+ }
224
+ async appendValues(params) {
225
+ const { spreadsheet_id, range, values, major_dimension, value_input_option, insert_data_option, include_values_in_response, } = params;
226
+ const queryParams = new URLSearchParams({
227
+ valueInputOption: value_input_option || 'USER_ENTERED',
228
+ insertDataOption: insert_data_option || 'INSERT_ROWS',
229
+ includeValuesInResponse: include_values_in_response?.toString() || 'false',
230
+ });
231
+ const body = {
232
+ range,
233
+ majorDimension: major_dimension,
234
+ values,
235
+ };
236
+ const response = await this.makeSheetsApiRequest(`/spreadsheets/${spreadsheet_id}/values/${encodeURIComponent(range)}:append?${queryParams.toString()}`, 'POST', body, {}, undefined, range);
237
+ return {
238
+ operation: 'append_values',
239
+ success: true,
240
+ table_range: response.tableRange,
241
+ updated_range: response.updates?.updatedRange,
242
+ updated_rows: response.updates?.updatedRows,
243
+ updated_columns: response.updates?.updatedColumns,
244
+ updated_cells: response.updates?.updatedCells,
245
+ error: '',
246
+ };
247
+ }
248
+ async clearValues(params) {
249
+ const { spreadsheet_id, range } = params;
250
+ const response = await this.makeSheetsApiRequest(`/spreadsheets/${spreadsheet_id}/values/${encodeURIComponent(range)}:clear`, 'POST', {}, {}, undefined, range);
251
+ return {
252
+ operation: 'clear_values',
253
+ success: true,
254
+ cleared_range: response.clearedRange,
255
+ error: '',
256
+ };
257
+ }
258
+ async batchReadValues(params) {
259
+ const { spreadsheet_id, ranges, major_dimension, value_render_option, date_time_render_option, } = params;
260
+ const queryParams = new URLSearchParams({
261
+ majorDimension: major_dimension || 'ROWS',
262
+ valueRenderOption: value_render_option || 'FORMATTED_VALUE',
263
+ dateTimeRenderOption: date_time_render_option || 'SERIAL_NUMBER',
264
+ });
265
+ // Add multiple ranges
266
+ ranges.forEach((range) => queryParams.append('ranges', range));
267
+ const response = await this.makeSheetsApiRequest(`/spreadsheets/${spreadsheet_id}/values:batchGet?${queryParams.toString()}`);
268
+ return {
269
+ operation: 'batch_read_values',
270
+ success: true,
271
+ value_ranges: response.valueRanges || [],
272
+ error: '',
273
+ };
274
+ }
275
+ async batchUpdateValues(params) {
276
+ const { spreadsheet_id, value_ranges, value_input_option, include_values_in_response, } = params;
277
+ const body = {
278
+ valueInputOption: value_input_option,
279
+ includeValuesInResponse: include_values_in_response,
280
+ data: value_ranges.map((vr) => ({
281
+ range: vr.range,
282
+ majorDimension: vr.major_dimension,
283
+ values: vr.values,
284
+ })),
285
+ };
286
+ const response = await this.makeSheetsApiRequest(`/spreadsheets/${spreadsheet_id}/values:batchUpdate`, 'POST', body);
287
+ return {
288
+ operation: 'batch_update_values',
289
+ success: true,
290
+ total_updated_rows: response.totalUpdatedRows,
291
+ total_updated_columns: response.totalUpdatedColumns,
292
+ total_updated_cells: response.totalUpdatedCells,
293
+ total_updated_sheets: response.totalUpdatedSheets,
294
+ responses: response.responses?.map((r) => ({
295
+ updated_range: r.updatedRange,
296
+ updated_rows: r.updatedRows,
297
+ updated_columns: r.updatedColumns,
298
+ updated_cells: r.updatedCells,
299
+ })),
300
+ error: '',
301
+ };
302
+ }
303
+ async getSpreadsheetInfo(params) {
304
+ const { spreadsheet_id, include_grid_data } = params;
305
+ const queryParams = new URLSearchParams();
306
+ if (include_grid_data) {
307
+ queryParams.set('includeGridData', 'true');
308
+ }
309
+ const response = await this.makeSheetsApiRequest(`/spreadsheets/${spreadsheet_id}?${queryParams.toString()}`);
310
+ return {
311
+ operation: 'get_spreadsheet_info',
312
+ success: true,
313
+ spreadsheet: response,
314
+ error: '',
315
+ };
316
+ }
317
+ async createSpreadsheet(params) {
318
+ const { title, sheet_titles } = params;
319
+ // sheet_titles has a default value of ['Sheet1'] from schema, so this is a safety check
320
+ const sheets = sheet_titles ?? ['Sheet1'];
321
+ const body = {
322
+ properties: {
323
+ title,
324
+ },
325
+ sheets: sheets.map((sheetTitle, index) => ({
326
+ properties: {
327
+ title: sheetTitle,
328
+ index,
329
+ sheetType: 'GRID',
330
+ gridProperties: {
331
+ rowCount: 1000,
332
+ columnCount: 26,
333
+ },
334
+ },
335
+ })),
336
+ };
337
+ const response = await this.makeSheetsApiRequest('/spreadsheets', 'POST', body);
338
+ return {
339
+ operation: 'create_spreadsheet',
340
+ success: true,
341
+ spreadsheet: response,
342
+ error: '',
343
+ };
344
+ }
345
+ async addSheet(params) {
346
+ const { spreadsheet_id, sheet_title, row_count, column_count } = params;
347
+ const body = {
348
+ requests: [
349
+ {
350
+ addSheet: {
351
+ properties: {
352
+ title: sheet_title,
353
+ sheetType: 'GRID',
354
+ gridProperties: {
355
+ rowCount: row_count,
356
+ columnCount: column_count,
357
+ },
358
+ },
359
+ },
360
+ },
361
+ ],
362
+ };
363
+ const response = await this.makeSheetsApiRequest(`/spreadsheets/${spreadsheet_id}:batchUpdate`, 'POST', body);
364
+ const addSheetResponse = response.replies?.[0]?.addSheet;
365
+ return {
366
+ operation: 'add_sheet',
367
+ success: true,
368
+ sheet_id: addSheetResponse?.properties?.sheetId,
369
+ sheet_title: addSheetResponse?.properties?.title,
370
+ error: '',
371
+ };
372
+ }
373
+ async deleteSheet(params) {
374
+ const { spreadsheet_id, sheet_id } = params;
375
+ const body = {
376
+ requests: [
377
+ {
378
+ deleteSheet: {
379
+ sheetId: sheet_id,
380
+ },
381
+ },
382
+ ],
383
+ };
384
+ await this.makeSheetsApiRequest(`/spreadsheets/${spreadsheet_id}:batchUpdate`, 'POST', body);
385
+ return {
386
+ operation: 'delete_sheet',
387
+ success: true,
388
+ deleted_sheet_id: sheet_id,
389
+ error: '',
390
+ };
391
+ }
392
+ chooseCredential() {
393
+ const { credentials } = this.params;
394
+ if (!credentials || typeof credentials !== 'object') {
395
+ throw new Error('No Google Sheets credentials provided');
396
+ }
397
+ // Google Sheets bubble uses GOOGLE_SHEETS_CRED credentials
398
+ return credentials[CredentialType.GOOGLE_SHEETS_CRED];
399
+ }
400
+ }
401
+ //# sourceMappingURL=google-sheets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-sheets.js","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/google-sheets/google-sheets.ts"],"names":[],"mappings":"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"}