@microsoft/teamsfx-core 2.0.10-alpha.530dccdb5.0 → 2.0.10-alpha.535ba4ece.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 (283) hide show
  1. package/build/client/teamsDevPortalClient.d.ts +1 -0
  2. package/build/client/teamsDevPortalClient.d.ts.map +1 -1
  3. package/build/client/teamsDevPortalClient.js +16 -1
  4. package/build/client/teamsDevPortalClient.js.map +1 -1
  5. package/build/common/constants.d.ts +0 -16
  6. package/build/common/constants.d.ts.map +1 -1
  7. package/build/common/constants.js +1 -18
  8. package/build/common/constants.js.map +1 -1
  9. package/build/common/correlator.d.ts +1 -0
  10. package/build/common/correlator.d.ts.map +1 -1
  11. package/build/common/correlator.js +6 -1
  12. package/build/common/correlator.js.map +1 -1
  13. package/build/common/featureFlags.d.ts +43 -4
  14. package/build/common/featureFlags.d.ts.map +1 -1
  15. package/build/common/featureFlags.js +75 -16
  16. package/build/common/featureFlags.js.map +1 -1
  17. package/build/common/globalState.js +1 -1
  18. package/build/common/globalState.js.map +1 -1
  19. package/build/common/globalVars.d.ts +1 -0
  20. package/build/common/globalVars.d.ts.map +1 -1
  21. package/build/common/globalVars.js +2 -1
  22. package/build/common/globalVars.js.map +1 -1
  23. package/build/common/projectTypeChecker.js +1 -1
  24. package/build/common/projectTypeChecker.js.map +1 -1
  25. package/build/common/samples.js +2 -2
  26. package/build/common/samples.js.map +1 -1
  27. package/build/common/secretmasker/dict.d.ts +22 -0
  28. package/build/common/secretmasker/dict.d.ts.map +1 -0
  29. package/build/common/secretmasker/dict.js +83 -0
  30. package/build/common/secretmasker/dict.js.map +1 -0
  31. package/build/common/secretmasker/feature.d.ts +15 -0
  32. package/build/common/secretmasker/feature.d.ts.map +1 -0
  33. package/build/common/secretmasker/feature.js +148 -0
  34. package/build/common/secretmasker/feature.js.map +1 -0
  35. package/build/common/secretmasker/masker.d.ts +12 -0
  36. package/build/common/secretmasker/masker.d.ts.map +1 -0
  37. package/build/common/secretmasker/masker.js +54 -0
  38. package/build/common/secretmasker/masker.js.map +1 -0
  39. package/build/common/stringUtils.d.ts +3 -5
  40. package/build/common/stringUtils.d.ts.map +1 -1
  41. package/build/common/stringUtils.js +11 -103
  42. package/build/common/stringUtils.js.map +1 -1
  43. package/build/common/telemetry.d.ts +3 -1
  44. package/build/common/telemetry.d.ts.map +1 -1
  45. package/build/common/telemetry.js +5 -0
  46. package/build/common/telemetry.js.map +1 -1
  47. package/build/common/templates-config.json +1 -1
  48. package/build/common/tools.d.ts +1 -1
  49. package/build/common/tools.d.ts.map +1 -1
  50. package/build/common/tools.js +9 -3
  51. package/build/common/tools.js.map +1 -1
  52. package/build/common/utils.d.ts +3 -0
  53. package/build/common/utils.d.ts.map +1 -1
  54. package/build/common/utils.js +14 -1
  55. package/build/common/utils.js.map +1 -1
  56. package/build/common/wrappedAxiosClient.d.ts.map +1 -1
  57. package/build/common/wrappedAxiosClient.js +10 -0
  58. package/build/common/wrappedAxiosClient.js.map +1 -1
  59. package/build/component/coordinator/index.d.ts.map +1 -1
  60. package/build/component/coordinator/index.js +11 -120
  61. package/build/component/coordinator/index.js.map +1 -1
  62. package/build/component/developerPortalScaffoldUtils.js +1 -1
  63. package/build/component/developerPortalScaffoldUtils.js.map +1 -1
  64. package/build/component/driver/aad/create.d.ts.map +1 -1
  65. package/build/component/driver/aad/create.js +9 -1
  66. package/build/component/driver/aad/create.js.map +1 -1
  67. package/build/component/driver/aad/utility/constants.d.ts +1 -0
  68. package/build/component/driver/aad/utility/constants.d.ts.map +1 -1
  69. package/build/component/driver/aad/utility/constants.js +1 -0
  70. package/build/component/driver/aad/utility/constants.js.map +1 -1
  71. package/build/component/driver/apiKey/create.d.ts.map +1 -1
  72. package/build/component/driver/apiKey/create.js +4 -1
  73. package/build/component/driver/apiKey/create.js.map +1 -1
  74. package/build/component/driver/apiKey/error/apiKeyFromScratchClientSecretInvalid.d.ts +5 -0
  75. package/build/component/driver/apiKey/error/apiKeyFromScratchClientSecretInvalid.d.ts.map +1 -0
  76. package/build/component/driver/apiKey/error/apiKeyFromScratchClientSecretInvalid.js +21 -0
  77. package/build/component/driver/apiKey/error/apiKeyFromScratchClientSecretInvalid.js.map +1 -0
  78. package/build/component/driver/apiKey/utility/constants.d.ts +1 -1
  79. package/build/component/driver/apiKey/utility/constants.js +1 -1
  80. package/build/component/driver/arm/deployImpl.d.ts.map +1 -1
  81. package/build/component/driver/arm/deployImpl.js +3 -1
  82. package/build/component/driver/arm/deployImpl.js.map +1 -1
  83. package/build/component/driver/botAadApp/create.d.ts.map +1 -1
  84. package/build/component/driver/botAadApp/create.js +10 -1
  85. package/build/component/driver/botAadApp/create.js.map +1 -1
  86. package/build/component/driver/botAadApp/utility/constants.d.ts +1 -0
  87. package/build/component/driver/botAadApp/utility/constants.d.ts.map +1 -1
  88. package/build/component/driver/botAadApp/utility/constants.js +1 -0
  89. package/build/component/driver/botAadApp/utility/constants.js.map +1 -1
  90. package/build/component/driver/deploy/azure/azureStaticWebAppGetDeploymentTokenDriver.d.ts.map +1 -1
  91. package/build/component/driver/deploy/azure/azureStaticWebAppGetDeploymentTokenDriver.js +7 -1
  92. package/build/component/driver/deploy/azure/azureStaticWebAppGetDeploymentTokenDriver.js.map +1 -1
  93. package/build/component/driver/middleware/addSWADeployTelemetry.js +1 -1
  94. package/build/component/driver/middleware/addSWADeployTelemetry.js.map +1 -1
  95. package/build/component/driver/oauth/create.d.ts.map +1 -1
  96. package/build/component/driver/oauth/create.js +33 -3
  97. package/build/component/driver/oauth/create.js.map +1 -1
  98. package/build/component/driver/oauth/error/oauthDisablePKCEError.d.ts +5 -0
  99. package/build/component/driver/oauth/error/oauthDisablePKCEError.d.ts.map +1 -0
  100. package/build/component/driver/oauth/error/oauthDisablePKCEError.js +21 -0
  101. package/build/component/driver/oauth/error/oauthDisablePKCEError.js.map +1 -0
  102. package/build/component/driver/oauth/error/oauthIdentityProviderInvalid.d.ts +5 -0
  103. package/build/component/driver/oauth/error/oauthIdentityProviderInvalid.d.ts.map +1 -0
  104. package/build/component/driver/oauth/error/oauthIdentityProviderInvalid.js +21 -0
  105. package/build/component/driver/oauth/error/oauthIdentityProviderInvalid.js.map +1 -0
  106. package/build/component/driver/oauth/interface/createOauthArgs.d.ts +2 -0
  107. package/build/component/driver/oauth/interface/createOauthArgs.d.ts.map +1 -1
  108. package/build/component/driver/oauth/interface/updateOauthArgs.d.ts +1 -0
  109. package/build/component/driver/oauth/interface/updateOauthArgs.d.ts.map +1 -1
  110. package/build/component/driver/oauth/update.d.ts.map +1 -1
  111. package/build/component/driver/oauth/update.js +11 -0
  112. package/build/component/driver/oauth/update.js.map +1 -1
  113. package/build/component/driver/oauth/utility/constants.d.ts +1 -1
  114. package/build/component/driver/oauth/utility/constants.js +1 -1
  115. package/build/component/driver/script/scriptDriver.d.ts.map +1 -1
  116. package/build/component/driver/script/scriptDriver.js +21 -22
  117. package/build/component/driver/script/scriptDriver.js.map +1 -1
  118. package/build/component/driver/teamsApp/appStudio.d.ts.map +1 -1
  119. package/build/component/driver/teamsApp/appStudio.js +4 -15
  120. package/build/component/driver/teamsApp/appStudio.js.map +1 -1
  121. package/build/component/driver/teamsApp/clients/appStudioClient.js +1 -1
  122. package/build/component/driver/teamsApp/clients/appStudioClient.js.map +1 -1
  123. package/build/component/driver/teamsApp/constants.d.ts +14 -1
  124. package/build/component/driver/teamsApp/constants.d.ts.map +1 -1
  125. package/build/component/driver/teamsApp/constants.js +131 -2
  126. package/build/component/driver/teamsApp/constants.js.map +1 -1
  127. package/build/component/driver/teamsApp/createAppPackage.d.ts.map +1 -1
  128. package/build/component/driver/teamsApp/createAppPackage.js +10 -10
  129. package/build/component/driver/teamsApp/createAppPackage.js.map +1 -1
  130. package/build/component/driver/teamsApp/interfaces/OauthRegistration.d.ts +2 -0
  131. package/build/component/driver/teamsApp/interfaces/OauthRegistration.d.ts.map +1 -1
  132. package/build/component/driver/teamsApp/interfaces/OauthRegistration.js.map +1 -1
  133. package/build/component/driver/teamsApp/interfaces/appdefinitions/IValidationResult.d.ts +1 -0
  134. package/build/component/driver/teamsApp/interfaces/appdefinitions/IValidationResult.d.ts.map +1 -1
  135. package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.d.ts +3 -3
  136. package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.d.ts.map +1 -1
  137. package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.js +2 -2
  138. package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.js.map +1 -1
  139. package/build/component/driver/teamsApp/utils/ManifestUtils.d.ts +3 -2
  140. package/build/component/driver/teamsApp/utils/ManifestUtils.d.ts.map +1 -1
  141. package/build/component/driver/teamsApp/utils/ManifestUtils.js +37 -13
  142. package/build/component/driver/teamsApp/utils/ManifestUtils.js.map +1 -1
  143. package/build/component/driver/teamsApp/utils/PluginManifestUtils.d.ts +3 -3
  144. package/build/component/driver/teamsApp/utils/PluginManifestUtils.d.ts.map +1 -1
  145. package/build/component/driver/teamsApp/utils/PluginManifestUtils.js +2 -2
  146. package/build/component/driver/teamsApp/utils/PluginManifestUtils.js.map +1 -1
  147. package/build/component/driver/teamsApp/utils/utils.d.ts +3 -3
  148. package/build/component/driver/teamsApp/utils/utils.d.ts.map +1 -1
  149. package/build/component/driver/teamsApp/utils/utils.js +37 -7
  150. package/build/component/driver/teamsApp/utils/utils.js.map +1 -1
  151. package/build/component/driver/teamsApp/validateAppPackage.d.ts +1 -0
  152. package/build/component/driver/teamsApp/validateAppPackage.d.ts.map +1 -1
  153. package/build/component/driver/teamsApp/validateAppPackage.js +16 -2
  154. package/build/component/driver/teamsApp/validateAppPackage.js.map +1 -1
  155. package/build/component/generator/apiSpec/generator.d.ts +0 -6
  156. package/build/component/generator/apiSpec/generator.d.ts.map +1 -1
  157. package/build/component/generator/apiSpec/generator.js +56 -157
  158. package/build/component/generator/apiSpec/generator.js.map +1 -1
  159. package/build/component/generator/apiSpec/helper.d.ts +10 -1
  160. package/build/component/generator/apiSpec/helper.d.ts.map +1 -1
  161. package/build/component/generator/apiSpec/helper.js +118 -8
  162. package/build/component/generator/apiSpec/helper.js.map +1 -1
  163. package/build/component/generator/constant.d.ts +1 -0
  164. package/build/component/generator/constant.d.ts.map +1 -1
  165. package/build/component/generator/constant.js +2 -1
  166. package/build/component/generator/constant.js.map +1 -1
  167. package/build/component/generator/copilotExtension/generator.d.ts +19 -0
  168. package/build/component/generator/copilotExtension/generator.d.ts.map +1 -0
  169. package/build/component/generator/copilotExtension/generator.js +84 -0
  170. package/build/component/generator/copilotExtension/generator.js.map +1 -0
  171. package/build/component/generator/error.d.ts +1 -1
  172. package/build/component/generator/error.d.ts.map +1 -1
  173. package/build/component/generator/error.js +2 -2
  174. package/build/component/generator/error.js.map +1 -1
  175. package/build/component/generator/generator.js +1 -1
  176. package/build/component/generator/generator.js.map +1 -1
  177. package/build/component/generator/generatorProvider.d.ts.map +1 -1
  178. package/build/component/generator/generatorProvider.js +4 -2
  179. package/build/component/generator/generatorProvider.js.map +1 -1
  180. package/build/component/generator/officeAddin/generator.d.ts +1 -2
  181. package/build/component/generator/officeAddin/generator.d.ts.map +1 -1
  182. package/build/component/generator/officeAddin/generator.js +16 -16
  183. package/build/component/generator/officeAddin/generator.js.map +1 -1
  184. package/build/component/generator/spfx/depsChecker/generatorChecker.js +1 -1
  185. package/build/component/generator/spfx/depsChecker/generatorChecker.js.map +1 -1
  186. package/build/component/generator/spfx/depsChecker/yoChecker.js +1 -1
  187. package/build/component/generator/spfx/depsChecker/yoChecker.js.map +1 -1
  188. package/build/component/generator/spfx/spfxGenerator.d.ts.map +1 -1
  189. package/build/component/generator/spfx/spfxGenerator.js +9 -9
  190. package/build/component/generator/spfx/spfxGenerator.js.map +1 -1
  191. package/build/component/generator/spfx/utils/utils.d.ts +1 -0
  192. package/build/component/generator/spfx/utils/utils.d.ts.map +1 -1
  193. package/build/component/generator/spfx/utils/utils.js +11 -7
  194. package/build/component/generator/spfx/utils/utils.js.map +1 -1
  195. package/build/component/generator/templates/templateNames.d.ts.map +1 -1
  196. package/build/component/generator/templates/templateNames.js +0 -35
  197. package/build/component/generator/templates/templateNames.js.map +1 -1
  198. package/build/component/generator/templates/templateReplaceMap.d.ts.map +1 -1
  199. package/build/component/generator/templates/templateReplaceMap.js +19 -5
  200. package/build/component/generator/templates/templateReplaceMap.js.map +1 -1
  201. package/build/component/generator/utils.js +1 -1
  202. package/build/component/generator/utils.js.map +1 -1
  203. package/build/component/local/localCertificateManager.d.ts.map +1 -1
  204. package/build/component/local/localCertificateManager.js +4 -2
  205. package/build/component/local/localCertificateManager.js.map +1 -1
  206. package/build/component/utils/envFunctionUtils.d.ts +12 -0
  207. package/build/component/utils/envFunctionUtils.d.ts.map +1 -0
  208. package/build/component/utils/envFunctionUtils.js +185 -0
  209. package/build/component/utils/envFunctionUtils.js.map +1 -0
  210. package/build/core/FxCore.d.ts +30 -0
  211. package/build/core/FxCore.d.ts.map +1 -1
  212. package/build/core/FxCore.js +332 -11
  213. package/build/core/FxCore.js.map +1 -1
  214. package/build/core/middleware/concurrentLocker.js +2 -2
  215. package/build/core/middleware/concurrentLocker.js.map +1 -1
  216. package/build/error/common.d.ts +1 -1
  217. package/build/error/common.d.ts.map +1 -1
  218. package/build/error/common.js +7 -2
  219. package/build/error/common.js.map +1 -1
  220. package/build/error/script.d.ts +2 -2
  221. package/build/error/script.d.ts.map +1 -1
  222. package/build/error/script.js +14 -8
  223. package/build/error/script.js.map +1 -1
  224. package/build/error/teamsApp.d.ts.map +1 -1
  225. package/build/error/teamsApp.js +3 -1
  226. package/build/error/teamsApp.js.map +1 -1
  227. package/build/index.d.ts +2 -1
  228. package/build/index.d.ts.map +1 -1
  229. package/build/index.js +6 -2
  230. package/build/index.js.map +1 -1
  231. package/build/question/constants.d.ts +28 -13
  232. package/build/question/constants.d.ts.map +1 -1
  233. package/build/question/constants.js +95 -67
  234. package/build/question/constants.js.map +1 -1
  235. package/build/question/create.d.ts.map +1 -1
  236. package/build/question/create.js +78 -45
  237. package/build/question/create.js.map +1 -1
  238. package/build/question/generator.js +2 -0
  239. package/build/question/generator.js.map +1 -1
  240. package/build/question/index.d.ts +1 -0
  241. package/build/question/index.d.ts.map +1 -1
  242. package/build/question/index.js +3 -0
  243. package/build/question/index.js.map +1 -1
  244. package/build/question/inputs/AddPluginInputs.d.ts +1 -1
  245. package/build/question/inputs/AddPluginInputs.d.ts.map +1 -1
  246. package/build/question/inputs/CreateProjectInputs.d.ts +5 -1
  247. package/build/question/inputs/CreateProjectInputs.d.ts.map +1 -1
  248. package/build/question/inputs/UninstallInputs.d.ts +22 -0
  249. package/build/question/inputs/UninstallInputs.d.ts.map +1 -0
  250. package/build/question/inputs/UninstallInputs.js +5 -0
  251. package/build/question/inputs/UninstallInputs.js.map +1 -0
  252. package/build/question/inputs/index.d.ts +1 -0
  253. package/build/question/inputs/index.d.ts.map +1 -1
  254. package/build/question/inputs/index.js +1 -0
  255. package/build/question/inputs/index.js.map +1 -1
  256. package/build/question/options/AddPluginOptions.js +1 -1
  257. package/build/question/options/AddPluginOptions.js.map +1 -1
  258. package/build/question/options/CreateProjectOptions.d.ts.map +1 -1
  259. package/build/question/options/CreateProjectOptions.js +16 -4
  260. package/build/question/options/CreateProjectOptions.js.map +1 -1
  261. package/build/question/options/UninstallOptions.d.ts +10 -0
  262. package/build/question/options/UninstallOptions.d.ts.map +1 -0
  263. package/build/question/options/UninstallOptions.js +44 -0
  264. package/build/question/options/UninstallOptions.js.map +1 -0
  265. package/build/question/options/index.d.ts +1 -0
  266. package/build/question/options/index.d.ts.map +1 -1
  267. package/build/question/options/index.js +1 -0
  268. package/build/question/options/index.js.map +1 -1
  269. package/build/question/other.d.ts +1 -0
  270. package/build/question/other.d.ts.map +1 -1
  271. package/build/question/other.js +128 -5
  272. package/build/question/other.js.map +1 -1
  273. package/build/tsconfig.tsbuildinfo +1 -0
  274. package/package.json +10 -7
  275. package/resource/dict.zip +0 -0
  276. package/resource/package.nls.json +146 -91
  277. package/resource/yaml-schema/v1.6/yaml.schema.json +13 -0
  278. package/resource/yaml-schema/yaml.schema.json +13 -0
  279. package/templates/fallback/common.zip +0 -0
  280. package/templates/fallback/csharp.zip +0 -0
  281. package/templates/fallback/js.zip +0 -0
  282. package/templates/fallback/python.zip +0 -0
  283. package/templates/fallback/ts.zip +0 -0
@@ -63,6 +63,10 @@ const errorHandler_1 = require("./middleware/errorHandler");
63
63
  const projectMigratorV3_1 = require("./middleware/projectMigratorV3");
64
64
  const v3MigrationUtils_1 = require("./middleware/utils/v3MigrationUtils");
65
65
  const telemetry_2 = require("./telemetry");
66
+ const packageService_1 = require("../component/m365/packageService");
67
+ const serviceConstant_1 = require("../component/m365/serviceConstant");
68
+ const teamsDevPortalClient_1 = require("../client/teamsDevPortalClient");
69
+ const utils_3 = require("../common/utils");
66
70
  class FxCore {
67
71
  constructor(tools) {
68
72
  globalVars_1.setTools(tools);
@@ -165,6 +169,251 @@ class FxCore {
165
169
  catch (e) { }
166
170
  }
167
171
  }
172
+ /**
173
+ * none lifecycle command, uninstall provisioned resources
174
+ */
175
+ async uninstall(inputs) {
176
+ switch (inputs[constants_3.QuestionNames.UninstallMode]) {
177
+ case constants_3.QuestionNames.UninstallModeManifestId:
178
+ return await this.uninstallByManifestId(inputs);
179
+ case constants_3.QuestionNames.UninstallModeEnv:
180
+ return await this.uninstallByEnv(inputs);
181
+ case constants_3.QuestionNames.UninstallModeTitleId:
182
+ return await this.uninstallByTitleId(inputs);
183
+ default:
184
+ return teamsfx_api_1.err(new common_2.UnhandledError(new Error("Uninstall mode not supported"), "FxCore"));
185
+ }
186
+ }
187
+ /**
188
+ * uninstall provisioned resources by manifest ID
189
+ */
190
+ async uninstallByManifestId(inputs) {
191
+ const manifestId = inputs[constants_3.QuestionNames.ManifestId];
192
+ if (!manifestId) {
193
+ return teamsfx_api_1.err(new common_2.MissingRequiredInputError("manifest-id", "FxCore"));
194
+ }
195
+ const uninstallOptions = inputs[constants_3.QuestionNames.UninstallOptions];
196
+ const m356AppOption = uninstallOptions === null || uninstallOptions === void 0 ? void 0 : uninstallOptions.includes(constants_3.QuestionNames.UninstallOptionM365);
197
+ const tdpOption = uninstallOptions === null || uninstallOptions === void 0 ? void 0 : uninstallOptions.includes(constants_3.QuestionNames.UninstallOptionTDP);
198
+ const botOption = uninstallOptions === null || uninstallOptions === void 0 ? void 0 : uninstallOptions.includes(constants_3.QuestionNames.UninstallOptionBot);
199
+ if (m356AppOption) {
200
+ const res = await this.uninstallM365App(undefined, manifestId);
201
+ if (res.isErr()) {
202
+ return teamsfx_api_1.err(res.error);
203
+ }
204
+ }
205
+ if (botOption) {
206
+ const res = await this.uninstallBotFrameworRegistration(undefined, manifestId);
207
+ if (res.isErr()) {
208
+ return teamsfx_api_1.err(res.error);
209
+ }
210
+ }
211
+ // App registraion should be the last to remove, because we might need to query some metadata from TDP.
212
+ if (tdpOption) {
213
+ const res = await this.uninstallAppRegistration(manifestId);
214
+ if (res.isErr()) {
215
+ return teamsfx_api_1.err(res.error);
216
+ }
217
+ }
218
+ return teamsfx_api_1.ok(undefined);
219
+ }
220
+ /**
221
+ * uninstall provisioned resources by a given environment
222
+ */
223
+ async uninstallByEnv(inputs, ctx) {
224
+ var _a, _b, _c, _d, _e;
225
+ if (!inputs.env) {
226
+ return teamsfx_api_1.err(new common_2.MissingRequiredInputError("env", "FxCore"));
227
+ }
228
+ const teamsappYamlPath = pathUtils_1.pathUtils.getYmlFilePath(inputs.projectPath, inputs.env);
229
+ const yamlProjectModel = await metadataUtil_1.metadataUtil.parse(teamsappYamlPath, inputs.env);
230
+ if (yamlProjectModel.isErr()) {
231
+ return teamsfx_api_1.err(yamlProjectModel.error);
232
+ }
233
+ const projectModel = yamlProjectModel.value;
234
+ let teamsAppId;
235
+ let botId;
236
+ let m365TitleId;
237
+ let teamsAppIdKeyName = "";
238
+ let botIdKeyName = "";
239
+ let m365TitleIdKeyName = "";
240
+ for (const action of (_b = (_a = projectModel.provision) === null || _a === void 0 ? void 0 : _a.driverDefs) !== null && _b !== void 0 ? _b : []) {
241
+ if (action.uses === "teamsApp/create") {
242
+ teamsAppIdKeyName = ((_c = action.writeToEnvironmentFile) === null || _c === void 0 ? void 0 : _c.teamsAppId) || "TEAMS_APP_ID";
243
+ teamsAppId = process.env[teamsAppIdKeyName];
244
+ }
245
+ else if (action.uses === "botFramework/create") {
246
+ botIdKeyName = ((_d = action.writeToEnvironmentFile) === null || _d === void 0 ? void 0 : _d.botId) || "BOT_ID";
247
+ botId = process.env[botIdKeyName];
248
+ }
249
+ else if (action.uses === "teamsApp/extendToM365") {
250
+ m365TitleIdKeyName = ((_e = action.writeToEnvironmentFile) === null || _e === void 0 ? void 0 : _e.titleId) || "M365_TITLE_ID";
251
+ m365TitleId = process.env[m365TitleIdKeyName];
252
+ }
253
+ }
254
+ const uninstallOptions = inputs[constants_3.QuestionNames.UninstallOptions];
255
+ const m356AppOption = uninstallOptions === null || uninstallOptions === void 0 ? void 0 : uninstallOptions.includes(constants_3.QuestionNames.UninstallOptionM365);
256
+ const tdpOption = uninstallOptions === null || uninstallOptions === void 0 ? void 0 : uninstallOptions.includes(constants_3.QuestionNames.UninstallOptionTDP);
257
+ const botOption = uninstallOptions === null || uninstallOptions === void 0 ? void 0 : uninstallOptions.includes(constants_3.QuestionNames.UninstallOptionBot);
258
+ if ((teamsAppId || m365TitleId) && m356AppOption) {
259
+ const res = await this.uninstallM365App(m365TitleId, teamsAppId);
260
+ if (res.isErr()) {
261
+ return teamsfx_api_1.err(res.error);
262
+ }
263
+ this.resetEnvVar(teamsAppIdKeyName, ctx);
264
+ this.resetEnvVar(m365TitleIdKeyName, ctx);
265
+ }
266
+ if (botId && botOption) {
267
+ const res = await this.uninstallBotFrameworRegistration(botId);
268
+ if (res.isErr()) {
269
+ return teamsfx_api_1.err(res.error);
270
+ }
271
+ this.resetEnvVar(botIdKeyName, ctx);
272
+ }
273
+ // App registraion should be the last to remove, because we might need to query some metadata from TDP.
274
+ if (teamsAppId && tdpOption) {
275
+ const res = await this.uninstallAppRegistration(teamsAppId);
276
+ if (res.isErr()) {
277
+ return teamsfx_api_1.err(res.error);
278
+ }
279
+ this.resetEnvVar(teamsAppIdKeyName, ctx);
280
+ }
281
+ return teamsfx_api_1.ok(undefined);
282
+ }
283
+ resetEnvVar(key, ctx, skipIfNotExist = true, resetValue = "") {
284
+ if (!ctx) {
285
+ return;
286
+ }
287
+ if (!ctx.envVars) {
288
+ ctx.envVars = {};
289
+ }
290
+ if (skipIfNotExist && !ctx.envVars[key]) {
291
+ return;
292
+ }
293
+ ctx.envVars[key] = resetValue;
294
+ return;
295
+ }
296
+ /**
297
+ * uninstall provisioned resources by title ID. Titlle mode only uninstalls M365 app.
298
+ */
299
+ async uninstallByTitleId(inputs) {
300
+ const titleId = inputs[constants_3.QuestionNames.TitleId];
301
+ if (!titleId) {
302
+ return teamsfx_api_1.err(new common_2.MissingRequiredInputError("title-id", "FxCore"));
303
+ }
304
+ const res = await this.uninstallM365App(titleId);
305
+ if (res.isErr()) {
306
+ return teamsfx_api_1.err(res.error);
307
+ }
308
+ return teamsfx_api_1.ok(undefined);
309
+ }
310
+ /**
311
+ * uninstall sideloaded appps in M365
312
+ */
313
+ async uninstallM365App(titleId, manifestId) {
314
+ var _a, _b, _c, _d;
315
+ if (titleId === undefined && manifestId === undefined) {
316
+ return teamsfx_api_1.err(new common_2.MissingRequiredInputError("title id or manifest id", "FxCore"));
317
+ }
318
+ const sideloadingServiceEndpoint = (_a = process.env.SIDELOADING_SERVICE_ENDPOINT) !== null && _a !== void 0 ? _a : serviceConstant_1.MosServiceEndpoint;
319
+ const sideloadingServiceScope = (_b = process.env.SIDELOADING_SERVICE_SCOPE) !== null && _b !== void 0 ? _b : serviceConstant_1.MosServiceScope;
320
+ const sideloadingTokenRes = await globalVars_1.TOOLS.tokenProvider.m365TokenProvider.getAccessToken({
321
+ scopes: [sideloadingServiceScope],
322
+ });
323
+ if (sideloadingTokenRes.isErr()) {
324
+ return teamsfx_api_1.err(sideloadingTokenRes.error);
325
+ }
326
+ const packageService = new packageService_1.PackageService(sideloadingServiceEndpoint, globalVars_1.TOOLS.logProvider);
327
+ if (titleId === undefined) {
328
+ try {
329
+ titleId = await packageService.retrieveTitleId(sideloadingTokenRes.value, manifestId !== null && manifestId !== void 0 ? manifestId : "");
330
+ }
331
+ catch (err) {
332
+ await globalVars_1.TOOLS.ui.showMessage("info", localizeUtils_1.getLocalizedString("core.uninstall.failed.titleId"), false);
333
+ throw common_2.assembleError(err);
334
+ }
335
+ }
336
+ const confirmRes = await ((_d = (_c = globalVars_1.TOOLS.ui).confirm) === null || _d === void 0 ? void 0 : _d.call(_c, {
337
+ name: "uninstallM365App",
338
+ title: localizeUtils_1.getLocalizedString("core.uninstall.confirm.m365App", titleId),
339
+ default: true,
340
+ }));
341
+ if ((confirmRes === null || confirmRes === void 0 ? void 0 : confirmRes.isOk()) && confirmRes.value.result === true) {
342
+ await packageService.unacquire(sideloadingTokenRes.value, titleId);
343
+ await globalVars_1.TOOLS.ui.showMessage("info", localizeUtils_1.getLocalizedString("core.uninstall.success.m365App", titleId), false);
344
+ await globalVars_1.TOOLS.ui.showMessage("info", localizeUtils_1.getLocalizedString("core.uninstall.success.delayWarning"), false);
345
+ }
346
+ else {
347
+ await globalVars_1.TOOLS.ui.showMessage("info", localizeUtils_1.getLocalizedString("core.uninstall.confirm.cancel.m365App"), false);
348
+ return teamsfx_api_1.err(new common_2.UserCancelError("Uninstall M365 App"));
349
+ }
350
+ return teamsfx_api_1.ok(undefined);
351
+ }
352
+ /**
353
+ * uninstall sideloaded apps in Teams Developer Portal
354
+ */
355
+ async uninstallAppRegistration(manifestId) {
356
+ var _a, _b;
357
+ const appStudioTokenRes = await globalVars_1.TOOLS.tokenProvider.m365TokenProvider.getAccessToken({
358
+ scopes: constants_1.AppStudioScopes,
359
+ });
360
+ if (appStudioTokenRes.isErr()) {
361
+ return teamsfx_api_1.err(appStudioTokenRes.error);
362
+ }
363
+ const confirmRes = await ((_b = (_a = globalVars_1.TOOLS.ui).confirm) === null || _b === void 0 ? void 0 : _b.call(_a, {
364
+ name: "uninstallAppRegistration",
365
+ title: localizeUtils_1.getLocalizedString("core.uninstall.confirm.tdp", manifestId),
366
+ default: true,
367
+ }));
368
+ if ((confirmRes === null || confirmRes === void 0 ? void 0 : confirmRes.isOk()) && confirmRes.value.result === true) {
369
+ const token = appStudioTokenRes.value;
370
+ await teamsDevPortalClient_1.teamsDevPortalClient.deleteApp(token, manifestId);
371
+ await globalVars_1.TOOLS.ui.showMessage("info", localizeUtils_1.getLocalizedString("core.uninstall.success.tdp", manifestId), false);
372
+ return teamsfx_api_1.ok(undefined);
373
+ }
374
+ else {
375
+ await globalVars_1.TOOLS.ui.showMessage("info", localizeUtils_1.getLocalizedString("core.uninstall.confirm.cancel.tdp"), false);
376
+ return teamsfx_api_1.err(new common_2.UserCancelError("Uninstall App Registration"));
377
+ }
378
+ }
379
+ /**
380
+ * uninstall bots created in dev.botframework.com
381
+ */
382
+ async uninstallBotFrameworRegistration(botId, manifestId) {
383
+ var _a, _b;
384
+ if (!botId && !manifestId) {
385
+ return teamsfx_api_1.err(new common_2.MissingRequiredInputError("bot id or manifest id", "FxCore"));
386
+ }
387
+ const appStudioTokenRes = await globalVars_1.TOOLS.tokenProvider.m365TokenProvider.getAccessToken({
388
+ scopes: constants_1.AppStudioScopes,
389
+ });
390
+ if (appStudioTokenRes.isErr()) {
391
+ return teamsfx_api_1.err(appStudioTokenRes.error);
392
+ }
393
+ const token = appStudioTokenRes.value;
394
+ if (!botId) {
395
+ const botIdRes = await teamsDevPortalClient_1.teamsDevPortalClient.getBotId(token, manifestId);
396
+ if (!botIdRes) {
397
+ const msg = localizeUtils_1.getLocalizedString("core.uninstall.botNotFound", manifestId);
398
+ return teamsfx_api_1.err(new teamsfx_api_1.UserError("FxCore", "Uninstall", msg, msg));
399
+ }
400
+ botId = botIdRes;
401
+ }
402
+ const confirmRes = await ((_b = (_a = globalVars_1.TOOLS.ui).confirm) === null || _b === void 0 ? void 0 : _b.call(_a, {
403
+ name: "uninstallBotFrameworRegistration",
404
+ title: localizeUtils_1.getLocalizedString("core.uninstall.confirm.bot", botId),
405
+ default: true,
406
+ }));
407
+ if ((confirmRes === null || confirmRes === void 0 ? void 0 : confirmRes.isOk()) && confirmRes.value.result === true) {
408
+ await teamsDevPortalClient_1.teamsDevPortalClient.deleteBot(token, botId);
409
+ await globalVars_1.TOOLS.ui.showMessage("info", localizeUtils_1.getLocalizedString("core.uninstall.success.bot", botId), false);
410
+ }
411
+ else {
412
+ await globalVars_1.TOOLS.ui.showMessage("info", localizeUtils_1.getLocalizedString("core.uninstall.confirm.cancel.bot"), false);
413
+ return teamsfx_api_1.err(new common_2.UserCancelError("Uninstall Bot Framework Registration"));
414
+ }
415
+ return teamsfx_api_1.ok(undefined);
416
+ }
168
417
  /**
169
418
  * lifecycle commands: deploy
170
419
  */
@@ -445,7 +694,8 @@ class FxCore {
445
694
  inputs.stage = teamsfx_api_1.Stage.previewWithManifest;
446
695
  const hub = inputs[constants_3.QuestionNames.M365Host];
447
696
  const manifestFilePath = inputs[constants_3.QuestionNames.TeamsAppManifestFilePath];
448
- const manifestRes = await ManifestUtils_1.manifestUtils.getManifestV3(manifestFilePath, undefined, false);
697
+ const context = globalVars_1.createContext();
698
+ const manifestRes = await ManifestUtils_1.manifestUtils.getManifestV3(manifestFilePath, utils_3.generateDriverContext(context, inputs), false);
449
699
  if (manifestRes.isErr()) {
450
700
  return teamsfx_api_1.err(manifestRes.error);
451
701
  }
@@ -693,11 +943,11 @@ class FxCore {
693
943
  else if (version.source === versionMetadata_1.VersionSource.projectSettings) {
694
944
  const isValid = await projectMigratorV3_1.checkActiveResourcePlugins(projectPath);
695
945
  if (!isValid) {
696
- return teamsfx_api_1.err(new common_2.InvalidProjectError());
946
+ return teamsfx_api_1.err(new common_2.InvalidProjectError(projectPath));
697
947
  }
698
948
  }
699
949
  if (version.source === versionMetadata_1.VersionSource.unknown) {
700
- return teamsfx_api_1.err(new common_2.InvalidProjectError());
950
+ return teamsfx_api_1.err(new common_2.InvalidProjectError(projectPath));
701
951
  }
702
952
  return this.innerMigrationV3(inputs);
703
953
  }
@@ -710,14 +960,14 @@ class FxCore {
710
960
  if (projectSettingsHelper_1.isValidProjectV3(projectPath) || projectSettingsHelper_1.isValidProjectV2(projectPath)) {
711
961
  const versionInfo = await v3MigrationUtils_1.getProjectVersionFromPath(projectPath);
712
962
  if (!versionInfo.version) {
713
- return teamsfx_api_1.err(new common_2.InvalidProjectError());
963
+ return teamsfx_api_1.err(new common_2.InvalidProjectError(projectPath));
714
964
  }
715
965
  const trackingId = await v3MigrationUtils_1.getTrackingIdFromPath(projectPath);
716
966
  const isSupport = v3MigrationUtils_1.getVersionState(versionInfo);
717
967
  // if the project is upgradeable, check whether the project is valid and invalid project should not show upgrade option.
718
968
  if (isSupport === versionMetadata_1.VersionState.upgradeable) {
719
969
  if (!(await projectMigratorV3_1.checkActiveResourcePlugins(projectPath))) {
720
- return teamsfx_api_1.err(new common_2.InvalidProjectError());
970
+ return teamsfx_api_1.err(new common_2.InvalidProjectError(projectPath));
721
971
  }
722
972
  }
723
973
  return teamsfx_api_1.ok({
@@ -728,7 +978,7 @@ class FxCore {
728
978
  });
729
979
  }
730
980
  else {
731
- return teamsfx_api_1.err(new common_2.InvalidProjectError());
981
+ return teamsfx_api_1.err(new common_2.InvalidProjectError(projectPath));
732
982
  }
733
983
  }
734
984
  // apply the given yaml template to current project.
@@ -822,7 +1072,7 @@ class FxCore {
822
1072
  const newOperations = inputs[constants_3.QuestionNames.ApiOperation];
823
1073
  const url = inputs[constants_3.QuestionNames.ApiSpecLocation];
824
1074
  const manifestPath = inputs[constants_3.QuestionNames.ManifestPath];
825
- const isPlugin = inputs[constants_3.QuestionNames.Capabilities] === constants_3.copilotPluginApiSpecOptionId;
1075
+ const isPlugin = inputs[constants_3.QuestionNames.ApiPluginType] === constants_3.apiPluginApiSpecOptionId;
826
1076
  const context = globalVars_1.createContext();
827
1077
  // Get API spec file path from manifest
828
1078
  const manifestRes = await ManifestUtils_1.manifestUtils._readAppManifest(manifestPath);
@@ -904,6 +1154,7 @@ class FxCore {
904
1154
  }
905
1155
  }
906
1156
  let generateResult;
1157
+ let pluginPath;
907
1158
  if (!isPlugin) {
908
1159
  generateResult = await specParser.generate(manifestPath, operations, outputApiSpecPath, adaptiveCardFolder);
909
1160
  }
@@ -912,6 +1163,7 @@ class FxCore {
912
1163
  if (pluginPathRes.isErr()) {
913
1164
  return teamsfx_api_1.err(pluginPathRes.error);
914
1165
  }
1166
+ pluginPath = pluginPathRes.value;
915
1167
  generateResult = await specParser.generateForCopilot(manifestPath, operations, outputApiSpecPath, pluginPathRes.value);
916
1168
  }
917
1169
  // Send SpecParser.generate() warnings
@@ -923,7 +1175,7 @@ class FxCore {
923
1175
  [telemetry_1.TelemetryProperty.Component]: telemetry_2.CoreTelemetryComponentName,
924
1176
  });
925
1177
  if (generateResult.warnings && generateResult.warnings.length > 0) {
926
- const warnSummary = helper_1.generateScaffoldingSummary(generateResult.warnings, manifestRes.value, path.relative(inputs.projectPath, outputApiSpecPath));
1178
+ const warnSummary = await helper_1.generateScaffoldingSummary(generateResult.warnings, manifestRes.value, path.relative(inputs.projectPath, outputApiSpecPath), pluginPath === undefined ? undefined : path.relative(inputs.projectPath, pluginPath), inputs.projectPath);
927
1179
  if (warnSummary) {
928
1180
  context.logProvider.info(warnSummary);
929
1181
  }
@@ -1068,8 +1320,8 @@ class FxCore {
1068
1320
  [telemetry_1.TelemetryProperty.Component]: telemetry_2.CoreTelemetryComponentName,
1069
1321
  });
1070
1322
  if (generateResult.warnings && generateResult.warnings.length > 0) {
1071
- const warnSummary = helper_1.generateScaffoldingSummary(generateResult.warnings, manifestRes.value, path.relative(inputs.projectPath, openApiSpecFilePath));
1072
- context.logProvider.info(warnSummary);
1323
+ const warnSummary = await helper_1.generateScaffoldingSummary(generateResult.warnings, manifestRes.value, path.relative(inputs.projectPath, openApiSpecFilePath), path.relative(inputs.projectPath, pluginManifestFilePath), inputs.projectPath);
1324
+ context.logProvider.info(warnSummary + "\n");
1073
1325
  }
1074
1326
  }
1075
1327
  catch (e) {
@@ -1171,6 +1423,75 @@ tslib_1.__decorate([
1171
1423
  tslib_1.__metadata("design:paramtypes", [Object, Object]),
1172
1424
  tslib_1.__metadata("design:returntype", Promise)
1173
1425
  ], FxCore.prototype, "provisionResources", null);
1426
+ tslib_1.__decorate([
1427
+ hooks_1.hooks([
1428
+ globalVars_1.ErrorContextMW({ component: "FxCore", stage: "uninstall", reset: true }),
1429
+ errorHandler_1.ErrorHandlerMW,
1430
+ projectMigratorV3_1.ProjectMigratorMWV3,
1431
+ questionMW_1.QuestionMW("uninstall"),
1432
+ ]),
1433
+ tslib_1.__metadata("design:type", Function),
1434
+ tslib_1.__metadata("design:paramtypes", [Object]),
1435
+ tslib_1.__metadata("design:returntype", Promise)
1436
+ ], FxCore.prototype, "uninstall", null);
1437
+ tslib_1.__decorate([
1438
+ hooks_1.hooks([
1439
+ globalVars_1.ErrorContextMW({ component: "FxCore", stage: "uninstallByManifestId", reset: true }),
1440
+ errorHandler_1.ErrorHandlerMW,
1441
+ ]),
1442
+ tslib_1.__metadata("design:type", Function),
1443
+ tslib_1.__metadata("design:paramtypes", [Object]),
1444
+ tslib_1.__metadata("design:returntype", Promise)
1445
+ ], FxCore.prototype, "uninstallByManifestId", null);
1446
+ tslib_1.__decorate([
1447
+ hooks_1.hooks([
1448
+ globalVars_1.ErrorContextMW({ component: "FxCore", stage: "uninstallByEnv", reset: true }),
1449
+ errorHandler_1.ErrorHandlerMW,
1450
+ envMW_1.EnvLoaderMW(true, true),
1451
+ concurrentLocker_1.ConcurrentLockerMW,
1452
+ contextInjector_1.ContextInjectorMW,
1453
+ envMW_1.EnvWriterMW,
1454
+ ]),
1455
+ tslib_1.__metadata("design:type", Function),
1456
+ tslib_1.__metadata("design:paramtypes", [Object, Object]),
1457
+ tslib_1.__metadata("design:returntype", Promise)
1458
+ ], FxCore.prototype, "uninstallByEnv", null);
1459
+ tslib_1.__decorate([
1460
+ hooks_1.hooks([
1461
+ globalVars_1.ErrorContextMW({ component: "FxCore", stage: "uninstallByTitleId", reset: true }),
1462
+ errorHandler_1.ErrorHandlerMW,
1463
+ ]),
1464
+ tslib_1.__metadata("design:type", Function),
1465
+ tslib_1.__metadata("design:paramtypes", [Object]),
1466
+ tslib_1.__metadata("design:returntype", Promise)
1467
+ ], FxCore.prototype, "uninstallByTitleId", null);
1468
+ tslib_1.__decorate([
1469
+ hooks_1.hooks([
1470
+ globalVars_1.ErrorContextMW({ component: "FxCore", stage: "uninstallM365App", reset: true }),
1471
+ errorHandler_1.ErrorHandlerMW,
1472
+ ]),
1473
+ tslib_1.__metadata("design:type", Function),
1474
+ tslib_1.__metadata("design:paramtypes", [String, String]),
1475
+ tslib_1.__metadata("design:returntype", Promise)
1476
+ ], FxCore.prototype, "uninstallM365App", null);
1477
+ tslib_1.__decorate([
1478
+ hooks_1.hooks([
1479
+ globalVars_1.ErrorContextMW({ component: "FxCore", stage: "uninstallAppRegistration", reset: true }),
1480
+ errorHandler_1.ErrorHandlerMW,
1481
+ ]),
1482
+ tslib_1.__metadata("design:type", Function),
1483
+ tslib_1.__metadata("design:paramtypes", [String]),
1484
+ tslib_1.__metadata("design:returntype", Promise)
1485
+ ], FxCore.prototype, "uninstallAppRegistration", null);
1486
+ tslib_1.__decorate([
1487
+ hooks_1.hooks([
1488
+ globalVars_1.ErrorContextMW({ component: "FxCore", stage: "uninstallBotFrameworRegistration", reset: true }),
1489
+ errorHandler_1.ErrorHandlerMW,
1490
+ ]),
1491
+ tslib_1.__metadata("design:type", Function),
1492
+ tslib_1.__metadata("design:paramtypes", [String, String]),
1493
+ tslib_1.__metadata("design:returntype", Promise)
1494
+ ], FxCore.prototype, "uninstallBotFrameworRegistration", null);
1174
1495
  tslib_1.__decorate([
1175
1496
  hooks_1.hooks([
1176
1497
  globalVars_1.ErrorContextMW({ component: "FxCore", stage: "deploy", reset: true }),
@@ -1585,7 +1906,7 @@ tslib_1.__decorate([
1585
1906
  ], FxCore.prototype, "checkProjectType", null);
1586
1907
  tslib_1.__decorate([
1587
1908
  hooks_1.hooks([
1588
- globalVars_1.ErrorContextMW({ component: "FxCore", stage: "addPlugin" }),
1909
+ globalVars_1.ErrorContextMW({ component: "FxCore", stage: teamsfx_api_1.Stage.addPlugin }),
1589
1910
  errorHandler_1.ErrorHandlerMW,
1590
1911
  questionMW_1.QuestionMW("addPlugin"),
1591
1912
  concurrentLocker_1.ConcurrentLockerMW,