@bubblelab/bubble-core 0.1.278 → 0.1.279

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 (108) hide show
  1. package/dist/bubble-bundle.d.ts +178 -157
  2. package/dist/bubble-factory.d.ts.map +1 -1
  3. package/dist/bubble-factory.js +3 -0
  4. package/dist/bubble-factory.js.map +1 -1
  5. package/dist/bubbles/service-bubble/agi-inc.d.ts +20 -20
  6. package/dist/bubbles/service-bubble/ai-agent.d.ts +74 -74
  7. package/dist/bubbles/service-bubble/ai-agent.d.ts.map +1 -1
  8. package/dist/bubbles/service-bubble/ai-agent.js +47 -4
  9. package/dist/bubbles/service-bubble/ai-agent.js.map +1 -1
  10. package/dist/bubbles/service-bubble/airtable.d.ts +76 -76
  11. package/dist/bubbles/service-bubble/apify/actors/app-rankings-scraper.d.ts +6 -6
  12. package/dist/bubbles/service-bubble/apify/actors/instagram-hashtag-scraper.d.ts +2 -2
  13. package/dist/bubbles/service-bubble/apify/actors/instagram-scraper.d.ts +8 -8
  14. package/dist/bubbles/service-bubble/apify/actors/linkedin-jobs-scraper.d.ts +2 -2
  15. package/dist/bubbles/service-bubble/apify/actors/linkedin-posts-search.d.ts +22 -22
  16. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-detail.d.ts +38 -38
  17. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-posts.d.ts +52 -52
  18. package/dist/bubbles/service-bubble/apify/actors/tiktok-scraper.d.ts +6 -6
  19. package/dist/bubbles/service-bubble/apify/actors/twitter-scraper.d.ts +12 -12
  20. package/dist/bubbles/service-bubble/apify/actors/youtube-scraper.d.ts +12 -12
  21. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts +132 -132
  22. package/dist/bubbles/service-bubble/apify/apify.d.ts +18 -18
  23. package/dist/bubbles/service-bubble/asana/asana.d.ts +1 -1
  24. package/dist/bubbles/service-bubble/asana/asana.schema.d.ts +1 -1
  25. package/dist/bubbles/service-bubble/ashby/ashby.d.ts +20 -20
  26. package/dist/bubbles/service-bubble/ashby/ashby.schema.d.ts +28 -28
  27. package/dist/bubbles/service-bubble/assembled/assembled.d.ts +6 -6
  28. package/dist/bubbles/service-bubble/assembled/assembled.schema.d.ts +6 -6
  29. package/dist/bubbles/service-bubble/attio/attio.d.ts +6 -6
  30. package/dist/bubbles/service-bubble/attio/attio.schema.d.ts +6 -6
  31. package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts +1 -1
  32. package/dist/bubbles/service-bubble/browserbase/browserbase.schema.d.ts +1 -1
  33. package/dist/bubbles/service-bubble/capability-pipeline.js +1 -1
  34. package/dist/bubbles/service-bubble/capability-pipeline.js.map +1 -1
  35. package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts +4 -4
  36. package/dist/bubbles/service-bubble/crustdata/crustdata.schema.d.ts +8 -8
  37. package/dist/bubbles/service-bubble/discord/discord.d.ts +12 -12
  38. package/dist/bubbles/service-bubble/discord/discord.schema.d.ts +12 -12
  39. package/dist/bubbles/service-bubble/firecrawl.d.ts +330 -330
  40. package/dist/bubbles/service-bubble/followupboss.d.ts +4 -4
  41. package/dist/bubbles/service-bubble/github.d.ts +60 -60
  42. package/dist/bubbles/service-bubble/gmail.d.ts +164 -164
  43. package/dist/bubbles/service-bubble/google-calendar.d.ts +6 -6
  44. package/dist/bubbles/service-bubble/google-drive.d.ts +4 -4
  45. package/dist/bubbles/service-bubble/http.d.ts +6 -6
  46. package/dist/bubbles/service-bubble/hubspot/hubspot.d.ts +2 -2
  47. package/dist/bubbles/service-bubble/hubspot/hubspot.schema.d.ts +2 -2
  48. package/dist/bubbles/service-bubble/insforge-db.d.ts +8 -8
  49. package/dist/bubbles/service-bubble/jira/jira.d.ts +30 -30
  50. package/dist/bubbles/service-bubble/jira/jira.schema.d.ts +36 -36
  51. package/dist/bubbles/service-bubble/metabase/index.d.ts +4 -0
  52. package/dist/bubbles/service-bubble/metabase/index.d.ts.map +1 -0
  53. package/dist/bubbles/service-bubble/metabase/index.js +4 -0
  54. package/dist/bubbles/service-bubble/metabase/index.js.map +1 -0
  55. package/dist/bubbles/service-bubble/metabase/metabase.d.ts +746 -0
  56. package/dist/bubbles/service-bubble/metabase/metabase.d.ts.map +1 -0
  57. package/dist/bubbles/service-bubble/metabase/metabase.js +221 -0
  58. package/dist/bubbles/service-bubble/metabase/metabase.js.map +1 -0
  59. package/dist/bubbles/service-bubble/metabase/metabase.schema.d.ts +1125 -0
  60. package/dist/bubbles/service-bubble/metabase/metabase.schema.d.ts.map +1 -0
  61. package/dist/bubbles/service-bubble/metabase/metabase.schema.js +222 -0
  62. package/dist/bubbles/service-bubble/metabase/metabase.schema.js.map +1 -0
  63. package/dist/bubbles/service-bubble/metabase/metabase.utils.d.ts +15 -0
  64. package/dist/bubbles/service-bubble/metabase/metabase.utils.d.ts.map +1 -0
  65. package/dist/bubbles/service-bubble/metabase/metabase.utils.js +32 -0
  66. package/dist/bubbles/service-bubble/metabase/metabase.utils.js.map +1 -0
  67. package/dist/bubbles/service-bubble/notion/notion.d.ts +168 -168
  68. package/dist/bubbles/service-bubble/notion/property-schemas.d.ts +16 -16
  69. package/dist/bubbles/service-bubble/postgresql.d.ts +8 -8
  70. package/dist/bubbles/service-bubble/posthog/posthog.d.ts +10 -10
  71. package/dist/bubbles/service-bubble/posthog/posthog.schema.d.ts +14 -14
  72. package/dist/bubbles/service-bubble/resend.d.ts +12 -12
  73. package/dist/bubbles/service-bubble/slack/slack.d.ts +392 -392
  74. package/dist/bubbles/service-bubble/snowflake/snowflake.d.ts +4 -4
  75. package/dist/bubbles/service-bubble/snowflake/snowflake.schema.d.ts +4 -4
  76. package/dist/bubbles/service-bubble/sortly/sortly.d.ts +36 -36
  77. package/dist/bubbles/service-bubble/sortly/sortly.schema.d.ts +40 -40
  78. package/dist/bubbles/service-bubble/stripe/stripe.d.ts +24 -24
  79. package/dist/bubbles/service-bubble/stripe/stripe.schema.d.ts +28 -28
  80. package/dist/bubbles/service-bubble/xero/xero.d.ts +2 -2
  81. package/dist/bubbles/service-bubble/xero/xero.schema.d.ts +2 -2
  82. package/dist/bubbles/service-bubble/zendesk/zendesk.d.ts +20 -20
  83. package/dist/bubbles/service-bubble/zendesk/zendesk.schema.d.ts +20 -20
  84. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.d.ts +6 -6
  85. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.schema.d.ts +8 -8
  86. package/dist/bubbles/tool-bubble/app-rankings-tool.d.ts +8 -8
  87. package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +4 -4
  88. package/dist/bubbles/tool-bubble/chart-js-tool.d.ts +4 -4
  89. package/dist/bubbles/tool-bubble/company-enrichment-tool.d.ts +20 -20
  90. package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +384 -384
  91. package/dist/bubbles/tool-bubble/people-search-tool.d.ts +44 -44
  92. package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +10 -10
  93. package/dist/bubbles/tool-bubble/research-agent-tool.d.ts +4 -4
  94. package/dist/bubbles/tool-bubble/sql-query-tool.d.ts +4 -4
  95. package/dist/bubbles/tool-bubble/tiktok-tool.d.ts +60 -60
  96. package/dist/bubbles/tool-bubble/twitter-tool.d.ts +134 -134
  97. package/dist/bubbles/tool-bubble/yc-scraper-tool.d.ts +8 -8
  98. package/dist/bubbles/tool-bubble/youtube-tool.d.ts +20 -20
  99. package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts +12 -12
  100. package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +8 -8
  101. package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +2 -2
  102. package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +34 -34
  103. package/dist/bubbles.json +510 -2
  104. package/dist/index.d.ts +1 -0
  105. package/dist/index.d.ts.map +1 -1
  106. package/dist/index.js +1 -0
  107. package/dist/index.js.map +1 -1
  108. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metabase.d.ts","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/metabase/metabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAIL,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAO9B;;;;;;;;;;;GAWG;AACH,qBAAa,cAAc,CACzB,CAAC,SAAS,mBAAmB,GAAG,mBAAmB,CACnD,SAAQ,aAAa,CACrB,CAAC,EACD,OAAO,CAAC,cAAc,EAAE;IAAE,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,CAAA;CAAE,CAAC,CACvD;IACC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IAC1C,MAAM,CAAC,QAAQ,CAAC,OAAO,cAAc;IACrC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IAC7C,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAc;IACxC,MAAM,CAAC,QAAQ,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAAwB;IAC9C,MAAM,CAAC,QAAQ,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAAwB;IACpD,MAAM,CAAC,QAAQ,CAAC,gBAAgB,uEACsC;IACtE,MAAM,CAAC,QAAQ,CAAC,eAAe,8WAU7B;IACF,MAAM,CAAC,QAAQ,CAAC,KAAK,eAAe;gBAGlC,MAAM,GAAE,CAEF,EACN,OAAO,CAAC,EAAE,aAAa;IAKZ,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAgB/C,SAAS,CAAC,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAQhD,OAAO,CAAC,cAAc;cAMN,aAAa,CAC3B,QAAQ,CAAC,EAAE,aAAa,GACvB,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE;QAAE,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,CAAA;KAAE,CAAC,CAAC;YAiCpD,YAAY;YA0BZ,cAAc;YA+Bd,OAAO;YA0BP,SAAS;YAwCT,mBAAmB;CAmDlC"}
@@ -0,0 +1,221 @@
1
+ import { ServiceBubble } from '../../../types/service-bubble-class.js';
2
+ import { CredentialType } from '@bubblelab/shared-schemas';
3
+ import { MetabaseParamsSchema, MetabaseResultSchema, } from './metabase.schema.js';
4
+ import { parseMetabaseCredential, enhanceMetabaseErrorMessage, } from './metabase.utils.js';
5
+ /**
6
+ * Metabase Service Bubble
7
+ *
8
+ * Integration with Metabase analytics and reporting platform.
9
+ *
10
+ * Features:
11
+ * - Dashboard retrieval and listing
12
+ * - Card (saved question) metadata
13
+ * - Card query execution with parsed JSON results
14
+ *
15
+ * Supports self-hosted Metabase instances via configurable URL + API key.
16
+ */
17
+ export class MetabaseBubble extends ServiceBubble {
18
+ static type = 'service';
19
+ static service = 'metabase';
20
+ static authType = 'apikey';
21
+ static bubbleName = 'metabase';
22
+ static schema = MetabaseParamsSchema;
23
+ static resultSchema = MetabaseResultSchema;
24
+ static shortDescription = 'Metabase integration for dashboards, cards, and analytics queries';
25
+ static longDescription = `
26
+ Metabase service integration for business intelligence and analytics.
27
+
28
+ Features:
29
+ - Get dashboard metadata and dashcard list
30
+ - List all available dashboards
31
+ - Get card (saved question) metadata
32
+ - Execute card queries and retrieve parsed JSON results
33
+
34
+ Supports self-hosted Metabase instances with API key authentication.
35
+ `;
36
+ static alias = 'analytics';
37
+ constructor(params = {
38
+ operation: 'list_dashboards',
39
+ }, context) {
40
+ super(params, context);
41
+ }
42
+ async testCredential() {
43
+ // Test by listing dashboards (minimal API call)
44
+ const creds = this.getCredentials();
45
+ if (!creds)
46
+ return false;
47
+ const response = await this.makeMetabaseRequest(creds, '/api/dashboard/', 'GET');
48
+ if (!Array.isArray(response)) {
49
+ throw new Error('Metabase API returned an invalid response');
50
+ }
51
+ return true;
52
+ }
53
+ chooseCredential() {
54
+ const { credentials } = this.params;
55
+ if (!credentials || typeof credentials !== 'object')
56
+ return undefined;
57
+ return credentials[CredentialType.METABASE_CRED];
58
+ }
59
+ getCredentials() {
60
+ const rawCredential = this.chooseCredential();
61
+ if (!rawCredential)
62
+ return undefined;
63
+ return parseMetabaseCredential(rawCredential);
64
+ }
65
+ async performAction(_context) {
66
+ const { operation } = this.params;
67
+ try {
68
+ const result = await (async () => {
69
+ const p = this.params;
70
+ switch (p.operation) {
71
+ case 'get_dashboard':
72
+ return await this.getDashboard(p.dashboard_id);
73
+ case 'list_dashboards':
74
+ return await this.listDashboards();
75
+ case 'get_card':
76
+ return await this.getCard(p.card_id);
77
+ case 'query_card':
78
+ return await this.queryCard(p.card_id, p.parameters, p.pivot);
79
+ default:
80
+ throw new Error(`Unsupported operation: ${operation}`);
81
+ }
82
+ })();
83
+ return result;
84
+ }
85
+ catch (error) {
86
+ const errorMessage = error instanceof Error ? error.message : String(error);
87
+ return {
88
+ operation,
89
+ success: false,
90
+ error: errorMessage,
91
+ };
92
+ }
93
+ }
94
+ async getDashboard(dashboardId) {
95
+ const creds = this.getCredentials();
96
+ if (!creds) {
97
+ return {
98
+ operation: 'get_dashboard',
99
+ success: false,
100
+ error: 'Metabase credentials are required',
101
+ };
102
+ }
103
+ const data = await this.makeMetabaseRequest(creds, `/api/dashboard/${dashboardId}`, 'GET');
104
+ return {
105
+ operation: 'get_dashboard',
106
+ success: true,
107
+ error: '',
108
+ data: data,
109
+ };
110
+ }
111
+ async listDashboards() {
112
+ const creds = this.getCredentials();
113
+ if (!creds) {
114
+ return {
115
+ operation: 'list_dashboards',
116
+ success: false,
117
+ error: 'Metabase credentials are required',
118
+ };
119
+ }
120
+ const data = await this.makeMetabaseRequest(creds, '/api/dashboard/', 'GET');
121
+ const dashboards = Array.isArray(data) ? data : [];
122
+ return {
123
+ operation: 'list_dashboards',
124
+ success: true,
125
+ error: '',
126
+ data: {
127
+ dashboards: dashboards,
128
+ total: dashboards.length,
129
+ },
130
+ };
131
+ }
132
+ async getCard(cardId) {
133
+ const creds = this.getCredentials();
134
+ if (!creds) {
135
+ return {
136
+ operation: 'get_card',
137
+ success: false,
138
+ error: 'Metabase credentials are required',
139
+ };
140
+ }
141
+ const data = await this.makeMetabaseRequest(creds, `/api/card/${cardId}`, 'GET');
142
+ return {
143
+ operation: 'get_card',
144
+ success: true,
145
+ error: '',
146
+ data: data,
147
+ };
148
+ }
149
+ async queryCard(cardId, parameters, pivot) {
150
+ const creds = this.getCredentials();
151
+ if (!creds) {
152
+ return {
153
+ operation: 'query_card',
154
+ success: false,
155
+ error: 'Metabase credentials are required',
156
+ };
157
+ }
158
+ const body = parameters ? { parameters } : undefined;
159
+ const endpoint = pivot
160
+ ? `/api/card/pivot/${cardId}/query`
161
+ : `/api/card/${cardId}/query`;
162
+ const raw = (await this.makeMetabaseRequest(creds, endpoint, 'POST', body));
163
+ // Flatten: extract rows/cols from Metabase's nested data.data structure
164
+ const inner = raw.data ?? {};
165
+ return {
166
+ operation: 'query_card',
167
+ success: true,
168
+ error: '',
169
+ data: {
170
+ rows: inner.rows ?? [],
171
+ cols: inner.cols ?? [],
172
+ row_count: raw.row_count,
173
+ status: raw.status,
174
+ },
175
+ };
176
+ }
177
+ async makeMetabaseRequest(creds, endpoint, method = 'GET', body) {
178
+ const url = `${creds.url}${endpoint}`;
179
+ const headers = {
180
+ 'x-api-key': creds.apiKey,
181
+ 'Content-Type': 'application/json',
182
+ };
183
+ const options = {
184
+ method,
185
+ headers,
186
+ };
187
+ if (body && method === 'POST') {
188
+ options.body = JSON.stringify(body);
189
+ }
190
+ const response = await fetch(url, options);
191
+ if (!response.ok) {
192
+ let errorBody = '';
193
+ try {
194
+ const raw = await response.text();
195
+ // Try JSON first — Metabase often returns { message: "..." }
196
+ try {
197
+ const json = JSON.parse(raw);
198
+ errorBody = json.message || json.error || JSON.stringify(json);
199
+ }
200
+ catch {
201
+ // Strip HTML: remove script/style blocks entirely, then remaining tags
202
+ errorBody = raw.includes('<')
203
+ ? raw
204
+ .replace(/<script[\s\S]*?<\/script>/gi, '')
205
+ .replace(/<style[\s\S]*?<\/style>/gi, '')
206
+ .replace(/<[^>]*>/g, ' ')
207
+ .replace(/\s+/g, ' ')
208
+ .trim()
209
+ : raw;
210
+ }
211
+ }
212
+ catch {
213
+ // ignore parse error
214
+ }
215
+ const message = `Metabase API error (${response.status}): ${errorBody || response.statusText}`;
216
+ throw new Error(enhanceMetabaseErrorMessage(message, response.status));
217
+ }
218
+ return await response.json();
219
+ }
220
+ }
221
+ //# sourceMappingURL=metabase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metabase.js","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/metabase/metabase.ts"],"names":[],"mappings":"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"}