@lightdash/cli 2.561.0 → 2.563.0

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 (176) hide show
  1. package/dist/.tsbuildinfo.build +1 -1
  2. package/dist/agentConnectionConnectOption.d.ts +8 -0
  3. package/dist/agentConnectionConnectOption.d.ts.map +1 -0
  4. package/dist/agentConnectionConnectOption.js +39 -0
  5. package/dist/agentConnectionOption.d.ts +3 -0
  6. package/dist/agentConnectionOption.d.ts.map +1 -0
  7. package/dist/agentConnectionOption.js +48 -0
  8. package/dist/agentConnections/agentTokenProvider.d.ts +13 -0
  9. package/dist/agentConnections/agentTokenProvider.d.ts.map +1 -0
  10. package/dist/agentConnections/agentTokenProvider.js +294 -0
  11. package/dist/agentConnections/apiUrl.d.ts +4 -0
  12. package/dist/agentConnections/apiUrl.d.ts.map +1 -0
  13. package/dist/agentConnections/apiUrl.js +37 -0
  14. package/dist/agentConnections/commandPolicy.d.ts +14 -0
  15. package/dist/agentConnections/commandPolicy.d.ts.map +1 -0
  16. package/dist/agentConnections/commandPolicy.js +108 -0
  17. package/dist/agentConnections/configLock.d.ts +12 -0
  18. package/dist/agentConnections/configLock.d.ts.map +1 -0
  19. package/dist/agentConnections/configLock.js +191 -0
  20. package/dist/agentConnections/connectInputs.d.ts +20 -0
  21. package/dist/agentConnections/connectInputs.d.ts.map +1 -0
  22. package/dist/agentConnections/connectInputs.js +49 -0
  23. package/dist/agentConnections/fixtures.d.ts +3 -0
  24. package/dist/agentConnections/fixtures.d.ts.map +1 -0
  25. package/dist/agentConnections/fixtures.js +36 -0
  26. package/dist/agentConnections/initialToken.d.ts +26 -0
  27. package/dist/agentConnections/initialToken.d.ts.map +1 -0
  28. package/dist/agentConnections/initialToken.js +93 -0
  29. package/dist/agentConnections/lifecycle.d.ts +17 -0
  30. package/dist/agentConnections/lifecycle.d.ts.map +1 -0
  31. package/dist/agentConnections/lifecycle.js +44 -0
  32. package/dist/agentConnections/personalRecovery.d.ts +27 -0
  33. package/dist/agentConnections/personalRecovery.d.ts.map +1 -0
  34. package/dist/agentConnections/personalRecovery.js +71 -0
  35. package/dist/agentConnections/projectSelection.d.ts +4 -0
  36. package/dist/agentConnections/projectSelection.d.ts.map +1 -0
  37. package/dist/agentConnections/projectSelection.js +48 -0
  38. package/dist/agentConnections/providerProcess.fixture.d.ts +2 -0
  39. package/dist/agentConnections/providerProcess.fixture.d.ts.map +1 -0
  40. package/dist/agentConnections/providerProcess.fixture.js +19 -0
  41. package/dist/agentConnections/requestPolicy.d.ts +11 -0
  42. package/dist/agentConnections/requestPolicy.d.ts.map +1 -0
  43. package/dist/agentConnections/requestPolicy.js +76 -0
  44. package/dist/agentConnections/schema.d.ts +66 -0
  45. package/dist/agentConnections/schema.d.ts.map +1 -0
  46. package/dist/agentConnections/schema.js +184 -0
  47. package/dist/agentConnections/statusResponse.d.ts +10 -0
  48. package/dist/agentConnections/statusResponse.d.ts.map +1 -0
  49. package/dist/agentConnections/statusResponse.js +146 -0
  50. package/dist/agentConnections/store.d.ts +36 -0
  51. package/dist/agentConnections/store.d.ts.map +1 -0
  52. package/dist/agentConnections/store.js +275 -0
  53. package/dist/agentConnections/warehouseStatus.d.ts +30 -0
  54. package/dist/agentConnections/warehouseStatus.d.ts.map +1 -0
  55. package/dist/agentConnections/warehouseStatus.js +184 -0
  56. package/dist/analytics/analytics.d.ts.map +1 -1
  57. package/dist/analytics/analytics.js +4 -0
  58. package/dist/config.d.ts +3 -1
  59. package/dist/config.d.ts.map +1 -1
  60. package/dist/config.js +2 -2
  61. package/dist/credentials.d.ts +27 -0
  62. package/dist/credentials.d.ts.map +1 -0
  63. package/dist/credentials.js +161 -0
  64. package/dist/dbt/models.d.ts.map +1 -1
  65. package/dist/dbt/models.js +45 -14
  66. package/dist/handlers/agentAccess.d.ts.map +1 -1
  67. package/dist/handlers/agentAccess.js +9 -1
  68. package/dist/handlers/agentConnect.d.ts.map +1 -1
  69. package/dist/handlers/agentConnect.js +2 -0
  70. package/dist/handlers/agentConnectionConnect.d.ts +5 -0
  71. package/dist/handlers/agentConnectionConnect.d.ts.map +1 -0
  72. package/dist/handlers/agentConnectionConnect.js +371 -0
  73. package/dist/handlers/agentConnectionStatus.d.ts +7 -0
  74. package/dist/handlers/agentConnectionStatus.d.ts.map +1 -0
  75. package/dist/handlers/agentConnectionStatus.js +228 -0
  76. package/dist/handlers/agentRevoke.d.ts +7 -0
  77. package/dist/handlers/agentRevoke.d.ts.map +1 -0
  78. package/dist/handlers/agentRevoke.js +144 -0
  79. package/dist/handlers/agentStatus.d.ts +4 -1
  80. package/dist/handlers/agentStatus.d.ts.map +1 -1
  81. package/dist/handlers/agentStatus.js +7 -0
  82. package/dist/handlers/apps/createApp.d.ts.map +1 -1
  83. package/dist/handlers/apps/createApp.js +2 -0
  84. package/dist/handlers/apps/preview.d.ts.map +1 -1
  85. package/dist/handlers/apps/preview.js +6 -0
  86. package/dist/handlers/apps/previewProxy.d.ts.map +1 -1
  87. package/dist/handlers/apps/previewProxy.js +2 -0
  88. package/dist/handlers/apps/validate.d.ts.map +1 -1
  89. package/dist/handlers/apps/validate.js +20 -8
  90. package/dist/handlers/compile.d.ts.map +1 -1
  91. package/dist/handlers/compile.js +3 -0
  92. package/dist/handlers/connectSnowflake.d.ts.map +1 -1
  93. package/dist/handlers/connectSnowflake.js +2 -0
  94. package/dist/handlers/createProject.d.ts.map +1 -1
  95. package/dist/handlers/createProject.js +2 -0
  96. package/dist/handlers/dbt/apiClient.d.ts +4 -2
  97. package/dist/handlers/dbt/apiClient.d.ts.map +1 -1
  98. package/dist/handlers/dbt/apiClient.js +138 -4
  99. package/dist/handlers/dbt/compile.d.ts.map +1 -1
  100. package/dist/handlers/dbt/compile.js +13 -2
  101. package/dist/handlers/dbt/getDbtProfileTargetName.d.ts.map +1 -1
  102. package/dist/handlers/dbt/getDbtProfileTargetName.js +12 -4
  103. package/dist/handlers/dbt/getDbtVersion.d.ts.map +1 -1
  104. package/dist/handlers/dbt/getDbtVersion.js +12 -4
  105. package/dist/handlers/dbt/getWarehouseClient.d.ts.map +1 -1
  106. package/dist/handlers/dbt/getWarehouseClient.js +15 -5
  107. package/dist/handlers/dbt/refresh.d.ts.map +1 -1
  108. package/dist/handlers/dbt/refresh.js +2 -0
  109. package/dist/handlers/dbt/run.d.ts.map +1 -1
  110. package/dist/handlers/dbt/run.js +10 -3
  111. package/dist/handlers/deploy.d.ts.map +1 -1
  112. package/dist/handlers/deploy.js +17 -1
  113. package/dist/handlers/diagnostics.d.ts.map +1 -1
  114. package/dist/handlers/diagnostics.js +2 -0
  115. package/dist/handlers/download.d.ts.map +1 -1
  116. package/dist/handlers/download.js +19 -5
  117. package/dist/handlers/exportChartImage.d.ts.map +1 -1
  118. package/dist/handlers/exportChartImage.js +2 -0
  119. package/dist/handlers/generateExposures.d.ts.map +1 -1
  120. package/dist/handlers/generateExposures.js +4 -1
  121. package/dist/handlers/getProject.d.ts.map +1 -1
  122. package/dist/handlers/getProject.js +25 -1
  123. package/dist/handlers/listProjects.d.ts.map +1 -1
  124. package/dist/handlers/listProjects.js +2 -0
  125. package/dist/handlers/login/connectionBrowser.d.ts +2 -0
  126. package/dist/handlers/login/connectionBrowser.d.ts.map +1 -0
  127. package/dist/handlers/login/connectionBrowser.js +22 -0
  128. package/dist/handlers/login/loopback.d.ts +15 -0
  129. package/dist/handlers/login/loopback.d.ts.map +1 -0
  130. package/dist/handlers/login/loopback.js +135 -0
  131. package/dist/handlers/login/oauth.d.ts.map +1 -1
  132. package/dist/handlers/login/oauth.js +16 -3
  133. package/dist/handlers/login/pat.d.ts.map +1 -1
  134. package/dist/handlers/login/pat.js +2 -0
  135. package/dist/handlers/login.d.ts.map +1 -1
  136. package/dist/handlers/login.js +8 -1
  137. package/dist/handlers/oauthLogin.d.ts.map +1 -1
  138. package/dist/handlers/oauthLogin.js +2 -0
  139. package/dist/handlers/ordinary/harness.mocks.d.ts +42 -0
  140. package/dist/handlers/ordinary/harness.mocks.d.ts.map +1 -0
  141. package/dist/handlers/ordinary/harness.mocks.js +180 -0
  142. package/dist/handlers/preAggregateAudit.d.ts.map +1 -1
  143. package/dist/handlers/preAggregateAudit.js +2 -0
  144. package/dist/handlers/preview.d.ts.map +1 -1
  145. package/dist/handlers/preview.js +4 -0
  146. package/dist/handlers/renameHandler.d.ts.map +1 -1
  147. package/dist/handlers/renameHandler.js +2 -0
  148. package/dist/handlers/renameProject.d.ts.map +1 -1
  149. package/dist/handlers/renameProject.js +2 -0
  150. package/dist/handlers/resolveProjectFlag.d.ts.map +1 -1
  151. package/dist/handlers/resolveProjectFlag.js +5 -0
  152. package/dist/handlers/runChart.d.ts.map +1 -1
  153. package/dist/handlers/runChart.js +7 -2
  154. package/dist/handlers/selectProject.d.ts.map +1 -1
  155. package/dist/handlers/selectProject.js +5 -0
  156. package/dist/handlers/setProject.d.ts.map +1 -1
  157. package/dist/handlers/setProject.js +5 -0
  158. package/dist/handlers/setWarehouse.d.ts.map +1 -1
  159. package/dist/handlers/setWarehouse.js +2 -0
  160. package/dist/handlers/slugUpdate.d.ts.map +1 -1
  161. package/dist/handlers/slugUpdate.js +2 -0
  162. package/dist/handlers/sourceSelection.d.ts.map +1 -1
  163. package/dist/handlers/sourceSelection.js +13 -2
  164. package/dist/handlers/sql.d.ts.map +1 -1
  165. package/dist/handlers/sql.js +7 -2
  166. package/dist/handlers/utils.d.ts +3 -0
  167. package/dist/handlers/utils.d.ts.map +1 -1
  168. package/dist/handlers/utils.js +39 -0
  169. package/dist/handlers/validate.d.ts.map +1 -1
  170. package/dist/handlers/validate.js +2 -0
  171. package/dist/handlers/warehouseCatalog.d.ts.map +1 -1
  172. package/dist/handlers/warehouseCatalog.js +7 -2
  173. package/dist/index.js +43 -3
  174. package/dist/lightdash-config/index.d.ts.map +1 -1
  175. package/dist/lightdash-config/index.js +4 -1
  176. package/package.json +3 -3
@@ -5,9 +5,11 @@ const tslib_1 = require("tslib");
5
5
  const ability_1 = require("@casl/ability");
6
6
  const common_1 = require("@lightdash/common");
7
7
  const node_fetch_1 = tslib_1.__importDefault(require("node-fetch"));
8
+ const stream_1 = require("stream");
8
9
  const url_1 = require("url");
9
10
  const zlib_1 = require("zlib");
10
11
  const config_1 = require("../../config");
12
+ const credentials_1 = require("../../credentials");
11
13
  const env_1 = require("../../env");
12
14
  const globalState_1 = tslib_1.__importDefault(require("../../globalState"));
13
15
  const styles = tslib_1.__importStar(require("../../styles"));
@@ -56,8 +58,113 @@ const fetchWithTimeout = async (fullUrl, init) => {
56
58
  clearTimeout(timer);
57
59
  }
58
60
  };
59
- const lightdashRawApi = async ({ method, url, body, headers: requestHeaders = {}, signal, }) => {
60
- const config = await (0, config_1.getConfig)();
61
+ const lightdashRawApi = async ({ method, url, body, headers: requestHeaders = {}, signal, safeToRetry = false, lifecycle, }) => {
62
+ const config = await ((0, credentials_1.getAgentConnectionSelection)() === null
63
+ ? (0, config_1.getConfig)()
64
+ : (0, config_1.getConfig)({ readOnly: true }));
65
+ if (lifecycle && (0, credentials_1.getAgentConnectionSelection)() === null)
66
+ throw new Error('An agent connection selection is required.');
67
+ if ((0, credentials_1.getAgentConnectionSelection)() !== null) {
68
+ if (Object.keys(requestHeaders).some((header) => ['authorization', 'cookie'].includes(header.toLowerCase())))
69
+ throw new Error('Agent connection requests cannot override Authorization or include Cookie headers.');
70
+ if (!config.context?.serverUrl)
71
+ throw new Error('No instance is configured for this agent connection.');
72
+ const { agentConnectionApiUrl } = await Promise.resolve().then(() => tslib_1.__importStar(require('../../agentConnections/apiUrl')));
73
+ const destination = agentConnectionApiUrl(config.context.serverUrl, url);
74
+ const { assertAgentRequestAllowed } = await Promise.resolve().then(() => tslib_1.__importStar(require('../../agentConnections/requestPolicy')));
75
+ const requestPath = new url_1.URL(destination).pathname.slice(new url_1.URL(config.context.serverUrl).pathname.replace(/\/$/, '')
76
+ .length);
77
+ assertAgentRequestAllowed(method, requestPath);
78
+ if (requestPath === '/api/v2/content') {
79
+ const allowedQueryKeys = new Set([
80
+ 'projectUuids',
81
+ 'contentTypes',
82
+ 'page',
83
+ 'pageSize',
84
+ ]);
85
+ const query = new url_1.URL(destination).search.slice(1);
86
+ if (query
87
+ .split('&')
88
+ .some((parameter) => !allowedQueryKeys.has(parameter.split('=', 1)[0])))
89
+ throw new Error('This query is not available with an agent connection. No request was sent.');
90
+ }
91
+ if (requestPath.startsWith('/api/v2/user/agent-connections/') &&
92
+ !lifecycle)
93
+ throw new Error('Invalid connection lifecycle request.');
94
+ if (lifecycle) {
95
+ const statusPath = `/api/v2/user/agent-connections/${lifecycle.grantUuid}/status`;
96
+ const revokePath = `/api/v2/user/agent-connections/${lifecycle.grantUuid}`;
97
+ const validRoute = lifecycle.kind === 'revoke'
98
+ ? method === 'DELETE' && url === revokePath
99
+ : method === 'GET' &&
100
+ (url === statusPath ||
101
+ /^\/api\/v2\/projects\/[a-f0-9-]+\/ai-access\/me$/.test(url));
102
+ if (!validRoute || body !== undefined)
103
+ throw new Error('Invalid connection lifecycle request.');
104
+ }
105
+ let credential = await (0, credentials_1.resolveCredential)(config, null, null, lifecycle);
106
+ let retried = false;
107
+ const send = async () => {
108
+ if (credential.kind !== 'agent_connection')
109
+ throw new Error('The selected request requires an agent connection credential.');
110
+ if (!lifecycle) {
111
+ const { approvedProjects } = credential.slot.lastReported;
112
+ const pathProject = requestPath.match(/^\/api\/v[12]\/(?:ee\/)?projects\/([^/]+)/)?.[1];
113
+ const queryProjects = new url_1.URL(destination).searchParams
114
+ .getAll('projectUuids')
115
+ .flatMap((value) => value.split(','));
116
+ const projects = pathProject
117
+ ? [pathProject, ...queryProjects]
118
+ : queryProjects;
119
+ if ((requestPath === '/api/v2/content' &&
120
+ projects.length === 0) ||
121
+ projects.some((projectUuid) => !approvedProjects.some((project) => project.projectUuid === projectUuid)))
122
+ throw new Error('This project is not approved for the selected agent connection. No request was sent.');
123
+ }
124
+ try {
125
+ return await fetchWithTimeout(destination, {
126
+ method,
127
+ headers: {
128
+ ...(0, utils_1.buildCredentialHeaders)(credential, config.context?.proxyAuthorization ?? null),
129
+ ...requestHeaders,
130
+ },
131
+ body,
132
+ signal,
133
+ redirect: 'error',
134
+ });
135
+ }
136
+ catch {
137
+ if (lifecycle) {
138
+ const { AgentConnectionRequestError } = await Promise.resolve().then(() => tslib_1.__importStar(require('../../agentConnections/lifecycle')));
139
+ throw new AgentConnectionRequestError('unreachable');
140
+ }
141
+ throw new Error(retried
142
+ ? 'The agent connection request failed. No further retry was attempted.'
143
+ : 'The agent connection request failed. No request was retried.');
144
+ }
145
+ };
146
+ let response = await send();
147
+ if (response.status === 401 &&
148
+ safeToRetry &&
149
+ method === 'GET' &&
150
+ body === undefined &&
151
+ credential.kind === 'agent_connection') {
152
+ if (response.body instanceof stream_1.Readable)
153
+ response.body.destroy();
154
+ credential = await (0, credentials_1.resolveCredential)(config, null, credential.slot.tokens.generation, lifecycle);
155
+ retried = true;
156
+ response = await send();
157
+ }
158
+ if (!response.ok && lifecycle) {
159
+ const { AgentConnectionRequestError } = await Promise.resolve().then(() => tslib_1.__importStar(require('../../agentConnections/lifecycle')));
160
+ throw new AgentConnectionRequestError(response.status >= 500 ? 'unreachable' : 'rejected');
161
+ }
162
+ if (response.status === 401)
163
+ throw new Error(`Agent connection ${(0, credentials_1.getAgentConnectionSelection)()} could not authenticate. No personal credential was used.`);
164
+ if (!response.ok)
165
+ throw new Error(`The server rejected the agent connection request (status ${response.status}).`);
166
+ return response;
167
+ }
61
168
  if (!(config.context?.apiKey && config.context.serverUrl)) {
62
169
  throw new common_1.AuthorizationError(`Not logged in. Run 'lightdash login --help'`);
63
170
  }
@@ -86,7 +193,28 @@ const lightdashRawApi = async ({ method, url, body, headers: requestHeaders = {}
86
193
  return response;
87
194
  };
88
195
  exports.lightdashRawApi = lightdashRawApi;
89
- const lightdashApi = async ({ method, url, body, signal, }) => {
196
+ async function agentSafeReadApi(props) {
197
+ return (0, exports.lightdashRawApi)({ ...props })
198
+ .then((r) => r.json())
199
+ .then((d) => {
200
+ globalState_1.default.debug(`> HTTP request returned status: ${d.status}`);
201
+ switch (d.status) {
202
+ case 'ok':
203
+ return d.results;
204
+ case 'error':
205
+ throw new common_1.LightdashError(d.error);
206
+ default:
207
+ throw new Error(d);
208
+ }
209
+ });
210
+ }
211
+ const lightdashApi = async ({ method, url, body, signal, safeToRetry, }) => {
212
+ if ((0, credentials_1.getAgentConnectionSelection)() !== null &&
213
+ safeToRetry &&
214
+ method === 'GET' &&
215
+ body === undefined) {
216
+ return agentSafeReadApi({ method, url, body, signal, safeToRetry });
217
+ }
90
218
  const headers = {};
91
219
  let requestBody = body;
92
220
  if (gzipEnabled &&
@@ -133,6 +261,7 @@ const getUserContext = async () => (0, exports.lightdashApi)({
133
261
  method: 'GET',
134
262
  url: `/api/v1/user`,
135
263
  body: undefined,
264
+ safeToRetry: true,
136
265
  });
137
266
  exports.getUserContext = getUserContext;
138
267
  const getContentAsCodeUploadPermissions = async (projectUuid) => {
@@ -284,15 +413,20 @@ const checkLightdashVersion = async () => {
284
413
  method: 'GET',
285
414
  url: `/api/v1/health?skipMigrationCheck=true`,
286
415
  body: undefined,
416
+ safeToRetry: true,
287
417
  });
288
418
  const cliMajor = env_1.CLI_VERSION.split('.')[0];
289
419
  const serverMajor = health.version.split('.')[0];
290
420
  if (cliMajor !== serverMajor) {
291
- const config = await (0, config_1.getConfig)();
421
+ const config = await ((0, credentials_1.getAgentConnectionSelection)() === null
422
+ ? (0, config_1.getConfig)()
423
+ : (0, config_1.getConfig)({ readOnly: true }));
292
424
  console.error(`${styles.title('Warning')}: CLI (${env_1.CLI_VERSION}) is running a different version than Lightdash (${health.version}) on ${config.context?.serverUrl}.\n Some commands may fail, consider upgrading your CLI by ${styles.secondary((0, env_1.getUpdateInstructions)(health.version))}`);
293
425
  }
294
426
  }
295
427
  catch (err) {
428
+ if ((0, credentials_1.getAgentConnectionSelection)() !== null)
429
+ throw err;
296
430
  globalState_1.default.debug(`> Health check failed: ${err}`);
297
431
  }
298
432
  };
@@ -1 +1 @@
1
- {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../../src/handlers/dbt/compile.ts"],"names":[],"mappings":"AAYA,OAAO,EAAgB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAIpE,MAAM,MAAM,iBAAiB,GAAG;IAC5B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,cAAc,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC9B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,WAAW,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,cAAc,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,oBAAoB,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1C,UAAU,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC,CAAC;AAyHF,wBAAsB,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAyC3E;AAED,MAAM,MAAM,mBAAmB,GAAG;IAC9B,gBAAgB,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACvC;;;;OAIG;IACH,0BAA0B,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACpD,CAAC;AAEF,wBAAsB,0BAA0B,CAC5C,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,iBAAiB,GAClC,OAAO,CAAC,mBAAmB,CAAC,CA0G9B"}
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../../src/handlers/dbt/compile.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAgB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAIpE,MAAM,MAAM,iBAAiB,GAAG;IAC5B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,cAAc,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC9B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,WAAW,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,cAAc,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,oBAAoB,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1C,UAAU,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,UAAU,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC,CAAC;AA8HF,wBAAsB,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA8C3E;AAED,MAAM,MAAM,mBAAmB,GAAG;IAC9B,gBAAgB,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACvC;;;;OAIG;IACH,0BAA0B,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACpD,CAAC;AAEF,wBAAsB,0BAA0B,CAC5C,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,iBAAiB,GAClC,OAAO,CAAC,mBAAmB,CAAC,CA0G9B"}
@@ -8,6 +8,7 @@ const execa_1 = tslib_1.__importDefault(require("execa"));
8
8
  const fs_1 = require("fs");
9
9
  const lodash_1 = require("lodash");
10
10
  const path = tslib_1.__importStar(require("path"));
11
+ const credentials_1 = require("../../credentials");
11
12
  const manifest_1 = require("../../dbt/manifest");
12
13
  const globalState_1 = tslib_1.__importDefault(require("../../globalState"));
13
14
  const getDbtVersion_1 = require("./getDbtVersion");
@@ -48,7 +49,12 @@ const dbtCompile = async (options) => {
48
49
  try {
49
50
  const args = optionsToArgs(options);
50
51
  globalState_1.default.debug(`> Running: dbt compile ${args.join(' ')}`);
51
- const { stdout, stderr } = await (0, execa_1.default)('dbt', ['compile', ...args]);
52
+ const { stdout, stderr } = await ((0, credentials_1.getAgentConnectionSelection)() !== null
53
+ ? (0, execa_1.default)('dbt', ['compile', ...args], {
54
+ extendEnv: false,
55
+ env: await (0, credentials_1.getAgentConnectionChildEnvironment)(),
56
+ })
57
+ : (0, execa_1.default)('dbt', ['compile', ...args]));
52
58
  console.error(stdout);
53
59
  console.error(stderr);
54
60
  }
@@ -115,7 +121,12 @@ async function dbtList(options) {
115
121
  args.push('--quiet');
116
122
  }
117
123
  globalState_1.default.debug(`> Running: dbt ls ${args.join(' ')}`);
118
- const { stdout, stderr } = await (0, execa_1.default)('dbt', ['ls', ...args]);
124
+ const { stdout, stderr } = await ((0, credentials_1.getAgentConnectionSelection)() !== null
125
+ ? (0, execa_1.default)('dbt', ['ls', ...args], {
126
+ extendEnv: false,
127
+ env: await (0, credentials_1.getAgentConnectionChildEnvironment)(),
128
+ })
129
+ : (0, execa_1.default)('dbt', ['ls', ...args]));
119
130
  const models = stdout
120
131
  .split('\n')
121
132
  .map((line) => {
@@ -1 +1 @@
1
- {"version":3,"file":"getDbtProfileTargetName.d.ts","sourceRoot":"","sources":["../../../src/handlers/dbt/getDbtProfileTargetName.ts"],"names":[],"mappings":"AA6BA,KAAK,8BAA8B,GAAG;IAClC,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAA8B,uBAAuB,CACjD,OAAO,EAAE,8BAA8B,GACxC,OAAO,CAAC,MAAM,CAAC,CAiBjB"}
1
+ {"version":3,"file":"getDbtProfileTargetName.d.ts","sourceRoot":"","sources":["../../../src/handlers/dbt/getDbtProfileTargetName.ts"],"names":[],"mappings":"AAwCA,KAAK,8BAA8B,GAAG;IAClC,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAA8B,uBAAuB,CACjD,OAAO,EAAE,8BAA8B,GACxC,OAAO,CAAC,MAAM,CAAC,CAiBjB"}
@@ -5,15 +5,23 @@ const tslib_1 = require("tslib");
5
5
  const common_1 = require("@lightdash/common");
6
6
  const execa_1 = tslib_1.__importDefault(require("execa"));
7
7
  const path_1 = tslib_1.__importDefault(require("path"));
8
+ const credentials_1 = require("../../credentials");
8
9
  const profile_1 = require("../../dbt/profile");
9
10
  const globalState_1 = tslib_1.__importDefault(require("../../globalState"));
10
11
  const DBT_CLOUD_TARGET_NAME_REGEX = /Target name\s+(\w+)/;
11
12
  const getDbtCloudTargetName = async () => {
12
13
  try {
13
- const { all } = await (0, execa_1.default)('dbt', ['environment', 'show'], {
14
- all: true,
15
- stdio: ['pipe', 'pipe', 'pipe'],
16
- });
14
+ const { all } = await ((0, credentials_1.getAgentConnectionSelection)() !== null
15
+ ? (0, execa_1.default)('dbt', ['environment', 'show'], {
16
+ all: true,
17
+ stdio: ['pipe', 'pipe', 'pipe'],
18
+ extendEnv: false,
19
+ env: await (0, credentials_1.getAgentConnectionChildEnvironment)({}),
20
+ })
21
+ : (0, execa_1.default)('dbt', ['environment', 'show'], {
22
+ all: true,
23
+ stdio: ['pipe', 'pipe', 'pipe'],
24
+ }));
17
25
  const logs = all || '';
18
26
  const targetName = logs.match(DBT_CLOUD_TARGET_NAME_REGEX);
19
27
  if (targetName === null || targetName.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"getDbtVersion.d.ts","sourceRoot":"","sources":["../../../src/handlers/dbt/getDbtVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,EAMnB,MAAM,mBAAmB,CAAC;AAmF3B,MAAM,MAAM,UAAU,GAAG;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,gBAAgB,CAAC;IAChC,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,aAAa,QAAa,OAAO,CAAC,UAAU,CA+CxD,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAa,OAAO,CAC7C;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAc9E,CAAC"}
1
+ {"version":3,"file":"getDbtVersion.d.ts","sourceRoot":"","sources":["../../../src/handlers/dbt/getDbtVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,EAMnB,MAAM,mBAAmB,CAAC;AA8F3B,MAAM,MAAM,UAAU,GAAG;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,gBAAgB,CAAC;IAChC,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,aAAa,QAAa,OAAO,CAAC,UAAU,CA+CxD,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAa,OAAO,CAC7C;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAc9E,CAAC"}
@@ -5,6 +5,7 @@ const tslib_1 = require("tslib");
5
5
  const common_1 = require("@lightdash/common");
6
6
  const execa_1 = tslib_1.__importDefault(require("execa"));
7
7
  const inquirer_1 = tslib_1.__importDefault(require("inquirer"));
8
+ const credentials_1 = require("../../credentials");
8
9
  const globalState_1 = tslib_1.__importDefault(require("../../globalState"));
9
10
  const styles = tslib_1.__importStar(require("../../styles"));
10
11
  const DBT_CORE_VERSION_REGEX = /installed:.*/;
@@ -21,10 +22,17 @@ const getDbtCLIVersion = async () => {
21
22
  return knownVersion;
22
23
  }
23
24
  try {
24
- const { all } = await (0, execa_1.default)('dbt', ['--version'], {
25
- all: true,
26
- stdio: ['pipe', 'pipe', 'pipe'],
27
- });
25
+ const { all } = await ((0, credentials_1.getAgentConnectionSelection)() !== null
26
+ ? (0, execa_1.default)('dbt', ['--version'], {
27
+ all: true,
28
+ stdio: ['pipe', 'pipe', 'pipe'],
29
+ extendEnv: false,
30
+ env: await (0, credentials_1.getAgentConnectionChildEnvironment)({}),
31
+ })
32
+ : (0, execa_1.default)('dbt', ['--version'], {
33
+ all: true,
34
+ stdio: ['pipe', 'pipe', 'pipe'],
35
+ }));
28
36
  const logs = all || '';
29
37
  const cloudVersion = logs.match(DBT_CLOUD_CLI_REGEX);
30
38
  if (cloudVersion) {
@@ -1 +1 @@
1
- {"version":3,"file":"getWarehouseClient.d.ts","sourceRoot":"","sources":["../../../src/handlers/dbt/getWarehouseClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,0BAA0B,EAC1B,0BAA0B,EAW7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAGH,8BAA8B,EACjC,MAAM,uBAAuB,CAAC;AAgN/B,KAAK,yBAAyB,GAAG;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AASF,eAAO,MAAM,iCAAiC,gBAC7B,0BAA0B,KACxC,OAAO,CAAC,MAAM,CAwBhB,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC5B,eAAe,EAAE,UAAU,CAAC,OAAO,8BAA8B,CAAC,CAAC;IACnE,WAAW,EAAE,0BAA0B,CAAC;CAC3C,CAAC;AAEF,wBAA8B,kBAAkB,CAC5C,OAAO,EAAE,yBAAyB,GACnC,OAAO,CAAC,wBAAwB,CAAC,CAgLnC"}
1
+ {"version":3,"file":"getWarehouseClient.d.ts","sourceRoot":"","sources":["../../../src/handlers/dbt/getWarehouseClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,0BAA0B,EAC1B,0BAA0B,EAW7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAGH,8BAA8B,EACjC,MAAM,uBAAuB,CAAC;AA2N/B,KAAK,yBAAyB,GAAG;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AASF,eAAO,MAAM,iCAAiC,gBAC7B,0BAA0B,KACxC,OAAO,CAAC,MAAM,CAwBhB,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC5B,eAAe,EAAE,UAAU,CAAC,OAAO,8BAA8B,CAAC,CAAC;IACnE,WAAW,EAAE,0BAA0B,CAAC;CAC3C,CAAC;AAEF,wBAA8B,kBAAkB,CAC5C,OAAO,EAAE,yBAAyB,GACnC,OAAO,CAAC,wBAAwB,CAAC,CAsLnC"}
@@ -9,6 +9,7 @@ const crypto_1 = tslib_1.__importDefault(require("crypto"));
9
9
  const execa_1 = tslib_1.__importDefault(require("execa"));
10
10
  const path_1 = tslib_1.__importDefault(require("path"));
11
11
  const config_1 = require("../../config");
12
+ const credentials_1 = require("../../credentials");
12
13
  const profile_1 = require("../../dbt/profile");
13
14
  const oauth_1 = require("../../dbt/targets/Databricks/oauth");
14
15
  const globalState_1 = tslib_1.__importDefault(require("../../globalState"));
@@ -41,10 +42,17 @@ const getTableSchema = async ({ projectUuid, tableName, schemaName, databaseName
41
42
  const DBT_CLOUD_CONNECTION_TYPE_REGEX = /Connection type\s+(\w+)/;
42
43
  const getDbtCloudConnectionType = async () => {
43
44
  try {
44
- const { all } = await (0, execa_1.default)('dbt', ['environment', 'show'], {
45
- all: true,
46
- stdio: ['pipe', 'pipe', 'pipe'],
47
- });
45
+ const { all } = await ((0, credentials_1.getAgentConnectionSelection)() !== null
46
+ ? (0, execa_1.default)('dbt', ['environment', 'show'], {
47
+ all: true,
48
+ stdio: ['pipe', 'pipe', 'pipe'],
49
+ extendEnv: false,
50
+ env: await (0, credentials_1.getAgentConnectionChildEnvironment)({}),
51
+ })
52
+ : (0, execa_1.default)('dbt', ['environment', 'show'], {
53
+ all: true,
54
+ stdio: ['pipe', 'pipe', 'pipe'],
55
+ }));
48
56
  const logs = all || '';
49
57
  const connectionType = logs.match(DBT_CLOUD_CONNECTION_TYPE_REGEX);
50
58
  if (connectionType === null || connectionType.length === 0) {
@@ -205,7 +213,9 @@ async function getWarehouseClient(options) {
205
213
  ? options.startOfWeek
206
214
  : undefined,
207
215
  });
208
- const config = await (0, config_1.getConfig)();
216
+ const config = await ((0, credentials_1.getAgentConnectionSelection)() === null
217
+ ? (0, config_1.getConfig)()
218
+ : (0, config_1.getConfig)({ readOnly: true }).then(async (currentConfig) => (await Promise.resolve().then(() => tslib_1.__importStar(require('../../agentConnections/projectSelection')))).configWithAgentProject(currentConfig)));
209
219
  // Overwrite methods that need to connect to the warehouse
210
220
  warehouseClient.getCatalog = async (refs) => refs.reduce(async (accPromise, ref) => {
211
221
  const acc = await accPromise; // Wait for the previous step's result
@@ -1 +1 @@
1
- {"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../../src/handlers/dbt/refresh.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,GAAG,EAKH,OAAO,EACV,MAAM,mBAAmB,CAAC;AAQ3B,eAAO,MAAM,UAAU,gBAAuB,MAAM,qBAK9C,CAAC;AAgDP,eAAO,MAAM,gBAAgB,YAChB,MAAM,kBACA,MAAM,KACtB,OAAO,CAAC,GAAG,CAcb,CAAC;AAEF,KAAK,qBAAqB,GAAG;IACzB,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,cAAc,YAAmB,qBAAqB,kBAgElE,CAAC"}
1
+ {"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../../src/handlers/dbt/refresh.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,GAAG,EAKH,OAAO,EACV,MAAM,mBAAmB,CAAC;AAS3B,eAAO,MAAM,UAAU,gBAAuB,MAAM,qBAK9C,CAAC;AAgDP,eAAO,MAAM,gBAAgB,YAChB,MAAM,kBACA,MAAM,KACtB,OAAO,CAAC,GAAG,CAcb,CAAC;AAEF,KAAK,qBAAqB,GAAG;IACzB,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,cAAc,YAAmB,qBAAqB,kBAiElE,CAAC"}
@@ -4,6 +4,7 @@ exports.refreshHandler = exports.getFinalJobState = exports.getProject = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const common_1 = require("@lightdash/common");
6
6
  const uuid_1 = require("uuid");
7
+ const commandPolicy_1 = require("../../agentConnections/commandPolicy");
7
8
  const analytics_1 = require("../../analytics/analytics");
8
9
  const config_1 = require("../../config");
9
10
  const globalState_1 = tslib_1.__importDefault(require("../../globalState"));
@@ -55,6 +56,7 @@ const getFinalJobState = async (jobUuid, spinnerPrefix = 'Refreshing dbt project
55
56
  };
56
57
  exports.getFinalJobState = getFinalJobState;
57
58
  const refreshHandler = async (options) => {
59
+ (0, commandPolicy_1.assertAgentCommandAllowed)('refresh');
58
60
  globalState_1.default.setVerbose(options.verbose);
59
61
  await (0, apiClient_1.checkLightdashVersion)();
60
62
  const executionId = (0, uuid_1.v4)();
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/handlers/dbt/run.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAwB,MAAM,WAAW,CAAC;AAK1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,KAAK,oBAAoB,GAAG,iBAAiB,GAAG;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,aAAa,YACb,oBAAoB,WACpB,OAAO,kBAmEnB,CAAC"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/handlers/dbt/run.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAwB,MAAM,WAAW,CAAC;AAS1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,KAAK,oBAAoB,GAAG,iBAAiB,GAAG;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,aAAa,YACb,oBAAoB,WACpB,OAAO,kBA0EnB,CAAC"}
@@ -6,6 +6,7 @@ const common_1 = require("@lightdash/common");
6
6
  const commander_1 = require("commander");
7
7
  const execa_1 = tslib_1.__importDefault(require("execa"));
8
8
  const analytics_1 = require("../../analytics/analytics");
9
+ const credentials_1 = require("../../credentials");
9
10
  const globalState_1 = tslib_1.__importDefault(require("../../globalState"));
10
11
  const generate_1 = require("../generate");
11
12
  const dbtRunHandler = async (options, command) => {
@@ -32,9 +33,15 @@ const dbtRunHandler = async (options, command) => {
32
33
  }, []);
33
34
  globalState_1.default.debug(`> Running dbt command: ${commands}`);
34
35
  try {
35
- const subprocess = (0, execa_1.default)('dbt', commands, {
36
- stdio: 'inherit',
37
- });
36
+ const subprocess = (0, credentials_1.getAgentConnectionSelection)() !== null
37
+ ? (0, execa_1.default)('dbt', commands, {
38
+ stdio: 'inherit',
39
+ extendEnv: false,
40
+ env: await (0, credentials_1.getAgentConnectionChildEnvironment)({}),
41
+ })
42
+ : (0, execa_1.default)('dbt', commands, {
43
+ stdio: 'inherit',
44
+ });
38
45
  await subprocess;
39
46
  await analytics_1.LightdashAnalytics.track({
40
47
  event: 'dbt_command.completed',
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/handlers/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,OAAO,EACP,YAAY,EASZ,KAAK,eAAe,EACpB,KAAK,YAAY,EAGpB,MAAM,mBAAmB,CAAC;AAc3B,OAAO,EAAE,cAAc,EAAqB,MAAM,0BAA0B,CAAC;AAgB7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAUlD,KAAK,oBAAoB,GAAG,iBAAiB,GAAG;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,wBAAwB,EAAE,OAAO,CAAC;IAClC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,UAAU,GAAG,oBAAoB,GAAG;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC/B,CAAC;AAkBF,eAAO,MAAM,eAAe,YACf,IAAI,CACT,oBAAoB,EACpB,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,SAAS,GAAG,QAAQ,CACrE,eACY,cAAc,mBACV,eAAe,GAAG,SAAS,KAC7C,OAAO,CAAC,YAAY,GAAG,SAAS,CA+BlC,CAAC;AAiSF,eAAO,MAAM,MAAM,aACL,CAAC,OAAO,GAAG,YAAY,CAAC,EAAE,WAC3B,UAAU,KACpB,OAAO,CAAC,IAAI,CA4Kd,CAAC;AAiGF,eAAO,MAAM,aAAa,oBAA2B,oBAAoB,kBA4LxE,CAAC"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/handlers/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,OAAO,EACP,YAAY,EASZ,KAAK,eAAe,EACpB,KAAK,YAAY,EAGpB,MAAM,mBAAmB,CAAC;AAgB3B,OAAO,EAAE,cAAc,EAAqB,MAAM,0BAA0B,CAAC;AAgB7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAUlD,KAAK,oBAAoB,GAAG,iBAAiB,GAAG;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,wBAAwB,EAAE,OAAO,CAAC;IAClC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,UAAU,GAAG,oBAAoB,GAAG;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC/B,CAAC;AAkBF,eAAO,MAAM,eAAe,YACf,IAAI,CACT,oBAAoB,EACpB,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,SAAS,GAAG,QAAQ,CACrE,eACY,cAAc,mBACV,eAAe,GAAG,SAAS,KAC7C,OAAO,CAAC,YAAY,GAAG,SAAS,CA+BlC,CAAC;AAmSF,eAAO,MAAM,MAAM,aACL,CAAC,OAAO,GAAG,YAAY,CAAC,EAAE,WAC3B,UAAU,KACpB,OAAO,CAAC,IAAI,CAkLd,CAAC;AAiGF,eAAO,MAAM,aAAa,oBAA2B,oBAAoB,kBA+LxE,CAAC"}
@@ -7,8 +7,10 @@ const inquirer_1 = tslib_1.__importDefault(require("inquirer"));
7
7
  const path_1 = tslib_1.__importDefault(require("path"));
8
8
  const url_1 = require("url");
9
9
  const uuid_1 = require("uuid");
10
+ const commandPolicy_1 = require("../agentConnections/commandPolicy");
10
11
  const analytics_1 = require("../analytics/analytics");
11
12
  const config_1 = require("../config");
13
+ const credentials_1 = require("../credentials");
12
14
  const context_1 = require("../dbt/context");
13
15
  const profile_1 = require("../dbt/profile");
14
16
  const globalState_1 = tslib_1.__importDefault(require("../globalState"));
@@ -137,6 +139,8 @@ const isRetriableBatchError = (err) => {
137
139
  return true;
138
140
  };
139
141
  const retryBatchUpload = async (task, batchNumber) => {
142
+ if ((0, credentials_1.getAgentConnectionSelection)() !== null)
143
+ return task();
140
144
  let backoffMs = BATCH_UPLOAD_INITIAL_BACKOFF_MS;
141
145
  for (let attempt = 1; attempt <= BATCH_UPLOAD_MAX_ATTEMPTS; attempt += 1) {
142
146
  try {
@@ -182,6 +186,8 @@ const deployBatched = async (explores, options) => {
182
186
  sessionUuid = startSessionResponse.deploySessionUuid;
183
187
  }
184
188
  catch (error) {
189
+ if ((0, credentials_1.getAgentConnectionSelection)() !== null)
190
+ throw error;
185
191
  if (error instanceof common_1.LightdashError && error.statusCode === 404) {
186
192
  globalState_1.default.log(styles.info('Batched deploy is not supported by this server; falling back to legacy deploy'));
187
193
  return false;
@@ -251,6 +257,11 @@ const deployBatched = async (explores, options) => {
251
257
  return true;
252
258
  };
253
259
  const deploy = async (explores, options) => {
260
+ if ((0, credentials_1.getAgentConnectionSelection)() !== null)
261
+ (0, commandPolicy_1.assertAgentCommandAllowed)('deploy', {
262
+ source: options.sourceUuid,
263
+ target: options.deployTarget,
264
+ });
254
265
  if (explores.length === 0) {
255
266
  globalState_1.default.log(styles.warning('No explores found'));
256
267
  process.exit(1);
@@ -313,6 +324,8 @@ const deploy = async (explores, options) => {
313
324
  : `/api/v2/projects/${options.projectUuid}/deploy`,
314
325
  body: deployPayload,
315
326
  }).catch(async (error) => {
327
+ if ((0, credentials_1.getAgentConnectionSelection)() !== null)
328
+ throw error;
316
329
  if (options.dbtModelNames === undefined ||
317
330
  !(error instanceof common_1.LightdashError) ||
318
331
  error.statusCode !== 404) {
@@ -444,6 +457,7 @@ const createNewProject = async (executionId, options) => {
444
457
  }
445
458
  };
446
459
  const deployHandler = async (originalOptions) => {
460
+ (0, commandPolicy_1.assertAgentCommandAllowed)('deploy', originalOptions);
447
461
  const options = {
448
462
  ...originalOptions,
449
463
  };
@@ -510,7 +524,9 @@ const deployHandler = async (originalOptions) => {
510
524
  }
511
525
  await (0, apiClient_1.checkLightdashVersion)();
512
526
  const executionId = (0, uuid_1.v4)();
513
- const config = await (0, config_1.getConfig)();
527
+ const config = await ((0, credentials_1.getAgentConnectionSelection)() === null
528
+ ? (0, config_1.getConfig)()
529
+ : (0, config_1.getConfig)({ readOnly: true }));
514
530
  let existingProjectSelection;
515
531
  let sourceUuid;
516
532
  let connectionRoute;
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/handlers/diagnostics.ts"],"names":[],"mappings":"AAgBA,KAAK,kBAAkB,GAAG;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AA2HF,eAAO,MAAM,kBAAkB,YAAmB,kBAAkB,kBA2InE,CAAC"}
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/handlers/diagnostics.ts"],"names":[],"mappings":"AAiBA,KAAK,kBAAkB,GAAG;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AA2HF,eAAO,MAAM,kBAAkB,YAAmB,kBAAkB,kBA4InE,CAAC"}
@@ -6,6 +6,7 @@ const common_1 = require("@lightdash/common");
6
6
  const execa_1 = tslib_1.__importDefault(require("execa"));
7
7
  const analytics_1 = require("../analytics/analytics");
8
8
  const config_1 = require("../config");
9
+ const credentials_1 = require("../credentials");
9
10
  const env_1 = require("../env");
10
11
  const globalState_1 = tslib_1.__importDefault(require("../globalState"));
11
12
  const styles = tslib_1.__importStar(require("../styles"));
@@ -106,6 +107,7 @@ const runDbtDebug = async (projectDir, profilesDir, options = {}) => {
106
107
  }
107
108
  };
108
109
  const diagnosticsHandler = async (options) => {
110
+ (0, credentials_1.refuseAgentConnection)();
109
111
  const startTime = Date.now();
110
112
  let success = true;
111
113
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../src/handlers/download.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../src/handlers/download.ts"],"names":[],"mappings":"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"}
@@ -12,8 +12,10 @@ const groupBy_1 = tslib_1.__importDefault(require("lodash/groupBy"));
12
12
  const p_limit_1 = tslib_1.__importDefault(require("p-limit"));
13
13
  const path = tslib_1.__importStar(require("path"));
14
14
  const uuid_1 = require("uuid");
15
+ const commandPolicy_1 = require("../agentConnections/commandPolicy");
15
16
  const analytics_1 = require("../analytics/analytics");
16
17
  const config_1 = require("../config");
18
+ const credentials_1 = require("../credentials");
17
19
  const env_1 = require("../env");
18
20
  const globalState_1 = tslib_1.__importDefault(require("../globalState"));
19
21
  const lightdash_config_1 = require("../lightdash-config");
@@ -1084,6 +1086,7 @@ const listAppsViaContentApi = async (projectId) => {
1084
1086
  return listedApps;
1085
1087
  };
1086
1088
  const downloadHandler = async (options) => {
1089
+ (0, commandPolicy_1.assertAgentCommandAllowed)('download', options);
1087
1090
  globalState_1.default.setVerbose(options.verbose);
1088
1091
  const isOrganizationDownload = options.organization === true;
1089
1092
  if (options.appsOnly && options.chartTypesOnly) {
@@ -1207,8 +1210,13 @@ const downloadHandler = async (options) => {
1207
1210
  }
1208
1211
  }
1209
1212
  await (0, apiClient_1.checkLightdashVersion)();
1210
- const config = await (0, config_1.getConfig)();
1211
- if (!config.context?.apiKey || !config.context.serverUrl) {
1213
+ const config = await ((0, credentials_1.getAgentConnectionSelection)() === null
1214
+ ? (0, config_1.getConfig)()
1215
+ : (0, config_1.getConfig)({ readOnly: true }));
1216
+ if ((0, credentials_1.getAgentConnectionSelection)() !== null) {
1217
+ await (0, credentials_1.resolveCredential)(config);
1218
+ }
1219
+ else if (!config.context?.apiKey || !config.context.serverUrl) {
1212
1220
  throw new common_1.AuthorizationError(`Not logged in. Run 'lightdash login --help'`);
1213
1221
  }
1214
1222
  if (isOrganizationDownload) {
@@ -1836,7 +1844,8 @@ const downloadHandler = async (options) => {
1836
1844
  await (0, metadataFile_1.writeMetadataFile)(baseDir, metadataToWrite);
1837
1845
  if (!config.answers?.metadataFileGitignoreNoticeShown) {
1838
1846
  globalState_1.default.log(styles.warning(`\nNote: ${metadataFile_1.METADATA_FILENAME} was written to ${baseDir}. Consider adding it to your .gitignore.`));
1839
- await (0, config_1.setAnswer)({ metadataFileGitignoreNoticeShown: true });
1847
+ if ((0, credentials_1.getAgentConnectionSelection)() === null)
1848
+ await (0, config_1.setAnswer)({ metadataFileGitignoreNoticeShown: true });
1840
1849
  }
1841
1850
  output.completeItem('timestamps written');
1842
1851
  const end = Date.now();
@@ -2034,7 +2043,9 @@ const upsertSingleItem = async (item, type, projectId, changes, force, config, s
2034
2043
  * @param slugs if slugs are provided, we only force upsert the charts/dashboards that match the slugs, if slugs are empty, we upload files that were locally updated
2035
2044
  */
2036
2045
  const upsertResources = async (type, projectId, changes, force, slugs, canUpload, customPath, skipSpaceCreate, publicSpaceCreate, validate, concurrency = 1, extraItems = [], spaceNames, skipSlugs) => {
2037
- const config = await (0, config_1.getConfig)();
2046
+ const config = await ((0, credentials_1.getAgentConnectionSelection)() === null
2047
+ ? (0, config_1.getConfig)()
2048
+ : (0, config_1.getConfig)({ readOnly: true }));
2038
2049
  const folderItems = await readCodeFiles(type, customPath);
2039
2050
  const items = [...folderItems, ...extraItems];
2040
2051
  (0, contentAsCodeOutput_1.logContentAsCodeDiscovery)(`Found ${items.length} ${type} files`);
@@ -2228,6 +2239,7 @@ const getStampedContentPath = (uploadRoot) => {
2228
2239
  return (0, common_1.normalizeContentAsCodePath)(relative.split(path.sep).join('/'));
2229
2240
  };
2230
2241
  const uploadHandler = async (options) => {
2242
+ (0, credentials_1.refuseAgentConnection)();
2231
2243
  globalState_1.default.setVerbose(options.verbose);
2232
2244
  const projectConfig = await readUploadProjectConfig();
2233
2245
  // --path wins; otherwise content_as_code.path from lightdash.config.yml
@@ -2293,7 +2305,9 @@ const uploadHandler = async (options) => {
2293
2305
  (0, apiClient_1.setGzipEnabled)(true);
2294
2306
  }
2295
2307
  await (0, apiClient_1.checkLightdashVersion)();
2296
- const config = await (0, config_1.getConfig)();
2308
+ const config = await ((0, credentials_1.getAgentConnectionSelection)() === null
2309
+ ? (0, config_1.getConfig)()
2310
+ : (0, config_1.getConfig)({ readOnly: true }));
2297
2311
  if (!config.context?.apiKey || !config.context.serverUrl) {
2298
2312
  throw new common_1.AuthorizationError(`Not logged in. Run 'lightdash login --help'`);
2299
2313
  }
@@ -1 +1 @@
1
- {"version":3,"file":"exportChartImage.d.ts","sourceRoot":"","sources":["../../src/handlers/exportChartImage.ts"],"names":[],"mappings":"AASA,KAAK,uBAAuB,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,uBAAuB,oBACf,MAAM,WACd,uBAAuB,KACjC,OAAO,CAAC,IAAI,CAiDd,CAAC"}
1
+ {"version":3,"file":"exportChartImage.d.ts","sourceRoot":"","sources":["../../src/handlers/exportChartImage.ts"],"names":[],"mappings":"AAUA,KAAK,uBAAuB,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,uBAAuB,oBACf,MAAM,WACd,uBAAuB,KACjC,OAAO,CAAC,IAAI,CAkDd,CAAC"}