@microsoft/managed-apps-cli 0.6.1 → 0.8.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 (207) hide show
  1. package/README.md +56 -10
  2. package/dist/ArgumentProvider.d.ts +21 -2
  3. package/dist/ArgumentProvider.d.ts.map +1 -1
  4. package/dist/ArgumentProvider.js +47 -3
  5. package/dist/ArgumentProvider.js.map +1 -1
  6. package/dist/Authentication/ActiveAccountStore.d.ts +24 -0
  7. package/dist/Authentication/ActiveAccountStore.d.ts.map +1 -0
  8. package/dist/Authentication/ActiveAccountStore.js +54 -0
  9. package/dist/Authentication/ActiveAccountStore.js.map +1 -0
  10. package/dist/Authentication/NodeMsalAuthenticationProvider.d.ts +57 -3
  11. package/dist/Authentication/NodeMsalAuthenticationProvider.d.ts.map +1 -1
  12. package/dist/Authentication/NodeMsalAuthenticationProvider.js +187 -27
  13. package/dist/Authentication/NodeMsalAuthenticationProvider.js.map +1 -1
  14. package/dist/Cli.d.ts.map +1 -1
  15. package/dist/Cli.js +8 -2
  16. package/dist/Cli.js.map +1 -1
  17. package/dist/CliSettings.d.ts.map +1 -1
  18. package/dist/CliSettings.js +1 -2
  19. package/dist/CliSettings.js.map +1 -1
  20. package/dist/CliUtils.d.ts +2 -1
  21. package/dist/CliUtils.d.ts.map +1 -1
  22. package/dist/CliUtils.js +4 -0
  23. package/dist/CliUtils.js.map +1 -1
  24. package/dist/Constants/CommandRegistry.d.ts.map +1 -1
  25. package/dist/Constants/CommandRegistry.js +44 -6
  26. package/dist/Constants/CommandRegistry.js.map +1 -1
  27. package/dist/Constants/HelpStrings.d.ts +75 -3
  28. package/dist/Constants/HelpStrings.d.ts.map +1 -1
  29. package/dist/Constants/HelpStrings.js +143 -41
  30. package/dist/Constants/HelpStrings.js.map +1 -1
  31. package/dist/Errors/GitHubErrorMap.d.ts +3 -3
  32. package/dist/Errors/GitHubErrorMap.d.ts.map +1 -1
  33. package/dist/Errors/GitHubErrorMap.js +12 -7
  34. package/dist/Errors/GitHubErrorMap.js.map +1 -1
  35. package/dist/FS/CliFs.d.ts.map +1 -1
  36. package/dist/FS/CliFs.js.map +1 -1
  37. package/dist/HttpClient/CliHttpClient.d.ts +17 -0
  38. package/dist/HttpClient/CliHttpClient.d.ts.map +1 -1
  39. package/dist/HttpClient/CliHttpClient.js +112 -1
  40. package/dist/HttpClient/CliHttpClient.js.map +1 -1
  41. package/dist/Logger/CliLogger.d.ts.map +1 -1
  42. package/dist/Logger/CliLogger.js +1 -1
  43. package/dist/Logger/CliLogger.js.map +1 -1
  44. package/dist/Logger/ConsoleWriter.d.ts.map +1 -1
  45. package/dist/Logger/ConsoleWriter.js +7 -7
  46. package/dist/Logger/ConsoleWriter.js.map +1 -1
  47. package/dist/Middletier/FunctionsBundler.d.ts +17 -0
  48. package/dist/Middletier/FunctionsBundler.d.ts.map +1 -0
  49. package/dist/Middletier/FunctionsBundler.js +165 -0
  50. package/dist/Middletier/FunctionsBundler.js.map +1 -0
  51. package/dist/Middletier/PackFunctions.d.ts +52 -0
  52. package/dist/Middletier/PackFunctions.d.ts.map +1 -0
  53. package/dist/Middletier/PackFunctions.js +122 -0
  54. package/dist/Middletier/PackFunctions.js.map +1 -0
  55. package/dist/Types/Cli.types.d.ts +42 -1
  56. package/dist/Types/Cli.types.d.ts.map +1 -1
  57. package/dist/Types/Command.types.d.ts +14 -3
  58. package/dist/Types/Command.types.d.ts.map +1 -1
  59. package/dist/Types/Command.types.js +4 -0
  60. package/dist/Types/Command.types.js.map +1 -1
  61. package/dist/Utils/BuildPolling.d.ts +18 -0
  62. package/dist/Utils/BuildPolling.d.ts.map +1 -0
  63. package/dist/Utils/BuildPolling.js +63 -0
  64. package/dist/Utils/BuildPolling.js.map +1 -0
  65. package/dist/Utils/BuildVerbDescriptionTable.d.ts +11 -1
  66. package/dist/Utils/BuildVerbDescriptionTable.d.ts.map +1 -1
  67. package/dist/Utils/BuildVerbDescriptionTable.js +73 -17
  68. package/dist/Utils/BuildVerbDescriptionTable.js.map +1 -1
  69. package/dist/Utils/ConsoleOutput.d.ts.map +1 -1
  70. package/dist/Utils/ConsoleOutput.js +15 -12
  71. package/dist/Utils/ConsoleOutput.js.map +1 -1
  72. package/dist/Utils/DcfRecovery.d.ts +84 -0
  73. package/dist/Utils/DcfRecovery.d.ts.map +1 -0
  74. package/dist/Utils/DcfRecovery.js +258 -0
  75. package/dist/Utils/DcfRecovery.js.map +1 -0
  76. package/dist/Utils/EnhanceNetworkError.d.ts.map +1 -1
  77. package/dist/Utils/EnhanceNetworkError.js +2 -0
  78. package/dist/Utils/EnhanceNetworkError.js.map +1 -1
  79. package/dist/Utils/EnvVars.d.ts +1 -1
  80. package/dist/Utils/EnvVars.d.ts.map +1 -1
  81. package/dist/Utils/EnvVars.js.map +1 -1
  82. package/dist/Utils/EnvironmentRoutingUtils.d.ts +8 -0
  83. package/dist/Utils/EnvironmentRoutingUtils.d.ts.map +1 -0
  84. package/dist/Utils/EnvironmentRoutingUtils.js +45 -0
  85. package/dist/Utils/EnvironmentRoutingUtils.js.map +1 -0
  86. package/dist/Utils/GitHubDcfFlow.d.ts +4 -5
  87. package/dist/Utils/GitHubDcfFlow.d.ts.map +1 -1
  88. package/dist/Utils/GitHubDcfFlow.js +4 -5
  89. package/dist/Utils/GitHubDcfFlow.js.map +1 -1
  90. package/dist/Utils/GitUtils.d.ts +5 -0
  91. package/dist/Utils/GitUtils.d.ts.map +1 -1
  92. package/dist/Utils/GitUtils.js +15 -0
  93. package/dist/Utils/GitUtils.js.map +1 -1
  94. package/dist/Utils/Paging.d.ts.map +1 -1
  95. package/dist/Utils/Paging.js +4 -4
  96. package/dist/Utils/Paging.js.map +1 -1
  97. package/dist/Utils/ResolveCommand.d.ts +7 -1
  98. package/dist/Utils/ResolveCommand.d.ts.map +1 -1
  99. package/dist/Utils/ResolveCommand.js +38 -20
  100. package/dist/Utils/ResolveCommand.js.map +1 -1
  101. package/dist/Utils/Spinner.d.ts +9 -1
  102. package/dist/Utils/Spinner.d.ts.map +1 -1
  103. package/dist/Utils/Spinner.js +25 -5
  104. package/dist/Utils/Spinner.js.map +1 -1
  105. package/dist/Verbs/AddAction.d.ts.map +1 -1
  106. package/dist/Verbs/AddAction.js +12 -41
  107. package/dist/Verbs/AddAction.js.map +1 -1
  108. package/dist/Verbs/AddConnector.d.ts +24 -0
  109. package/dist/Verbs/AddConnector.d.ts.map +1 -0
  110. package/dist/Verbs/AddConnector.js +156 -0
  111. package/dist/Verbs/AddConnector.js.map +1 -0
  112. package/dist/Verbs/AddConnectorFlows.d.ts +72 -0
  113. package/dist/Verbs/AddConnectorFlows.d.ts.map +1 -0
  114. package/dist/Verbs/AddConnectorFlows.js +198 -0
  115. package/dist/Verbs/AddConnectorFlows.js.map +1 -0
  116. package/dist/Verbs/AddDataSource.js +1 -1
  117. package/dist/Verbs/AddDataSource.js.map +1 -1
  118. package/dist/Verbs/AddTable.d.ts.map +1 -1
  119. package/dist/Verbs/AddTable.js +15 -100
  120. package/dist/Verbs/AddTable.js.map +1 -1
  121. package/dist/Verbs/AuthStatus.d.ts.map +1 -1
  122. package/dist/Verbs/AuthStatus.js +34 -6
  123. package/dist/Verbs/AuthStatus.js.map +1 -1
  124. package/dist/Verbs/AuthSwitch.d.ts +6 -0
  125. package/dist/Verbs/AuthSwitch.d.ts.map +1 -0
  126. package/dist/Verbs/AuthSwitch.js +67 -0
  127. package/dist/Verbs/AuthSwitch.js.map +1 -0
  128. package/dist/Verbs/BuildMaafApp.d.ts.map +1 -1
  129. package/dist/Verbs/BuildMaafApp.js +98 -22
  130. package/dist/Verbs/BuildMaafApp.js.map +1 -1
  131. package/dist/Verbs/ConnectorHelpers.d.ts +54 -1
  132. package/dist/Verbs/ConnectorHelpers.d.ts.map +1 -1
  133. package/dist/Verbs/ConnectorHelpers.js +217 -16
  134. package/dist/Verbs/ConnectorHelpers.js.map +1 -1
  135. package/dist/Verbs/CreateMaafApp.d.ts +75 -0
  136. package/dist/Verbs/CreateMaafApp.d.ts.map +1 -1
  137. package/dist/Verbs/CreateMaafApp.js +273 -75
  138. package/dist/Verbs/CreateMaafApp.js.map +1 -1
  139. package/dist/Verbs/DeployMaafApp.d.ts.map +1 -1
  140. package/dist/Verbs/DeployMaafApp.js +52 -20
  141. package/dist/Verbs/DeployMaafApp.js.map +1 -1
  142. package/dist/Verbs/Dev.js +5 -5
  143. package/dist/Verbs/Dev.js.map +1 -1
  144. package/dist/Verbs/GetMaafBuildStatus.d.ts.map +1 -1
  145. package/dist/Verbs/GetMaafBuildStatus.js +66 -17
  146. package/dist/Verbs/GetMaafBuildStatus.js.map +1 -1
  147. package/dist/Verbs/Init.d.ts.map +1 -1
  148. package/dist/Verbs/Init.js +170 -60
  149. package/dist/Verbs/Init.js.map +1 -1
  150. package/dist/Verbs/ListConnectors.d.ts.map +1 -1
  151. package/dist/Verbs/ListConnectors.js +4 -2
  152. package/dist/Verbs/ListConnectors.js.map +1 -1
  153. package/dist/Verbs/ListDatasets.d.ts.map +1 -1
  154. package/dist/Verbs/ListDatasets.js +5 -0
  155. package/dist/Verbs/ListDatasets.js.map +1 -1
  156. package/dist/Verbs/ListFlows.d.ts.map +1 -1
  157. package/dist/Verbs/ListFlows.js +1 -2
  158. package/dist/Verbs/ListFlows.js.map +1 -1
  159. package/dist/Verbs/ListSqlStoredProcedures.d.ts.map +1 -1
  160. package/dist/Verbs/ListSqlStoredProcedures.js +5 -0
  161. package/dist/Verbs/ListSqlStoredProcedures.js.map +1 -1
  162. package/dist/Verbs/ListTables.d.ts.map +1 -1
  163. package/dist/Verbs/ListTables.js +5 -0
  164. package/dist/Verbs/ListTables.js.map +1 -1
  165. package/dist/Verbs/Login.d.ts.map +1 -1
  166. package/dist/Verbs/Login.js +16 -13
  167. package/dist/Verbs/Login.js.map +1 -1
  168. package/dist/Verbs/Logout.d.ts.map +1 -1
  169. package/dist/Verbs/Logout.js +19 -13
  170. package/dist/Verbs/Logout.js.map +1 -1
  171. package/dist/Verbs/MaafAppPermissions.d.ts.map +1 -1
  172. package/dist/Verbs/MaafAppPermissions.js +4 -0
  173. package/dist/Verbs/MaafAppPermissions.js.map +1 -1
  174. package/dist/Verbs/Pack.d.ts +6 -6
  175. package/dist/Verbs/Pack.d.ts.map +1 -1
  176. package/dist/Verbs/Pack.js +80 -12
  177. package/dist/Verbs/Pack.js.map +1 -1
  178. package/dist/Verbs/PlayMaafApp.d.ts +22 -0
  179. package/dist/Verbs/PlayMaafApp.d.ts.map +1 -0
  180. package/dist/Verbs/PlayMaafApp.js +147 -0
  181. package/dist/Verbs/PlayMaafApp.js.map +1 -0
  182. package/dist/Verbs/RefreshDataSource.d.ts.map +1 -1
  183. package/dist/Verbs/RefreshDataSource.js.map +1 -1
  184. package/dist/Verbs/RefreshGitAuth.d.ts.map +1 -1
  185. package/dist/Verbs/RefreshGitAuth.js +1 -1
  186. package/dist/Verbs/RefreshGitAuth.js.map +1 -1
  187. package/dist/Verbs/ShareLinkCreate.d.ts +23 -0
  188. package/dist/Verbs/ShareLinkCreate.d.ts.map +1 -0
  189. package/dist/Verbs/ShareLinkCreate.js +73 -0
  190. package/dist/Verbs/ShareLinkCreate.js.map +1 -0
  191. package/dist/Verbs/ShareLinkList.d.ts +16 -0
  192. package/dist/Verbs/ShareLinkList.d.ts.map +1 -0
  193. package/dist/Verbs/ShareLinkList.js +84 -0
  194. package/dist/Verbs/ShareLinkList.js.map +1 -0
  195. package/dist/Verbs/ShareLinkRevoke.d.ts +22 -0
  196. package/dist/Verbs/ShareLinkRevoke.d.ts.map +1 -0
  197. package/dist/Verbs/ShareLinkRevoke.js +137 -0
  198. package/dist/Verbs/ShareLinkRevoke.js.map +1 -0
  199. package/dist/Verbs/VerbConstants.d.ts +151 -21
  200. package/dist/Verbs/VerbConstants.d.ts.map +1 -1
  201. package/dist/Verbs/VerbConstants.js +127 -21
  202. package/dist/Verbs/VerbConstants.js.map +1 -1
  203. package/dist/Verbs/index.d.ts +6 -0
  204. package/dist/Verbs/index.d.ts.map +1 -1
  205. package/dist/Verbs/index.js +6 -0
  206. package/dist/Verbs/index.js.map +1 -1
  207. package/package.json +8 -8
@@ -1,23 +1,16 @@
1
1
  /*!
2
2
  * Copyright (C) Microsoft Corporation. All rights reserved.
3
3
  */
4
- import { addConnectorTableAsync, getPlayerServiceConfig, listDatasetsAsync, listTablesAsync, } from '@microsoft/managed-apps-actions';
5
- import { getCliLogger, getSettings } from '../CliSettings.js';
6
- import { createDefaultStringOption, promptSelectOrInput } from '../CliUtils.js';
4
+ import { createDefaultStringOption } from '../CliUtils.js';
7
5
  import { CLI_BINARY_NAME } from '../Constants/CliConstants.js';
8
6
  import { HelpStrings } from '../Constants/HelpStrings.js';
9
7
  import { UsageError } from '../Errors/CliError.js';
10
- import { printInfo, printSuccess, printTable } from '../Utils/ConsoleOutput.js';
11
- import { resolveConnectionInteractivelyAsync, runConnectorDlpPreflightAsync, } from './ConnectorHelpers.js';
8
+ import { isTabularConnector, runAddTableFlowAsync } from './AddConnectorFlows.js';
9
+ import { runConnectorDlpPreflightAsync } from './ConnectorHelpers.js';
12
10
  import { AddTableArguments, SharedArguments } from './VerbConstants.js';
13
11
  export async function addTableAsync(argumentProvider) {
14
- const settings = getSettings();
15
- const { fileConfig, cliFs } = settings;
16
12
  createOptionSchema(argumentProvider);
17
13
  await argumentProvider.runVerb();
18
- const playerServiceConfig = getPlayerServiceConfig();
19
- const authProvider = argumentProvider.getAuthenticationProvider();
20
- const logger = getCliLogger();
21
14
  const apiId = await argumentProvider.getOption('apiId');
22
15
  const connectionIdFlag = await argumentProvider.getOption('connectionId', true);
23
16
  const datasetFlag = await argumentProvider.getOption('dataset', true);
@@ -27,97 +20,19 @@ export async function addTableAsync(argumentProvider) {
27
20
  // ── Preflight: connector + DLP policy (throws on not-found or blocked) ────
28
21
  const { connector } = await runConnectorDlpPreflightAsync(argumentProvider, apiId);
29
22
  // ── Tabular capability check ──────────────────────────────────────────────
30
- const isTabular = connector.properties.capabilities?.includes('tabular') ?? false;
31
- if (!isTabular) {
32
- throw new UsageError(`Connector '${connector.properties.displayName ?? apiId}' does not support tabular data sources. Use '${CLI_BINARY_NAME} app add action' instead.`);
23
+ if (!isTabularConnector(connector)) {
24
+ throw new UsageError(`Connector '${connector.properties.displayName ?? apiId}' does not support tabular data sources. Use '${CLI_BINARY_NAME} app add connector --as action' instead.`);
33
25
  }
34
- const localFilePaths = {
35
- appConfigPath: fileConfig.appConfigPath,
36
- schemaPath: fileConfig.schemaPath,
37
- codeGenPath: fileConfig.codeGenPath,
38
- };
39
- const baseContext = {
40
- vfs: cliFs,
41
- authProvider,
42
- httpClient: argumentProvider.getHttpClient(),
43
- region: playerServiceConfig.region,
44
- environmentName: playerServiceConfig.environmentName,
45
- localFilePaths,
46
- logger,
47
- };
48
- // ── Step 1: Connection resolution ─────────────────────────────────────────
49
- let connectionId = connectionIdFlag;
50
- if (!connectionId) {
51
- connectionId = await resolveConnectionInteractivelyAsync({
52
- argumentProvider,
53
- apiId,
54
- connector,
55
- });
56
- }
57
- // ── Step 2: Dataset resolution ────────────────────────────────────────────
58
- let dataset = datasetFlag;
59
- if (!dataset) {
60
- const datasetsCtx = {
61
- ...baseContext,
62
- actionsParams: { apiId, connectionId },
63
- };
64
- const { value: datasets } = await listDatasetsAsync(datasetsCtx);
65
- if (!settings.interactive) {
66
- printTable({
67
- title: `Available datasets for ${connector.properties.displayName ?? apiId}`,
68
- columns: [{ header: 'Display Name', maxWidth: 40 }, { header: 'Dataset Name' }],
69
- rows: datasets.map((d) => [d.DisplayName || d.Name, d.Name]),
70
- emptyMessage: 'No datasets found for this connection.',
71
- totalLabel: 'dataset(s) found',
72
- });
73
- throw new UsageError(`Re-run with --dataset <name> or -d <name>.`);
74
- }
75
- dataset = await promptSelectOrInput({
76
- message: 'Select a dataset:',
77
- options: datasets.map((d) => ({
78
- value: d.Name,
79
- label: d.DisplayName || d.Name,
80
- hint: d.Name,
81
- })),
82
- manualPromptMessage: 'Enter dataset name:',
83
- });
84
- }
85
- // ── Step 3: Table resolution ──────────────────────────────────────────────
86
- let tableName = tableFlag;
87
- if (!tableName) {
88
- const tablesCtx = {
89
- ...baseContext,
90
- actionsParams: { apiId, connectionId, dataset },
91
- };
92
- const { value: tables } = await listTablesAsync(tablesCtx);
93
- if (!settings.interactive) {
94
- printTable({
95
- title: `Available tables in dataset '${dataset}'`,
96
- columns: [{ header: 'Display Name', maxWidth: 40 }, { header: 'Table Name' }],
97
- rows: tables.map((t) => [t.DisplayName || t.Name, t.Name]),
98
- emptyMessage: 'No tables found in this dataset.',
99
- totalLabel: 'table(s) found',
100
- });
101
- throw new UsageError(`Re-run with --table <name> or -t <name>.`);
102
- }
103
- tableName = await promptSelectOrInput({
104
- message: 'Select a table:',
105
- options: tables.map((t) => ({
106
- value: t.Name,
107
- label: t.DisplayName || t.Name,
108
- hint: t.Name,
109
- })),
110
- manualPromptMessage: 'Enter table name:',
111
- });
112
- }
113
- // ── Step 4: Add the table ─────────────────────────────────────────────────
114
- const context = {
115
- ...baseContext,
116
- actionsParams: { apiId, connectionId, dataset, tableName, skipCodegen, useV1Codegen },
117
- };
118
- await addConnectorTableAsync(context);
119
- printSuccess(`Table '${tableName}' from connector '${connector.properties.displayName ?? apiId}' added successfully.`);
120
- printInfo(`Hint: Run 'npx ${CLI_BINARY_NAME} dev' to test locally, or 'npx ${CLI_BINARY_NAME} push' to deploy.`);
26
+ await runAddTableFlowAsync({
27
+ argumentProvider,
28
+ connector,
29
+ apiId,
30
+ connectionIdFlag,
31
+ datasetFlag,
32
+ tableFlag,
33
+ skipCodegen,
34
+ useV1Codegen,
35
+ });
121
36
  }
122
37
  function createOptionSchema(argumentProvider) {
123
38
  argumentProvider.setDescription(HelpStrings.app.add.table.description);
@@ -1 +1 @@
1
- {"version":3,"file":"AddTable.js","sourceRoot":"","sources":["../../src/Verbs/AddTable.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AddTable.js","sourceRoot":"","sources":["../../src/Verbs/AddTable.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AuthStatus.d.ts","sourceRoot":"","sources":["../../src/Verbs/AuthStatus.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAI5D,wBAAsB,eAAe,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAYvF"}
1
+ {"version":3,"file":"AuthStatus.d.ts","sourceRoot":"","sources":["../../src/Verbs/AuthStatus.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAK5D,wBAAsB,eAAe,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8CvF"}
@@ -1,18 +1,46 @@
1
1
  /*!
2
2
  * Copyright (C) Microsoft Corporation. All rights reserved.
3
3
  */
4
+ import { CLI_BINARY_NAME } from '../Constants/CliConstants.js';
4
5
  import { HelpStrings } from '../Constants/HelpStrings.js';
5
- import { printInfo, printWarning } from '../Utils/ConsoleOutput.js';
6
+ import { printInfo, printJsonSuccess, printTable, printWarning } from '../Utils/ConsoleOutput.js';
6
7
  export async function authStatusAsync(argumentProvider) {
7
8
  argumentProvider.setDescription(HelpStrings.auth.status.description);
8
9
  argumentProvider.addExamples(HelpStrings.auth.status.examples);
9
10
  await argumentProvider.runVerb();
10
- const email = await argumentProvider.getAuthenticationProvider().getCachedAccountAsync();
11
- if (email) {
12
- printInfo(`Signed in as ${email}`);
11
+ const accounts = await argumentProvider.getAccountManager().listCachedAccountsAsync();
12
+ const jsonMode = argumentProvider.isJsonMode();
13
+ if (jsonMode) {
14
+ const active = accounts.find((a) => a.isActive);
15
+ printJsonSuccess({
16
+ signedIn: accounts.length > 0,
17
+ activeAccount: active
18
+ ? { username: active.username, homeAccountId: active.homeAccountId }
19
+ : null,
20
+ accounts: accounts.map((a) => ({
21
+ username: a.username,
22
+ homeAccountId: a.homeAccountId,
23
+ isActive: a.isActive,
24
+ })),
25
+ });
26
+ return;
13
27
  }
14
- else {
15
- printWarning('Not signed in. Run `ms auth login` to authenticate.');
28
+ if (accounts.length === 0) {
29
+ printWarning(`Not signed in. Run \`${CLI_BINARY_NAME} auth login\` to authenticate.`);
30
+ return;
31
+ }
32
+ if (accounts.length === 1) {
33
+ printInfo(`Signed in as ${accounts[0].username}`);
34
+ return;
35
+ }
36
+ const hasActive = accounts.some((a) => a.isActive);
37
+ printTable({
38
+ title: 'Cached accounts',
39
+ columns: [{ header: 'Active' }, { header: 'Username' }],
40
+ rows: accounts.map((a) => [a.isActive ? '*' : '', a.username]),
41
+ });
42
+ if (!hasActive) {
43
+ printWarning(`No active account selected. Run \`${CLI_BINARY_NAME} auth switch\` to choose one.`);
16
44
  }
17
45
  }
18
46
  //# sourceMappingURL=AuthStatus.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuthStatus.js","sourceRoot":"","sources":["../../src/Verbs/AuthStatus.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEjE,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,gBAAkC;IACtE,gBAAgB,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACrE,gBAAgB,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE/D,MAAM,gBAAgB,CAAC,OAAO,EAAE,CAAC;IAEjC,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,yBAAyB,EAAE,CAAC,qBAAqB,EAAE,CAAC;IACzF,IAAI,KAAK,EAAE,CAAC;QACV,SAAS,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,YAAY,CAAC,qDAAqD,CAAC,CAAC;IACtE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"AuthStatus.js","sourceRoot":"","sources":["../../src/Verbs/AuthStatus.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE/F,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,gBAAkC;IACtE,gBAAgB,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACrE,gBAAgB,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE/D,MAAM,gBAAgB,CAAC,OAAO,EAAE,CAAC;IAEjC,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,uBAAuB,EAAE,CAAC;IACtF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,EAAE,CAAC;IAE/C,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAChD,gBAAgB,CAAC;YACf,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC;YAC7B,aAAa,EAAE,MAAM;gBACnB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE;gBACpE,CAAC,CAAC,IAAI;YACR,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC7B,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,aAAa,EAAE,CAAC,CAAC,aAAa;gBAC9B,QAAQ,EAAE,CAAC,CAAC,QAAQ;aACrB,CAAC,CAAC;SACJ,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,YAAY,CAAC,wBAAwB,eAAe,gCAAgC,CAAC,CAAC;QACtF,OAAO;IACT,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,SAAS,CAAC,gBAAgB,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClD,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACnD,UAAU,CAAC;QACT,KAAK,EAAE,iBAAiB;QACxB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QACvD,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;KAC/D,CAAC,CAAC;IACH,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,YAAY,CACV,qCAAqC,eAAe,+BAA+B,CACpF,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ import type { ArgumentProvider } from '../ArgumentProvider.js';
5
+ export declare function authSwitchAsync(argumentProvider: ArgumentProvider): Promise<void>;
6
+ //# sourceMappingURL=AuthSwitch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthSwitch.d.ts","sourceRoot":"","sources":["../../src/Verbs/AuthSwitch.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAS5D,wBAAsB,eAAe,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDvF"}
@@ -0,0 +1,67 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ import { getSettings } from '../CliSettings.js';
5
+ import { promptSelect } from '../CliUtils.js';
6
+ import { CLI_BINARY_NAME } from '../Constants/CliConstants.js';
7
+ import { HelpStrings } from '../Constants/HelpStrings.js';
8
+ import { UsageError } from '../Errors/CliError.js';
9
+ import { printJsonSuccess, printSuccess, printWarning } from '../Utils/ConsoleOutput.js';
10
+ import { AccountArguments } from './VerbConstants.js';
11
+ export async function authSwitchAsync(argumentProvider) {
12
+ argumentProvider.setDescription(HelpStrings.auth.switch.description);
13
+ argumentProvider.addExamples(HelpStrings.auth.switch.examples);
14
+ argumentProvider.addOption({
15
+ flags: { key: AccountArguments.Account.name },
16
+ description: HelpStrings.auth.switch.options.account,
17
+ optionalInNonInteractive: true,
18
+ });
19
+ await argumentProvider.runVerb();
20
+ const accountManager = argumentProvider.getAccountManager();
21
+ const requested = await argumentProvider.getOption(AccountArguments.Account.name, true);
22
+ const jsonMode = argumentProvider.isJsonMode();
23
+ const accounts = await accountManager.listCachedAccountsAsync();
24
+ if (accounts.length === 0) {
25
+ if (jsonMode) {
26
+ printJsonSuccess({ activeAccount: null });
27
+ return;
28
+ }
29
+ printWarning(`No cached accounts. Run \`${CLI_BINARY_NAME} auth login\` first.`);
30
+ return;
31
+ }
32
+ let target = requested;
33
+ if (!target) {
34
+ if (accounts.length === 1) {
35
+ // No-op confirmation: the only account is also the active one.
36
+ const onlyAccount = await accountManager.setActiveAccountAsync(accounts[0].homeAccountId);
37
+ _emitSuccess(onlyAccount.username, onlyAccount.homeAccountId, jsonMode);
38
+ return;
39
+ }
40
+ // JSON-mode callers can't sensibly answer an interactive picker, so we treat
41
+ // `--json` as implying non-interactive for the disambiguation prompt — same
42
+ // way we treat `--non-interactive` itself.
43
+ if (jsonMode || !getSettings().interactive) {
44
+ throw new UsageError(`Multiple accounts are cached. Pass --account <email> to choose one.\n` +
45
+ accounts.map((a) => ` - ${a.username}`).join('\n'));
46
+ }
47
+ target = await promptSelect({
48
+ message: 'Choose the active account:',
49
+ options: accounts.map((a) => ({
50
+ value: a.homeAccountId,
51
+ label: a.username,
52
+ hint: a.isActive ? 'currently active' : undefined,
53
+ })),
54
+ });
55
+ }
56
+ const resolved = await accountManager.setActiveAccountAsync(target);
57
+ _emitSuccess(resolved.username, resolved.homeAccountId, jsonMode);
58
+ }
59
+ function _emitSuccess(username, homeAccountId, jsonMode) {
60
+ if (jsonMode) {
61
+ printJsonSuccess({ activeAccount: { username, homeAccountId } });
62
+ }
63
+ else {
64
+ printSuccess(`Active account is ${username}.`);
65
+ }
66
+ }
67
+ //# sourceMappingURL=AuthSwitch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthSwitch.js","sourceRoot":"","sources":["../../src/Verbs/AuthSwitch.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"BuildMaafApp.d.ts","sourceRoot":"","sources":["../../src/Verbs/BuildMaafApp.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAS5D,wBAAsB,iBAAiB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuEzF"}
1
+ {"version":3,"file":"BuildMaafApp.d.ts","sourceRoot":"","sources":["../../src/Verbs/BuildMaafApp.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAW5D,wBAAsB,iBAAiB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoIzF"}
@@ -3,11 +3,13 @@
3
3
  */
4
4
  import { buildAsync } from '@microsoft/managed-apps-actions';
5
5
  import { AppConfigFileName } from '@microsoft/managed-apps-common/config';
6
- import { getCliLogger } from '../CliSettings.js';
6
+ import { getCliLogger, getSettings } from '../CliSettings.js';
7
7
  import { resolveAppNameAsync } from '../CliUtils.js';
8
8
  import { HelpStrings } from '../Constants/HelpStrings.js';
9
9
  import { UsageError } from '../Errors/CliError.js';
10
- import { printInfo, printJsonSuccess, printSuccess } from '../Utils/ConsoleOutput.js';
10
+ import { waitForBuildStatusAsync } from '../Utils/BuildPolling.js';
11
+ import { printInfo, printJsonLine, printJsonSuccess, printSuccess } from '../Utils/ConsoleOutput.js';
12
+ import { withGitHubDcfRecoveryAsync } from '../Utils/DcfRecovery.js';
11
13
  import { resolveGitDefaults } from '../Utils/GitUtils.js';
12
14
  import { BuildMaafAppArguments } from './VerbConstants.js';
13
15
  export async function buildMaafAppAsync(argumentProvider) {
@@ -25,6 +27,7 @@ export async function buildMaafAppAsync(argumentProvider) {
25
27
  throw new UsageError('Unable to determine tenant ID. Ensure you are logged in.');
26
28
  }
27
29
  const appName = await resolveAppNameAsync(argumentProvider);
30
+ const noWait = (await argumentProvider.getOption('noWait')) === true;
28
31
  // Resolve commit SHA: --commit flag → current HEAD → error
29
32
  const commitFromFlag = await argumentProvider.getOption('commit',
30
33
  /* ignorePrompt */ true);
@@ -42,44 +45,85 @@ export async function buildMaafAppAsync(argumentProvider) {
42
45
  branch = gitDefaults.detached ? undefined : gitDefaults.branch;
43
46
  resolvedFromGit = true;
44
47
  }
45
- if (resolvedFromGit && !argumentProvider.isJsonMode()) {
48
+ const jsonMode = argumentProvider.isJsonMode();
49
+ if (resolvedFromGit && !jsonMode) {
46
50
  printInfo(branch
47
51
  ? `Using branch '${branch}' at commit ${commitSha}.`
48
52
  : `Detached HEAD at commit ${commitSha}.`);
49
53
  }
50
- const result = await buildAsync({
51
- tenantId,
52
- environmentId,
54
+ // repoType / externalRepoUrl drive the catch-and-retry branch. Both come
55
+ // from ms.config.json via CliSettings; absent or non-github → no DCF.
56
+ const appConfig = getSettings().appConfig;
57
+ const repoType = appConfig?.repoType;
58
+ const externalRepoUrl = appConfig?.externalRepoUrl;
59
+ const openBrowser = (await argumentProvider.getOption(BuildMaafAppArguments.OpenBrowser.camelName,
60
+ /* ignorePrompt */ true)) ?? false;
61
+ // Forces DCF re-authentication even when a valid mapping exists.
62
+ const forceReauth = (await argumentProvider.getOption(BuildMaafAppArguments.ForceReauth.camelName,
63
+ /* ignorePrompt */ true)) ?? false;
64
+ // Emit a `build-validation` boundary in NDJSON output for github-bound apps so
65
+ // automation can distinguish the validation phase from the catch-and-retry DCF.
66
+ // Gated to github + json to keep the wire contract unchanged for native/none and
67
+ // for pretty-output consumers.
68
+ if (jsonMode && repoType === 'github') {
69
+ printJsonLine({ phase: 'build-validation' });
70
+ }
71
+ // On `repoType: 'github'`, wrap buildAsync with the DCF catch-and-retry:
72
+ // a missing/expired GitHub identity mapping is recovered in-band by running
73
+ // DCF and retrying once; any other recognized server error is mapped to a
74
+ // friendly CLI error. Non-github flows pass through untouched. See
75
+ // `withGitHubDcfRecoveryAsync` for the full contract.
76
+ const runBuild = ({ isRetry }) => buildAsync({
53
77
  logger: getCliLogger(),
54
- actionsParams: { appName, commitSha },
78
+ actionsParams: {
79
+ appName,
80
+ commitSha,
81
+ ...(forceReauth && !isRetry && repoType === 'github' && { forceReauth: true }),
82
+ },
83
+ });
84
+ const result = await withGitHubDcfRecoveryAsync(runBuild, {
85
+ repoType,
86
+ externalRepoUrl,
87
+ tenantId,
88
+ jsonMode,
89
+ openBrowser,
90
+ verb: 'app build',
55
91
  });
56
92
  if (result === null) {
57
- if (argumentProvider.isJsonMode()) {
58
- printJsonSuccess({ cached: true });
59
- }
60
- else {
61
- printSuccess('Build already up to date for this commit.');
62
- }
93
+ printCachedBuildMessage(argumentProvider.isJsonMode(), commitSha);
94
+ return;
95
+ }
96
+ if (noWait) {
97
+ printNoWaitMessage(argumentProvider.isJsonMode(), appName, commitSha);
98
+ return;
99
+ }
100
+ const finalStatus = await waitForBuildStatusAsync({
101
+ appName,
102
+ commitSha,
103
+ initialWaitMs: result.retryAfterMs ?? 1000,
104
+ isJsonMode: argumentProvider.isJsonMode(),
105
+ });
106
+ if (argumentProvider.isJsonMode()) {
107
+ printJsonSuccess(finalStatus);
63
108
  }
64
109
  else {
65
- if (argumentProvider.isJsonMode()) {
66
- printJsonSuccess({ operationId: result.operationId, retryAfterMs: result.retryAfterMs });
67
- }
68
- else {
69
- printSuccess(`Build started. Operation ID: ${result.operationId}`);
110
+ printSuccess(`Build status: ${finalStatus.status}`);
111
+ if (finalStatus.status === 'Succeeded') {
112
+ printInfo(`Run \`ms app dev\` to run your app locally, or ` +
113
+ `\`ms app deploy --commit ${commitSha}\` to make this app live.`);
70
114
  }
71
115
  }
72
116
  }
73
117
  function createOptionSchema(argumentProvider) {
74
- argumentProvider.setDescription(HelpStrings.deprecated.Verbs['Build-app'].Description);
75
- argumentProvider.addExamples(HelpStrings.deprecated.Verbs['Build-app'].Examples);
118
+ argumentProvider.setDescription(HelpStrings.app.build.description);
119
+ argumentProvider.addExamples(HelpStrings.app.build.examples);
76
120
  argumentProvider.addOptions([
77
121
  {
78
122
  flags: {
79
123
  key: BuildMaafAppArguments.AppName.name,
80
124
  },
81
125
  env: BuildMaafAppArguments.AppName.envVar,
82
- description: HelpStrings.deprecated.Verbs['Build-app'].Options.AppName,
126
+ description: HelpStrings.app.build.options.appName,
83
127
  optionalInNonInteractive: true,
84
128
  },
85
129
  {
@@ -88,9 +132,41 @@ function createOptionSchema(argumentProvider) {
88
132
  alias: BuildMaafAppArguments.CommitSha.alias,
89
133
  },
90
134
  env: BuildMaafAppArguments.CommitSha.envVar,
91
- description: HelpStrings.deprecated.Verbs['Build-app'].Options.CommitSha,
135
+ description: HelpStrings.app.build.options.commitSha,
136
+ optionalInNonInteractive: true,
137
+ },
138
+ {
139
+ flags: {
140
+ key: BuildMaafAppArguments.NoWait.name,
141
+ },
142
+ description: HelpStrings.app.build.options.noWait,
92
143
  optionalInNonInteractive: true,
93
144
  },
94
145
  ]);
146
+ argumentProvider.addSwitch({
147
+ flags: { key: BuildMaafAppArguments.OpenBrowser.name },
148
+ description: HelpStrings.app.build.options.openBrowser,
149
+ });
150
+ argumentProvider.addSwitch({
151
+ flags: { key: BuildMaafAppArguments.ForceReauth.name },
152
+ description: HelpStrings.app.build.options.forceReauth,
153
+ });
154
+ }
155
+ function printNoWaitMessage(isJsonMode, appName, commitSha) {
156
+ if (isJsonMode) {
157
+ printJsonSuccess({
158
+ commitSha,
159
+ buildStatusCommand: `ms app build-status --app ${appName} --commit ${commitSha}`,
160
+ });
161
+ return;
162
+ }
163
+ printSuccess(`Build started for commit ${commitSha}. Run \`ms app build-status --app ${appName} --commit ${commitSha}\` to check status.`);
164
+ }
165
+ function printCachedBuildMessage(isJsonMode, commitSha) {
166
+ if (isJsonMode) {
167
+ printJsonSuccess({ cached: true, commitSha });
168
+ return;
169
+ }
170
+ printSuccess('Build already up to date for this commit.');
95
171
  }
96
172
  //# sourceMappingURL=BuildMaafApp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BuildMaafApp.js","sourceRoot":"","sources":["../../src/Verbs/BuildMaafApp.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAG1E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,gBAAkC;IACxE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACrC,MAAM,gBAAgB,CAAC,OAAO,EAAE,CAAC;IAEjC,MAAM,aAAa,GAAG,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;IAC1D,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,UAAU,CAClB,qFAAqF;YACnF,2EAA2E,iBAAiB,IAAI;YAChG,4FAA4F;YAC5F,UAAU,iBAAiB,kCAAkC,CAChE,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;IAC3D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,UAAU,CAAC,0DAA0D,CAAC,CAAC;IACnF,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAE5D,2DAA2D;IAC3D,MAAM,cAAc,GAAG,MAAM,gBAAgB,CAAC,SAAS,CACrD,QAAQ;IACR,kBAAkB,CAAC,IAAI,CACxB,CAAC;IACF,IAAI,SAAS,GAAG,cAAc,CAAC;IAC/B,IAAI,MAA0B,CAAC;IAC/B,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;QACzC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,UAAU,CAClB,8EAA8E,CAC/E,CAAC;QACJ,CAAC;QACD,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;QAClC,6EAA6E;QAC7E,yDAAyD;QACzD,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC;QAC/D,eAAe,GAAG,IAAI,CAAC;IACzB,CAAC;IAED,IAAI,eAAe,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,EAAE,CAAC;QACtD,SAAS,CACP,MAAM;YACJ,CAAC,CAAC,iBAAiB,MAAM,eAAe,SAAS,GAAG;YACpD,CAAC,CAAC,2BAA2B,SAAS,GAAG,CAC5C,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC;QAC9B,QAAQ;QACR,aAAa;QACb,MAAM,EAAE,YAAY,EAAE;QACtB,aAAa,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;KACtC,CAAC,CAAC;IAEH,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,IAAI,gBAAgB,CAAC,UAAU,EAAE,EAAE,CAAC;YAClC,gBAAgB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,2CAA2C,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,gBAAgB,CAAC,UAAU,EAAE,EAAE,CAAC;YAClC,gBAAgB,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QAC3F,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,gCAAgC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,gBAAkC;IAC5D,gBAAgB,CAAC,cAAc,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC;IACvF,gBAAgB,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC;IACjF,gBAAgB,CAAC,UAAU,CAAC;QAC1B;YACE,KAAK,EAAE;gBACL,GAAG,EAAE,qBAAqB,CAAC,OAAO,CAAC,IAAI;aACxC;YACD,GAAG,EAAE,qBAAqB,CAAC,OAAO,CAAC,MAAM;YACzC,WAAW,EAAE,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,OAAO;YACtE,wBAAwB,EAAE,IAAI;SAC/B;QACD;YACE,KAAK,EAAE;gBACL,GAAG,EAAE,qBAAqB,CAAC,SAAS,CAAC,IAAI;gBACzC,KAAK,EAAE,qBAAqB,CAAC,SAAS,CAAC,KAAK;aAC7C;YACD,GAAG,EAAE,qBAAqB,CAAC,SAAS,CAAC,MAAM;YAC3C,WAAW,EAAE,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,SAAS;YACxE,wBAAwB,EAAE,IAAI;SAC/B;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"BuildMaafApp.js","sourceRoot":"","sources":["../../src/Verbs/BuildMaafApp.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  /*!
2
2
  * Copyright (C) Microsoft Corporation. All rights reserved.
3
3
  */
4
- import type { Api } from '@microsoft/managed-apps-actions';
4
+ import type { Api, EffectiveConnectorDataPolicy } from '@microsoft/managed-apps-actions';
5
+ import type { Region } from '@microsoft/managed-apps-common/services';
5
6
  import type { ArgumentProvider } from '../ArgumentProvider.js';
6
7
  /**
7
8
  * Preflight step shared by `app add action` and `app add table`. Fetches the
@@ -22,6 +23,7 @@ import type { ArgumentProvider } from '../ArgumentProvider.js';
22
23
  export declare function runConnectorDlpPreflightAsync(argumentProvider: ArgumentProvider, apiId: string): Promise<{
23
24
  connector: Api;
24
25
  tenantId: string | undefined;
26
+ policy: EffectiveConnectorDataPolicy;
25
27
  }>;
26
28
  /**
27
29
  * Resolves a connection for a connector. In interactive mode, lists the
@@ -34,4 +36,55 @@ export declare function resolveConnectionInteractivelyAsync(options: {
34
36
  apiId: string;
35
37
  connector: Api;
36
38
  }): Promise<string>;
39
+ /**
40
+ * Best-effort request that the calling application be added to a connection's
41
+ * API Hubs ACL via the Power Platform user-consent endpoint. The server reads
42
+ * the calling app's `appid` from the bearer token, and the gateway resolves
43
+ * tenant + environment from the auth context and its routing config — so the
44
+ * CLI only needs to supply connector + connection identifiers, no body.
45
+ *
46
+ * Gating: requires the opt-in feature flag
47
+ * `MS_CLI_ENABLE_CONNECTOR_USER_CONSENT=true` (off by default while the
48
+ * consent endpoint is rolling out). When the flag is unset, the call is
49
+ * silently skipped — no warning, no telemetry, no HTTP traffic.
50
+ *
51
+ * Failure modes:
52
+ * - HTTP 403: emits a permission-specific warning explaining that the tenant
53
+ * admin must grant the calling app the
54
+ * `Connectivity.Connections.UserConsent` delegated permission, then returns.
55
+ * - Any other HTTP / network error: surfaces a generic warning and returns.
56
+ * The underlying `ConnectivityService` already records its own
57
+ * `scenario.failure` telemetry, so this helper doesn't re-emit a duplicate
58
+ * error event.
59
+ *
60
+ * Silent on success: a 200 OK does not guarantee the ACL was modified (the
61
+ * server has feature-gated silent-skip paths), so the success path emits no
62
+ * user-facing message.
63
+ *
64
+ * Never throws.
65
+ */
66
+ export declare function requestCliUserConsentAsync(opts: {
67
+ apiId: string;
68
+ connectionId: string;
69
+ }): Promise<void>;
70
+ type ConnectionServerConfig = {
71
+ connectorName: string;
72
+ environmentId: string;
73
+ region: Region;
74
+ };
75
+ type ConnectionResult = {
76
+ status: 'created' | 'cancelled' | 'error';
77
+ connectionId?: string;
78
+ connectionName?: string;
79
+ displayName?: string;
80
+ errorMessage?: string;
81
+ };
82
+ /**
83
+ * Starts a local HTTP server, opens the maaf-player connection page in the
84
+ * browser, and waits for a callback with the result. Uses the same pattern
85
+ * as an OAuth authorization code flow: nonce for CSRF, protocol version for
86
+ * drift detection, and a timeout for cleanup.
87
+ */
88
+ export declare function startConnectionServerAsync(config: ConnectionServerConfig): Promise<ConnectionResult>;
89
+ export {};
37
90
  //# sourceMappingURL=ConnectorHelpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectorHelpers.d.ts","sourceRoot":"","sources":["../../src/Verbs/ConnectorHelpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAgC,MAAM,iCAAiC,CAAC;AASzF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAc5D;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,6BAA6B,CACjD,gBAAgB,EAAE,gBAAgB,EAClC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;IAAE,SAAS,EAAE,GAAG,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC,CA6C3D;AAED;;;;;GAKG;AACH,wBAAsB,mCAAmC,CAAC,OAAO,EAAE;IACjE,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,GAAG,CAAC;CAChB,GAAG,OAAO,CAAC,MAAM,CAAC,CAsDlB"}
1
+ {"version":3,"file":"ConnectorHelpers.d.ts","sourceRoot":"","sources":["../../src/Verbs/ConnectorHelpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAUzF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yCAAyC,CAAC;AAKtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAiB5D;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,6BAA6B,CACjD,gBAAgB,EAAE,gBAAgB,EAClC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;IACT,SAAS,EAAE,GAAG,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,4BAA4B,CAAC;CACtC,CAAC,CA6CD;AAED;;;;;GAKG;AACH,wBAAsB,mCAAmC,CAAC,OAAO,EAAE;IACjE,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,GAAG,CAAC;CAChB,GAAG,OAAO,CAAC,MAAM,CAAC,CA0FlB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,0BAA0B,CAAC,IAAI,EAAE;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BhB;AAMD,KAAK,sBAAsB,GAAG;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,gBAAgB,CAAC,CAqH3B"}