@bubblelab/bubble-core 0.1.278 → 0.1.281

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