@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.schema.d.ts","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/looker/looker.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAwB3D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAyH7B,CAAC;AAkHH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiD7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC/D,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACnE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
@@ -0,0 +1,264 @@
1
+ import { z } from 'zod';
2
+ import { CredentialType } from '@bubblelab/shared-schemas';
3
+ // Shared field helpers
4
+ const credentialsField = z
5
+ .record(z.nativeEnum(CredentialType), z.string())
6
+ .optional()
7
+ .describe('Object mapping credential types to values (injected at runtime)');
8
+ const instanceUrlField = z
9
+ .string()
10
+ .min(1, 'Looker instance URL is required')
11
+ .describe('Looker instance URL (e.g. "mycompany.cloud.looker.com" or "https://mycompany.cloud.looker.com"). Do not include /api/4.0/');
12
+ const limitField = z
13
+ .number()
14
+ .min(1)
15
+ .max(5000)
16
+ .optional()
17
+ .default(500)
18
+ .describe('Maximum number of results to return (1-5000, default 500)');
19
+ // Parameter schema using discriminated union
20
+ export const LookerParamsSchema = z.discriminatedUnion('operation', [
21
+ // Run inline query against a LookML model/explore
22
+ z.object({
23
+ operation: z
24
+ .literal('run_inline_query')
25
+ .describe('Run a query against a LookML model/explore with specified fields, filters, and sorts'),
26
+ instance_url: instanceUrlField,
27
+ model: z
28
+ .string()
29
+ .min(1)
30
+ .describe('LookML model name to query (e.g. "ecommerce", "marketing_analytics")'),
31
+ explore: z
32
+ .string()
33
+ .min(1)
34
+ .describe('Explore name within the model (e.g. "orders", "users", "sessions")'),
35
+ fields: z
36
+ .array(z.string())
37
+ .min(1)
38
+ .describe('List of field names to include in the query (e.g. ["orders.count", "users.city", "orders.total_revenue"])'),
39
+ filters: z
40
+ .record(z.string(), z.string())
41
+ .optional()
42
+ .describe('Filters to apply as key-value pairs (e.g. {"orders.created_date": "last 7 days", "users.country": "USA"})'),
43
+ sorts: z
44
+ .array(z.string())
45
+ .optional()
46
+ .describe('Sort order for results (e.g. ["orders.count desc", "users.city asc"])'),
47
+ limit: limitField,
48
+ credentials: credentialsField,
49
+ }),
50
+ // Get results from a saved Look
51
+ z.object({
52
+ operation: z
53
+ .literal('get_look')
54
+ .describe('Fetch results from a saved Look by its ID'),
55
+ instance_url: instanceUrlField,
56
+ look_id: z
57
+ .number()
58
+ .describe('Numeric ID of the saved Look to retrieve results from'),
59
+ limit: limitField,
60
+ result_format: z
61
+ .enum(['json', 'csv', 'txt'])
62
+ .optional()
63
+ .default('json')
64
+ .describe('Format for the results (default: json)'),
65
+ credentials: credentialsField,
66
+ }),
67
+ // Get dashboard metadata and tile results
68
+ z.object({
69
+ operation: z
70
+ .literal('get_dashboard')
71
+ .describe('Fetch dashboard metadata including title, description, filters, and tile definitions'),
72
+ instance_url: instanceUrlField,
73
+ dashboard_id: z
74
+ .string()
75
+ .min(1)
76
+ .describe('Dashboard ID (numeric string or slug, e.g. "42" or "sales::quarterly_review")'),
77
+ credentials: credentialsField,
78
+ }),
79
+ // List available LookML models
80
+ z.object({
81
+ operation: z
82
+ .literal('list_models')
83
+ .describe('List all available LookML models on this Looker instance'),
84
+ instance_url: instanceUrlField,
85
+ credentials: credentialsField,
86
+ }),
87
+ // List explores within a model
88
+ z.object({
89
+ operation: z
90
+ .literal('list_explores')
91
+ .describe('List all explores available within a specific LookML model, including their fields and descriptions'),
92
+ instance_url: instanceUrlField,
93
+ model: z
94
+ .string()
95
+ .min(1)
96
+ .describe('LookML model name to list explores for'),
97
+ credentials: credentialsField,
98
+ }),
99
+ // List saved Looks
100
+ z.object({
101
+ operation: z
102
+ .literal('list_looks')
103
+ .describe('List saved Looks accessible to the authenticated user'),
104
+ instance_url: instanceUrlField,
105
+ limit: limitField,
106
+ credentials: credentialsField,
107
+ }),
108
+ // List dashboards
109
+ z.object({
110
+ operation: z
111
+ .literal('list_dashboards')
112
+ .describe('List dashboards accessible to the authenticated user'),
113
+ instance_url: instanceUrlField,
114
+ limit: limitField,
115
+ credentials: credentialsField,
116
+ }),
117
+ ]);
118
+ // Flexible record for Looker data rows
119
+ const LookerRecordSchema = z
120
+ .record(z.string(), z.unknown())
121
+ .describe('A data row from a Looker query result');
122
+ // Model summary
123
+ const LookerModelSchema = z.object({
124
+ name: z.string(),
125
+ label: z.string().optional(),
126
+ explores: z
127
+ .array(z.object({
128
+ name: z.string(),
129
+ label: z.string().optional(),
130
+ description: z.string().optional(),
131
+ }))
132
+ .optional(),
133
+ });
134
+ // Explore detail
135
+ const LookerExploreSchema = z.object({
136
+ name: z.string(),
137
+ label: z.string().optional(),
138
+ description: z.string().optional(),
139
+ fields: z
140
+ .object({
141
+ dimensions: z
142
+ .array(z.object({
143
+ name: z.string(),
144
+ label: z.string().optional(),
145
+ type: z.string().optional(),
146
+ description: z.string().optional(),
147
+ }))
148
+ .optional(),
149
+ measures: z
150
+ .array(z.object({
151
+ name: z.string(),
152
+ label: z.string().optional(),
153
+ type: z.string().optional(),
154
+ description: z.string().optional(),
155
+ }))
156
+ .optional(),
157
+ })
158
+ .optional(),
159
+ });
160
+ // Look summary
161
+ const LookerLookSchema = z.object({
162
+ id: z.number(),
163
+ title: z.string().optional(),
164
+ description: z.string().optional(),
165
+ model: z
166
+ .object({
167
+ id: z.string().optional(),
168
+ label: z.string().optional(),
169
+ })
170
+ .optional(),
171
+ space: z
172
+ .object({
173
+ id: z.string().optional(),
174
+ name: z.string().optional(),
175
+ })
176
+ .optional(),
177
+ });
178
+ // Dashboard summary
179
+ const LookerDashboardSummarySchema = z.object({
180
+ id: z.string(),
181
+ title: z.string().optional(),
182
+ description: z.string().optional(),
183
+ folder: z
184
+ .object({
185
+ id: z.string().optional(),
186
+ name: z.string().optional(),
187
+ })
188
+ .optional(),
189
+ });
190
+ // Dashboard detail
191
+ const LookerDashboardDetailSchema = z.object({
192
+ id: z.string(),
193
+ title: z.string().optional(),
194
+ description: z.string().optional(),
195
+ dashboard_filters: z
196
+ .array(z.object({
197
+ name: z.string().optional(),
198
+ title: z.string().optional(),
199
+ type: z.string().optional(),
200
+ default_value: z.string().optional(),
201
+ }))
202
+ .optional(),
203
+ dashboard_elements: z
204
+ .array(z.object({
205
+ id: z.string().optional(),
206
+ title: z.string().optional(),
207
+ type: z.string().optional(),
208
+ look_id: z.number().optional(),
209
+ query: z.record(z.string(), z.unknown()).optional(),
210
+ }))
211
+ .optional(),
212
+ });
213
+ // Result schema
214
+ export const LookerResultSchema = z.discriminatedUnion('operation', [
215
+ z.object({
216
+ operation: z.literal('run_inline_query'),
217
+ success: z.boolean(),
218
+ data: z.array(LookerRecordSchema).optional(),
219
+ rowCount: z.number().optional(),
220
+ error: z.string(),
221
+ }),
222
+ z.object({
223
+ operation: z.literal('get_look'),
224
+ success: z.boolean(),
225
+ data: z.array(LookerRecordSchema).optional(),
226
+ look: LookerLookSchema.optional(),
227
+ rowCount: z.number().optional(),
228
+ error: z.string(),
229
+ }),
230
+ z.object({
231
+ operation: z.literal('get_dashboard'),
232
+ success: z.boolean(),
233
+ dashboard: LookerDashboardDetailSchema.optional(),
234
+ error: z.string(),
235
+ }),
236
+ z.object({
237
+ operation: z.literal('list_models'),
238
+ success: z.boolean(),
239
+ models: z.array(LookerModelSchema).optional(),
240
+ error: z.string(),
241
+ }),
242
+ z.object({
243
+ operation: z.literal('list_explores'),
244
+ success: z.boolean(),
245
+ explores: z.array(LookerExploreSchema).optional(),
246
+ model: z.string().optional(),
247
+ error: z.string(),
248
+ }),
249
+ z.object({
250
+ operation: z.literal('list_looks'),
251
+ success: z.boolean(),
252
+ looks: z.array(LookerLookSchema).optional(),
253
+ totalCount: z.number().optional(),
254
+ error: z.string(),
255
+ }),
256
+ z.object({
257
+ operation: z.literal('list_dashboards'),
258
+ success: z.boolean(),
259
+ dashboards: z.array(LookerDashboardSummarySchema).optional(),
260
+ totalCount: z.number().optional(),
261
+ error: z.string(),
262
+ }),
263
+ ]);
264
+ //# sourceMappingURL=looker.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"looker.schema.js","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/looker/looker.schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { MetabaseBubble } from './metabase.js';
2
+ export { MetabaseParamsSchema, MetabaseResultSchema, MetabaseDashboardSchema, MetabaseDashcardSchema, MetabaseDashboardListItemSchema, MetabaseCardSchema, MetabaseQueryResultSchema, type MetabaseParams, type MetabaseParamsInput, type MetabaseResult, } from './metabase.schema.js';
3
+ export { parseMetabaseCredential, enhanceMetabaseErrorMessage, type MetabaseCredentials, } from './metabase.utils.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/metabase/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,+BAA+B,EAC/B,kBAAkB,EAClB,yBAAyB,EACzB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,cAAc,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAC3B,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { MetabaseBubble } from './metabase.js';
2
+ export { MetabaseParamsSchema, MetabaseResultSchema, MetabaseDashboardSchema, MetabaseDashcardSchema, MetabaseDashboardListItemSchema, MetabaseCardSchema, MetabaseQueryResultSchema, } from './metabase.schema.js';
3
+ export { parseMetabaseCredential, enhanceMetabaseErrorMessage, } from './metabase.utils.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/bubbles/service-bubble/metabase/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,+BAA+B,EAC/B,kBAAkB,EAClB,yBAAyB,GAI1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,uBAAuB,EACvB,2BAA2B,GAE5B,MAAM,qBAAqB,CAAC"}