@microsoft/managed-apps-cli 0.7.0 → 0.9.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 (152) hide show
  1. package/README.md +42 -6
  2. package/dist/ArgumentProvider.d.ts +11 -0
  3. package/dist/ArgumentProvider.d.ts.map +1 -1
  4. package/dist/ArgumentProvider.js +61 -19
  5. package/dist/ArgumentProvider.js.map +1 -1
  6. package/dist/Authentication/NodeMsalAuthenticationProvider.d.ts +16 -0
  7. package/dist/Authentication/NodeMsalAuthenticationProvider.d.ts.map +1 -1
  8. package/dist/Authentication/NodeMsalAuthenticationProvider.js +58 -6
  9. package/dist/Authentication/NodeMsalAuthenticationProvider.js.map +1 -1
  10. package/dist/Cli.d.ts.map +1 -1
  11. package/dist/Cli.js +23 -7
  12. package/dist/Cli.js.map +1 -1
  13. package/dist/CliSettings.d.ts +2 -2
  14. package/dist/CliSettings.d.ts.map +1 -1
  15. package/dist/CliSettings.js +3 -4
  16. package/dist/CliSettings.js.map +1 -1
  17. package/dist/CliUtils.d.ts +25 -8
  18. package/dist/CliUtils.d.ts.map +1 -1
  19. package/dist/CliUtils.js +19 -23
  20. package/dist/CliUtils.js.map +1 -1
  21. package/dist/Constants/CommandRegistry.d.ts.map +1 -1
  22. package/dist/Constants/CommandRegistry.js +28 -1
  23. package/dist/Constants/CommandRegistry.js.map +1 -1
  24. package/dist/Constants/HelpStrings.d.ts +55 -5
  25. package/dist/Constants/HelpStrings.d.ts.map +1 -1
  26. package/dist/Constants/HelpStrings.js +113 -42
  27. package/dist/Constants/HelpStrings.js.map +1 -1
  28. package/dist/Constants.d.ts +1 -1
  29. package/dist/Constants.d.ts.map +1 -1
  30. package/dist/Constants.js +5 -2
  31. package/dist/Constants.js.map +1 -1
  32. package/dist/Errors/GitHubErrorMap.d.ts.map +1 -1
  33. package/dist/Errors/GitHubErrorMap.js +18 -11
  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 +30 -0
  38. package/dist/HttpClient/CliHttpClient.d.ts.map +1 -1
  39. package/dist/HttpClient/CliHttpClient.js +136 -1
  40. package/dist/HttpClient/CliHttpClient.js.map +1 -1
  41. package/dist/Logger/CliLogger.d.ts +50 -8
  42. package/dist/Logger/CliLogger.d.ts.map +1 -1
  43. package/dist/Logger/CliLogger.js +92 -37
  44. package/dist/Logger/CliLogger.js.map +1 -1
  45. package/dist/Logger/ConsoleWriter.d.ts +5 -0
  46. package/dist/Logger/ConsoleWriter.d.ts.map +1 -1
  47. package/dist/Logger/ConsoleWriter.js +22 -14
  48. package/dist/Logger/ConsoleWriter.js.map +1 -1
  49. package/dist/Middletier/FunctionsBundler.js +5 -1
  50. package/dist/Middletier/FunctionsBundler.js.map +1 -1
  51. package/dist/Middletier/PackFunctions.d.ts +5 -4
  52. package/dist/Middletier/PackFunctions.d.ts.map +1 -1
  53. package/dist/Middletier/PackFunctions.js +8 -7
  54. package/dist/Middletier/PackFunctions.js.map +1 -1
  55. package/dist/Types/Cli.types.d.ts +1 -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/DcfRecovery.d.ts +84 -0
  70. package/dist/Utils/DcfRecovery.d.ts.map +1 -0
  71. package/dist/Utils/DcfRecovery.js +266 -0
  72. package/dist/Utils/DcfRecovery.js.map +1 -0
  73. package/dist/Utils/EnhanceNetworkError.d.ts.map +1 -1
  74. package/dist/Utils/EnhanceNetworkError.js +2 -0
  75. package/dist/Utils/EnhanceNetworkError.js.map +1 -1
  76. package/dist/Utils/EnvVars.d.ts +1 -1
  77. package/dist/Utils/EnvVars.d.ts.map +1 -1
  78. package/dist/Utils/EnvVars.js.map +1 -1
  79. package/dist/Utils/RepoUrl.d.ts +11 -6
  80. package/dist/Utils/RepoUrl.d.ts.map +1 -1
  81. package/dist/Utils/RepoUrl.js +1 -1
  82. package/dist/Utils/RepoUrl.js.map +1 -1
  83. package/dist/Utils/ResolveCommand.d.ts +37 -1
  84. package/dist/Utils/ResolveCommand.d.ts.map +1 -1
  85. package/dist/Utils/ResolveCommand.js +97 -20
  86. package/dist/Utils/ResolveCommand.js.map +1 -1
  87. package/dist/Verbs/AddConnector.d.ts.map +1 -1
  88. package/dist/Verbs/AddConnector.js.map +1 -1
  89. package/dist/Verbs/AddConnectorFlows.d.ts.map +1 -1
  90. package/dist/Verbs/AddConnectorFlows.js +2 -2
  91. package/dist/Verbs/AddConnectorFlows.js.map +1 -1
  92. package/dist/Verbs/BuildMaafApp.d.ts.map +1 -1
  93. package/dist/Verbs/BuildMaafApp.js +98 -22
  94. package/dist/Verbs/BuildMaafApp.js.map +1 -1
  95. package/dist/Verbs/ConnectorHelpers.d.ts.map +1 -1
  96. package/dist/Verbs/ConnectorHelpers.js.map +1 -1
  97. package/dist/Verbs/CreateMaafApp.d.ts +54 -5
  98. package/dist/Verbs/CreateMaafApp.d.ts.map +1 -1
  99. package/dist/Verbs/CreateMaafApp.js +238 -238
  100. package/dist/Verbs/CreateMaafApp.js.map +1 -1
  101. package/dist/Verbs/DeployMaafApp.d.ts.map +1 -1
  102. package/dist/Verbs/DeployMaafApp.js +48 -20
  103. package/dist/Verbs/DeployMaafApp.js.map +1 -1
  104. package/dist/Verbs/GetMaafBuildStatus.d.ts.map +1 -1
  105. package/dist/Verbs/GetMaafBuildStatus.js +66 -17
  106. package/dist/Verbs/GetMaafBuildStatus.js.map +1 -1
  107. package/dist/Verbs/GetSettings.d.ts.map +1 -1
  108. package/dist/Verbs/GetSettings.js +9 -18
  109. package/dist/Verbs/GetSettings.js.map +1 -1
  110. package/dist/Verbs/Init.d.ts.map +1 -1
  111. package/dist/Verbs/Init.js +63 -46
  112. package/dist/Verbs/Init.js.map +1 -1
  113. package/dist/Verbs/ListFlows.d.ts.map +1 -1
  114. package/dist/Verbs/ListFlows.js +1 -2
  115. package/dist/Verbs/ListFlows.js.map +1 -1
  116. package/dist/Verbs/MaafAppPermissions.d.ts +12 -6
  117. package/dist/Verbs/MaafAppPermissions.d.ts.map +1 -1
  118. package/dist/Verbs/MaafAppPermissions.js +208 -66
  119. package/dist/Verbs/MaafAppPermissions.js.map +1 -1
  120. package/dist/Verbs/PlayMaafApp.d.ts +22 -0
  121. package/dist/Verbs/PlayMaafApp.d.ts.map +1 -0
  122. package/dist/Verbs/PlayMaafApp.js +147 -0
  123. package/dist/Verbs/PlayMaafApp.js.map +1 -0
  124. package/dist/Verbs/RefreshDataSource.d.ts.map +1 -1
  125. package/dist/Verbs/RefreshDataSource.js.map +1 -1
  126. package/dist/Verbs/RefreshGitAuth.d.ts.map +1 -1
  127. package/dist/Verbs/RefreshGitAuth.js +31 -16
  128. package/dist/Verbs/RefreshGitAuth.js.map +1 -1
  129. package/dist/Verbs/SetSetting.d.ts.map +1 -1
  130. package/dist/Verbs/SetSetting.js +39 -49
  131. package/dist/Verbs/SetSetting.js.map +1 -1
  132. package/dist/Verbs/ShareLinkCreate.d.ts +23 -0
  133. package/dist/Verbs/ShareLinkCreate.d.ts.map +1 -0
  134. package/dist/Verbs/ShareLinkCreate.js +73 -0
  135. package/dist/Verbs/ShareLinkCreate.js.map +1 -0
  136. package/dist/Verbs/ShareLinkList.d.ts +16 -0
  137. package/dist/Verbs/ShareLinkList.d.ts.map +1 -0
  138. package/dist/Verbs/ShareLinkList.js +84 -0
  139. package/dist/Verbs/ShareLinkList.js.map +1 -0
  140. package/dist/Verbs/ShareLinkRevoke.d.ts +22 -0
  141. package/dist/Verbs/ShareLinkRevoke.d.ts.map +1 -0
  142. package/dist/Verbs/ShareLinkRevoke.js +137 -0
  143. package/dist/Verbs/ShareLinkRevoke.js.map +1 -0
  144. package/dist/Verbs/VerbConstants.d.ts +113 -16
  145. package/dist/Verbs/VerbConstants.d.ts.map +1 -1
  146. package/dist/Verbs/VerbConstants.js +102 -24
  147. package/dist/Verbs/VerbConstants.js.map +1 -1
  148. package/dist/Verbs/index.d.ts +4 -0
  149. package/dist/Verbs/index.d.ts.map +1 -1
  150. package/dist/Verbs/index.js +4 -0
  151. package/dist/Verbs/index.js.map +1 -1
  152. package/package.json +5 -5
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Copyright (C) Microsoft Corporation. All rights reserved.
3
3
  */
4
- import { GrsRepositoryContributorRoleName, infoAsync, MaafAppReaderRoleName, modifyGrsRoleAssignmentsAsync, modifyMaafRoleAssignmentsAsync, resolvePrincipalByEmailAsync, unshareGrsRepoByPrincipalsAsync, unshareMaafAppByPrincipalsAsync, } from '@microsoft/managed-apps-actions';
4
+ import { GrsRepositoryContributorRoleName, infoAsync, MaafAppContributorRoleName, MaafAppReaderRoleName, modifyGrsRoleAssignmentsAsync, modifyMaafRoleAssignmentsAsync, resolvePrincipalByEmailAsync, unshareGrsRepoByPrincipalsAsync, unshareMaafAppByPrincipalsAsync, } from '@microsoft/managed-apps-actions';
5
5
  import { AppConfigFileName } from '@microsoft/managed-apps-common/config';
6
6
  import { HttpClientError } from '@microsoft/managed-apps-common/services';
7
7
  import { getCliLogger, getSettings } from '../CliSettings.js';
@@ -27,8 +27,11 @@ import { ShareMaafAppArguments, UnshareMaafAppArguments } from './VerbConstants.
27
27
  * to AAD object ids via Graph, pass GUID-shaped inputs through unchanged.
28
28
  * 5. Dispatch to the matching share/unshare path:
29
29
  * - `play` → MAAF `modifyRoleAssignments` (`MicrosoftAppReader` at app scope).
30
- * - `edit` → fetch the app's `repositoryId` then GRS `modifyRoleAssignments`
31
- * (`RepositoryContributor` at repo scope).
30
+ * - `edit` + `repoType === 'native'` → fetch the app's `repositoryId` then
31
+ * GRS `modifyRoleAssignments` (`RepositoryContributor` at repo scope).
32
+ * - `edit` + `repoType === 'none' | 'github'` → MAAF `modifyRoleAssignments`
33
+ * (`MicrosoftAppContributor` at app scope); GRS is skipped because the
34
+ * platform does not manage the repository.
32
35
  * For unshare, paginate the matching list endpoint and pass through the
33
36
  * full `RoleAssignment[]` records on `delete` (the strict wire contract
34
37
  * requires `roleAssignmentId`, which only the list endpoint provides).
@@ -50,72 +53,144 @@ export async function executeMaafAppPermissionsAsync(argumentProvider, mode) {
50
53
  }
51
54
  const appName = await resolveAppNameAsync(argumentProvider);
52
55
  const access = parseAccessLevel(await argumentProvider.getOption('access'));
53
- const repoType = cliSettings.appConfig.repoType ?? 'native';
54
- if (access === 'edit' && repoType === 'none') {
55
- throw new UsageError(`App '${appName}' has no associated repository in the platform, so edit access cannot be modified.`);
56
- }
56
+ // `repoType` only affects edit routing. For play we should never fail on the
57
+ // strict migration check for legacy config shape.
58
+ const repoType = access === 'edit'
59
+ ? resolveRepoType(cliSettings.appConfig)
60
+ : (cliSettings.appConfig.repoType ?? 'none');
57
61
  const inputs = parseInputs(argumentProvider.getPositionalArg(0));
58
62
  if (inputs.length === 0) {
59
63
  throw new UsageError('Provide at least one principal as a comma-separated list (AAD object IDs or email addresses).');
60
64
  }
61
- // Failures (bad shape, no Graph match, transport error) are collected here so
62
- // we can warn the user but still proceed with the entries that resolved.
63
- const failures = [];
64
- const refs = await resolveAllAsync(inputs, failures);
65
- // If nothing resolved, the operation has no inputs to apply — abort with a
66
- // single error listing every failure rather than calling the RP with an empty
67
- // array.
68
- if (refs.length === 0) {
69
- throw new UsageError(formatFailures(failures));
70
- }
71
- // Otherwise warn about the unresolved entries up front (so they're visible
72
- // before the success line), then proceed with the resolved subset.
73
- if (failures.length > 0) {
74
- printWarning(formatFailures(failures));
75
- }
76
- const dispatch = mode === 'share' ? shareDispatchAsync : unshareDispatchAsync;
77
- const outcome = await dispatch({ tenantId, environmentId, appName, access, refs });
78
- if (argumentProvider.isJsonMode()) {
79
- // Envelope semantics for this verb: `success: true` means the modify call
80
- // reached the RP and returned. When some inputs failed to resolve before
81
- // the modify, `partialFailure` is `true` and `warnings` lists the
82
- // unresolved entries. Consumers requiring full success must check both
83
- // `success === true && partialFailure === false`. `warnings` is always
84
- // present (empty array on full success) so consumers can treat its
85
- // length uniformly. The server response is spread flat into the envelope
86
- // (matching every other verb that emits JSON) instead of nested under a
87
- // `result` key. For unshare we also include the action-layer bookkeeping
88
- // (`revokedCount`, `revokedPrincipalCount`, `notFound`, `skipped`) that
89
- // would otherwise only appear in the human summary — so automation gets
90
- // the same fidelity as text mode.
91
- printJsonSuccess({
65
+ // Top-level scenario that ties together every server call the verb makes:
66
+ // Graph principal resolution (`ResolvePrincipalByEmail` per email), optional
67
+ // app-info fetch (`GetMaafApp`) when the edit path needs the `repositoryId`,
68
+ // and the final modify call (one of `ModifyMaafRoleAssignments`,
69
+ // `ModifyGrsRepositoryRoleAssignments`, `UnshareMaafAppByPrincipals`, or
70
+ // `UnshareGrsRepoByPrincipals`). Each of those actions already emits its own
71
+ // wire-scoped scenario; this scenario captures the verb-level outcome plus
72
+ // the routing decision (scope/role) so we can correlate. All properties are
73
+ // PII-safe — counts and routing flags only, no emails / GUIDs / app names.
74
+ const logger = getCliLogger();
75
+ const scenario = logger.trackScenario('MaafApp.SharePermissions', {
76
+ mode,
77
+ access,
78
+ repoType,
79
+ inputCount: inputs.length,
80
+ });
81
+ try {
82
+ // Failures (bad shape, no Graph match, transport error) are collected here so
83
+ // we can warn the user but still proceed with the entries that resolved.
84
+ const failures = [];
85
+ const refs = await resolveAllAsync(inputs, failures);
86
+ // Verb-level summary of the Graph fan-out. Each underlying lookup also
87
+ // emits a `ResolvePrincipalByEmail` scenario; this event makes the
88
+ // aggregate result queryable per share/unshare invocation.
89
+ logger.trackActivityEvent('MaafApp.SharePermissions.PrincipalResolution', {
90
+ mode,
91
+ inputCount: inputs.length,
92
+ resolvedCount: refs.length,
93
+ failedCount: failures.length,
94
+ });
95
+ // If nothing resolved, the operation has no inputs to apply — abort with a
96
+ // single error listing every failure rather than calling the RP with an empty
97
+ // array.
98
+ if (refs.length === 0) {
99
+ throw new UsageError(formatFailures(failures));
100
+ }
101
+ // Otherwise warn about the unresolved entries up front (so they're visible
102
+ // before the success line), then proceed with the resolved subset.
103
+ if (failures.length > 0) {
104
+ printWarning(formatFailures(failures));
105
+ }
106
+ const dispatch = mode === 'share' ? shareDispatchAsync : unshareDispatchAsync;
107
+ const outcome = await dispatch({
108
+ tenantId,
109
+ environmentId,
110
+ appName,
92
111
  access,
93
- partialFailure: failures.length > 0,
94
- ...outcome.result,
112
+ refs,
113
+ repoType,
114
+ jsonMode: argumentProvider.isJsonMode(),
115
+ });
116
+ scenario.complete({
117
+ resolvedCount: refs.length,
118
+ failedResolutionCount: failures.length,
119
+ scope: outcome.scope,
120
+ role: outcome.role,
121
+ // App-scope contributor fallback for `edit` is the noteworthy routing
122
+ // case introduced for non-native `repoType`. Tagged here so it's a
123
+ // simple boolean filter on the success event.
124
+ appScopeContributorFallback: access === 'edit' && outcome.scope === 'app',
95
125
  ...(mode === 'unshare' && {
96
126
  revokedCount: outcome.revokedCount ?? 0,
97
127
  revokedPrincipalCount: outcome.revokedPrincipalCount ?? 0,
98
- notFound: (outcome.notFound ?? []).map(toJsonRef),
99
- skipped: (outcome.skipped ?? []).map(toJsonRef),
128
+ notFoundCount: outcome.notFound?.length ?? 0,
129
+ skippedCount: outcome.skipped?.length ?? 0,
100
130
  }),
101
- warnings: failures,
102
131
  });
132
+ if (argumentProvider.isJsonMode()) {
133
+ // Envelope semantics for this verb: `success: true` means the modify call
134
+ // reached the RP and returned. When some inputs failed to resolve before
135
+ // the modify, `partialFailure` is `true` and `warnings` lists the
136
+ // unresolved entries. Consumers requiring full success must check both
137
+ // `success === true && partialFailure === false`. `warnings` is always
138
+ // present (empty array on full success) so consumers can treat its
139
+ // length uniformly. The server response is spread flat into the envelope
140
+ // (matching every other verb that emits JSON) instead of nested under a
141
+ // `result` key. For unshare we also include the action-layer bookkeeping
142
+ // (`revokedCount`, `revokedPrincipalCount`, `notFound`, `skipped`) that
143
+ // would otherwise only appear in the human summary — so automation gets
144
+ // the same fidelity as text mode.
145
+ printJsonSuccess({
146
+ access,
147
+ partialFailure: failures.length > 0,
148
+ ...outcome.result,
149
+ ...(mode === 'unshare' && {
150
+ revokedCount: outcome.revokedCount ?? 0,
151
+ revokedPrincipalCount: outcome.revokedPrincipalCount ?? 0,
152
+ notFound: (outcome.notFound ?? []).map(toJsonRef),
153
+ skipped: (outcome.skipped ?? []).map(toJsonRef),
154
+ }),
155
+ warnings: failures,
156
+ });
157
+ }
158
+ else {
159
+ printSummary({ appName, mode, access, inputCount: refs.length, outcome });
160
+ }
103
161
  }
104
- else {
105
- printSummary({ appName, mode, access, inputCount: refs.length, outcome });
162
+ catch (error) {
163
+ scenario.failure(error);
164
+ throw error;
106
165
  }
107
166
  }
108
167
  async function shareDispatchAsync(inputs) {
109
- const { tenantId, environmentId, appName, access, refs } = inputs;
168
+ const { tenantId, environmentId, appName, access, refs, repoType, jsonMode } = inputs;
110
169
  if (access === 'play') {
111
- const entries = refs.map(toMaafPermissionEntry);
170
+ const entries = refs.map((r) => toMaafPermissionEntry(r, MaafAppReaderRoleName));
171
+ const result = await modifyMaafRoleAssignmentsAsync({
172
+ tenantId,
173
+ environmentId,
174
+ logger: getCliLogger(),
175
+ actionsParams: { appName, put: entries, delete: [] },
176
+ });
177
+ return { result, scope: 'app', role: MaafAppReaderRoleName };
178
+ }
179
+ // access === 'edit': route by repoType.
180
+ if (repoType !== 'native') {
181
+ // The app has no platform-managed repository, so grant contributor access
182
+ // at the app scope instead of going through GRS.
183
+ if (!jsonMode) {
184
+ printInfo(`App '${appName}' has no platform-managed repository, so granting contributor access at the app scope instead of repository scope.`);
185
+ }
186
+ const entries = refs.map((r) => toMaafPermissionEntry(r, MaafAppContributorRoleName));
112
187
  const result = await modifyMaafRoleAssignmentsAsync({
113
188
  tenantId,
114
189
  environmentId,
115
190
  logger: getCliLogger(),
116
191
  actionsParams: { appName, put: entries, delete: [] },
117
192
  });
118
- return { result };
193
+ return { result, scope: 'app', role: MaafAppContributorRoleName };
119
194
  }
120
195
  const repoId = await resolveRepositoryIdAsync({ tenantId, environmentId, appName });
121
196
  const entries = refs.map(toGrsPermissionEntry);
@@ -125,30 +200,49 @@ async function shareDispatchAsync(inputs) {
125
200
  logger: getCliLogger(),
126
201
  actionsParams: { repoId, put: entries, delete: [] },
127
202
  });
128
- return { result };
203
+ return { result, scope: 'repo', role: GrsRepositoryContributorRoleName };
129
204
  }
130
205
  async function unshareDispatchAsync(inputs) {
131
- const { tenantId, environmentId, appName, access, refs } = inputs;
206
+ const { tenantId, environmentId, appName, access, refs, repoType, jsonMode } = inputs;
132
207
  const principalIds = refs.map((r) => r.id);
133
208
  const refsByPrincipalId = new Map(refs.map((r) => [r.id, r]));
134
- const actionResult = access === 'play'
135
- ? await unshareMaafAppByPrincipalsAsync({
209
+ const useAppScope = access === 'play' || repoType !== 'native';
210
+ const role = useAppScope
211
+ ? access === 'play'
212
+ ? MaafAppReaderRoleName
213
+ : MaafAppContributorRoleName
214
+ : GrsRepositoryContributorRoleName;
215
+ let actionResult;
216
+ if (useAppScope) {
217
+ if (access === 'edit') {
218
+ if (!jsonMode) {
219
+ printInfo(`App '${appName}' has no platform-managed repository, so revoking contributor access at the app scope instead of repository scope.`);
220
+ }
221
+ }
222
+ actionResult = await unshareMaafAppByPrincipalsAsync({
136
223
  tenantId,
137
224
  environmentId,
138
225
  logger: getCliLogger(),
139
- actionsParams: { appName, principalIds },
140
- })
141
- : await (async () => {
142
- const repoId = await resolveRepositoryIdAsync({ tenantId, environmentId, appName });
143
- return unshareGrsRepoByPrincipalsAsync({
144
- tenantId,
145
- environmentId,
146
- logger: getCliLogger(),
147
- actionsParams: { repoId, principalIds },
148
- });
149
- })();
226
+ actionsParams: {
227
+ appName,
228
+ principalIds,
229
+ roleDefinitionName: role,
230
+ },
231
+ });
232
+ }
233
+ else {
234
+ const repoId = await resolveRepositoryIdAsync({ tenantId, environmentId, appName });
235
+ actionResult = await unshareGrsRepoByPrincipalsAsync({
236
+ tenantId,
237
+ environmentId,
238
+ logger: getCliLogger(),
239
+ actionsParams: { repoId, principalIds },
240
+ });
241
+ }
150
242
  return {
151
243
  result: actionResult.result,
244
+ scope: useAppScope ? 'app' : 'repo',
245
+ role,
152
246
  revokedCount: actionResult.revokedCount,
153
247
  revokedPrincipalCount: actionResult.revokedPrincipalCount,
154
248
  notFound: actionResult.notFoundPrincipalIds.map((id) => refsByPrincipalId.get(id) ?? { id, input: id }),
@@ -156,6 +250,27 @@ async function unshareDispatchAsync(inputs) {
156
250
  { id: s.principalObjectId, input: s.principalObjectId }),
157
251
  };
158
252
  }
253
+ /**
254
+ * Resolves the effective {@link RepoType} from an `AppConfig`.
255
+ *
256
+ * Hard rule: if `repoType` is missing AND the config carries a (non-empty,
257
+ * non-zero-GUID) `repositoryId`, refuse to guess - the user must re-run
258
+ * `app init` to migrate the config. When both are missing we treat it as
259
+ * `'none'`: there is no repo-scope to act on, and the app-scope fallback in
260
+ * the share/unshare dispatchers handles edit correctly.
261
+ */
262
+ function resolveRepoType(appConfig) {
263
+ if (appConfig.repoType) {
264
+ return appConfig.repoType;
265
+ }
266
+ const hasRepoId = !!appConfig.repositoryId && appConfig.repositoryId !== '00000000-0000-0000-0000-000000000000';
267
+ if (hasRepoId) {
268
+ throw new UsageError(`${AppConfigFileName} is missing the 'repoType' field but has a 'repositoryId' set. ` +
269
+ `This usually means the file was written by an older CLI. ` +
270
+ `Re-run "npx ${CLI_BINARY_NAME} app init" to migrate the config, then retry.`);
271
+ }
272
+ return 'none';
273
+ }
159
274
  /**
160
275
  * Fetches the app's `repositoryId` via the info action. Used by the `edit`
161
276
  * access paths to drive the GRS repo-scope share/unshare endpoints.
@@ -177,13 +292,16 @@ async function resolveRepositoryIdAsync(args) {
177
292
  * verb keeps its pre-flag behaviour for callers that haven't migrated. Throws
178
293
  * a `UsageError` on any other value — Commander.js doesn't enforce enum
179
294
  * membership by default and we want a precise error message.
295
+ *
296
+ * `play` and `edit` are the only externally visible levels. The role and scope
297
+ * the level resolves to are decided downstream (see {@link MaafAppAccessLevel}).
180
298
  */
181
299
  function parseAccessLevel(raw) {
182
300
  const value = (raw ?? 'play').trim().toLowerCase();
183
301
  if (value === 'play' || value === 'edit') {
184
302
  return value;
185
303
  }
186
- throw new UsageError(`Unknown --access value '${raw}'. Use 'play' (default — app access) or 'edit' (repository access).`);
304
+ throw new UsageError(`Unknown --access value '${raw}'. Use 'play' (default — app access) or 'edit' (edit access).`);
187
305
  }
188
306
  /**
189
307
  * Splits a comma-separated string into a deduplicated, trimmed list of inputs.
@@ -289,6 +407,15 @@ function formatFailures(failures) {
289
407
  */
290
408
  function extractGraphErrorMessage(error) {
291
409
  if (error instanceof HttpClientError) {
410
+ // A 403 from Graph is a consent/permission problem with the caller's
411
+ // sign-in, not a bad principal. Echoing Graph's opaque "Insufficient
412
+ // privileges to complete the operation" under the "Could not resolve
413
+ // <email>" heading misleads users into thinking the email is wrong, so we
414
+ // replace it with an actionable message naming the real cause and the
415
+ // ways forward. See {@link formatGraphPermissionError}.
416
+ if (error.status === 403) {
417
+ return formatGraphPermissionError(error.status);
418
+ }
292
419
  const message = extractGraphMessageFromBody(error.body);
293
420
  if (message !== undefined) {
294
421
  return `Graph ${error.status}: ${message}`;
@@ -297,6 +424,21 @@ function extractGraphErrorMessage(error) {
297
424
  }
298
425
  return error instanceof Error ? error.message : String(error);
299
426
  }
427
+ /**
428
+ * Builds the actionable reason for a Graph 403 hit during principal resolution.
429
+ * The email→object-id lookup needs the `User.ReadBasic.All` and
430
+ * `Group.Read.All` delegated Graph permissions; a 403 means the active
431
+ * account's token doesn't carry them in this tenant (consent was never
432
+ * granted). Rather than surface Graph's opaque "Insufficient privileges", we
433
+ * name the cause and the two ways forward: get those permissions consented, or
434
+ * skip the lookup entirely by passing the AAD object ID (GUID) instead of an
435
+ * email.
436
+ */
437
+ function formatGraphPermissionError(status) {
438
+ return (`Graph ${status}: your sign-in lacks permission to look up accounts by email. ` +
439
+ `Pass the AAD object ID (GUID) instead, or have an admin grant the ` +
440
+ `User.ReadBasic.All and Group.Read.All Graph permissions.`);
441
+ }
300
442
  /**
301
443
  * Parses a Graph error body string and returns the inner `error.message`. Returns
302
444
  * `undefined` if the body is missing, not valid JSON, or doesn't carry the
@@ -331,11 +473,11 @@ function looksLikeEmail(input) {
331
473
  * (when the user supplied one) keeps the wire payload self-describing for server
332
474
  * logs even though the response strips it.
333
475
  */
334
- function toMaafPermissionEntry(ref) {
476
+ function toMaafPermissionEntry(ref, role) {
335
477
  return {
336
478
  name: ref.displayName ?? ref.input,
337
479
  properties: {
338
- roleName: MaafAppReaderRoleName,
480
+ roleName: role,
339
481
  principal: ref.email ? { id: ref.id, email: ref.email } : { id: ref.id },
340
482
  },
341
483
  };
@@ -1 +1 @@
1
- {"version":3,"file":"MaafAppPermissions.js","sourceRoot":"","sources":["../../src/Verbs/MaafAppPermissions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MaafAppPermissions.js","sourceRoot":"","sources":["../../src/Verbs/MaafAppPermissions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ import type { ArgumentProvider } from '../ArgumentProvider.js';
5
+ type PlayMode = 'live' | 'preview';
6
+ /**
7
+ * Implements `ms app play` — opens a Microsoft App in the browser and prints
8
+ * the launch URL.
9
+ *
10
+ * Modes:
11
+ * - `live` (default): fetches the deployed app via `infoAsync` and opens
12
+ * `appPlayUri`. Warns that the live build is a snapshot — users must run
13
+ * `ms app deploy` to update it. If no `appPlayUri` exists yet, surfaces a
14
+ * `UsageError` directing the user to deploy first.
15
+ * - `preview`: opens the returned `appPlayUri` with a preview route suffix:
16
+ * `/branch/main` by default, or `/commit/:commitId` when `--commit` is
17
+ * supplied.
18
+ */
19
+ export declare function playMaafAppAsync(argumentProvider: ArgumentProvider): Promise<void>;
20
+ export declare function buildPlayUrl(appPlayUri: string | null | undefined, mode: PlayMode, commitId?: string, branchName?: string): string | undefined;
21
+ export {};
22
+ //# sourceMappingURL=PlayMaafApp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlayMaafApp.d.ts","sourceRoot":"","sources":["../../src/Verbs/PlayMaafApp.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAQ5D,KAAK,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAEnC;;;;;;;;;;;;GAYG;AACH,wBAAsB,gBAAgB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCxF;AAkDD,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACrC,IAAI,EAAE,QAAQ,EACd,QAAQ,CAAC,EAAE,MAAM,EACjB,UAAU,SAAS,GAClB,MAAM,GAAG,SAAS,CAapB"}
@@ -0,0 +1,147 @@
1
+ /*!
2
+ * Copyright (C) Microsoft Corporation. All rights reserved.
3
+ */
4
+ import { infoAsync } from '@microsoft/managed-apps-actions';
5
+ import open from 'open';
6
+ import { getCliLogger } from '../CliSettings.js';
7
+ import { resolveAppNameAsync, resolveEnvironmentId } from '../CliUtils.js';
8
+ import { HelpStrings } from '../Constants/HelpStrings.js';
9
+ import { UsageError } from '../Errors/CliError.js';
10
+ import { printInfo, printJsonSuccess, printSuccess, printWarning } from '../Utils/ConsoleOutput.js';
11
+ import { PlayMaafAppArguments } from './VerbConstants.js';
12
+ /**
13
+ * Implements `ms app play` — opens a Microsoft App in the browser and prints
14
+ * the launch URL.
15
+ *
16
+ * Modes:
17
+ * - `live` (default): fetches the deployed app via `infoAsync` and opens
18
+ * `appPlayUri`. Warns that the live build is a snapshot — users must run
19
+ * `ms app deploy` to update it. If no `appPlayUri` exists yet, surfaces a
20
+ * `UsageError` directing the user to deploy first.
21
+ * - `preview`: opens the returned `appPlayUri` with a preview route suffix:
22
+ * `/branch/main` by default, or `/commit/:commitId` when `--commit` is
23
+ * supplied.
24
+ */
25
+ export async function playMaafAppAsync(argumentProvider) {
26
+ configureOptionSchema(argumentProvider);
27
+ await argumentProvider.runVerb();
28
+ const appName = await resolveAppNameAsync(argumentProvider);
29
+ const environmentId = await resolveEnvironmentId(argumentProvider);
30
+ const tenantId = await argumentProvider.getTenantIdAsync();
31
+ if (!tenantId) {
32
+ throw new UsageError('Unable to determine tenant ID. Ensure you are logged in.');
33
+ }
34
+ const mode = await resolveMode(argumentProvider);
35
+ const noBrowser = (await argumentProvider.getOption('noBrowser', /* ignorePrompt */ true)) === true;
36
+ const isJson = argumentProvider.isJsonMode();
37
+ const commitId = await argumentProvider.getOption(PlayMaafAppArguments.CommitSha.name,
38
+ /* ignorePrompt */ true);
39
+ if (mode === 'live' && commitId) {
40
+ throw new UsageError(`--commit is only valid with --mode preview.`);
41
+ }
42
+ await playAsync({
43
+ appName,
44
+ environmentId,
45
+ tenantId,
46
+ noBrowser,
47
+ isJson,
48
+ mode,
49
+ commitId,
50
+ });
51
+ }
52
+ async function playAsync(ctx) {
53
+ const { appName, environmentId, tenantId, noBrowser, isJson, mode, commitId } = ctx;
54
+ const app = await infoAsync({
55
+ tenantId,
56
+ environmentId,
57
+ logger: getCliLogger(),
58
+ actionsParams: { appName },
59
+ });
60
+ const url = buildPlayUrl(app.appPlayUri, mode, commitId);
61
+ if (!url) {
62
+ throw new UsageError(mode === 'live'
63
+ ? `No live build is available for app '${appName}' yet. Run 'ms app deploy' to deploy one, then re-run 'ms app play'.`
64
+ : `No appPlayUri is available for app '${appName}' in environment '${environmentId}'.`);
65
+ }
66
+ if (isJson) {
67
+ printJsonSuccess({ appName, mode, url, commitHash: app.commitHash ?? null });
68
+ return;
69
+ }
70
+ printSuccess(`${mode === 'live' ? 'Live' : 'Preview'} URL for '${app.displayName ?? appName}': ${url}`);
71
+ if (mode === 'live') {
72
+ printWarning("Live does not auto-update. Run 'ms app deploy' to publish a new version to the live URL.");
73
+ }
74
+ await openBrowserAsync(url, noBrowser);
75
+ }
76
+ // Mirrors the player routes in apps/maaf-player/src/App.tsx:
77
+ // /appframework/e/:envId/app/:appId, /branch/:branch, and /commit/:commit.
78
+ // Branch values are URL-encoded so names containing `/` remain a single route segment.
79
+ export function buildPlayUrl(appPlayUri, mode, commitId, branchName = 'main') {
80
+ if (!appPlayUri) {
81
+ return undefined;
82
+ }
83
+ if (mode === 'live') {
84
+ return appPlayUri;
85
+ }
86
+ const baseUrl = appPlayUri.replace(/\/$/, '');
87
+ return commitId
88
+ ? `${baseUrl}/commit/${commitId}`
89
+ : `${baseUrl}/branch/${encodeURIComponent(branchName)}`;
90
+ }
91
+ async function openBrowserAsync(url, noBrowser) {
92
+ if (noBrowser) {
93
+ return;
94
+ }
95
+ printInfo(`Opening browser at ${url}`);
96
+ try {
97
+ await open(url, { wait: false });
98
+ }
99
+ catch {
100
+ printInfo(`Could not open browser automatically. Please navigate to:\n ${url}`);
101
+ }
102
+ }
103
+ async function resolveMode(argumentProvider) {
104
+ const raw = await argumentProvider.getOption(PlayMaafAppArguments.Mode.name,
105
+ /* ignorePrompt */ true);
106
+ const value = (raw ?? PlayMaafAppArguments.Mode.defaultValue).trim().toLowerCase();
107
+ if (value !== 'live' && value !== 'preview') {
108
+ throw new UsageError(`Invalid --mode value '${raw}'. Expected 'live' or 'preview'.`);
109
+ }
110
+ return value;
111
+ }
112
+ function configureOptionSchema(argumentProvider) {
113
+ argumentProvider.setDescription(HelpStrings.app.play.description);
114
+ argumentProvider.addExamples(HelpStrings.app.play.examples);
115
+ argumentProvider.addSwitch({
116
+ flags: { key: PlayMaafAppArguments.NoBrowser.name },
117
+ description: HelpStrings.app.play.options.noBrowser,
118
+ });
119
+ argumentProvider.addOptions([
120
+ {
121
+ flags: { key: PlayMaafAppArguments.AppName.name },
122
+ env: PlayMaafAppArguments.AppName.envVar,
123
+ description: HelpStrings.app.play.options.app,
124
+ optionalInNonInteractive: true,
125
+ },
126
+ {
127
+ flags: {
128
+ key: PlayMaafAppArguments.Mode.name,
129
+ alias: PlayMaafAppArguments.Mode.alias,
130
+ },
131
+ env: PlayMaafAppArguments.Mode.envVar,
132
+ default: PlayMaafAppArguments.Mode.defaultValue,
133
+ description: HelpStrings.app.play.options.mode,
134
+ optionalInNonInteractive: true,
135
+ },
136
+ {
137
+ flags: {
138
+ key: PlayMaafAppArguments.CommitSha.name,
139
+ alias: PlayMaafAppArguments.CommitSha.alias,
140
+ },
141
+ env: PlayMaafAppArguments.CommitSha.envVar,
142
+ description: HelpStrings.app.play.options.commit,
143
+ optionalInNonInteractive: true,
144
+ },
145
+ ]);
146
+ }
147
+ //# sourceMappingURL=PlayMaafApp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlayMaafApp.js","sourceRoot":"","sources":["../../src/Verbs/PlayMaafApp.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RefreshDataSource.d.ts","sourceRoot":"","sources":["../../src/Verbs/RefreshDataSource.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAQ5D,wBAAsB,sBAAsB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4C9F"}
1
+ {"version":3,"file":"RefreshDataSource.d.ts","sourceRoot":"","sources":["../../src/Verbs/RefreshDataSource.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAQ5D,wBAAsB,sBAAsB,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0C9F"}