@bubblelab/bubble-core 0.1.283 → 0.1.285

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 (86) hide show
  1. package/dist/bubble-bundle.d.ts +45 -25
  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/bubble-trigger/index.d.ts +2 -0
  6. package/dist/bubble-trigger/index.d.ts.map +1 -0
  7. package/dist/bubble-trigger/index.js +2 -0
  8. package/dist/bubble-trigger/index.js.map +1 -0
  9. package/dist/bubble-trigger/types.d.ts +87 -0
  10. package/dist/bubble-trigger/types.d.ts.map +1 -0
  11. package/dist/bubble-trigger/types.js +14 -0
  12. package/dist/bubble-trigger/types.js.map +1 -0
  13. package/dist/bubbles/service-bubble/clerk/clerk.d.ts +690 -0
  14. package/dist/bubbles/service-bubble/clerk/clerk.d.ts.map +1 -0
  15. package/dist/bubbles/service-bubble/clerk/clerk.js +573 -0
  16. package/dist/bubbles/service-bubble/clerk/clerk.js.map +1 -0
  17. package/dist/bubbles/service-bubble/clerk/clerk.schema.d.ts +653 -0
  18. package/dist/bubbles/service-bubble/clerk/clerk.schema.d.ts.map +1 -0
  19. package/dist/bubbles/service-bubble/clerk/clerk.schema.js +444 -0
  20. package/dist/bubbles/service-bubble/clerk/clerk.schema.js.map +1 -0
  21. package/dist/bubbles/service-bubble/clerk/index.d.ts +3 -0
  22. package/dist/bubbles/service-bubble/clerk/index.d.ts.map +1 -0
  23. package/dist/bubbles/service-bubble/clerk/index.js +3 -0
  24. package/dist/bubbles/service-bubble/clerk/index.js.map +1 -0
  25. package/dist/bubbles/service-bubble/google-sheets.d.ts +1811 -0
  26. package/dist/bubbles/service-bubble/google-sheets.d.ts.map +1 -0
  27. package/dist/bubbles/service-bubble/google-sheets.js +904 -0
  28. package/dist/bubbles/service-bubble/google-sheets.js.map +1 -0
  29. package/dist/bubbles/service-bubble/looker/index.d.ts +3 -0
  30. package/dist/bubbles/service-bubble/looker/index.d.ts.map +1 -0
  31. package/dist/bubbles/service-bubble/looker/index.js +3 -0
  32. package/dist/bubbles/service-bubble/looker/index.js.map +1 -0
  33. package/dist/bubbles/service-bubble/looker/looker.d.ts +768 -0
  34. package/dist/bubbles/service-bubble/looker/looker.d.ts.map +1 -0
  35. package/dist/bubbles/service-bubble/looker/looker.js +319 -0
  36. package/dist/bubbles/service-bubble/looker/looker.js.map +1 -0
  37. package/dist/bubbles/service-bubble/looker/looker.schema.d.ts +735 -0
  38. package/dist/bubbles/service-bubble/looker/looker.schema.d.ts.map +1 -0
  39. package/dist/bubbles/service-bubble/looker/looker.schema.js +264 -0
  40. package/dist/bubbles/service-bubble/looker/looker.schema.js.map +1 -0
  41. package/dist/bubbles/service-bubble/pylon/index.d.ts +3 -0
  42. package/dist/bubbles/service-bubble/pylon/index.d.ts.map +1 -0
  43. package/dist/bubbles/service-bubble/pylon/index.js +3 -0
  44. package/dist/bubbles/service-bubble/pylon/index.js.map +1 -0
  45. package/dist/bubbles/service-bubble/pylon/pylon.d.ts +435 -0
  46. package/dist/bubbles/service-bubble/pylon/pylon.d.ts.map +1 -0
  47. package/dist/bubbles/service-bubble/pylon/pylon.js +375 -0
  48. package/dist/bubbles/service-bubble/pylon/pylon.js.map +1 -0
  49. package/dist/bubbles/service-bubble/pylon/pylon.schema.d.ts +408 -0
  50. package/dist/bubbles/service-bubble/pylon/pylon.schema.d.ts.map +1 -0
  51. package/dist/bubbles/service-bubble/pylon/pylon.schema.js +249 -0
  52. package/dist/bubbles/service-bubble/pylon/pylon.schema.js.map +1 -0
  53. package/dist/bubbles/service-bubble/slack.d.ts +5869 -0
  54. package/dist/bubbles/service-bubble/slack.d.ts.map +1 -0
  55. package/dist/bubbles/service-bubble/slack.js +1536 -0
  56. package/dist/bubbles/service-bubble/slack.js.map +1 -0
  57. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.d.ts +3 -0
  58. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.d.ts.map +1 -0
  59. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.js +3 -0
  60. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.js.map +1 -0
  61. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.d.ts +160 -0
  62. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.d.ts.map +1 -0
  63. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.js +706 -0
  64. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.js.map +1 -0
  65. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.d.ts +93 -0
  66. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.d.ts.map +1 -0
  67. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.js +50 -0
  68. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.js.map +1 -0
  69. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts +114 -0
  70. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts.map +1 -0
  71. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js +777 -0
  72. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js.map +1 -0
  73. package/dist/bubbles.json +1337 -2
  74. package/dist/index.d.ts +1 -0
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +1 -0
  77. package/dist/index.js.map +1 -1
  78. package/dist/types/ai-models.d.ts +4 -0
  79. package/dist/types/ai-models.d.ts.map +1 -0
  80. package/dist/types/ai-models.js +16 -0
  81. package/dist/types/ai-models.js.map +1 -0
  82. package/dist/utils/param-helper.d.ts +2 -0
  83. package/dist/utils/param-helper.d.ts.map +1 -0
  84. package/dist/utils/param-helper.js +5 -0
  85. package/dist/utils/param-helper.js.map +1 -0
  86. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"looker.d.ts","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/looker/looker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EACL,cAAc,EAEf,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAIL,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAI5B;;;;;;GAMG;AACH,qBAAa,YAAY,CACvB,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,CAC/C,SAAQ,aAAa,CACrB,CAAC,EACD,OAAO,CAAC,YAAY,EAAE;IAAE,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,CAAA;CAAE,CAAC,CACrD;IACC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IAC1C,MAAM,CAAC,QAAQ,CAAC,OAAO,YAAY;IACnC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAG,OAAO,CAAU;IAC5C,MAAM,CAAC,QAAQ,CAAC,UAAU,YAAY;IACtC,MAAM,CAAC,QAAQ,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAAsB;IAC5C,MAAM,CAAC,QAAQ,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAAsB;IAClD,MAAM,CAAC,QAAQ,CAAC,gBAAgB,4EAC2C;IAC3E,MAAM,CAAC,QAAQ,CAAC,eAAe,0nBAc7B;IACF,MAAM,CAAC,QAAQ,CAAC,KAAK,MAAM;gBAGzB,MAAM,GAAE,CAGF,EACN,OAAO,CAAC,EAAE,aAAa;IAKZ,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAuB/C,OAAO,CAAC,gBAAgB;IA+BxB,SAAS,CAAC,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAKhD,OAAO,CAAC,UAAU;YAeJ,aAAa;cAwCX,aAAa,CAC3B,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE;QAAE,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,CAAA;KAAE,CAAC,CAAC;YAqDlD,cAAc;YAmCd,OAAO;YAmCP,YAAY;YAsCZ,UAAU;YA+BV,YAAY;YAoEZ,SAAS;YAwBT,cAAc;CAsB7B"}
@@ -0,0 +1,319 @@
1
+ import { ServiceBubble } from '../../../types/service-bubble-class.js';
2
+ import { CredentialType, decodeCredentialPayload, } from '@bubblelab/shared-schemas';
3
+ import { LookerParamsSchema, LookerResultSchema, } from './looker.schema.js';
4
+ const LOOKER_API_VERSION = '4.0';
5
+ /**
6
+ * Looker Analytics Service Bubble
7
+ *
8
+ * Looker integration for querying LookML models, pulling saved Looks and
9
+ * dashboard data via the Looker REST API v4.0. Uses Google OAuth for
10
+ * authentication since Looker is a Google Cloud product.
11
+ */
12
+ export class LookerBubble extends ServiceBubble {
13
+ static type = 'service';
14
+ static service = 'looker';
15
+ static authType = 'oauth';
16
+ static bubbleName = 'looker';
17
+ static schema = LookerParamsSchema;
18
+ static resultSchema = LookerResultSchema;
19
+ static shortDescription = 'Looker analytics integration for LookML queries, Looks, and dashboards';
20
+ static longDescription = `
21
+ Looker analytics integration for querying data models and pulling dashboard content.
22
+
23
+ Features:
24
+ - Run inline queries against LookML models/explores with fields, filters, and sorts
25
+ - Retrieve results from saved Looks by ID
26
+ - Fetch dashboard metadata, filters, and tile definitions
27
+ - Discover available LookML models and their explores
28
+ - List saved Looks and dashboards
29
+
30
+ Security Features:
31
+ - Google OAuth 2.0 authentication (Looker is a Google Cloud product)
32
+ - Instance-scoped access via per-client Looker URLs
33
+ - Secure credential handling with base64-encoded payloads
34
+ `;
35
+ static alias = '';
36
+ constructor(params = {
37
+ operation: 'list_models',
38
+ instance_url: '',
39
+ }, context) {
40
+ super(params, context);
41
+ }
42
+ async testCredential() {
43
+ const creds = this.parseCredentials();
44
+ if (!creds) {
45
+ throw new Error('Looker credentials are required');
46
+ }
47
+ const baseUrl = this.getBaseUrl();
48
+ const response = await fetch(`${baseUrl}/api/${LOOKER_API_VERSION}/user`, {
49
+ headers: {
50
+ Authorization: `Bearer ${creds.accessToken}`,
51
+ Accept: 'application/json',
52
+ },
53
+ });
54
+ if (!response.ok) {
55
+ const text = await response.text();
56
+ throw new Error(`Looker API error (${response.status}): ${text}`);
57
+ }
58
+ return true;
59
+ }
60
+ parseCredentials() {
61
+ const { credentials } = this.params;
62
+ if (!credentials || typeof credentials !== 'object') {
63
+ return null;
64
+ }
65
+ const raw = credentials[CredentialType.LOOKER_CRED];
66
+ if (!raw) {
67
+ return null;
68
+ }
69
+ try {
70
+ const parsed = decodeCredentialPayload(raw);
71
+ if (parsed.accessToken) {
72
+ return { accessToken: parsed.accessToken };
73
+ }
74
+ }
75
+ catch {
76
+ // If decoding fails, treat the raw value as an access token (validator path)
77
+ }
78
+ return { accessToken: raw };
79
+ }
80
+ chooseCredential() {
81
+ const creds = this.parseCredentials();
82
+ return creds?.accessToken;
83
+ }
84
+ getBaseUrl() {
85
+ const p = this.params;
86
+ let url = p.instance_url || '';
87
+ // Strip trailing slashes and /api paths
88
+ url = url.replace(/\/+$/, '').replace(/\/api\/.*$/, '');
89
+ // Ensure https:// prefix
90
+ if (!url.startsWith('http://') && !url.startsWith('https://')) {
91
+ url = `https://${url}`;
92
+ }
93
+ return url;
94
+ }
95
+ async lookerRequest(endpoint, method = 'GET', body) {
96
+ const creds = this.parseCredentials();
97
+ if (!creds) {
98
+ throw new Error('Looker credentials are required');
99
+ }
100
+ const baseUrl = this.getBaseUrl();
101
+ const url = `${baseUrl}/api/${LOOKER_API_VERSION}${endpoint}`;
102
+ const init = {
103
+ method,
104
+ headers: {
105
+ Authorization: `Bearer ${creds.accessToken}`,
106
+ 'Content-Type': 'application/json',
107
+ Accept: 'application/json',
108
+ },
109
+ };
110
+ if (body && method !== 'GET') {
111
+ init.body = JSON.stringify(body);
112
+ }
113
+ const response = await fetch(url, init);
114
+ if (!response.ok) {
115
+ const errorText = await response.text();
116
+ throw new Error(`Looker API error (${response.status}): ${errorText}`);
117
+ }
118
+ if (response.status === 204) {
119
+ return undefined;
120
+ }
121
+ return await response.json();
122
+ }
123
+ async performAction(context) {
124
+ void context;
125
+ const { operation } = this.params;
126
+ try {
127
+ const result = await (async () => {
128
+ const p = this.params;
129
+ switch (operation) {
130
+ case 'run_inline_query':
131
+ return await this.runInlineQuery(p);
132
+ case 'get_look':
133
+ return await this.getLook(p);
134
+ case 'get_dashboard':
135
+ return await this.getDashboard(p);
136
+ case 'list_models':
137
+ return await this.listModels();
138
+ case 'list_explores':
139
+ return await this.listExplores(p);
140
+ case 'list_looks':
141
+ return await this.listLooks(p);
142
+ case 'list_dashboards':
143
+ return await this.listDashboards(p);
144
+ default:
145
+ throw new Error(`Unsupported operation: ${operation}`);
146
+ }
147
+ })();
148
+ return result;
149
+ }
150
+ catch (error) {
151
+ return {
152
+ operation,
153
+ success: false,
154
+ error: error instanceof Error ? error.message : 'Unknown error occurred',
155
+ };
156
+ }
157
+ }
158
+ // --- Operation Implementations ---
159
+ async runInlineQuery(params) {
160
+ const { model, explore, fields, filters, sorts, limit } = params;
161
+ const queryBody = {
162
+ model,
163
+ view: explore,
164
+ fields,
165
+ limit: String(limit),
166
+ };
167
+ if (filters && Object.keys(filters).length > 0) {
168
+ queryBody.filters = filters;
169
+ }
170
+ if (sorts && sorts.length > 0) {
171
+ queryBody.sorts = sorts;
172
+ }
173
+ const data = (await this.lookerRequest('/queries/run/json', 'POST', queryBody));
174
+ return {
175
+ operation: 'run_inline_query',
176
+ success: true,
177
+ data,
178
+ rowCount: data.length,
179
+ error: '',
180
+ };
181
+ }
182
+ async getLook(params) {
183
+ const { look_id, limit, result_format } = params;
184
+ // Get the Look metadata
185
+ const lookMeta = (await this.lookerRequest(`/looks/${look_id}`));
186
+ // Run the Look to get results
187
+ const data = (await this.lookerRequest(`/looks/${look_id}/run/${result_format}?limit=${limit}`));
188
+ return {
189
+ operation: 'get_look',
190
+ success: true,
191
+ data,
192
+ look: {
193
+ id: look_id,
194
+ title: lookMeta.title,
195
+ description: lookMeta.description,
196
+ model: lookMeta.model,
197
+ space: lookMeta.space,
198
+ },
199
+ rowCount: data.length,
200
+ error: '',
201
+ };
202
+ }
203
+ async getDashboard(params) {
204
+ const { dashboard_id } = params;
205
+ const dashboard = (await this.lookerRequest(`/dashboards/${dashboard_id}`));
206
+ return {
207
+ operation: 'get_dashboard',
208
+ success: true,
209
+ dashboard: {
210
+ id: String(dashboard.id),
211
+ title: dashboard.title,
212
+ description: dashboard.description,
213
+ dashboard_filters: dashboard.dashboard_filters,
214
+ dashboard_elements: dashboard.dashboard_elements,
215
+ },
216
+ error: '',
217
+ };
218
+ }
219
+ async listModels() {
220
+ const models = (await this.lookerRequest('/lookml_models'));
221
+ return {
222
+ operation: 'list_models',
223
+ success: true,
224
+ models: models.map((m) => ({
225
+ name: m.name,
226
+ label: m.label,
227
+ explores: m.explores?.map((e) => ({
228
+ name: e.name,
229
+ label: e.label,
230
+ description: e.description,
231
+ })),
232
+ })),
233
+ error: '',
234
+ };
235
+ }
236
+ async listExplores(params) {
237
+ const { model } = params;
238
+ const modelData = (await this.lookerRequest(`/lookml_models/${model}`));
239
+ const explores = modelData.explores || [];
240
+ // Fetch detailed field info for each explore
241
+ const detailedExplores = await Promise.all(explores.map(async (e) => {
242
+ const exploreName = e.name;
243
+ try {
244
+ const detail = (await this.lookerRequest(`/lookml_models/${model}/explores/${exploreName}`));
245
+ const fields = detail.fields;
246
+ return {
247
+ name: exploreName,
248
+ label: (detail.label || e.label),
249
+ description: (detail.description || e.description),
250
+ fields: fields
251
+ ? {
252
+ dimensions: fields.dimensions?.map((d) => ({
253
+ name: d.name,
254
+ label: d.label,
255
+ type: d.type,
256
+ description: d.description,
257
+ })),
258
+ measures: fields.measures?.map((m) => ({
259
+ name: m.name,
260
+ label: m.label,
261
+ type: m.type,
262
+ description: m.description,
263
+ })),
264
+ }
265
+ : undefined,
266
+ };
267
+ }
268
+ catch {
269
+ // If detail fetch fails, return basic info
270
+ return {
271
+ name: exploreName,
272
+ label: e.label,
273
+ description: e.description,
274
+ };
275
+ }
276
+ }));
277
+ return {
278
+ operation: 'list_explores',
279
+ success: true,
280
+ explores: detailedExplores,
281
+ model,
282
+ error: '',
283
+ };
284
+ }
285
+ async listLooks(params) {
286
+ const { limit } = params;
287
+ const looks = (await this.lookerRequest(`/looks?limit=${limit}`));
288
+ return {
289
+ operation: 'list_looks',
290
+ success: true,
291
+ looks: looks.map((l) => ({
292
+ id: l.id,
293
+ title: l.title,
294
+ description: l.description,
295
+ model: l.model,
296
+ space: l.space,
297
+ })),
298
+ totalCount: looks.length,
299
+ error: '',
300
+ };
301
+ }
302
+ async listDashboards(params) {
303
+ const { limit } = params;
304
+ const dashboards = (await this.lookerRequest(`/dashboards?limit=${limit}`));
305
+ return {
306
+ operation: 'list_dashboards',
307
+ success: true,
308
+ dashboards: dashboards.map((d) => ({
309
+ id: String(d.id),
310
+ title: d.title,
311
+ description: d.description,
312
+ folder: d.folder,
313
+ })),
314
+ totalCount: dashboards.length,
315
+ error: '',
316
+ };
317
+ }
318
+ }
319
+ //# sourceMappingURL=looker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"looker.js","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/looker/looker.ts"],"names":[],"mappings":"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"}