@lightdash/cli 2.562.0 → 2.564.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
@@ -1 +1 @@
1
- {"version":3,"file":"preAggregateAudit.d.ts","sourceRoot":"","sources":["../../src/handlers/preAggregateAudit.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EACjC,MAAM,mBAAmB,CAAC;AAO3B,KAAK,YAAY,GAAG,wBAAwB,GAAG,yBAAyB,CAAC;AAEzE,KAAK,YAAY,GAAG;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,YAAY,CAAA;KAAE,EAAE,CAAC;CACvD,CAAC;AAEF,KAAK,aAAa,GAAG;IACjB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AA+BF,iBAAS,gBAAgB,CACrB,IAAI,EAAE,qBAAqB,EAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,GAC9B,MAAM,CAYR;AAED,iBAAS,kBAAkB,CAAC,KAAK,EAAE,0BAA0B,GAAG,aAAa,CAsC5E;AAED,iBAAS,YAAY,CACjB,KAAK,EAAE,0BAA0B,EACjC,OAAO,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC7C,IAAI,CA8DN;AAED,iBAAS,gBAAgB,CACrB,MAAM,EAAE,0BAA0B,EAAE,EACpC,IAAI,EAAE,OAAO,GACd,IAAI,CAIN;AAgCD,eAAO,MAAM,wBAAwB,YACxB,wBAAwB,KAClC,OAAO,CAAC,IAAI,CA6Bd,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;CAKvB,CAAC"}
1
+ {"version":3,"file":"preAggregateAudit.d.ts","sourceRoot":"","sources":["../../src/handlers/preAggregateAudit.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EACjC,MAAM,mBAAmB,CAAC;AAQ3B,KAAK,YAAY,GAAG,wBAAwB,GAAG,yBAAyB,CAAC;AAEzE,KAAK,YAAY,GAAG;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,YAAY,CAAA;KAAE,EAAE,CAAC;CACvD,CAAC;AAEF,KAAK,aAAa,GAAG;IACjB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,KAAK,wBAAwB,GAAG;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AA+BF,iBAAS,gBAAgB,CACrB,IAAI,EAAE,qBAAqB,EAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,GAC9B,MAAM,CAYR;AAED,iBAAS,kBAAkB,CAAC,KAAK,EAAE,0BAA0B,GAAG,aAAa,CAsC5E;AAED,iBAAS,YAAY,CACjB,KAAK,EAAE,0BAA0B,EACjC,OAAO,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC7C,IAAI,CA8DN;AAED,iBAAS,gBAAgB,CACrB,MAAM,EAAE,0BAA0B,EAAE,EACpC,IAAI,EAAE,OAAO,GACd,IAAI,CAIN;AAgCD,eAAO,MAAM,wBAAwB,YACxB,wBAAwB,KAClC,OAAO,CAAC,IAAI,CA8Bd,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;CAKvB,CAAC"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.testHelpers = exports.preAggregateAuditHandler = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const common_1 = require("@lightdash/common");
6
+ const commandPolicy_1 = require("../agentConnections/commandPolicy");
6
7
  const config_1 = require("../config");
7
8
  const globalState_1 = tslib_1.__importDefault(require("../globalState"));
8
9
  const styles = tslib_1.__importStar(require("../styles"));
@@ -152,6 +153,7 @@ async function runAll(args) {
152
153
  exitIfFailOnMiss(audits, args.failOnMiss);
153
154
  }
154
155
  const preAggregateAuditHandler = async (options) => {
156
+ (0, commandPolicy_1.assertAgentCommandAllowed)('pre-aggregate-audit');
155
157
  globalState_1.default.debug(`pre-aggregate-audit options: ${JSON.stringify(options)}`);
156
158
  await (0, apiClient_1.checkLightdashVersion)();
157
159
  const projectUuid = await resolveProjectUuid(options.project);
@@ -1 +1 @@
1
- {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../src/handlers/preview.ts"],"names":[],"mappings":"AACA,OAAO,EACH,+BAA+B,EAKlC,MAAM,mBAAmB,CAAC;AAmB3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAalD,KAAK,qBAAqB,GAAG,iBAAiB,GAAG;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,kBAAkB,EAAE,+BAA+B,CAAC;IACpD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,wBAAwB,EAAE,OAAO,CAAC;IAClC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAoBF,KAAK,yBAAyB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC;AA2GF,eAAO,MAAM,cAAc,oBACN,qBAAqB,KACvC,OAAO,CAAC,IAAI,CAmTd,CAAC;AAuDF,eAAO,MAAM,mBAAmB,oBACX,qBAAqB,KACvC,OAAO,CAAC,IAAI,CA2Md,CAAC;AAEF,eAAO,MAAM,kBAAkB,YAClB,yBAAyB,KACnC,OAAO,CAAC,IAAI,CA0Cd,CAAC"}
1
+ {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../src/handlers/preview.ts"],"names":[],"mappings":"AACA,OAAO,EACH,+BAA+B,EAKlC,MAAM,mBAAmB,CAAC;AAoB3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAalD,KAAK,qBAAqB,GAAG,iBAAiB,GAAG;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,kBAAkB,EAAE,+BAA+B,CAAC;IACpD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,wBAAwB,EAAE,OAAO,CAAC;IAClC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAoBF,KAAK,yBAAyB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC;AA2GF,eAAO,MAAM,cAAc,oBACN,qBAAqB,KACvC,OAAO,CAAC,IAAI,CAoTd,CAAC;AAuDF,eAAO,MAAM,mBAAmB,oBACX,qBAAqB,KACvC,OAAO,CAAC,IAAI,CA4Md,CAAC;AAEF,eAAO,MAAM,kBAAkB,YAClB,yBAAyB,KACnC,OAAO,CAAC,IAAI,CA2Cd,CAAC"}
@@ -12,6 +12,7 @@ const url_1 = require("url");
12
12
  const uuid_1 = require("uuid");
13
13
  const analytics_1 = require("../analytics/analytics");
14
14
  const config_1 = require("../config");
15
+ const credentials_1 = require("../credentials");
15
16
  const context_1 = require("../dbt/context");
16
17
  const globalState_1 = tslib_1.__importDefault(require("../globalState"));
17
18
  const projectType_1 = require("../lightdash/projectType");
@@ -104,6 +105,7 @@ const getPreviewProject = async (name) => {
104
105
  return projects.find((project) => project.type === common_1.ProjectType.PREVIEW && project.name === name);
105
106
  };
106
107
  const previewHandler = async (originalOptions) => {
108
+ (0, credentials_1.refuseAgentConnection)();
107
109
  const options = { ...originalOptions };
108
110
  globalState_1.default.setVerbose(options.verbose);
109
111
  const executionId = (0, uuid_1.v4)();
@@ -355,6 +357,7 @@ const refreshPreviewWarehouseCredentials = async (projectUuid, options) => {
355
357
  }
356
358
  };
357
359
  const startPreviewHandler = async (originalOptions) => {
360
+ (0, credentials_1.refuseAgentConnection)();
358
361
  const options = { ...originalOptions };
359
362
  globalState_1.default.setVerbose(options.verbose);
360
363
  await (0, apiClient_1.checkLightdashVersion)();
@@ -499,6 +502,7 @@ const startPreviewHandler = async (originalOptions) => {
499
502
  };
500
503
  exports.startPreviewHandler = startPreviewHandler;
501
504
  const stopPreviewHandler = async (options) => {
505
+ (0, credentials_1.refuseAgentConnection)();
502
506
  globalState_1.default.setVerbose(options.verbose);
503
507
  await (0, apiClient_1.checkLightdashVersion)();
504
508
  const executionId = (0, uuid_1.v4)();
@@ -1 +1 @@
1
- {"version":3,"file":"renameHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/renameHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAMH,UAAU,EAEb,MAAM,mBAAmB,CAAC;AAmB3B,KAAK,oBAAoB,GAAG;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACrB,CAAC;AAwCF,eAAO,MAAM,aAAa,YAAmB,oBAAoB,kBAwNhE,CAAC"}
1
+ {"version":3,"file":"renameHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/renameHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAMH,UAAU,EAEb,MAAM,mBAAmB,CAAC;AAoB3B,KAAK,oBAAoB,GAAG;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACrB,CAAC;AAwCF,eAAO,MAAM,aAAa,YAAmB,oBAAoB,kBAyNhE,CAAC"}
@@ -9,6 +9,7 @@ const path_1 = tslib_1.__importDefault(require("path"));
9
9
  const uuid_1 = require("uuid");
10
10
  const analytics_1 = require("../analytics/analytics");
11
11
  const config_1 = require("../config");
12
+ const credentials_1 = require("../credentials");
12
13
  const globalState_1 = tslib_1.__importDefault(require("../globalState"));
13
14
  const styles = tslib_1.__importStar(require("../styles"));
14
15
  const apiClient_1 = require("./dbt/apiClient");
@@ -37,6 +38,7 @@ const listResources = (resources, type, list) => {
37
38
  }
38
39
  };
39
40
  const renameHandler = async (options) => {
41
+ (0, credentials_1.refuseAgentConnection)();
40
42
  globalState_1.default.setVerbose(options.verbose);
41
43
  await (0, apiClient_1.checkLightdashVersion)();
42
44
  const executionId = (0, uuid_1.v4)();
@@ -1 +1 @@
1
- {"version":3,"file":"renameProject.d.ts","sourceRoot":"","sources":["../../src/handlers/renameProject.ts"],"names":[],"mappings":"AAMA,KAAK,oBAAoB,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC;AA2BF,eAAO,MAAM,oBAAoB,YAAmB,oBAAoB,kBAoBvE,CAAC"}
1
+ {"version":3,"file":"renameProject.d.ts","sourceRoot":"","sources":["../../src/handlers/renameProject.ts"],"names":[],"mappings":"AAOA,KAAK,oBAAoB,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC;AA2BF,eAAO,MAAM,oBAAoB,YAAmB,oBAAoB,kBAqBvE,CAAC"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.renameProjectHandler = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const common_1 = require("@lightdash/common");
6
+ const commandPolicy_1 = require("../agentConnections/commandPolicy");
6
7
  const analytics_1 = require("../analytics/analytics");
7
8
  const config_1 = require("../config");
8
9
  const globalState_1 = tslib_1.__importDefault(require("../globalState"));
@@ -26,6 +27,7 @@ const renameProjectCommand = async (name) => {
26
27
  console.error(`\n ✅️ Renamed project to: ${project.name}\n`);
27
28
  };
28
29
  const renameProjectHandler = async (options) => {
30
+ (0, commandPolicy_1.assertAgentCommandAllowed)('config rename-project');
29
31
  const startTime = Date.now();
30
32
  let success = true;
31
33
  globalState_1.default.setVerbose(options.verbose);
@@ -1 +1 @@
1
- {"version":3,"file":"resolveProjectFlag.d.ts","sourceRoot":"","sources":["../../src/handlers/resolveProjectFlag.ts"],"names":[],"mappings":"AAWA;;;GAGG;AACH,eAAO,MAAM,kBAAkB,UAAiB,MAAM,KAAG,OAAO,CAAC,MAAM,CAiCtE,CAAC"}
1
+ {"version":3,"file":"resolveProjectFlag.d.ts","sourceRoot":"","sources":["../../src/handlers/resolveProjectFlag.ts"],"names":[],"mappings":"AAYA;;;GAGG;AACH,eAAO,MAAM,kBAAkB,UAAiB,MAAM,KAAG,OAAO,CAAC,MAAM,CAuCtE,CAAC"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.resolveProjectFlag = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const common_1 = require("@lightdash/common");
6
+ const credentials_1 = require("../credentials");
6
7
  const globalState_1 = tslib_1.__importDefault(require("../globalState"));
7
8
  const styles = tslib_1.__importStar(require("../styles"));
8
9
  const apiClient_1 = require("./dbt/apiClient");
@@ -16,6 +17,10 @@ const resolveProjectFlag = async (value) => {
16
17
  if (isUuid(value)) {
17
18
  return value;
18
19
  }
20
+ if ((0, credentials_1.getAgentConnectionSelection)() !== null) {
21
+ const { resolveAgentConnectionProject } = await Promise.resolve().then(() => tslib_1.__importStar(require('../agentConnections/projectSelection')));
22
+ return resolveAgentConnectionProject(value);
23
+ }
19
24
  const projects = await (0, apiClient_1.lightdashApi)({
20
25
  method: 'GET',
21
26
  url: `/api/v1/org/projects`,
@@ -1 +1 @@
1
- {"version":3,"file":"runChart.d.ts","sourceRoot":"","sources":["../../src/handlers/runChart.ts"],"names":[],"mappings":"AAaA,KAAK,eAAe,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAIF,eAAO,MAAM,eAAe,YACf,eAAe,KACzB,OAAO,CAAC,IAAI,CAuHd,CAAC"}
1
+ {"version":3,"file":"runChart.d.ts","sourceRoot":"","sources":["../../src/handlers/runChart.ts"],"names":[],"mappings":"AAcA,KAAK,eAAe,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAIF,eAAO,MAAM,eAAe,YACf,eAAe,KACzB,OAAO,CAAC,IAAI,CA8Hd,CAAC"}
@@ -6,6 +6,7 @@ const common_1 = require("@lightdash/common");
6
6
  const fs_1 = require("fs");
7
7
  const yaml = tslib_1.__importStar(require("js-yaml"));
8
8
  const config_1 = require("../config");
9
+ const credentials_1 = require("../credentials");
9
10
  const globalState_1 = tslib_1.__importDefault(require("../globalState"));
10
11
  const styles = tslib_1.__importStar(require("../styles"));
11
12
  const asyncQuery_1 = require("./asyncQuery");
@@ -38,8 +39,12 @@ const runChartHandler = async (options) => {
38
39
  }
39
40
  const chartAsCode = chart;
40
41
  // Get project UUID
41
- const config = await (0, config_1.getConfig)();
42
- const projectUuid = config.context?.project;
42
+ const config = await ((0, credentials_1.getAgentConnectionSelection)() === null
43
+ ? (0, config_1.getConfig)()
44
+ : (0, config_1.getConfig)({ readOnly: true }));
45
+ const projectUuid = (0, credentials_1.getAgentConnectionSelection)() === null
46
+ ? config.context?.project
47
+ : await (await Promise.resolve().then(() => tslib_1.__importStar(require('../agentConnections/projectSelection')))).resolveAgentConnectionProject();
43
48
  if (!projectUuid) {
44
49
  throw new Error(`No project selected. Run 'lightdash config set-project' first.`);
45
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"selectProject.d.ts","sourceRoot":"","sources":["../../src/handlers/selectProject.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAuB,MAAM,WAAW,CAAC;AAMxD,MAAM,MAAM,gBAAgB,GAAG;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACtB,CAAC;AAsDF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,WACvB,MAAM,mBACG,MAAM,GAAG,SAAS,KACpC,OAAO,CAAC,MAAM,GAAG,SAAS,CAW5B,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,WACd,MAAM,oBACI,MAAM,KACzB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAmFtC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,cAChB,gBAAgB,UACnB,MAAM,UACN,MAAM,KACf,IAsBF,CAAC"}
1
+ {"version":3,"file":"selectProject.d.ts","sourceRoot":"","sources":["../../src/handlers/selectProject.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAuB,MAAM,WAAW,CAAC;AAOxD,MAAM,MAAM,gBAAgB,GAAG;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACtB,CAAC;AAsDF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,WACvB,MAAM,mBACG,MAAM,GAAG,SAAS,KACpC,OAAO,CAAC,MAAM,GAAG,SAAS,CAgB5B,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,WACd,MAAM,oBACI,MAAM,KACzB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAmFtC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,cAChB,gBAAgB,UACnB,MAAM,UACN,MAAM,KACf,IAsBF,CAAC"}
@@ -5,6 +5,7 @@ const tslib_1 = require("tslib");
5
5
  const common_1 = require("@lightdash/common");
6
6
  const inquirer_1 = tslib_1.__importDefault(require("inquirer"));
7
7
  const config_1 = require("../config");
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 apiClient_1 = require("./dbt/apiClient");
@@ -49,6 +50,10 @@ const warnIgnoredPreview = async (config, projectUuid) => {
49
50
  * Returns undefined when neither is set.
50
51
  */
51
52
  const resolveProjectOverride = async (config, explicitProject) => {
53
+ if ((0, credentials_1.getAgentConnectionSelection)() !== null) {
54
+ const { resolveAgentConnectionProject } = await Promise.resolve().then(() => tslib_1.__importStar(require('../agentConnections/projectSelection')));
55
+ return resolveAgentConnectionProject(explicitProject);
56
+ }
52
57
  if (explicitProject) {
53
58
  return (0, resolveProjectFlag_1.resolveProjectFlag)(explicitProject);
54
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"setProject.d.ts","sourceRoot":"","sources":["../../src/handlers/setProject.ts"],"names":[],"mappings":"AAQA,KAAK,iBAAiB,GAAG;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,iBAAiB,UACnB,MAAM,eACA,MAAM,KACpB,OAAO,CAAC,UAAU,GAAG,SAAS,GAAG,OAAO,CAiF1C,CAAC;AAEF,eAAO,MAAM,eAAe,qBAmB3B,CAAC;AAEF,eAAO,MAAM,iBAAiB,YAAmB,iBAAiB,kBAsBjE,CAAC;AAOF,eAAO,MAAM,mBAAmB,YAAmB;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,kBAmBtE,CAAC"}
1
+ {"version":3,"file":"setProject.d.ts","sourceRoot":"","sources":["../../src/handlers/setProject.ts"],"names":[],"mappings":"AASA,KAAK,iBAAiB,GAAG;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,iBAAiB,UACnB,MAAM,eACA,MAAM,KACpB,OAAO,CAAC,UAAU,GAAG,SAAS,GAAG,OAAO,CAkF1C,CAAC;AAEF,eAAO,MAAM,eAAe,qBAoB3B,CAAC;AAEF,eAAO,MAAM,iBAAiB,YAAmB,iBAAiB,kBAuBjE,CAAC;AAOF,eAAO,MAAM,mBAAmB,YAAmB;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,kBAoBtE,CAAC"}
@@ -4,12 +4,14 @@ exports.unsetProjectHandler = exports.setProjectHandler = exports.setFirstProjec
4
4
  const tslib_1 = require("tslib");
5
5
  const common_1 = require("@lightdash/common");
6
6
  const url_1 = require("url");
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"));
10
11
  const fuzzySearchPrompt_1 = require("../prompts/fuzzySearchPrompt");
11
12
  const apiClient_1 = require("./dbt/apiClient");
12
13
  const setProjectCommand = async (name, uuidOrSlug) => {
14
+ (0, commandPolicy_1.assertAgentCommandAllowed)('config set-project');
13
15
  const projects = await (0, apiClient_1.lightdashApi)({
14
16
  method: 'GET',
15
17
  url: `/api/v1/org/projects`,
@@ -71,6 +73,7 @@ const setProjectCommand = async (name, uuidOrSlug) => {
71
73
  };
72
74
  exports.setProjectCommand = setProjectCommand;
73
75
  const setFirstProject = async () => {
76
+ (0, commandPolicy_1.assertAgentCommandAllowed)('config set-project');
74
77
  const projects = await (0, apiClient_1.lightdashApi)({
75
78
  method: 'GET',
76
79
  url: `/api/v1/org/projects`,
@@ -85,6 +88,7 @@ const setFirstProject = async () => {
85
88
  };
86
89
  exports.setFirstProject = setFirstProject;
87
90
  const setProjectHandler = async (options) => {
91
+ (0, commandPolicy_1.assertAgentCommandAllowed)('config set-project');
88
92
  const startTime = Date.now();
89
93
  let success = true;
90
94
  globalState_1.default.setVerbose(options.verbose);
@@ -115,6 +119,7 @@ const unsetProjectCommand = async () => {
115
119
  console.error(`\n Project unset.\n`);
116
120
  };
117
121
  const unsetProjectHandler = async (options) => {
122
+ (0, commandPolicy_1.assertAgentCommandAllowed)('config unset-project');
118
123
  const startTime = Date.now();
119
124
  let success = true;
120
125
  globalState_1.default.setVerbose(options.verbose);
@@ -1 +1 @@
1
- {"version":3,"file":"setWarehouse.d.ts","sourceRoot":"","sources":["../../src/handlers/setWarehouse.ts"],"names":[],"mappings":"AAWA,KAAK,0BAA0B,GAAG;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC;AAeF,eAAO,MAAM,mBAAmB,YACnB,0BAA0B,kBA0EtC,CAAC"}
1
+ {"version":3,"file":"setWarehouse.d.ts","sourceRoot":"","sources":["../../src/handlers/setWarehouse.ts"],"names":[],"mappings":"AAYA,KAAK,0BAA0B,GAAG;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC;AAeF,eAAO,MAAM,mBAAmB,YACnB,0BAA0B,kBA2EtC,CAAC"}
@@ -4,6 +4,7 @@ exports.setWarehouseHandler = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const common_1 = require("@lightdash/common");
6
6
  const inquirer_1 = tslib_1.__importDefault(require("inquirer"));
7
+ const commandPolicy_1 = require("../agentConnections/commandPolicy");
7
8
  const config_1 = require("../config");
8
9
  const globalState_1 = tslib_1.__importDefault(require("../globalState"));
9
10
  const styles = tslib_1.__importStar(require("../styles"));
@@ -23,6 +24,7 @@ const resolveProjectUuid = async (projectOption) => {
23
24
  return config.context.project;
24
25
  };
25
26
  const setWarehouseHandler = async (options) => {
27
+ (0, commandPolicy_1.assertAgentCommandAllowed)('set-warehouse');
26
28
  globalState_1.default.setVerbose(options.verbose);
27
29
  await (0, apiClient_1.checkLightdashVersion)();
28
30
  const projectUuid = await resolveProjectUuid(options.project);
@@ -1 +1 @@
1
- {"version":3,"file":"slugUpdate.d.ts","sourceRoot":"","sources":["../../src/handlers/slugUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,WAAW,EAIX,KAAK,wBAAwB,EAChC,MAAM,mBAAmB,CAAC;AAY3B,KAAK,iBAAiB,GAAG;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACvB,WAAW,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D,SAAS,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD,QAAQ,EACF;QACI,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC;QACxD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACjC,GACD,SAAS,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;CAC7B,CAAC;AAIF,MAAM,MAAM,yBAAyB,GAAG;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAwDF,eAAO,MAAM,mBAAmB,eAChB,MAAM,GAAG,SAAS,QACxB,MAAM,MACR,MAAM,iBACI,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,SAAS,KACxD,OAAO,CAAC,mBAAmB,CAyM7B,CAAC;AAEF,eAAO,MAAM,6BAA6B,SAChC,mBAAmB,cACb,MAAM,GAAG,SAAS,KAC/B,yBAAyB,EAuB3B,CAAC;AAuDF,eAAO,MAAM,oBAAoB,SACvB,mBAAmB,KAC1B,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAuD7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,gBACb,MAAM,WACV,wBAAwB,KAClC,OAAO,CAAC,IAAI,CAmBd,CAAC;AAEF,eAAO,MAAM,iBAAiB,gBACb,MAAM,cACP,MAAM,GAAG,SAAS,QACxB,MAAM,MACR,MAAM,iBACI,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,SAAS,KACxD,OAAO,CAAC,mBAAmB,CAuB7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,YACjB,iBAAiB,KAC3B,OAAO,CAAC,IAAI,CAwDd,CAAC"}
1
+ {"version":3,"file":"slugUpdate.d.ts","sourceRoot":"","sources":["../../src/handlers/slugUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,WAAW,EAIX,KAAK,wBAAwB,EAChC,MAAM,mBAAmB,CAAC;AAa3B,KAAK,iBAAiB,GAAG;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACvB,WAAW,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D,SAAS,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD,QAAQ,EACF;QACI,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC;QACxD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACjC,GACD,SAAS,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;CAC7B,CAAC;AAIF,MAAM,MAAM,yBAAyB,GAAG;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAwDF,eAAO,MAAM,mBAAmB,eAChB,MAAM,GAAG,SAAS,QACxB,MAAM,MACR,MAAM,iBACI,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,SAAS,KACxD,OAAO,CAAC,mBAAmB,CAyM7B,CAAC;AAEF,eAAO,MAAM,6BAA6B,SAChC,mBAAmB,cACb,MAAM,GAAG,SAAS,KAC/B,yBAAyB,EAuB3B,CAAC;AAuDF,eAAO,MAAM,oBAAoB,SACvB,mBAAmB,KAC1B,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAuD7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,gBACb,MAAM,WACV,wBAAwB,KAClC,OAAO,CAAC,IAAI,CAmBd,CAAC;AAEF,eAAO,MAAM,iBAAiB,gBACb,MAAM,cACP,MAAM,GAAG,SAAS,QACxB,MAAM,MACR,MAAM,iBACI,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,SAAS,KACxD,OAAO,CAAC,mBAAmB,CAuB7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,YACjB,iBAAiB,KAC3B,OAAO,CAAC,IAAI,CAyDd,CAAC"}
@@ -7,6 +7,7 @@ const fs_1 = require("fs");
7
7
  const path = tslib_1.__importStar(require("path"));
8
8
  const yaml_1 = require("yaml");
9
9
  const config_1 = require("../config");
10
+ const credentials_1 = require("../credentials");
10
11
  const globalState_1 = tslib_1.__importDefault(require("../globalState"));
11
12
  const styles = tslib_1.__importStar(require("../styles"));
12
13
  const contentAsCodePaths_1 = require("./contentAsCodePaths");
@@ -323,6 +324,7 @@ const executeSlugUpdate = async (projectUuid, customPath, from, to, resourceType
323
324
  };
324
325
  exports.executeSlugUpdate = executeSlugUpdate;
325
326
  const slugUpdateHandler = async (options) => {
327
+ (0, credentials_1.refuseAgentConnection)();
326
328
  globalState_1.default.setVerbose(options.verbose);
327
329
  await (0, apiClient_1.checkLightdashVersion)();
328
330
  const config = await (0, config_1.getConfig)();
@@ -1 +1 @@
1
- {"version":3,"file":"sourceSelection.d.ts","sourceRoot":"","sources":["../../src/handlers/sourceSelection.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,KAAK,uBAAuB,EAC/B,MAAM,mBAAmB,CAAC;AAQ3B,eAAO,MAAM,mBAAmB,YACnB,uBAAuB,EAAE,QAC5B,MAAM,KACb,uBAQF,CAAC;AAWF,eAAO,MAAM,wBAAwB,gBACpB,MAAM,kBACH,MAAM,GAAG,SAAS,0BACX,MAAM,KAC9B,OAAO,CAAC,MAAM,GAAG,SAAS,CAU5B,CAAC;AAEF,eAAO,MAAM,gBAAgB,SACnB,MAAM,WACH;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,kBAehC,CAAC"}
1
+ {"version":3,"file":"sourceSelection.d.ts","sourceRoot":"","sources":["../../src/handlers/sourceSelection.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,KAAK,uBAAuB,EAC/B,MAAM,mBAAmB,CAAC;AAU3B,eAAO,MAAM,mBAAmB,YACnB,uBAAuB,EAAE,QAC5B,MAAM,KACb,uBAQF,CAAC;AAWF,eAAO,MAAM,wBAAwB,gBACpB,MAAM,kBACH,MAAM,GAAG,SAAS,0BACX,MAAM,KAC9B,OAAO,CAAC,MAAM,GAAG,SAAS,CAgB5B,CAAC;AAEF,eAAO,MAAM,gBAAgB,SACnB,MAAM,WACH;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,kBAkBhC,CAAC"}
@@ -3,7 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.setSourceHandler = exports.resolveProjectSourceUuid = exports.selectProjectSource = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const common_1 = require("@lightdash/common");
6
+ const commandPolicy_1 = require("../agentConnections/commandPolicy");
6
7
  const config_1 = require("../config");
8
+ const credentials_1 = require("../credentials");
7
9
  const globalState_1 = tslib_1.__importDefault(require("../globalState"));
8
10
  const apiClient_1 = require("./dbt/apiClient");
9
11
  const formatSourceNames = (sources) => sources.map(({ name }) => ` - ${name}`).join('\n');
@@ -21,7 +23,13 @@ const getProjectSources = async (projectUuid) => (0, apiClient_1.lightdashApi)({
21
23
  body: undefined,
22
24
  });
23
25
  const resolveProjectSourceUuid = async (projectUuid, sourceOverride, configuredProjectUuid = projectUuid) => {
24
- const config = await (0, config_1.getConfig)();
26
+ if ((0, credentials_1.getAgentConnectionSelection)() !== null) {
27
+ (0, commandPolicy_1.assertAgentCommandAllowed)('deploy', { source: sourceOverride });
28
+ return undefined;
29
+ }
30
+ const config = await ((0, credentials_1.getAgentConnectionSelection)() === null
31
+ ? (0, config_1.getConfig)()
32
+ : (0, config_1.getConfig)({ readOnly: true }));
25
33
  const name = sourceOverride ??
26
34
  (config.context?.project === configuredProjectUuid
27
35
  ? config.context.source
@@ -33,8 +41,11 @@ const resolveProjectSourceUuid = async (projectUuid, sourceOverride, configuredP
33
41
  };
34
42
  exports.resolveProjectSourceUuid = resolveProjectSourceUuid;
35
43
  const setSourceHandler = async (name, options) => {
44
+ (0, commandPolicy_1.assertAgentCommandAllowed)('config set-source');
36
45
  globalState_1.default.setVerbose(options.verbose);
37
- const config = await (0, config_1.getConfig)();
46
+ const config = await ((0, credentials_1.getAgentConnectionSelection)() === null
47
+ ? (0, config_1.getConfig)()
48
+ : (0, config_1.getConfig)({ readOnly: true }));
38
49
  if (!config.context?.project) {
39
50
  throw new common_1.AuthorizationError(`No project selected. Run 'lightdash config set-project' first.`);
40
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../src/handlers/sql.ts"],"names":[],"mappings":"AAcA,KAAK,iBAAiB,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAKF,eAAO,MAAM,UAAU,QACd,MAAM,WACF,iBAAiB,KAC3B,OAAO,CAAC,IAAI,CAqGd,CAAC"}
1
+ {"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../src/handlers/sql.ts"],"names":[],"mappings":"AAeA,KAAK,iBAAiB,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAKF,eAAO,MAAM,UAAU,QACd,MAAM,WACF,iBAAiB,KAC3B,OAAO,CAAC,IAAI,CA4Gd,CAAC"}
@@ -7,6 +7,7 @@ const fs_1 = require("fs");
7
7
  const uuid_1 = require("uuid");
8
8
  const analytics_1 = require("../analytics/analytics");
9
9
  const config_1 = require("../config");
10
+ const credentials_1 = require("../credentials");
10
11
  const globalState_1 = tslib_1.__importDefault(require("../globalState"));
11
12
  const styles = tslib_1.__importStar(require("../styles"));
12
13
  const asyncQuery_1 = require("./asyncQuery");
@@ -17,8 +18,12 @@ const sqlHandler = async (sql, options) => {
17
18
  globalState_1.default.setVerbose(options.verbose ?? false);
18
19
  const executionId = (0, uuid_1.v4)();
19
20
  const startTime = Date.now();
20
- const config = await (0, config_1.getConfig)();
21
- const projectUuid = config.context?.project;
21
+ const config = await ((0, credentials_1.getAgentConnectionSelection)() === null
22
+ ? (0, config_1.getConfig)()
23
+ : (0, config_1.getConfig)({ readOnly: true }));
24
+ const projectUuid = (0, credentials_1.getAgentConnectionSelection)() === null
25
+ ? config.context?.project
26
+ : await (await Promise.resolve().then(() => tslib_1.__importStar(require('../agentConnections/projectSelection')))).resolveAgentConnectionProject();
22
27
  if (!projectUuid) {
23
28
  throw new Error(`No project selected. Run 'lightdash config set-project' first.`);
24
29
  }
@@ -1,4 +1,5 @@
1
1
  import { LightdashCliVersionHeader, LightdashRequestMethodHeader, RequestMethod } from '@lightdash/common';
2
+ import { type Credential } from '../credentials';
2
3
  type RequestHeader = {
3
4
  'Content-Type': 'application/json';
4
5
  'Content-Encoding'?: string;
@@ -7,6 +8,7 @@ type RequestHeader = {
7
8
  [LightdashRequestMethodHeader]: RequestMethod;
8
9
  [LightdashCliVersionHeader]: string;
9
10
  };
11
+ export declare function getCredentialAuthHeader(credential: Credential): string;
10
12
  /**
11
13
  * We initially used personal access tokens (PATs) for CLI authentication without any prefix.
12
14
  * Service account tokens are launching with a prefix, so we'll check them first.
@@ -16,5 +18,6 @@ type RequestHeader = {
16
18
  */
17
19
  export declare function getAuthHeader(token: string): string;
18
20
  export declare function buildRequestHeaders(token: string): RequestHeader;
21
+ export declare function buildCredentialHeaders(credential: Credential, proxyAuthorization: string | null): RequestHeader;
19
22
  export {};
20
23
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/handlers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,yBAAyB,EACzB,4BAA4B,EAC5B,aAAa,EAChB,MAAM,mBAAmB,CAAC;AAQ3B,KAAK,aAAa,GAAG;IACjB,cAAc,EAAE,kBAAkB,CAAC;IACnC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,CAAC,4BAA4B,CAAC,EAAE,aAAa,CAAC;IAC9C,CAAC,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACvC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,UAK1C;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,iBAiBhD"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/handlers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,yBAAyB,EACzB,4BAA4B,EAC5B,aAAa,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAGH,KAAK,UAAU,EAClB,MAAM,gBAAgB,CAAC;AAQxB,KAAK,aAAa,GAAG;IACjB,cAAc,EAAE,kBAAkB,CAAC;IACnC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,CAAC,4BAA4B,CAAC,EAAE,aAAa,CAAC;IAC9C,CAAC,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACvC,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAWtE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,UAM1C;AAqBD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,iBAiBhD;AAED,wBAAgB,sBAAsB,CAClC,UAAU,EAAE,UAAU,EACtB,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAClC,aAAa,CAOf"}
@@ -1,14 +1,29 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCredentialAuthHeader = getCredentialAuthHeader;
3
4
  exports.getAuthHeader = getAuthHeader;
4
5
  exports.buildRequestHeaders = buildRequestHeaders;
6
+ exports.buildCredentialHeaders = buildCredentialHeaders;
5
7
  const common_1 = require("@lightdash/common");
8
+ const credentials_1 = require("../credentials");
6
9
  const env_1 = require("../env");
7
10
  var TokenType;
8
11
  (function (TokenType) {
9
12
  TokenType["ApiKey"] = "ApiKey";
10
13
  TokenType["Bearer"] = "Bearer";
11
14
  })(TokenType || (TokenType = {}));
15
+ function getCredentialAuthHeader(credential) {
16
+ (0, credentials_1.requireInvocationContext)();
17
+ switch (credential.kind) {
18
+ case 'human_api_key':
19
+ return `${TokenType.ApiKey} ${credential.token}`;
20
+ case 'service_account':
21
+ case 'agent_connection':
22
+ return `${TokenType.Bearer} ${credential.token}`;
23
+ default:
24
+ return (0, common_1.assertUnreachable)(credential, 'Unknown credential kind');
25
+ }
26
+ }
12
27
  /**
13
28
  * We initially used personal access tokens (PATs) for CLI authentication without any prefix.
14
29
  * Service account tokens are launching with a prefix, so we'll check them first.
@@ -17,11 +32,27 @@ var TokenType;
17
32
  * See {@link AuthTokenPrefix} for the available token prefixes
18
33
  */
19
34
  function getAuthHeader(token) {
35
+ (0, credentials_1.refuseAgentConnection)();
20
36
  const authType = token?.startsWith(common_1.AuthTokenPrefix.SERVICE_ACCOUNT)
21
37
  ? TokenType.Bearer
22
38
  : TokenType.ApiKey;
23
39
  return `${authType} ${token}`;
24
40
  }
41
+ function buildHeaders(authorization) {
42
+ const headers = {
43
+ 'Content-Type': 'application/json',
44
+ Authorization: authorization,
45
+ [common_1.LightdashRequestMethodHeader]: process.env.CI === 'true'
46
+ ? common_1.RequestMethod.CLI_CI
47
+ : common_1.RequestMethod.CLI,
48
+ [common_1.LightdashCliVersionHeader]: env_1.CLI_VERSION,
49
+ };
50
+ if (process.env.LIGHTDASH_PROXY_AUTHORIZATION) {
51
+ headers['Proxy-Authorization'] =
52
+ process.env.LIGHTDASH_PROXY_AUTHORIZATION;
53
+ }
54
+ return headers;
55
+ }
25
56
  function buildRequestHeaders(token) {
26
57
  const headers = {
27
58
  'Content-Type': 'application/json',
@@ -37,3 +68,11 @@ function buildRequestHeaders(token) {
37
68
  }
38
69
  return headers;
39
70
  }
71
+ function buildCredentialHeaders(credential, proxyAuthorization) {
72
+ const headers = {
73
+ ...buildHeaders(getCredentialAuthHeader(credential)),
74
+ };
75
+ if (credential.kind === 'agent_connection' && proxyAuthorization !== null)
76
+ headers['Proxy-Authorization'] = proxyAuthorization;
77
+ return headers;
78
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/handlers/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAKH,OAAO,EACP,YAAY,EASZ,kBAAkB,EAElB,gBAAgB,EACnB,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EAAW,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAU3D,eAAO,MAAM,iBAAiB,gBACb,MAAM,YACT,CAAC,OAAO,GAAG,YAAY,CAAC,EAAE,qBACjB,gBAAgB,EAAE;;EAMnC,CAAC;AAEP,eAAO,MAAM,WAAW,YAAmB,MAAM;;;EAK3C,CAAC;AAEP,eAAO,MAAM,aAAa,gBAAuB,MAAM,SAAS,MAAM,8DAKhE,CAAC;AAmCP,eAAO,MAAM,qBAAqB,YAAI,OAAO,EAAE,SAAS,CAAU,CAAC;AACnE,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE,eAAO,MAAM,6CAA6C,2FACkC,CAAC;AAE7F,KAAK,sBAAsB,GAAG,qBAAqB,GAAG;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,wBAAwB,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,8BAA8B,CAAC,EAAE,OAAO,CAAC;IACzC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,wBAAgB,uBAAuB,CACnC,OAAO,EAAE,IAAI,CACT,sBAAsB,EACtB,UAAU,GAAG,gCAAgC,CAChD,GACF,kBAAkB,CAKpB;AAED,KAAK,wBAAwB,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,KAAK,CAAC;CAC5C,CAAC;AAEF,eAAO,MAAM,iBAAiB,iDAI3B,wBAAwB,KAAG,OAAO,CAAC,MAAM,CAY3C,CAAC;AAEF,eAAO,MAAM,eAAe,oBACP,sBAAsB,kBAoW1C,CAAC"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/handlers/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAKH,OAAO,EACP,YAAY,EASZ,kBAAkB,EAElB,gBAAgB,EACnB,MAAM,mBAAmB,CAAC;AAQ3B,OAAO,EAAW,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAU3D,eAAO,MAAM,iBAAiB,gBACb,MAAM,YACT,CAAC,OAAO,GAAG,YAAY,CAAC,EAAE,qBACjB,gBAAgB,EAAE;;EAMnC,CAAC;AAEP,eAAO,MAAM,WAAW,YAAmB,MAAM;;;EAK3C,CAAC;AAEP,eAAO,MAAM,aAAa,gBAAuB,MAAM,SAAS,MAAM,8DAKhE,CAAC;AAmCP,eAAO,MAAM,qBAAqB,YAAI,OAAO,EAAE,SAAS,CAAU,CAAC;AACnE,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE,eAAO,MAAM,6CAA6C,2FACkC,CAAC;AAE7F,KAAK,sBAAsB,GAAG,qBAAqB,GAAG;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,wBAAwB,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,8BAA8B,CAAC,EAAE,OAAO,CAAC;IACzC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,wBAAgB,uBAAuB,CACnC,OAAO,EAAE,IAAI,CACT,sBAAsB,EACtB,UAAU,GAAG,gCAAgC,CAChD,GACF,kBAAkB,CAKpB;AAED,KAAK,wBAAwB,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,KAAK,CAAC;CAC5C,CAAC;AAEF,eAAO,MAAM,iBAAiB,iDAI3B,wBAAwB,KAAG,OAAO,CAAC,MAAM,CAY3C,CAAC;AAEF,eAAO,MAAM,eAAe,oBACP,sBAAsB,kBAqW1C,CAAC"}
@@ -6,6 +6,7 @@ const tslib_1 = require("tslib");
6
6
  const common_1 = require("@lightdash/common");
7
7
  const columnify_1 = tslib_1.__importDefault(require("columnify"));
8
8
  const uuid_1 = require("uuid");
9
+ const commandPolicy_1 = require("../agentConnections/commandPolicy");
9
10
  const analytics_1 = require("../analytics/analytics");
10
11
  const config_1 = require("../config");
11
12
  const globalState_1 = tslib_1.__importDefault(require("../globalState"));
@@ -78,6 +79,7 @@ const waitUntilFinished = async ({ jobUuid, refetchIntervalMs, createError, }) =
78
79
  };
79
80
  exports.waitUntilFinished = waitUntilFinished;
80
81
  const validateHandler = async (originalOptions) => {
82
+ (0, commandPolicy_1.assertAgentCommandAllowed)('validate');
81
83
  const options = { ...originalOptions };
82
84
  globalState_1.default.setVerbose(options.verbose);
83
85
  if (options.showChartConfigurationWarnings) {
@@ -1 +1 @@
1
- {"version":3,"file":"warehouseCatalog.d.ts","sourceRoot":"","sources":["../../src/handlers/warehouseCatalog.ts"],"names":[],"mappings":"AAYA,KAAK,uBAAuB,GAAG;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC;AA6HF,eAAO,MAAM,uBAAuB,YACvB,uBAAuB,KACjC,OAAO,CAAC,IAAI,CAoDd,CAAC"}
1
+ {"version":3,"file":"warehouseCatalog.d.ts","sourceRoot":"","sources":["../../src/handlers/warehouseCatalog.ts"],"names":[],"mappings":"AAaA,KAAK,uBAAuB,GAAG;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC;AA6HF,eAAO,MAAM,uBAAuB,YACvB,uBAAuB,KACjC,OAAO,CAAC,IAAI,CA2Dd,CAAC"}
@@ -4,6 +4,7 @@ exports.warehouseCatalogHandler = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const columnify_1 = tslib_1.__importDefault(require("columnify"));
6
6
  const config_1 = require("../config");
7
+ const credentials_1 = require("../credentials");
7
8
  const globalState_1 = tslib_1.__importDefault(require("../globalState"));
8
9
  const styles = tslib_1.__importStar(require("../styles"));
9
10
  const apiClient_1 = require("./dbt/apiClient");
@@ -64,8 +65,12 @@ const renderHumanOutput = ({ tables }) => {
64
65
  const warehouseCatalogHandler = async (options) => {
65
66
  globalState_1.default.setVerbose(options.verbose);
66
67
  validateFieldLookup(options);
67
- const config = await (0, config_1.getConfig)();
68
- const projectUuid = config.context?.project;
68
+ const config = await ((0, credentials_1.getAgentConnectionSelection)() === null
69
+ ? (0, config_1.getConfig)()
70
+ : (0, config_1.getConfig)({ readOnly: true }));
71
+ const projectUuid = (0, credentials_1.getAgentConnectionSelection)() === null
72
+ ? config.context?.project
73
+ : await (await Promise.resolve().then(() => tslib_1.__importStar(require('../agentConnections/projectSelection')))).resolveAgentConnectionProject();
69
74
  if (!projectUuid) {
70
75
  throw new Error("No project selected. Run 'lightdash config set-project' first.");
71
76
  }
package/dist/index.js CHANGED
@@ -4,6 +4,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  const tslib_1 = require("tslib");
5
5
  const common_1 = require("@lightdash/common");
6
6
  const commander_1 = require("commander");
7
+ const agentConnectionConnectOption_1 = require("./agentConnectionConnectOption");
8
+ const agentConnectionOption_1 = require("./agentConnectionOption");
9
+ const credentials_1 = require("./credentials");
7
10
  const env_1 = require("./env");
8
11
  const error_1 = require("./error");
9
12
  const globalState_1 = tslib_1.__importDefault(require("./globalState"));
@@ -90,6 +93,12 @@ function parseProjectArgument(value) {
90
93
  }
91
94
  return value;
92
95
  }
96
+ let agentConnectionJson = false;
97
+ let agentConnectionConnectInvocation = false;
98
+ (0, agentConnectionOption_1.registerAgentConnectionOption)(commander_1.program, () => {
99
+ agentConnectionJson = false;
100
+ agentConnectionConnectInvocation = false;
101
+ });
93
102
  commander_1.program
94
103
  .version((0, installSkills_1.getVersionWithSkills)())
95
104
  .name(styles.title('⚡️lightdash'))
@@ -157,7 +166,21 @@ ${styles.bold('Examples:')}
157
166
  const agentProgram = commander_1.program
158
167
  .command('agent')
159
168
  .description('Connect your agent to the warehouse and check its status');
160
- agentProgram
169
+ agentProgram.hook('preAction', (_root, command) => {
170
+ agentConnectionConnectInvocation =
171
+ command.name() === 'connect' &&
172
+ (command.opts().name !== undefined ||
173
+ command.opts().capabilities !== undefined ||
174
+ command.opts().expiresIn !== undefined ||
175
+ command.opts().connection === true);
176
+ agentConnectionJson =
177
+ command.opts().json === true &&
178
+ (command.name() === 'revoke' ||
179
+ (command.name() === 'status' &&
180
+ (command.opts().name !== undefined ||
181
+ (0, credentials_1.getAgentConnectionSelection)() !== null)));
182
+ });
183
+ const agentConnectProgram = agentProgram
161
184
  .command('connect')
162
185
  .description('Connects your agent to the warehouse using browser sign-in')
163
186
  .option('--project <project uuid or slug>', 'Specify the project', parseProjectArgument)
@@ -170,8 +193,11 @@ ${styles.bold('Examples:')}
170
193
  lightdash agent connect --project my-project --oauth-port 4321 --timeout 180
171
194
  `)
172
195
  .action(agentConnect_1.agentConnectHandler);
196
+ (0, agentConnectionConnectOption_1.registerAgentConnectionConnect)(agentConnectProgram, agentConnect_1.agentConnectHandler);
173
197
  agentProgram
174
198
  .command('status')
199
+ .addOption(new commander_1.Option('--name <slot>', 'Select an agent connection slot').hideHelp())
200
+ .addOption(new commander_1.Option('--json', 'Output connection status as JSON').hideHelp())
175
201
  .description('Shows your agent sign-in status for a project')
176
202
  .option('--project <project uuid or slug>', 'Specify the project', parseProjectArgument)
177
203
  .option('--verbose', undefined, false)
@@ -181,6 +207,17 @@ ${styles.bold('Examples:')}
181
207
  lightdash agent status --project my-project
182
208
  `)
183
209
  .action(agentStatus_1.agentStatusHandler);
210
+ agentProgram
211
+ .command('revoke', { hidden: true })
212
+ .addOption(new commander_1.Option('--name <slot>', 'Select an agent connection slot')
213
+ .makeOptionMandatory()
214
+ .hideHelp())
215
+ .addOption(new commander_1.Option('--json', 'Output revocation status as JSON').hideHelp())
216
+ .addOption(new commander_1.Option('--human', 'Revoke with a matching personal CLI login').hideHelp())
217
+ .action(async (options) => {
218
+ const { agentRevokeHandler } = await Promise.resolve().then(() => tslib_1.__importStar(require('./handlers/agentRevoke')));
219
+ await agentRevokeHandler(options);
220
+ });
184
221
  // CONFIG
185
222
  const configProgram = commander_1.program
186
223
  .command('config')
@@ -847,7 +884,9 @@ const errorHandler = (err) => {
847
884
  }
848
885
  console.error(`\n💡 Contact your Lightdash administrator to request project creation access or if you believe this is incorrect.\n`);
849
886
  }
850
- else if (err.name === 'AuthorizationError') {
887
+ else if (err.name === 'AuthorizationError' &&
888
+ commander_1.program.opts().agentConnection === undefined &&
889
+ (0, credentials_1.getAgentConnectionSelection)() === null) {
851
890
  console.error(`Looks like you did not authenticate or the personal access token expired.${process.env.LIGHTDASH_API_KEY
852
891
  ? `\n\nLIGHTDASH_API_KEY is set, and it takes precedence over the token saved by \`lightdash login\`. If you expected your saved login to be used, run ${styles.bold('unset LIGHTDASH_API_KEY')}.`
853
892
  : ''}\n\n👀 See https://docs.lightdash.com/guides/cli/cli-authentication for help and examples`);
@@ -877,7 +916,8 @@ const successHandler = () => {
877
916
  process.argv.includes('--auth')) {
878
917
  process.exit(0);
879
918
  }
880
- console.error(`Done 🕶`);
919
+ if (!agentConnectionJson && !agentConnectionConnectInvocation)
920
+ console.error(`Done 🕶`);
881
921
  // Handlers report partial failures (e.g. some uploads failed) via
882
922
  // process.exitCode; an unconditional exit(0) would wipe it.
883
923
  process.exit(process.exitCode ?? 0);
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lightdash-config/index.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,iCAAiC,eAC9B,MAAM,gBACJ,MAAM,gEAsCvB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lightdash-config/index.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,iCAAiC,eAC9B,MAAM,gBACJ,MAAM,gEAwCvB,CAAC"}