@microsoft/teamsfx-core 2.0.8-alpha.e17ffd4d1.0 → 2.0.8-alpha.e1b11d5b2.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 (390) hide show
  1. package/build/common/constants.d.ts +6 -19
  2. package/build/common/constants.d.ts.map +1 -1
  3. package/build/common/constants.js +6 -20
  4. package/build/common/constants.js.map +1 -1
  5. package/build/common/deps-checker/constant/message.d.ts +1 -1
  6. package/build/common/deps-checker/constant/message.d.ts.map +1 -1
  7. package/build/common/deps-checker/constant/message.js +1 -1
  8. package/build/common/deps-checker/constant/message.js.map +1 -1
  9. package/build/common/deps-checker/util/fileHelper.js +1 -1
  10. package/build/common/deps-checker/util/fileHelper.js.map +1 -1
  11. package/build/common/featureFlags.d.ts +70 -7
  12. package/build/common/featureFlags.d.ts.map +1 -1
  13. package/build/common/featureFlags.js +66 -42
  14. package/build/common/featureFlags.js.map +1 -1
  15. package/build/common/m365/launchHelper.d.ts +1 -1
  16. package/build/common/m365/launchHelper.d.ts.map +1 -1
  17. package/build/common/m365/launchHelper.js +3 -6
  18. package/build/common/m365/launchHelper.js.map +1 -1
  19. package/build/common/m365/packageService.d.ts +1 -1
  20. package/build/common/m365/packageService.d.ts.map +1 -1
  21. package/build/common/m365/packageService.js +18 -39
  22. package/build/common/m365/packageService.js.map +1 -1
  23. package/build/common/projectSettingsHelper.d.ts +7 -2
  24. package/build/common/projectSettingsHelper.d.ts.map +1 -1
  25. package/build/common/projectSettingsHelper.js +25 -7
  26. package/build/common/projectSettingsHelper.js.map +1 -1
  27. package/build/common/projectTypeChecker.d.ts +2 -0
  28. package/build/common/projectTypeChecker.d.ts.map +1 -1
  29. package/build/common/projectTypeChecker.js +16 -0
  30. package/build/common/projectTypeChecker.js.map +1 -1
  31. package/build/common/samples.d.ts +1 -2
  32. package/build/common/samples.d.ts.map +1 -1
  33. package/build/common/samples.js +37 -83
  34. package/build/common/samples.js.map +1 -1
  35. package/build/common/stringUtils.d.ts +10 -0
  36. package/build/common/stringUtils.d.ts.map +1 -0
  37. package/build/common/stringUtils.js +121 -0
  38. package/build/common/stringUtils.js.map +1 -0
  39. package/build/common/telemetry.d.ts +20 -2
  40. package/build/common/telemetry.d.ts.map +1 -1
  41. package/build/common/telemetry.js +43 -6
  42. package/build/common/telemetry.js.map +1 -1
  43. package/build/common/templates-config.json +1 -1
  44. package/build/common/wrappedAxiosClient.d.ts.map +1 -1
  45. package/build/common/wrappedAxiosClient.js +7 -5
  46. package/build/common/wrappedAxiosClient.js.map +1 -1
  47. package/build/component/configManager/constant.d.ts +2 -1
  48. package/build/component/configManager/constant.d.ts.map +1 -1
  49. package/build/component/configManager/constant.js +1 -0
  50. package/build/component/configManager/constant.js.map +1 -1
  51. package/build/component/configManager/validator.js +1 -1
  52. package/build/component/configManager/validator.js.map +1 -1
  53. package/build/component/constants.js +2 -2
  54. package/build/component/constants.js.map +1 -1
  55. package/build/component/coordinator/index.d.ts +0 -38
  56. package/build/component/coordinator/index.d.ts.map +1 -1
  57. package/build/component/coordinator/index.js +133 -199
  58. package/build/component/coordinator/index.js.map +1 -1
  59. package/build/component/driver/aad/create.d.ts +1 -0
  60. package/build/component/driver/aad/create.d.ts.map +1 -1
  61. package/build/component/driver/aad/create.js +22 -11
  62. package/build/component/driver/aad/create.js.map +1 -1
  63. package/build/component/driver/aad/error/aadManifestError.d.ts +6 -0
  64. package/build/component/driver/aad/error/aadManifestError.d.ts.map +1 -1
  65. package/build/component/driver/aad/error/aadManifestError.js +25 -1
  66. package/build/component/driver/aad/error/aadManifestError.js.map +1 -1
  67. package/build/component/driver/aad/error/clientSecretNotAllowedError.d.ts +5 -0
  68. package/build/component/driver/aad/error/clientSecretNotAllowedError.d.ts.map +1 -0
  69. package/build/component/driver/aad/error/clientSecretNotAllowedError.js +23 -0
  70. package/build/component/driver/aad/error/clientSecretNotAllowedError.js.map +1 -0
  71. package/build/component/driver/aad/error/credentialInvalidLifetimeError.d.ts +5 -0
  72. package/build/component/driver/aad/error/credentialInvalidLifetimeError.d.ts.map +1 -0
  73. package/build/component/driver/aad/error/credentialInvalidLifetimeError.js +23 -0
  74. package/build/component/driver/aad/error/credentialInvalidLifetimeError.js.map +1 -0
  75. package/build/component/driver/aad/interface/IAADDefinition.d.ts +1 -0
  76. package/build/component/driver/aad/interface/IAADDefinition.d.ts.map +1 -1
  77. package/build/component/driver/aad/interface/createAadAppArgs.d.ts +3 -0
  78. package/build/component/driver/aad/interface/createAadAppArgs.d.ts.map +1 -1
  79. package/build/component/driver/aad/permissions/index.d.ts.map +1 -1
  80. package/build/component/driver/aad/permissions/index.js +9 -0
  81. package/build/component/driver/aad/permissions/index.js.map +1 -1
  82. package/build/component/driver/aad/utility/aadAppClient.d.ts +3 -2
  83. package/build/component/driver/aad/utility/aadAppClient.d.ts.map +1 -1
  84. package/build/component/driver/aad/utility/aadAppClient.js +35 -17
  85. package/build/component/driver/aad/utility/aadAppClient.js.map +1 -1
  86. package/build/component/driver/aad/utility/aadManifestHelper.d.ts.map +1 -1
  87. package/build/component/driver/aad/utility/aadManifestHelper.js +9 -1
  88. package/build/component/driver/aad/utility/aadManifestHelper.js.map +1 -1
  89. package/build/component/driver/aad/utility/constants.d.ts +6 -0
  90. package/build/component/driver/aad/utility/constants.d.ts.map +1 -1
  91. package/build/component/driver/aad/utility/constants.js +8 -2
  92. package/build/component/driver/aad/utility/constants.js.map +1 -1
  93. package/build/component/driver/apiKey/create.d.ts +0 -3
  94. package/build/component/driver/apiKey/create.d.ts.map +1 -1
  95. package/build/component/driver/apiKey/create.js +23 -48
  96. package/build/component/driver/apiKey/create.js.map +1 -1
  97. package/build/component/driver/apiKey/interface/createApiKeyArgs.d.ts +2 -0
  98. package/build/component/driver/apiKey/interface/createApiKeyArgs.d.ts.map +1 -1
  99. package/build/component/driver/apiKey/interface/updateApiKeyArgs.d.ts +9 -0
  100. package/build/component/driver/apiKey/interface/updateApiKeyArgs.d.ts.map +1 -0
  101. package/build/component/driver/apiKey/interface/updateApiKeyArgs.js +5 -0
  102. package/build/component/driver/apiKey/interface/updateApiKeyArgs.js.map +1 -0
  103. package/build/component/driver/apiKey/update.d.ts +13 -0
  104. package/build/component/driver/apiKey/update.d.ts.map +1 -0
  105. package/build/component/driver/apiKey/update.js +182 -0
  106. package/build/component/driver/apiKey/update.js.map +1 -0
  107. package/build/component/driver/apiKey/utility/constants.d.ts +2 -0
  108. package/build/component/driver/apiKey/utility/constants.d.ts.map +1 -1
  109. package/build/component/driver/apiKey/utility/constants.js +2 -0
  110. package/build/component/driver/apiKey/utility/constants.js.map +1 -1
  111. package/build/component/driver/apiKey/utility/utility.d.ts +7 -0
  112. package/build/component/driver/apiKey/utility/utility.d.ts.map +1 -0
  113. package/build/component/driver/apiKey/utility/utility.js +55 -0
  114. package/build/component/driver/apiKey/utility/utility.js.map +1 -0
  115. package/build/component/driver/deploy/spfx/utility/spoClient.d.ts.map +1 -1
  116. package/build/component/driver/deploy/spfx/utility/spoClient.js +3 -1
  117. package/build/component/driver/deploy/spfx/utility/spoClient.js.map +1 -1
  118. package/build/component/driver/index.d.ts +3 -0
  119. package/build/component/driver/index.d.ts.map +1 -1
  120. package/build/component/driver/index.js +3 -0
  121. package/build/component/driver/index.js.map +1 -1
  122. package/build/component/driver/middleware/addSWADeployTelemetry.js +2 -2
  123. package/build/component/driver/middleware/addSWADeployTelemetry.js.map +1 -1
  124. package/build/component/driver/oauth/create.d.ts +12 -0
  125. package/build/component/driver/oauth/create.d.ts.map +1 -0
  126. package/build/component/driver/oauth/create.js +193 -0
  127. package/build/component/driver/oauth/create.js.map +1 -0
  128. package/build/component/driver/oauth/error/oauthAuthInfoInvalid.d.ts +5 -0
  129. package/build/component/driver/oauth/error/oauthAuthInfoInvalid.d.ts.map +1 -0
  130. package/build/component/driver/oauth/error/oauthAuthInfoInvalid.js +21 -0
  131. package/build/component/driver/oauth/error/oauthAuthInfoInvalid.js.map +1 -0
  132. package/build/component/driver/oauth/error/oauthDomainInvalid.d.ts +5 -0
  133. package/build/component/driver/oauth/error/oauthDomainInvalid.d.ts.map +1 -0
  134. package/build/component/driver/oauth/error/oauthDomainInvalid.js +22 -0
  135. package/build/component/driver/oauth/error/oauthDomainInvalid.js.map +1 -0
  136. package/build/component/driver/oauth/error/oauthFailedToGetDomain.d.ts +5 -0
  137. package/build/component/driver/oauth/error/oauthFailedToGetDomain.d.ts.map +1 -0
  138. package/build/component/driver/oauth/error/oauthFailedToGetDomain.js +21 -0
  139. package/build/component/driver/oauth/error/oauthFailedToGetDomain.js.map +1 -0
  140. package/build/component/driver/oauth/error/oauthNameTooLong.d.ts +5 -0
  141. package/build/component/driver/oauth/error/oauthNameTooLong.d.ts.map +1 -0
  142. package/build/component/driver/oauth/error/oauthNameTooLong.js +21 -0
  143. package/build/component/driver/oauth/error/oauthNameTooLong.js.map +1 -0
  144. package/build/component/driver/oauth/interface/createOauthArgs.d.ts +12 -0
  145. package/build/component/driver/oauth/interface/createOauthArgs.d.ts.map +1 -0
  146. package/build/component/driver/oauth/interface/createOauthArgs.js +5 -0
  147. package/build/component/driver/oauth/interface/createOauthArgs.js.map +1 -0
  148. package/build/component/driver/oauth/interface/createOauthOutputs.d.ts +7 -0
  149. package/build/component/driver/oauth/interface/createOauthOutputs.d.ts.map +1 -0
  150. package/build/component/driver/oauth/interface/createOauthOutputs.js +10 -0
  151. package/build/component/driver/oauth/interface/createOauthOutputs.js.map +1 -0
  152. package/build/component/driver/oauth/interface/updateOauthArgs.d.ts +9 -0
  153. package/build/component/driver/oauth/interface/updateOauthArgs.d.ts.map +1 -0
  154. package/build/component/driver/oauth/interface/updateOauthArgs.js +5 -0
  155. package/build/component/driver/oauth/interface/updateOauthArgs.js.map +1 -0
  156. package/build/component/driver/oauth/update.d.ts +13 -0
  157. package/build/component/driver/oauth/update.d.ts.map +1 -0
  158. package/build/component/driver/oauth/update.js +181 -0
  159. package/build/component/driver/oauth/update.js.map +1 -0
  160. package/build/component/driver/oauth/utility/constants.d.ts +13 -0
  161. package/build/component/driver/oauth/utility/constants.d.ts.map +1 -0
  162. package/build/component/driver/oauth/utility/constants.js +18 -0
  163. package/build/component/driver/oauth/utility/constants.js.map +1 -0
  164. package/build/component/driver/oauth/utility/utility.d.ts +12 -0
  165. package/build/component/driver/oauth/utility/utility.d.ts.map +1 -0
  166. package/build/component/driver/oauth/utility/utility.js +90 -0
  167. package/build/component/driver/oauth/utility/utility.js.map +1 -0
  168. package/build/component/driver/script/scriptDriver.d.ts.map +1 -1
  169. package/build/component/driver/script/scriptDriver.js +8 -8
  170. package/build/component/driver/script/scriptDriver.js.map +1 -1
  171. package/build/component/driver/teamsApp/clients/appStudioClient.d.ts +11 -3
  172. package/build/component/driver/teamsApp/clients/appStudioClient.d.ts.map +1 -1
  173. package/build/component/driver/teamsApp/clients/appStudioClient.js +54 -2
  174. package/build/component/driver/teamsApp/clients/appStudioClient.js.map +1 -1
  175. package/build/component/driver/teamsApp/constants.d.ts +4 -0
  176. package/build/component/driver/teamsApp/constants.d.ts.map +1 -1
  177. package/build/component/driver/teamsApp/constants.js +4 -0
  178. package/build/component/driver/teamsApp/constants.js.map +1 -1
  179. package/build/component/driver/teamsApp/createAppPackage.d.ts +19 -1
  180. package/build/component/driver/teamsApp/createAppPackage.d.ts.map +1 -1
  181. package/build/component/driver/teamsApp/createAppPackage.js +97 -26
  182. package/build/component/driver/teamsApp/createAppPackage.js.map +1 -1
  183. package/build/component/driver/teamsApp/interfaces/ApiSecretRegistration.d.ts +20 -0
  184. package/build/component/driver/teamsApp/interfaces/ApiSecretRegistration.d.ts.map +1 -1
  185. package/build/component/driver/teamsApp/interfaces/ApiSecretRegistration.js.map +1 -1
  186. package/build/component/driver/teamsApp/interfaces/OauthConfigurationId.d.ts +7 -0
  187. package/build/component/driver/teamsApp/interfaces/OauthConfigurationId.d.ts.map +1 -0
  188. package/build/component/driver/teamsApp/interfaces/OauthConfigurationId.js +5 -0
  189. package/build/component/driver/teamsApp/interfaces/OauthConfigurationId.js.map +1 -0
  190. package/build/component/driver/teamsApp/interfaces/OauthRegistration.d.ts +44 -0
  191. package/build/component/driver/teamsApp/interfaces/OauthRegistration.d.ts.map +1 -0
  192. package/build/component/driver/teamsApp/interfaces/OauthRegistration.js +21 -0
  193. package/build/component/driver/teamsApp/interfaces/OauthRegistration.js.map +1 -0
  194. package/build/component/driver/teamsApp/teamsappMgr.d.ts.map +1 -1
  195. package/build/component/driver/teamsApp/teamsappMgr.js +22 -8
  196. package/build/component/driver/teamsApp/teamsappMgr.js.map +1 -1
  197. package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.d.ts +8 -0
  198. package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.d.ts.map +1 -0
  199. package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.js +65 -0
  200. package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.js.map +1 -0
  201. package/build/component/driver/teamsApp/utils/ManifestUtils.d.ts.map +1 -1
  202. package/build/component/driver/teamsApp/utils/ManifestUtils.js +3 -15
  203. package/build/component/driver/teamsApp/utils/ManifestUtils.js.map +1 -1
  204. package/build/component/driver/teamsApp/utils/telemetry.d.ts +2 -0
  205. package/build/component/driver/teamsApp/utils/telemetry.d.ts.map +1 -1
  206. package/build/component/driver/teamsApp/utils/telemetry.js +2 -0
  207. package/build/component/driver/teamsApp/utils/telemetry.js.map +1 -1
  208. package/build/component/driver/teamsApp/utils/utils.d.ts +1 -0
  209. package/build/component/driver/teamsApp/utils/utils.d.ts.map +1 -1
  210. package/build/component/driver/teamsApp/utils/utils.js +5 -1
  211. package/build/component/driver/teamsApp/utils/utils.js.map +1 -1
  212. package/build/component/driver/teamsApp/validateTestCases.d.ts +18 -0
  213. package/build/component/driver/teamsApp/validateTestCases.d.ts.map +1 -1
  214. package/build/component/driver/teamsApp/validateTestCases.js +132 -50
  215. package/build/component/driver/teamsApp/validateTestCases.js.map +1 -1
  216. package/build/component/generator/copilotPlugin/generator.d.ts.map +1 -1
  217. package/build/component/generator/copilotPlugin/generator.js +20 -26
  218. package/build/component/generator/copilotPlugin/generator.js.map +1 -1
  219. package/build/component/generator/copilotPlugin/helper.d.ts +7 -2
  220. package/build/component/generator/copilotPlugin/helper.d.ts.map +1 -1
  221. package/build/component/generator/copilotPlugin/helper.js +156 -51
  222. package/build/component/generator/copilotPlugin/helper.js.map +1 -1
  223. package/build/component/generator/generator.d.ts +4 -2
  224. package/build/component/generator/generator.d.ts.map +1 -1
  225. package/build/component/generator/generator.js +11 -7
  226. package/build/component/generator/generator.js.map +1 -1
  227. package/build/component/generator/generatorProvider.d.ts +3 -0
  228. package/build/component/generator/generatorProvider.d.ts.map +1 -0
  229. package/build/component/generator/generatorProvider.js +18 -0
  230. package/build/component/generator/generatorProvider.js.map +1 -0
  231. package/build/component/generator/officeAddin/generator.d.ts +16 -2
  232. package/build/component/generator/officeAddin/generator.d.ts.map +1 -1
  233. package/build/component/generator/officeAddin/generator.js +96 -44
  234. package/build/component/generator/officeAddin/generator.js.map +1 -1
  235. package/build/component/generator/officeAddin/helperMethods.d.ts +0 -3
  236. package/build/component/generator/officeAddin/helperMethods.d.ts.map +1 -1
  237. package/build/component/generator/officeAddin/helperMethods.js +1 -67
  238. package/build/component/generator/officeAddin/helperMethods.js.map +1 -1
  239. package/build/component/generator/officeXMLAddin/generator.d.ts +6 -2
  240. package/build/component/generator/officeXMLAddin/generator.d.ts.map +1 -1
  241. package/build/component/generator/officeXMLAddin/generator.js +39 -19
  242. package/build/component/generator/officeXMLAddin/generator.js.map +1 -1
  243. package/build/component/generator/officeXMLAddin/projectConfig.d.ts +21 -33
  244. package/build/component/generator/officeXMLAddin/projectConfig.d.ts.map +1 -1
  245. package/build/component/generator/officeXMLAddin/projectConfig.js +85 -86
  246. package/build/component/generator/officeXMLAddin/projectConfig.js.map +1 -1
  247. package/build/component/generator/spfx/spfxGenerator.d.ts +18 -5
  248. package/build/component/generator/spfx/spfxGenerator.d.ts.map +1 -1
  249. package/build/component/generator/spfx/spfxGenerator.js +123 -20
  250. package/build/component/generator/spfx/spfxGenerator.js.map +1 -1
  251. package/build/component/generator/templates/ssrTabGenerator.d.ts +12 -0
  252. package/build/component/generator/templates/ssrTabGenerator.d.ts.map +1 -0
  253. package/build/component/generator/templates/ssrTabGenerator.js +36 -0
  254. package/build/component/generator/templates/ssrTabGenerator.js.map +1 -0
  255. package/build/component/generator/templates/templateGenerator.d.ts +12 -0
  256. package/build/component/generator/templates/templateGenerator.d.ts.map +1 -0
  257. package/build/component/generator/templates/templateGenerator.js +99 -0
  258. package/build/component/generator/templates/templateGenerator.js.map +1 -0
  259. package/build/component/generator/templates/templateInfo.d.ts +10 -0
  260. package/build/component/generator/templates/templateInfo.d.ts.map +1 -0
  261. package/build/component/generator/templates/templateInfo.js +3 -0
  262. package/build/component/generator/templates/templateInfo.js.map +1 -0
  263. package/build/component/generator/templates/templateNames.d.ts +52 -0
  264. package/build/component/generator/templates/templateNames.d.ts.map +1 -0
  265. package/build/component/generator/templates/templateNames.js +304 -0
  266. package/build/component/generator/templates/templateNames.js.map +1 -0
  267. package/build/component/generator/templates/templateReplaceMap.d.ts +5 -0
  268. package/build/component/generator/templates/templateReplaceMap.d.ts.map +1 -0
  269. package/build/component/generator/templates/templateReplaceMap.js +39 -0
  270. package/build/component/generator/templates/templateReplaceMap.js.map +1 -0
  271. package/build/component/generator/utils.d.ts +1 -0
  272. package/build/component/generator/utils.d.ts.map +1 -1
  273. package/build/component/generator/utils.js +2 -1
  274. package/build/component/generator/utils.js.map +1 -1
  275. package/build/component/middleware/actionExecutionMW.d.ts.map +1 -1
  276. package/build/component/middleware/actionExecutionMW.js +5 -4
  277. package/build/component/middleware/actionExecutionMW.js.map +1 -1
  278. package/build/component/middleware/questionMW.d.ts.map +1 -1
  279. package/build/component/middleware/questionMW.js +9 -1
  280. package/build/component/middleware/questionMW.js.map +1 -1
  281. package/build/component/utils/envUtil.d.ts +0 -1
  282. package/build/component/utils/envUtil.d.ts.map +1 -1
  283. package/build/component/utils/envUtil.js +1 -13
  284. package/build/component/utils/envUtil.js.map +1 -1
  285. package/build/component/utils/metadataGraphPermssion.d.ts +8 -6
  286. package/build/component/utils/metadataGraphPermssion.d.ts.map +1 -1
  287. package/build/component/utils/metadataGraphPermssion.js +10 -2
  288. package/build/component/utils/metadataGraphPermssion.js.map +1 -1
  289. package/build/component/utils/metadataRscPermission.d.ts +17 -0
  290. package/build/component/utils/metadataRscPermission.d.ts.map +1 -0
  291. package/build/component/utils/metadataRscPermission.js +81 -0
  292. package/build/component/utils/metadataRscPermission.js.map +1 -0
  293. package/build/component/utils/metadataUtil.d.ts.map +1 -1
  294. package/build/component/utils/metadataUtil.js +2 -0
  295. package/build/component/utils/metadataUtil.js.map +1 -1
  296. package/build/component/utils.d.ts +2 -1
  297. package/build/component/utils.d.ts.map +1 -1
  298. package/build/component/utils.js +43 -1
  299. package/build/component/utils.js.map +1 -1
  300. package/build/core/FxCore.d.ts +10 -5
  301. package/build/core/FxCore.d.ts.map +1 -1
  302. package/build/core/FxCore.js +287 -26
  303. package/build/core/FxCore.js.map +1 -1
  304. package/build/error/common.js +1 -1
  305. package/build/error/common.js.map +1 -1
  306. package/build/error/index.d.ts +1 -0
  307. package/build/error/index.d.ts.map +1 -1
  308. package/build/error/index.js +1 -0
  309. package/build/error/index.js.map +1 -1
  310. package/build/error/script.d.ts +2 -2
  311. package/build/error/script.d.ts.map +1 -1
  312. package/build/error/script.js +6 -6
  313. package/build/error/script.js.map +1 -1
  314. package/build/index.d.ts +4 -0
  315. package/build/index.d.ts.map +1 -1
  316. package/build/index.js +7 -1
  317. package/build/index.js.map +1 -1
  318. package/build/question/constants.d.ts.map +1 -1
  319. package/build/question/constants.js +6 -1
  320. package/build/question/constants.js.map +1 -1
  321. package/build/question/create.d.ts +24 -9
  322. package/build/question/create.d.ts.map +1 -1
  323. package/build/question/create.js +410 -240
  324. package/build/question/create.js.map +1 -1
  325. package/build/question/generator.js +2 -0
  326. package/build/question/generator.js.map +1 -1
  327. package/build/question/index.d.ts +2 -0
  328. package/build/question/index.d.ts.map +1 -1
  329. package/build/question/index.js +6 -0
  330. package/build/question/index.js.map +1 -1
  331. package/build/question/inputs/AddPluginInputs.d.ts +18 -0
  332. package/build/question/inputs/AddPluginInputs.d.ts.map +1 -0
  333. package/build/question/inputs/AddPluginInputs.js +5 -0
  334. package/build/question/inputs/AddPluginInputs.js.map +1 -0
  335. package/build/question/inputs/CreateProjectInputs.d.ts +9 -7
  336. package/build/question/inputs/CreateProjectInputs.d.ts.map +1 -1
  337. package/build/question/inputs/PermissionGrantInputs.d.ts +1 -1
  338. package/build/question/inputs/PermissionListInputs.d.ts +1 -1
  339. package/build/question/inputs/PreviewTeamsAppInputs.d.ts +1 -1
  340. package/build/question/inputs/SPFxAddWebpartInputs.d.ts +1 -1
  341. package/build/question/inputs/SelectTeamsManifestInputs.d.ts +1 -1
  342. package/build/question/inputs/ValidateTeamsAppInputs.d.ts +2 -2
  343. package/build/question/inputs/index.d.ts +1 -0
  344. package/build/question/inputs/index.d.ts.map +1 -1
  345. package/build/question/inputs/index.js +1 -0
  346. package/build/question/inputs/index.js.map +1 -1
  347. package/build/question/options/AddPluginOptions.d.ts +10 -0
  348. package/build/question/options/AddPluginOptions.d.ts.map +1 -0
  349. package/build/question/options/AddPluginOptions.js +39 -0
  350. package/build/question/options/AddPluginOptions.js.map +1 -0
  351. package/build/question/options/CreateProjectOptions.d.ts.map +1 -1
  352. package/build/question/options/CreateProjectOptions.js +41 -13
  353. package/build/question/options/CreateProjectOptions.js.map +1 -1
  354. package/build/question/options/PermissionGrantOptions.js +1 -1
  355. package/build/question/options/PermissionGrantOptions.js.map +1 -1
  356. package/build/question/options/PermissionListOptions.js +1 -1
  357. package/build/question/options/PermissionListOptions.js.map +1 -1
  358. package/build/question/options/PreviewTeamsAppOptions.js +1 -1
  359. package/build/question/options/PreviewTeamsAppOptions.js.map +1 -1
  360. package/build/question/options/SPFxAddWebpartOptions.js +1 -1
  361. package/build/question/options/SPFxAddWebpartOptions.js.map +1 -1
  362. package/build/question/options/SelectTeamsManifestOptions.js +1 -1
  363. package/build/question/options/SelectTeamsManifestOptions.js.map +1 -1
  364. package/build/question/options/ValidateTeamsAppOptions.js +1 -1
  365. package/build/question/options/ValidateTeamsAppOptions.js.map +1 -1
  366. package/build/question/options/index.d.ts +1 -0
  367. package/build/question/options/index.d.ts.map +1 -1
  368. package/build/question/options/index.js +1 -0
  369. package/build/question/options/index.js.map +1 -1
  370. package/build/question/other.d.ts +9 -0
  371. package/build/question/other.d.ts.map +1 -1
  372. package/build/question/other.js +169 -8
  373. package/build/question/other.js.map +1 -1
  374. package/build/question/questionNames.d.ts +6 -2
  375. package/build/question/questionNames.d.ts.map +1 -1
  376. package/build/question/questionNames.js +5 -1
  377. package/build/question/questionNames.js.map +1 -1
  378. package/package.json +16 -11
  379. package/resource/package.nls.json +138 -79
  380. package/resource/yaml-schema/v1.5/yaml.schema.json +1784 -0
  381. package/resource/yaml-schema/yaml.schema.json +198 -2
  382. package/templates/fallback/common.zip +0 -0
  383. package/templates/fallback/csharp.zip +0 -0
  384. package/templates/fallback/js.zip +0 -0
  385. package/templates/fallback/python.zip +0 -0
  386. package/templates/fallback/ts.zip +0 -0
  387. package/build/component/generator/officeAddin/config/projectsJsonData.d.ts +0 -26
  388. package/build/component/generator/officeAddin/config/projectsJsonData.d.ts.map +0 -1
  389. package/build/component/generator/officeAddin/config/projectsJsonData.js +0 -165
  390. package/build/component/generator/officeAddin/config/projectsJsonData.js.map +0 -1
@@ -5,8 +5,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.FxCore = void 0;
6
6
  const tslib_1 = require("tslib");
7
7
  const hooks_1 = require("@feathersjs/hooks");
8
+ const m365_spec_parser_1 = require("@microsoft/m365-spec-parser");
8
9
  const teamsfx_api_1 = require("@microsoft/teamsfx-api");
9
10
  const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
11
+ const jsonschema = tslib_1.__importStar(require("jsonschema"));
10
12
  const os = tslib_1.__importStar(require("os"));
11
13
  const path = tslib_1.__importStar(require("path"));
12
14
  require("reflect-metadata");
@@ -14,12 +16,10 @@ const typedi_1 = require("typedi");
14
16
  const url_1 = require("url");
15
17
  const yaml_1 = require("yaml");
16
18
  const constants_1 = require("../common/constants");
17
- const featureFlags_1 = require("../common/featureFlags");
18
19
  const localizeUtils_1 = require("../common/localizeUtils");
19
20
  const launchHelper_1 = require("../common/m365/launchHelper");
20
21
  const projectSettingsHelper_1 = require("../common/projectSettingsHelper");
21
22
  const projectTypeChecker_1 = require("../common/projectTypeChecker");
22
- const m365_spec_parser_1 = require("@microsoft/m365-spec-parser");
23
23
  const telemetry_1 = require("../common/telemetry");
24
24
  const versionMetadata_1 = require("../common/versionMetadata");
25
25
  const parser_1 = require("../component/configManager/parser");
@@ -31,7 +31,9 @@ require("../component/driver/script/scriptDriver");
31
31
  const appStudio_1 = require("../component/driver/teamsApp/appStudio");
32
32
  const teamsappMgr_1 = require("../component/driver/teamsApp/teamsappMgr");
33
33
  const ManifestUtils_1 = require("../component/driver/teamsApp/utils/ManifestUtils");
34
+ const PluginManifestUtils_1 = require("../component/driver/teamsApp/utils/PluginManifestUtils");
34
35
  const utils_1 = require("../component/driver/teamsApp/utils/utils");
36
+ require("../component/feature/sso");
35
37
  const helper_1 = require("../component/generator/copilotPlugin/helper");
36
38
  const envMW_1 = require("../component/middleware/envMW");
37
39
  const questionMW_1 = require("../component/middleware/questionMW");
@@ -44,10 +46,11 @@ const settingsUtil_1 = require("../component/utils/settingsUtil");
44
46
  const common_2 = require("../error/common");
45
47
  const upgrade_1 = require("../error/upgrade");
46
48
  const yml_1 = require("../error/yml");
49
+ const question_1 = require("../question");
50
+ const constants_3 = require("../question/constants");
47
51
  const create_1 = require("../question/create");
48
52
  const other_1 = require("../question/other");
49
53
  const questionNames_1 = require("../question/questionNames");
50
- const constants_3 = require("../question/constants");
51
54
  const callback_1 = require("./callback");
52
55
  const collaborator_1 = require("./collaborator");
53
56
  const crypto_1 = require("./crypto");
@@ -60,7 +63,9 @@ const errorHandler_1 = require("./middleware/errorHandler");
60
63
  const projectMigratorV3_1 = require("./middleware/projectMigratorV3");
61
64
  const v3MigrationUtils_1 = require("./middleware/utils/v3MigrationUtils");
62
65
  const telemetry_2 = require("./telemetry");
63
- require("../component/feature/sso");
66
+ const results_1 = require("../component/driver/teamsApp/results");
67
+ const errors_1 = require("../component/driver/teamsApp/errors");
68
+ const CopilotGptManifestUtils_1 = require("../component/driver/teamsApp/utils/CopilotGptManifestUtils");
64
69
  class FxCore {
65
70
  constructor(tools) {
66
71
  globalVars_1.setTools(tools);
@@ -74,6 +79,9 @@ class FxCore {
74
79
  }
75
80
  async createProject(inputs) {
76
81
  const context = utils_2.createContextV3();
82
+ if (inputs[questionNames_1.QuestionNames.ProjectType] === question_1.ProjectTypeOptions.startWithGithubCopilot().id) {
83
+ return teamsfx_api_1.ok({ projectPath: "", shouldInvokeTeamsAgent: true });
84
+ }
77
85
  inputs[questionNames_1.QuestionNames.Scratch] = create_1.ScratchOptions.yes().id;
78
86
  if (inputs.teamsAppFromTdp) {
79
87
  // should never happen as we do same check on Developer Portal.
@@ -91,6 +99,39 @@ class FxCore {
91
99
  inputs.projectPath = context.projectPath;
92
100
  return res;
93
101
  }
102
+ async createProjectByCustomizedGenerator(inputs, generator) {
103
+ //1. input validation
104
+ let folder = inputs["folder"];
105
+ if (!folder) {
106
+ return teamsfx_api_1.err(new common_2.MissingRequiredInputError("folder"));
107
+ }
108
+ folder = path.resolve(folder);
109
+ const appName = inputs["app-name"];
110
+ if (undefined === appName)
111
+ return teamsfx_api_1.err(new common_2.MissingRequiredInputError(questionNames_1.QuestionNames.AppName));
112
+ const validateResult = jsonschema.validate(appName, {
113
+ pattern: question_1.AppNamePattern,
114
+ });
115
+ if (validateResult.errors && validateResult.errors.length > 0) {
116
+ return teamsfx_api_1.err(new common_2.InputValidationError(questionNames_1.QuestionNames.AppName, validateResult.errors[0].message));
117
+ }
118
+ const projectPath = path.join(folder, appName);
119
+ //2. run generator
120
+ const context = utils_2.createContextV3();
121
+ const genRes = await generator.run(context, inputs, projectPath);
122
+ if (genRes.isErr())
123
+ return teamsfx_api_1.err(genRes.error);
124
+ //3. ensure unique projectId in teamsapp.yaml (optional)
125
+ const ymlPath = path.join(projectPath, versionMetadata_1.MetadataV3.configFile);
126
+ const result = { projectPath: projectPath };
127
+ if (await fs_extra_1.default.pathExists(ymlPath)) {
128
+ const ensureRes = await coordinator_1.coordinator.ensureTrackingId(projectPath, inputs.projectId);
129
+ if (ensureRes.isErr())
130
+ return teamsfx_api_1.err(ensureRes.error);
131
+ result.projectId = ensureRes.value;
132
+ }
133
+ return teamsfx_api_1.ok(result);
134
+ }
94
135
  /**
95
136
  * lifecycle command: create new sample project
96
137
  */
@@ -414,7 +455,7 @@ class FxCore {
414
455
  const teamsAppId = manifestRes.value.id;
415
456
  const properties = teamsfx_api_1.ManifestUtil.parseCommonProperties(manifestRes.value);
416
457
  const launchHelper = new launchHelper_1.LaunchHelper(globalVars_1.TOOLS.tokenProvider.m365TokenProvider, globalVars_1.TOOLS.logProvider);
417
- const result = await launchHelper.getLaunchUrl(hub, teamsAppId, properties.capabilities, true, properties.isApiME);
458
+ const result = await launchHelper.getLaunchUrl(hub, teamsAppId, properties.capabilities, true);
418
459
  return result;
419
460
  }
420
461
  /**
@@ -639,6 +680,9 @@ class FxCore {
639
680
  if (match[1].startsWith("TEAMSFX_ENV=")) {
640
681
  writeStream.write(`TEAMSFX_ENV=${targetEnvName}${os.EOL}`);
641
682
  }
683
+ else if (match[1].startsWith("APP_NAME_SUFFIX=")) {
684
+ writeStream.write(`APP_NAME_SUFFIX=${targetEnvName}${os.EOL}`);
685
+ }
642
686
  else {
643
687
  writeStream.write(`${match[1]}${os.EOL}`);
644
688
  }
@@ -803,6 +847,7 @@ class FxCore {
803
847
  if (item.get("uses") === "teamsApp/create") {
804
848
  const teamsAppId = (_a = item.get("writeToEnvironmentFile")) === null || _a === void 0 ? void 0 : _a.get("teamsAppId");
805
849
  if (teamsAppId) {
850
+ const envName = m365_spec_parser_1.Utils.getSafeRegistrationIdEnvName(`${authName}_REGISTRATION_ID`);
806
851
  provisionNode.items.splice(i + 1, 0, {
807
852
  uses: "apiKey/register",
808
853
  with: {
@@ -811,7 +856,7 @@ class FxCore {
811
856
  apiSpecPath: specRelativePath,
812
857
  },
813
858
  writeToEnvironmentFile: {
814
- registrationId: `${authName.toUpperCase()}_REGISTRATION_ID`,
859
+ registrationId: envName,
815
860
  },
816
861
  });
817
862
  added = true;
@@ -835,27 +880,36 @@ class FxCore {
835
880
  const url = (_a = inputs[questionNames_1.QuestionNames.ApiSpecLocation]) !== null && _a !== void 0 ? _a : (_b = inputs.openAIPluginManifest) === null || _b === void 0 ? void 0 : _b.api.url;
836
881
  const manifestPath = inputs[questionNames_1.QuestionNames.ManifestPath];
837
882
  const isPlugin = inputs[questionNames_1.QuestionNames.Capabilities] === constants_3.copilotPluginApiSpecOptionId;
883
+ const context = utils_2.createContextV3();
838
884
  // Get API spec file path from manifest
839
885
  const manifestRes = await ManifestUtils_1.manifestUtils._readAppManifest(manifestPath);
840
886
  if (manifestRes.isErr()) {
841
887
  return teamsfx_api_1.err(manifestRes.error);
842
888
  }
889
+ const confirmRes = await context.userInteraction.showMessage("warn", localizeUtils_1.getLocalizedString("core.addApi.confirm", teamsfx_api_1.AppPackageFolderName), true, localizeUtils_1.getLocalizedString("core.addApi.continue"));
890
+ if (confirmRes.isErr()) {
891
+ return teamsfx_api_1.err(confirmRes.error);
892
+ }
893
+ else if (confirmRes.value !== localizeUtils_1.getLocalizedString("core.addApi.continue")) {
894
+ return teamsfx_api_1.err(new common_2.UserCancelError());
895
+ }
843
896
  // Merge existing operations in manifest.json
844
897
  const specParser = new m365_spec_parser_1.SpecParser(url, isPlugin
845
898
  ? helper_1.copilotPluginParserOptions
846
899
  : {
847
- allowAPIKeyAuth: featureFlags_1.isApiKeyEnabled(),
848
- allowMultipleParameters: featureFlags_1.isMultipleParametersEnabled(),
900
+ allowBearerTokenAuth: true,
901
+ allowMultipleParameters: true,
849
902
  });
850
- const apiResultList = await specParser.list();
903
+ const listResult = await specParser.list();
904
+ const apiResultList = listResult.APIs.filter((value) => value.isValid);
851
905
  let existingOperations;
852
- let outputAPISpecPath;
906
+ let outputApiSpecPath;
853
907
  if (isPlugin) {
854
- existingOperations = await helper_1.listPluginExistingOperations(manifestRes.value, manifestPath, inputs[questionNames_1.QuestionNames.DestinationApiSpecFilePath]);
855
908
  if (!inputs[questionNames_1.QuestionNames.DestinationApiSpecFilePath]) {
856
909
  return teamsfx_api_1.err(new common_2.MissingRequiredInputError(questionNames_1.QuestionNames.DestinationApiSpecFilePath));
857
910
  }
858
- outputAPISpecPath = inputs[questionNames_1.QuestionNames.DestinationApiSpecFilePath];
911
+ outputApiSpecPath = inputs[questionNames_1.QuestionNames.DestinationApiSpecFilePath];
912
+ existingOperations = await helper_1.listPluginExistingOperations(manifestRes.value, manifestPath, inputs[questionNames_1.QuestionNames.DestinationApiSpecFilePath]);
859
913
  }
860
914
  else {
861
915
  const existingOperationIds = ManifestUtils_1.manifestUtils.getOperationIds(manifestRes.value);
@@ -863,22 +917,23 @@ class FxCore {
863
917
  .filter((operation) => existingOperationIds.includes(operation.operationId))
864
918
  .map((operation) => operation.api);
865
919
  const apiSpecificationFile = manifestRes.value.composeExtensions[0].apiSpecificationFile;
866
- outputAPISpecPath = path.join(path.dirname(manifestPath), apiSpecificationFile);
920
+ outputApiSpecPath = path.join(path.dirname(manifestPath), apiSpecificationFile);
867
921
  }
868
922
  const operations = [...existingOperations, ...newOperations];
869
923
  const adaptiveCardFolder = path.join(inputs.projectPath, teamsfx_api_1.AppPackageFolderName, teamsfx_api_1.ResponseTemplatesFolderName);
870
- const context = utils_2.createContextV3();
871
924
  try {
872
- if (featureFlags_1.isApiKeyEnabled()) {
925
+ // TODO: type b will support auth
926
+ if (!isPlugin) {
873
927
  const authNames = new Set();
874
928
  const serverUrls = new Set();
875
929
  for (const api of operations) {
876
930
  const operation = apiResultList.find((op) => op.api === api);
877
- if (operation) {
878
- if (operation.auth && operation.auth.type === "apiKey") {
879
- authNames.add(operation.auth.name);
880
- serverUrls.add(operation.server);
881
- }
931
+ if (operation &&
932
+ operation.auth &&
933
+ (m365_spec_parser_1.Utils.isBearerTokenAuth(operation.auth.authScheme) ||
934
+ m365_spec_parser_1.Utils.isOAuthWithAuthCodeFlow(operation.auth.authScheme))) {
935
+ authNames.add(operation.auth.name);
936
+ serverUrls.add(operation.server);
882
937
  }
883
938
  }
884
939
  if (authNames.size > 1) {
@@ -891,14 +946,24 @@ class FxCore {
891
946
  const ymlPath = path.join(inputs.projectPath, versionMetadata_1.MetadataV3.configFile);
892
947
  const localYamlPath = path.join(inputs.projectPath, versionMetadata_1.MetadataV3.localConfigFile);
893
948
  const authName = [...authNames][0];
894
- const relativeSpecPath = "./" + path.relative(inputs.projectPath, outputAPISpecPath).replace(/\\/g, "/");
949
+ const relativeSpecPath = "./" + path.relative(inputs.projectPath, outputApiSpecPath).replace(/\\/g, "/");
895
950
  await this.injectCreateAPIKeyAction(ymlPath, authName, relativeSpecPath);
896
951
  if (await fs_extra_1.default.pathExists(localYamlPath)) {
897
952
  await this.injectCreateAPIKeyAction(localYamlPath, authName, relativeSpecPath);
898
953
  }
899
954
  }
900
955
  }
901
- const generateResult = await specParser.generate(manifestPath, operations, outputAPISpecPath, adaptiveCardFolder);
956
+ let generateResult;
957
+ if (!isPlugin) {
958
+ generateResult = await specParser.generate(manifestPath, operations, outputApiSpecPath, adaptiveCardFolder);
959
+ }
960
+ else {
961
+ const pluginPathRes = await ManifestUtils_1.manifestUtils.getPluginFilePath(manifestRes.value, manifestPath);
962
+ if (pluginPathRes.isErr()) {
963
+ return teamsfx_api_1.err(pluginPathRes.error);
964
+ }
965
+ generateResult = await specParser.generateForCopilot(manifestPath, operations, outputApiSpecPath, pluginPathRes.value);
966
+ }
902
967
  // Send SpecParser.generate() warnings
903
968
  context.telemetryReporter.sendTelemetryEvent(helper_1.specParserGenerateResultTelemetryEvent, {
904
969
  [helper_1.specParserGenerateResultAllSuccessTelemetryProperty]: generateResult.allSuccess.toString(),
@@ -908,7 +973,7 @@ class FxCore {
908
973
  [telemetry_2.CoreTelemetryProperty.Component]: telemetry_2.CoreTelemetryComponentName,
909
974
  });
910
975
  if (generateResult.warnings && generateResult.warnings.length > 0) {
911
- const warnSummary = helper_1.generateScaffoldingSummary(generateResult.warnings, manifestRes.value, inputs.projectPath);
976
+ const warnSummary = helper_1.generateScaffoldingSummary(generateResult.warnings, manifestRes.value, path.relative(inputs.projectPath, outputApiSpecPath));
912
977
  context.logProvider.info(warnSummary);
913
978
  }
914
979
  }
@@ -923,8 +988,29 @@ class FxCore {
923
988
  return teamsfx_api_1.err(error);
924
989
  }
925
990
  const message = localizeUtils_1.getLocalizedString("core.copilot.addAPI.success", newOperations, inputs.projectPath);
926
- void context.userInteraction.showMessage("info", message, false);
927
- return teamsfx_api_1.ok(undefined);
991
+ if (inputs.platform !== teamsfx_api_1.Platform.VS) {
992
+ void context.userInteraction.showMessage("info", message, false);
993
+ }
994
+ return teamsfx_api_1.ok(message);
995
+ }
996
+ async listPluginApiSpecs(inputs) {
997
+ try {
998
+ const manifestPath = inputs[questionNames_1.QuestionNames.ManifestPath];
999
+ const manifestRes = await ManifestUtils_1.manifestUtils._readAppManifest(manifestPath);
1000
+ if (manifestRes.isErr()) {
1001
+ return teamsfx_api_1.err(manifestRes.error);
1002
+ }
1003
+ const res = await PluginManifestUtils_1.pluginManifestUtils.getApiSpecFilePathFromTeamsManifest(manifestRes.value, manifestPath);
1004
+ if (res.isOk()) {
1005
+ return teamsfx_api_1.ok(res.value);
1006
+ }
1007
+ else {
1008
+ return teamsfx_api_1.err(res.error);
1009
+ }
1010
+ }
1011
+ catch (error) {
1012
+ return teamsfx_api_1.err(error);
1013
+ }
928
1014
  }
929
1015
  async copilotPluginLoadOpenAIManifest(inputs) {
930
1016
  try {
@@ -935,7 +1021,14 @@ class FxCore {
935
1021
  }
936
1022
  }
937
1023
  async copilotPluginListOperations(inputs) {
938
- return await helper_1.listOperations(utils_2.createContextV3(), inputs.manifest, inputs.apiSpecUrl, inputs, inputs.includeExistingAPIs, inputs.shouldLogWarning);
1024
+ const res = await helper_1.listOperations(utils_2.createContextV3(), inputs.manifest, inputs.apiSpecUrl, inputs, inputs.includeExistingAPIs, inputs.shouldLogWarning);
1025
+ if (res.isErr()) {
1026
+ const msg = res.error.map((e) => e.content).join("\n");
1027
+ return teamsfx_api_1.err(new teamsfx_api_1.UserError("FxCore", "ListOpenAPISpecOperationsError", msg, msg));
1028
+ }
1029
+ else {
1030
+ return teamsfx_api_1.ok(res.value);
1031
+ }
939
1032
  }
940
1033
  /**
941
1034
  * check project type info
@@ -948,6 +1041,141 @@ class FxCore {
948
1041
  (_a = globalVars_1.TOOLS.telemetryReporter) === null || _a === void 0 ? void 0 : _a.sendTelemetryEvent(telemetry_1.TelemetryEvent.ProjectType, props);
949
1042
  return teamsfx_api_1.ok(projectTypeRes);
950
1043
  }
1044
+ /**
1045
+ * Add plugin
1046
+ */
1047
+ async addPlugin(inputs) {
1048
+ var _a, _b;
1049
+ if (!inputs.projectPath) {
1050
+ throw new Error("projectPath is undefined"); // should never happen
1051
+ }
1052
+ const operations = inputs[questionNames_1.QuestionNames.ApiOperation];
1053
+ const url = inputs[questionNames_1.QuestionNames.ApiSpecLocation];
1054
+ const manifestPath = inputs[questionNames_1.QuestionNames.ManifestPath];
1055
+ const appPackageFolder = path.dirname(manifestPath);
1056
+ const apiSpecFolder = path.join(appPackageFolder, helper_1.defaultApiSpecFolderName);
1057
+ const needAddAction = inputs[questionNames_1.QuestionNames.PluginAvailability] === other_1.PluginAvailabilityOptions.action().id ||
1058
+ inputs[questionNames_1.QuestionNames.PluginAvailability] ===
1059
+ other_1.PluginAvailabilityOptions.copilotPluginAndAction().id;
1060
+ const needAddCopilotPlugin = inputs[questionNames_1.QuestionNames.PluginAvailability] === other_1.PluginAvailabilityOptions.copilotPlugin().id ||
1061
+ inputs[questionNames_1.QuestionNames.PluginAvailability] ===
1062
+ other_1.PluginAvailabilityOptions.copilotPluginAndAction().id;
1063
+ // validate the project is valid for adding plugin
1064
+ const manifestRes = await ManifestUtils_1.manifestUtils._readAppManifest(manifestPath);
1065
+ if (manifestRes.isErr()) {
1066
+ return teamsfx_api_1.err(manifestRes.error);
1067
+ }
1068
+ const teamsManifest = manifestRes.value;
1069
+ if (!((_a = teamsManifest.copilotGpts) === null || _a === void 0 ? void 0 : _a[0].file)) {
1070
+ return teamsfx_api_1.err(results_1.AppStudioResultFactory.UserError(errors_1.AppStudioError.TeamsAppRequiredPropertyMissingError.name, errors_1.AppStudioError.TeamsAppRequiredPropertyMissingError.message("copilotGpts", manifestPath)));
1071
+ }
1072
+ const gptManifestFilePath = path.join(appPackageFolder, teamsManifest.copilotGpts[0].file);
1073
+ const gptManifestRes = await CopilotGptManifestUtils_1.copilotGptManifestUtils.readCopilotGptManifestFile(gptManifestFilePath);
1074
+ if (gptManifestRes.isErr()) {
1075
+ return teamsfx_api_1.err(gptManifestRes.error);
1076
+ }
1077
+ const gptManifest = gptManifestRes.value;
1078
+ const context = utils_2.createContextV3();
1079
+ // confirm
1080
+ const confirmRes = await context.userInteraction.showMessage("warn", localizeUtils_1.getLocalizedString("core.addApi.confirm", path.relative(inputs.projectPath, appPackageFolder)), true, localizeUtils_1.getLocalizedString("core.addApi.continue"));
1081
+ if (confirmRes.isErr()) {
1082
+ return teamsfx_api_1.err(confirmRes.error);
1083
+ }
1084
+ else if (confirmRes.value !== localizeUtils_1.getLocalizedString("core.addApi.continue")) {
1085
+ return teamsfx_api_1.err(new common_2.UserCancelError());
1086
+ }
1087
+ // generate file path
1088
+ let isYaml;
1089
+ try {
1090
+ isYaml = await helper_1.isYamlSpecFile(url);
1091
+ }
1092
+ catch (e) {
1093
+ isYaml = false;
1094
+ }
1095
+ await fs_extra_1.default.ensureDir(apiSpecFolder);
1096
+ let openApiSpecFileName = isYaml ? helper_1.defaultApiSpecYamlFileName : helper_1.defaultApiSpecJsonFileName;
1097
+ const openApiSpecFileNamePrefix = openApiSpecFileName.split(".")[0];
1098
+ const openApiSpecFileType = openApiSpecFileName.split(".")[1];
1099
+ let apiSpecFileNameSuffix = 1;
1100
+ while (await fs_extra_1.default.pathExists(path.join(apiSpecFolder, openApiSpecFileName))) {
1101
+ openApiSpecFileName = `${openApiSpecFileNamePrefix}_${apiSpecFileNameSuffix++}.${openApiSpecFileType}`;
1102
+ }
1103
+ const openApiSpecFilePath = path.join(apiSpecFolder, openApiSpecFileName);
1104
+ let pluginManifestName = helper_1.defaultPluginManifestFileName;
1105
+ const pluginManifestNamePrefix = helper_1.defaultPluginManifestFileName.split(".")[0];
1106
+ let pluginFileNameSuffix = 1;
1107
+ while (await fs_extra_1.default.pathExists(path.join(appPackageFolder, pluginManifestName))) {
1108
+ pluginManifestName = `${pluginManifestNamePrefix}_${pluginFileNameSuffix++}.json`;
1109
+ }
1110
+ const pluginManifestFilePath = path.join(appPackageFolder, pluginManifestName);
1111
+ // generate plugin related files
1112
+ const specParser = new m365_spec_parser_1.SpecParser(url, Object.assign(Object.assign({}, helper_1.copilotPluginParserOptions), { isGptPlugin: true }));
1113
+ try {
1114
+ const generateResult = await specParser.generateForCopilot(manifestPath, operations, openApiSpecFilePath, pluginManifestFilePath);
1115
+ // Send SpecParser.generate() warnings
1116
+ context.telemetryReporter.sendTelemetryEvent(helper_1.specParserGenerateResultTelemetryEvent, {
1117
+ [helper_1.specParserGenerateResultAllSuccessTelemetryProperty]: generateResult.allSuccess.toString(),
1118
+ [helper_1.specParserGenerateResultWarningsTelemetryProperty]: generateResult.warnings
1119
+ .map((w) => w.type.toString() + ": " + w.content)
1120
+ .join(";"),
1121
+ [telemetry_2.CoreTelemetryProperty.Component]: telemetry_2.CoreTelemetryComponentName,
1122
+ });
1123
+ if (generateResult.warnings && generateResult.warnings.length > 0) {
1124
+ const warnSummary = helper_1.generateScaffoldingSummary(generateResult.warnings, manifestRes.value, path.relative(inputs.projectPath, openApiSpecFilePath));
1125
+ context.logProvider.info(warnSummary);
1126
+ }
1127
+ }
1128
+ catch (e) {
1129
+ let error;
1130
+ if (e instanceof m365_spec_parser_1.SpecParserError) {
1131
+ error = helper_1.convertSpecParserErrorToFxError(e);
1132
+ }
1133
+ else {
1134
+ error = common_2.assembleError(e);
1135
+ }
1136
+ return teamsfx_api_1.err(error);
1137
+ }
1138
+ // update Teams manifest
1139
+ if (needAddCopilotPlugin) {
1140
+ teamsManifest.plugins = teamsManifest.plugins || [];
1141
+ teamsManifest.plugins.push({
1142
+ id: "plugin_1",
1143
+ file: pluginManifestName,
1144
+ });
1145
+ const updateManifestRes = await ManifestUtils_1.manifestUtils._writeAppManifest(teamsManifest, manifestPath);
1146
+ if (updateManifestRes.isErr()) {
1147
+ return teamsfx_api_1.err(updateManifestRes.error);
1148
+ }
1149
+ }
1150
+ // update GPT manifest
1151
+ let actionId = "";
1152
+ if (needAddAction) {
1153
+ let suffix = 1;
1154
+ actionId = `action_${suffix}`;
1155
+ const existingActionIds = (_b = gptManifest.actions) === null || _b === void 0 ? void 0 : _b.map((action) => action.id);
1156
+ while (existingActionIds === null || existingActionIds === void 0 ? void 0 : existingActionIds.includes(actionId)) {
1157
+ suffix += 1;
1158
+ actionId = `action_${suffix}`;
1159
+ }
1160
+ const addActionRes = await CopilotGptManifestUtils_1.copilotGptManifestUtils.addAction(gptManifestFilePath, actionId, pluginManifestName);
1161
+ if (addActionRes.isErr()) {
1162
+ return teamsfx_api_1.err(addActionRes.error);
1163
+ }
1164
+ }
1165
+ // TODO: localize string below.
1166
+ let successMessage = "";
1167
+ if (needAddAction && needAddCopilotPlugin) {
1168
+ successMessage = `Action \"${actionId}\" and plugin "plugin_1" have been successfully added to the project.`;
1169
+ }
1170
+ else if (needAddAction) {
1171
+ successMessage = `Action \"${actionId}\" has been successfully added to the project.`;
1172
+ }
1173
+ else if (needAddCopilotPlugin) {
1174
+ successMessage = `Plugin \"plugin_1\" has been successfully added to the project.`;
1175
+ }
1176
+ void context.userInteraction.showMessage("info", successMessage, false);
1177
+ return teamsfx_api_1.ok(undefined);
1178
+ }
951
1179
  }
952
1180
  tslib_1.__decorate([
953
1181
  hooks_1.hooks([
@@ -959,6 +1187,19 @@ tslib_1.__decorate([
959
1187
  tslib_1.__metadata("design:paramtypes", [Object]),
960
1188
  tslib_1.__metadata("design:returntype", Promise)
961
1189
  ], FxCore.prototype, "createProject", null);
1190
+ tslib_1.__decorate([
1191
+ hooks_1.hooks([
1192
+ globalVars_1.ErrorContextMW({
1193
+ component: "FxCore",
1194
+ stage: "createProjectByCustomizedGenerator",
1195
+ reset: true,
1196
+ }),
1197
+ errorHandler_1.ErrorHandlerMW,
1198
+ ]),
1199
+ tslib_1.__metadata("design:type", Function),
1200
+ tslib_1.__metadata("design:paramtypes", [Object, Object]),
1201
+ tslib_1.__metadata("design:returntype", Promise)
1202
+ ], FxCore.prototype, "createProjectByCustomizedGenerator", null);
962
1203
  tslib_1.__decorate([
963
1204
  hooks_1.hooks([
964
1205
  globalVars_1.ErrorContextMW({ component: "FxCore", stage: "createSampleProject", reset: true }),
@@ -1371,6 +1612,15 @@ tslib_1.__decorate([
1371
1612
  tslib_1.__metadata("design:paramtypes", [Object]),
1372
1613
  tslib_1.__metadata("design:returntype", Promise)
1373
1614
  ], FxCore.prototype, "copilotPluginAddAPI", null);
1615
+ tslib_1.__decorate([
1616
+ hooks_1.hooks([
1617
+ globalVars_1.ErrorContextMW({ component: "FxCore", stage: "copilotPluginListApiSpecs" }),
1618
+ errorHandler_1.ErrorHandlerMW,
1619
+ ]),
1620
+ tslib_1.__metadata("design:type", Function),
1621
+ tslib_1.__metadata("design:paramtypes", [Object]),
1622
+ tslib_1.__metadata("design:returntype", Promise)
1623
+ ], FxCore.prototype, "listPluginApiSpecs", null);
1374
1624
  tslib_1.__decorate([
1375
1625
  hooks_1.hooks([
1376
1626
  globalVars_1.ErrorContextMW({ component: "FxCore", stage: "copilotPluginLoadOpenAIManifest" }),
@@ -1395,5 +1645,16 @@ tslib_1.__decorate([
1395
1645
  tslib_1.__metadata("design:paramtypes", [String]),
1396
1646
  tslib_1.__metadata("design:returntype", Promise)
1397
1647
  ], FxCore.prototype, "checkProjectType", null);
1648
+ tslib_1.__decorate([
1649
+ hooks_1.hooks([
1650
+ globalVars_1.ErrorContextMW({ component: "FxCore", stage: "addPlugin" }),
1651
+ errorHandler_1.ErrorHandlerMW,
1652
+ questionMW_1.QuestionMW("addPlugin"),
1653
+ concurrentLocker_1.ConcurrentLockerMW,
1654
+ ]),
1655
+ tslib_1.__metadata("design:type", Function),
1656
+ tslib_1.__metadata("design:paramtypes", [Object]),
1657
+ tslib_1.__metadata("design:returntype", Promise)
1658
+ ], FxCore.prototype, "addPlugin", null);
1398
1659
  exports.FxCore = FxCore;
1399
1660
  //# sourceMappingURL=FxCore.js.map