@bubblelab/bubble-core 0.1.267 → 0.1.269

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 (154) hide show
  1. package/dist/bubble-bundle.d.ts +127 -127
  2. package/dist/bubbles/service-bubble/agi-inc.d.ts +20 -20
  3. package/dist/bubbles/service-bubble/ai-agent.d.ts +74 -74
  4. package/dist/bubbles/service-bubble/airtable.d.ts +76 -76
  5. package/dist/bubbles/service-bubble/apify/actors/app-rankings-scraper.d.ts +6 -6
  6. package/dist/bubbles/service-bubble/apify/actors/instagram-hashtag-scraper.d.ts +2 -2
  7. package/dist/bubbles/service-bubble/apify/actors/instagram-scraper.d.ts +8 -8
  8. package/dist/bubbles/service-bubble/apify/actors/linkedin-jobs-scraper.d.ts +2 -2
  9. package/dist/bubbles/service-bubble/apify/actors/linkedin-posts-search.d.ts +22 -22
  10. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-detail.d.ts +38 -38
  11. package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-posts.d.ts +52 -52
  12. package/dist/bubbles/service-bubble/apify/actors/tiktok-scraper.d.ts +6 -6
  13. package/dist/bubbles/service-bubble/apify/actors/twitter-scraper.d.ts +12 -12
  14. package/dist/bubbles/service-bubble/apify/actors/youtube-scraper.d.ts +12 -12
  15. package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts +132 -132
  16. package/dist/bubbles/service-bubble/apify/apify.d.ts +18 -18
  17. package/dist/bubbles/service-bubble/asana/asana.d.ts +1 -1
  18. package/dist/bubbles/service-bubble/asana/asana.schema.d.ts +1 -1
  19. package/dist/bubbles/service-bubble/ashby/ashby.d.ts +16 -16
  20. package/dist/bubbles/service-bubble/ashby/ashby.schema.d.ts +22 -22
  21. package/dist/bubbles/service-bubble/assembled/assembled.d.ts +6 -6
  22. package/dist/bubbles/service-bubble/assembled/assembled.schema.d.ts +6 -6
  23. package/dist/bubbles/service-bubble/attio/attio.d.ts +6 -6
  24. package/dist/bubbles/service-bubble/attio/attio.schema.d.ts +6 -6
  25. package/dist/bubbles/service-bubble/browserbase/browserbase.d.ts +1 -1
  26. package/dist/bubbles/service-bubble/browserbase/browserbase.schema.d.ts +1 -1
  27. package/dist/bubbles/service-bubble/crustdata/crustdata.d.ts +4 -4
  28. package/dist/bubbles/service-bubble/crustdata/crustdata.schema.d.ts +8 -8
  29. package/dist/bubbles/service-bubble/discord/discord.d.ts +12 -12
  30. package/dist/bubbles/service-bubble/discord/discord.schema.d.ts +12 -12
  31. package/dist/bubbles/service-bubble/firecrawl.d.ts +330 -330
  32. package/dist/bubbles/service-bubble/followupboss.d.ts +4 -4
  33. package/dist/bubbles/service-bubble/github.d.ts +60 -60
  34. package/dist/bubbles/service-bubble/gmail.d.ts +164 -164
  35. package/dist/bubbles/service-bubble/google-calendar.d.ts +6 -6
  36. package/dist/bubbles/service-bubble/google-drive.d.ts +4 -4
  37. package/dist/bubbles/service-bubble/http.d.ts +6 -6
  38. package/dist/bubbles/service-bubble/hubspot/hubspot.d.ts +2 -2
  39. package/dist/bubbles/service-bubble/hubspot/hubspot.schema.d.ts +2 -2
  40. package/dist/bubbles/service-bubble/insforge-db.d.ts +8 -8
  41. package/dist/bubbles/service-bubble/jira/jira.d.ts +30 -30
  42. package/dist/bubbles/service-bubble/jira/jira.schema.d.ts +36 -36
  43. package/dist/bubbles/service-bubble/notion/notion.d.ts +168 -168
  44. package/dist/bubbles/service-bubble/notion/property-schemas.d.ts +16 -16
  45. package/dist/bubbles/service-bubble/postgresql.d.ts +8 -8
  46. package/dist/bubbles/service-bubble/posthog/posthog.d.ts +10 -10
  47. package/dist/bubbles/service-bubble/posthog/posthog.schema.d.ts +14 -14
  48. package/dist/bubbles/service-bubble/resend.d.ts +4 -4
  49. package/dist/bubbles/service-bubble/slack/slack.d.ts +388 -388
  50. package/dist/bubbles/service-bubble/snowflake/snowflake.d.ts +4 -4
  51. package/dist/bubbles/service-bubble/snowflake/snowflake.schema.d.ts +4 -4
  52. package/dist/bubbles/service-bubble/stripe/stripe.d.ts +24 -24
  53. package/dist/bubbles/service-bubble/stripe/stripe.schema.d.ts +28 -28
  54. package/dist/bubbles/service-bubble/xero/xero.d.ts +2 -2
  55. package/dist/bubbles/service-bubble/xero/xero.schema.d.ts +2 -2
  56. package/dist/bubbles/service-bubble/zendesk/zendesk.d.ts +20 -20
  57. package/dist/bubbles/service-bubble/zendesk/zendesk.schema.d.ts +20 -20
  58. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.d.ts +6 -6
  59. package/dist/bubbles/tool-bubble/amazon-shopping-tool/amazon-shopping-tool.schema.d.ts +8 -8
  60. package/dist/bubbles/tool-bubble/app-rankings-tool.d.ts +8 -8
  61. package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +4 -4
  62. package/dist/bubbles/tool-bubble/chart-js-tool.d.ts +4 -4
  63. package/dist/bubbles/tool-bubble/company-enrichment-tool.d.ts +20 -20
  64. package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +384 -384
  65. package/dist/bubbles/tool-bubble/people-search-tool.d.ts +44 -44
  66. package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +10 -10
  67. package/dist/bubbles/tool-bubble/research-agent-tool.d.ts +4 -4
  68. package/dist/bubbles/tool-bubble/sql-query-tool.d.ts +4 -4
  69. package/dist/bubbles/tool-bubble/tiktok-tool.d.ts +60 -60
  70. package/dist/bubbles/tool-bubble/twitter-tool.d.ts +134 -134
  71. package/dist/bubbles/tool-bubble/yc-scraper-tool.d.ts +8 -8
  72. package/dist/bubbles/tool-bubble/youtube-tool.d.ts +20 -20
  73. package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts +12 -12
  74. package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +8 -8
  75. package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +2 -2
  76. package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +34 -34
  77. package/dist/bubbles.json +1 -1
  78. package/package.json +2 -2
  79. package/dist/bubble-trigger/index.d.ts +0 -2
  80. package/dist/bubble-trigger/index.d.ts.map +0 -1
  81. package/dist/bubble-trigger/index.js +0 -2
  82. package/dist/bubble-trigger/index.js.map +0 -1
  83. package/dist/bubble-trigger/types.d.ts +0 -87
  84. package/dist/bubble-trigger/types.d.ts.map +0 -1
  85. package/dist/bubble-trigger/types.js +0 -14
  86. package/dist/bubble-trigger/types.js.map +0 -1
  87. package/dist/bubbles/service-bubble/docusign/docusign.d.ts +0 -1101
  88. package/dist/bubbles/service-bubble/docusign/docusign.d.ts.map +0 -1
  89. package/dist/bubbles/service-bubble/docusign/docusign.js +0 -730
  90. package/dist/bubbles/service-bubble/docusign/docusign.js.map +0 -1
  91. package/dist/bubbles/service-bubble/docusign/docusign.schema.d.ts +0 -1035
  92. package/dist/bubbles/service-bubble/docusign/docusign.schema.d.ts.map +0 -1
  93. package/dist/bubbles/service-bubble/docusign/docusign.schema.js +0 -304
  94. package/dist/bubbles/service-bubble/docusign/docusign.schema.js.map +0 -1
  95. package/dist/bubbles/service-bubble/docusign/index.d.ts +0 -4
  96. package/dist/bubbles/service-bubble/docusign/index.d.ts.map +0 -1
  97. package/dist/bubbles/service-bubble/docusign/index.js +0 -3
  98. package/dist/bubbles/service-bubble/docusign/index.js.map +0 -1
  99. package/dist/bubbles/service-bubble/google-sheets.d.ts +0 -1811
  100. package/dist/bubbles/service-bubble/google-sheets.d.ts.map +0 -1
  101. package/dist/bubbles/service-bubble/google-sheets.js +0 -904
  102. package/dist/bubbles/service-bubble/google-sheets.js.map +0 -1
  103. package/dist/bubbles/service-bubble/looker/index.d.ts +0 -3
  104. package/dist/bubbles/service-bubble/looker/index.d.ts.map +0 -1
  105. package/dist/bubbles/service-bubble/looker/index.js +0 -3
  106. package/dist/bubbles/service-bubble/looker/index.js.map +0 -1
  107. package/dist/bubbles/service-bubble/looker/looker.d.ts +0 -768
  108. package/dist/bubbles/service-bubble/looker/looker.d.ts.map +0 -1
  109. package/dist/bubbles/service-bubble/looker/looker.js +0 -319
  110. package/dist/bubbles/service-bubble/looker/looker.js.map +0 -1
  111. package/dist/bubbles/service-bubble/looker/looker.schema.d.ts +0 -735
  112. package/dist/bubbles/service-bubble/looker/looker.schema.d.ts.map +0 -1
  113. package/dist/bubbles/service-bubble/looker/looker.schema.js +0 -264
  114. package/dist/bubbles/service-bubble/looker/looker.schema.js.map +0 -1
  115. package/dist/bubbles/service-bubble/pylon/index.d.ts +0 -3
  116. package/dist/bubbles/service-bubble/pylon/index.d.ts.map +0 -1
  117. package/dist/bubbles/service-bubble/pylon/index.js +0 -3
  118. package/dist/bubbles/service-bubble/pylon/index.js.map +0 -1
  119. package/dist/bubbles/service-bubble/pylon/pylon.d.ts +0 -435
  120. package/dist/bubbles/service-bubble/pylon/pylon.d.ts.map +0 -1
  121. package/dist/bubbles/service-bubble/pylon/pylon.js +0 -375
  122. package/dist/bubbles/service-bubble/pylon/pylon.js.map +0 -1
  123. package/dist/bubbles/service-bubble/pylon/pylon.schema.d.ts +0 -408
  124. package/dist/bubbles/service-bubble/pylon/pylon.schema.d.ts.map +0 -1
  125. package/dist/bubbles/service-bubble/pylon/pylon.schema.js +0 -249
  126. package/dist/bubbles/service-bubble/pylon/pylon.schema.js.map +0 -1
  127. package/dist/bubbles/service-bubble/slack.d.ts +0 -5869
  128. package/dist/bubbles/service-bubble/slack.d.ts.map +0 -1
  129. package/dist/bubbles/service-bubble/slack.js +0 -1536
  130. package/dist/bubbles/service-bubble/slack.js.map +0 -1
  131. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.d.ts +0 -3
  132. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.d.ts.map +0 -1
  133. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.js +0 -3
  134. package/dist/bubbles/tool-bubble/linkedin-connection-tool/index.js.map +0 -1
  135. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.d.ts +0 -160
  136. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.d.ts.map +0 -1
  137. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.js +0 -706
  138. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.js.map +0 -1
  139. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.d.ts +0 -93
  140. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.d.ts.map +0 -1
  141. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.js +0 -50
  142. package/dist/bubbles/tool-bubble/linkedin-connection-tool/linkedin-connection-tool.schema.js.map +0 -1
  143. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts +0 -114
  144. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts.map +0 -1
  145. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js +0 -777
  146. package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js.map +0 -1
  147. package/dist/types/ai-models.d.ts +0 -4
  148. package/dist/types/ai-models.d.ts.map +0 -1
  149. package/dist/types/ai-models.js +0 -16
  150. package/dist/types/ai-models.js.map +0 -1
  151. package/dist/utils/param-helper.d.ts +0 -2
  152. package/dist/utils/param-helper.d.ts.map +0 -1
  153. package/dist/utils/param-helper.js +0 -5
  154. package/dist/utils/param-helper.js.map +0 -1
@@ -1 +0,0 @@
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"}
@@ -1,319 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"looker.js","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/looker/looker.ts"],"names":[],"mappings":"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"}