@microsoft/teamsfx-core 2.0.10-alpha.fa1ce1fbb.0 → 2.0.10-alpha.fe2e47f9c.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 (663) hide show
  1. package/build/client/teamsDevPortalClient.d.ts +4 -5
  2. package/build/client/teamsDevPortalClient.d.ts.map +1 -1
  3. package/build/client/teamsDevPortalClient.js +67 -47
  4. package/build/client/teamsDevPortalClient.js.map +1 -1
  5. package/build/common/azureUtils.js +4 -4
  6. package/build/common/azureUtils.js.map +1 -1
  7. package/build/common/constants.d.ts +1 -19
  8. package/build/common/constants.d.ts.map +1 -1
  9. package/build/common/constants.js +10 -29
  10. package/build/common/constants.js.map +1 -1
  11. package/build/common/correlator.d.ts +1 -0
  12. package/build/common/correlator.d.ts.map +1 -1
  13. package/build/common/correlator.js +6 -1
  14. package/build/common/correlator.js.map +1 -1
  15. package/build/common/featureFlags.d.ts +49 -19
  16. package/build/common/featureFlags.d.ts.map +1 -1
  17. package/build/common/featureFlags.js +82 -62
  18. package/build/common/featureFlags.js.map +1 -1
  19. package/build/common/globalState.js +3 -3
  20. package/build/common/globalState.js.map +1 -1
  21. package/build/common/globalVars.d.ts +1 -0
  22. package/build/common/globalVars.d.ts.map +1 -1
  23. package/build/common/globalVars.js +2 -1
  24. package/build/common/globalVars.js.map +1 -1
  25. package/build/common/jsonUtils.js +10 -10
  26. package/build/common/jsonUtils.js.map +1 -1
  27. package/build/common/localizeUtils.js +2 -2
  28. package/build/common/localizeUtils.js.map +1 -1
  29. package/build/common/projectSettingsHelper.js +1 -1
  30. package/build/common/projectSettingsHelper.js.map +1 -1
  31. package/build/common/projectTypeChecker.js +3 -3
  32. package/build/common/projectTypeChecker.js.map +1 -1
  33. package/build/common/samples.js +5 -5
  34. package/build/common/samples.js.map +1 -1
  35. package/build/common/secretmasker/dict.d.ts +22 -0
  36. package/build/common/secretmasker/dict.d.ts.map +1 -0
  37. package/build/common/secretmasker/dict.js +83 -0
  38. package/build/common/secretmasker/dict.js.map +1 -0
  39. package/build/common/secretmasker/feature.d.ts +19 -0
  40. package/build/common/secretmasker/feature.d.ts.map +1 -0
  41. package/build/common/secretmasker/feature.js +389 -0
  42. package/build/common/secretmasker/feature.js.map +1 -0
  43. package/build/common/secretmasker/masker.d.ts +12 -0
  44. package/build/common/secretmasker/masker.d.ts.map +1 -0
  45. package/build/common/secretmasker/masker.js +54 -0
  46. package/build/common/secretmasker/masker.js.map +1 -0
  47. package/build/common/stringUtils.d.ts +3 -5
  48. package/build/common/stringUtils.d.ts.map +1 -1
  49. package/build/common/stringUtils.js +13 -105
  50. package/build/common/stringUtils.js.map +1 -1
  51. package/build/common/telemetry.d.ts +13 -2
  52. package/build/common/telemetry.d.ts.map +1 -1
  53. package/build/common/telemetry.js +21 -3
  54. package/build/common/telemetry.js.map +1 -1
  55. package/build/common/templates-config.json +1 -1
  56. package/build/common/tools.d.ts +1 -6
  57. package/build/common/tools.d.ts.map +1 -1
  58. package/build/common/tools.js +15 -28
  59. package/build/common/tools.js.map +1 -1
  60. package/build/common/utils.d.ts +4 -0
  61. package/build/common/utils.d.ts.map +1 -1
  62. package/build/common/utils.js +38 -1
  63. package/build/common/utils.js.map +1 -1
  64. package/build/common/wrappedAxiosClient.d.ts +1 -0
  65. package/build/common/wrappedAxiosClient.d.ts.map +1 -1
  66. package/build/common/wrappedAxiosClient.js +58 -29
  67. package/build/common/wrappedAxiosClient.js.map +1 -1
  68. package/build/component/configManager/actionInjector.js +2 -2
  69. package/build/component/configManager/actionInjector.js.map +1 -1
  70. package/build/component/configManager/lifecycle.js +9 -9
  71. package/build/component/configManager/lifecycle.js.map +1 -1
  72. package/build/component/configManager/parser.js +20 -20
  73. package/build/component/configManager/parser.js.map +1 -1
  74. package/build/component/configManager/validator.js +2 -2
  75. package/build/component/configManager/validator.js.map +1 -1
  76. package/build/component/constant/commonConstant.d.ts +1 -0
  77. package/build/component/constant/commonConstant.d.ts.map +1 -1
  78. package/build/component/constant/commonConstant.js +1 -0
  79. package/build/component/constant/commonConstant.js.map +1 -1
  80. package/build/component/constants.js +5 -5
  81. package/build/component/constants.js.map +1 -1
  82. package/build/component/coordinator/index.d.ts.map +1 -1
  83. package/build/component/coordinator/index.js +95 -212
  84. package/build/component/coordinator/index.js.map +1 -1
  85. package/build/component/coordinator/summary.js +10 -10
  86. package/build/component/coordinator/summary.js.map +1 -1
  87. package/build/component/deployUtils.js +4 -4
  88. package/build/component/deployUtils.js.map +1 -1
  89. package/build/component/deps-checker/constant/helpLink.d.ts +0 -3
  90. package/build/component/deps-checker/constant/helpLink.d.ts.map +1 -1
  91. package/build/component/deps-checker/constant/helpLink.js +1 -6
  92. package/build/component/deps-checker/constant/helpLink.js.map +1 -1
  93. package/build/component/deps-checker/constant/message.js +24 -24
  94. package/build/component/deps-checker/constant/message.js.map +1 -1
  95. package/build/component/deps-checker/internal/dotnetChecker.js +13 -13
  96. package/build/component/deps-checker/internal/dotnetChecker.js.map +1 -1
  97. package/build/component/deps-checker/internal/funcToolChecker.js +13 -13
  98. package/build/component/deps-checker/internal/funcToolChecker.js.map +1 -1
  99. package/build/component/deps-checker/internal/testToolChecker.js +21 -21
  100. package/build/component/deps-checker/internal/testToolChecker.js.map +1 -1
  101. package/build/component/deps-checker/internal/vxTestAppChecker.d.ts.map +1 -1
  102. package/build/component/deps-checker/internal/vxTestAppChecker.js +14 -8
  103. package/build/component/deps-checker/internal/vxTestAppChecker.js.map +1 -1
  104. package/build/component/developerPortalScaffoldUtils.js +15 -15
  105. package/build/component/developerPortalScaffoldUtils.js.map +1 -1
  106. package/build/component/driver/aad/create.d.ts.map +1 -1
  107. package/build/component/driver/aad/create.js +38 -23
  108. package/build/component/driver/aad/create.js.map +1 -1
  109. package/build/component/driver/aad/error/aadAppNameTooLongError.js +2 -2
  110. package/build/component/driver/aad/error/aadAppNameTooLongError.js.map +1 -1
  111. package/build/component/driver/aad/error/aadManifestError.js +27 -27
  112. package/build/component/driver/aad/error/aadManifestError.js.map +1 -1
  113. package/build/component/driver/aad/error/clientSecretNotAllowedError.js +2 -2
  114. package/build/component/driver/aad/error/clientSecretNotAllowedError.js.map +1 -1
  115. package/build/component/driver/aad/error/credentialInvalidLifetimeError.js +2 -2
  116. package/build/component/driver/aad/error/credentialInvalidLifetimeError.js.map +1 -1
  117. package/build/component/driver/aad/error/invalidFieldInManifestError.js +2 -2
  118. package/build/component/driver/aad/error/invalidFieldInManifestError.js.map +1 -1
  119. package/build/component/driver/aad/error/missingEnvError.js +2 -2
  120. package/build/component/driver/aad/error/missingEnvError.js.map +1 -1
  121. package/build/component/driver/aad/error/missingServiceManagamentReferenceError.d.ts +5 -0
  122. package/build/component/driver/aad/error/missingServiceManagamentReferenceError.d.ts.map +1 -0
  123. package/build/component/driver/aad/error/missingServiceManagamentReferenceError.js +23 -0
  124. package/build/component/driver/aad/error/missingServiceManagamentReferenceError.js.map +1 -0
  125. package/build/component/driver/aad/update.js +16 -16
  126. package/build/component/driver/aad/update.js.map +1 -1
  127. package/build/component/driver/aad/utility/aadAppClient.js +9 -9
  128. package/build/component/driver/aad/utility/aadAppClient.js.map +1 -1
  129. package/build/component/driver/aad/utility/aadManifestHelper.js +3 -3
  130. package/build/component/driver/aad/utility/aadManifestHelper.js.map +1 -1
  131. package/build/component/driver/aad/utility/buildAadManifest.js +5 -5
  132. package/build/component/driver/aad/utility/buildAadManifest.js.map +1 -1
  133. package/build/component/driver/aad/utility/constants.d.ts +2 -0
  134. package/build/component/driver/aad/utility/constants.d.ts.map +1 -1
  135. package/build/component/driver/aad/utility/constants.js +2 -0
  136. package/build/component/driver/aad/utility/constants.js.map +1 -1
  137. package/build/component/driver/add/addWebPart.js +6 -6
  138. package/build/component/driver/add/addWebPart.js.map +1 -1
  139. package/build/component/driver/add/error/noConfigurationError.js +2 -2
  140. package/build/component/driver/add/error/noConfigurationError.js.map +1 -1
  141. package/build/component/driver/apiKey/create.d.ts.map +1 -1
  142. package/build/component/driver/apiKey/create.js +23 -20
  143. package/build/component/driver/apiKey/create.js.map +1 -1
  144. package/build/component/driver/apiKey/error/apiKeyClientSecretInvalid.js +2 -2
  145. package/build/component/driver/apiKey/error/apiKeyClientSecretInvalid.js.map +1 -1
  146. package/build/component/driver/apiKey/error/apiKeyDomainInvalid.js +2 -2
  147. package/build/component/driver/apiKey/error/apiKeyDomainInvalid.js.map +1 -1
  148. package/build/component/driver/apiKey/error/apiKeyFailedToGetDomain.js +2 -2
  149. package/build/component/driver/apiKey/error/apiKeyFailedToGetDomain.js.map +1 -1
  150. package/build/component/driver/apiKey/error/apiKeyFromScratchClientSecretInvalid.d.ts +5 -0
  151. package/build/component/driver/apiKey/error/apiKeyFromScratchClientSecretInvalid.d.ts.map +1 -0
  152. package/build/component/driver/apiKey/error/apiKeyFromScratchClientSecretInvalid.js +21 -0
  153. package/build/component/driver/apiKey/error/apiKeyFromScratchClientSecretInvalid.js.map +1 -0
  154. package/build/component/driver/apiKey/error/apiKeyNameTooLong.js +2 -2
  155. package/build/component/driver/apiKey/error/apiKeyNameTooLong.js.map +1 -1
  156. package/build/component/driver/apiKey/update.d.ts.map +1 -1
  157. package/build/component/driver/apiKey/update.js +20 -20
  158. package/build/component/driver/apiKey/update.js.map +1 -1
  159. package/build/component/driver/apiKey/utility/constants.d.ts +1 -1
  160. package/build/component/driver/apiKey/utility/constants.js +1 -1
  161. package/build/component/driver/apiKey/utility/utility.js +2 -2
  162. package/build/component/driver/apiKey/utility/utility.js.map +1 -1
  163. package/build/component/driver/arm/deploy.js +4 -4
  164. package/build/component/driver/arm/deploy.js.map +1 -1
  165. package/build/component/driver/arm/deployImpl.d.ts.map +1 -1
  166. package/build/component/driver/arm/deployImpl.js +19 -17
  167. package/build/component/driver/arm/deployImpl.js.map +1 -1
  168. package/build/component/driver/arm/util/bicepChecker.js +5 -5
  169. package/build/component/driver/arm/util/bicepChecker.js.map +1 -1
  170. package/build/component/driver/arm/util/handleError.js +9 -9
  171. package/build/component/driver/arm/util/handleError.js.map +1 -1
  172. package/build/component/driver/arm/validator.js +3 -3
  173. package/build/component/driver/arm/validator.js.map +1 -1
  174. package/build/component/driver/botAadApp/create.d.ts.map +1 -1
  175. package/build/component/driver/botAadApp/create.js +38 -22
  176. package/build/component/driver/botAadApp/create.js.map +1 -1
  177. package/build/component/driver/botAadApp/error/unexpectedEmptyBotPasswordError.js +2 -2
  178. package/build/component/driver/botAadApp/error/unexpectedEmptyBotPasswordError.js.map +1 -1
  179. package/build/component/driver/botAadApp/utility/constants.d.ts +1 -0
  180. package/build/component/driver/botAadApp/utility/constants.d.ts.map +1 -1
  181. package/build/component/driver/botAadApp/utility/constants.js +1 -0
  182. package/build/component/driver/botAadApp/utility/constants.js.map +1 -1
  183. package/build/component/driver/botFramework/createOrUpdateBot.js +14 -14
  184. package/build/component/driver/botFramework/createOrUpdateBot.js.map +1 -1
  185. package/build/component/driver/botFramework/error/invalidBotIdError.js +2 -2
  186. package/build/component/driver/botFramework/error/invalidBotIdError.js.map +1 -1
  187. package/build/component/driver/deploy/azure/azureAppServiceDeployDriver.js +3 -3
  188. package/build/component/driver/deploy/azure/azureAppServiceDeployDriver.js.map +1 -1
  189. package/build/component/driver/deploy/azure/azureFunctionDeployDriver.js +3 -3
  190. package/build/component/driver/deploy/azure/azureFunctionDeployDriver.js.map +1 -1
  191. package/build/component/driver/deploy/azure/azureStaticWebAppGetDeploymentTokenDriver.d.ts.map +1 -1
  192. package/build/component/driver/deploy/azure/azureStaticWebAppGetDeploymentTokenDriver.js +16 -10
  193. package/build/component/driver/deploy/azure/azureStaticWebAppGetDeploymentTokenDriver.js.map +1 -1
  194. package/build/component/driver/deploy/azure/azureStorageDeployDriver.js +8 -8
  195. package/build/component/driver/deploy/azure/azureStorageDeployDriver.js.map +1 -1
  196. package/build/component/driver/deploy/azure/azureStorageStaticWebsiteConfigDriver.js +14 -14
  197. package/build/component/driver/deploy/azure/azureStorageStaticWebsiteConfigDriver.js.map +1 -1
  198. package/build/component/driver/deploy/azure/impl/AzureZipDeployImpl.js +6 -6
  199. package/build/component/driver/deploy/azure/impl/AzureZipDeployImpl.js.map +1 -1
  200. package/build/component/driver/deploy/azure/impl/azureDeployImpl.js +8 -8
  201. package/build/component/driver/deploy/azure/impl/azureDeployImpl.js.map +1 -1
  202. package/build/component/driver/deploy/azure/impl/baseDeployImpl.js +11 -11
  203. package/build/component/driver/deploy/azure/impl/baseDeployImpl.js.map +1 -1
  204. package/build/component/driver/deploy/spfx/deployDriver.js +15 -15
  205. package/build/component/driver/deploy/spfx/deployDriver.js.map +1 -1
  206. package/build/component/driver/deploy/spfx/error/createAppCatalogFailedError.js +2 -2
  207. package/build/component/driver/deploy/spfx/error/createAppCatalogFailedError.js.map +1 -1
  208. package/build/component/driver/deploy/spfx/error/getGraphTokenFailedError.js +2 -2
  209. package/build/component/driver/deploy/spfx/error/getGraphTokenFailedError.js.map +1 -1
  210. package/build/component/driver/deploy/spfx/error/getSPOTokenFailedError.js +2 -2
  211. package/build/component/driver/deploy/spfx/error/getSPOTokenFailedError.js.map +1 -1
  212. package/build/component/driver/deploy/spfx/error/getTenantFailedError.js +2 -2
  213. package/build/component/driver/deploy/spfx/error/getTenantFailedError.js.map +1 -1
  214. package/build/component/driver/deploy/spfx/error/insufficientPermissionError.js +2 -2
  215. package/build/component/driver/deploy/spfx/error/insufficientPermissionError.js.map +1 -1
  216. package/build/component/driver/deploy/spfx/error/noSPPackageError.js +2 -2
  217. package/build/component/driver/deploy/spfx/error/noSPPackageError.js.map +1 -1
  218. package/build/component/driver/deploy/spfx/error/noValidAppCatelogError.js +2 -2
  219. package/build/component/driver/deploy/spfx/error/noValidAppCatelogError.js.map +1 -1
  220. package/build/component/driver/deploy/spfx/error/uploadAppPackageFailedError.js +2 -2
  221. package/build/component/driver/deploy/spfx/error/uploadAppPackageFailedError.js.map +1 -1
  222. package/build/component/driver/deploy/spfx/utility/constants.js +5 -5
  223. package/build/component/driver/deploy/spfx/utility/constants.js.map +1 -1
  224. package/build/component/driver/devTool/constant.d.ts +8 -8
  225. package/build/component/driver/devTool/constant.d.ts.map +1 -1
  226. package/build/component/driver/devTool/constant.js +10 -10
  227. package/build/component/driver/devTool/constant.js.map +1 -1
  228. package/build/component/driver/devTool/error/dotnetInstallationUserError.js +3 -3
  229. package/build/component/driver/devTool/error/dotnetInstallationUserError.js.map +1 -1
  230. package/build/component/driver/devTool/error/funcInstallationUserError.js +3 -3
  231. package/build/component/driver/devTool/error/funcInstallationUserError.js.map +1 -1
  232. package/build/component/driver/devTool/error/testToolInstallationUserError.js +3 -3
  233. package/build/component/driver/devTool/error/testToolInstallationUserError.js.map +1 -1
  234. package/build/component/driver/devTool/installDriver.js +6 -6
  235. package/build/component/driver/devTool/installDriver.js.map +1 -1
  236. package/build/component/driver/error/outputEnvironmentVariableUndefinedError.js +2 -2
  237. package/build/component/driver/error/outputEnvironmentVariableUndefinedError.js.map +1 -1
  238. package/build/component/driver/file/createOrUpdateEnvironmentFile.js +11 -11
  239. package/build/component/driver/file/createOrUpdateEnvironmentFile.js.map +1 -1
  240. package/build/component/driver/file/createOrUpdateJsonFile.js +12 -12
  241. package/build/component/driver/file/createOrUpdateJsonFile.js.map +1 -1
  242. package/build/component/driver/index.d.ts +1 -0
  243. package/build/component/driver/index.d.ts.map +1 -1
  244. package/build/component/driver/index.js +1 -0
  245. package/build/component/driver/index.js.map +1 -1
  246. package/build/component/driver/m365/acquire.js +12 -12
  247. package/build/component/driver/m365/acquire.js.map +1 -1
  248. package/build/component/driver/middleware/addSWADeployTelemetry.js +2 -2
  249. package/build/component/driver/middleware/addSWADeployTelemetry.js.map +1 -1
  250. package/build/component/driver/oauth/create.d.ts.map +1 -1
  251. package/build/component/driver/oauth/create.js +51 -21
  252. package/build/component/driver/oauth/create.js.map +1 -1
  253. package/build/component/driver/oauth/error/oauthAuthInfoInvalid.js +2 -2
  254. package/build/component/driver/oauth/error/oauthAuthInfoInvalid.js.map +1 -1
  255. package/build/component/driver/oauth/error/oauthDisablePKCEError.d.ts +5 -0
  256. package/build/component/driver/oauth/error/oauthDisablePKCEError.d.ts.map +1 -0
  257. package/build/component/driver/oauth/error/oauthDisablePKCEError.js +21 -0
  258. package/build/component/driver/oauth/error/oauthDisablePKCEError.js.map +1 -0
  259. package/build/component/driver/oauth/error/oauthDomainInvalid.js +2 -2
  260. package/build/component/driver/oauth/error/oauthDomainInvalid.js.map +1 -1
  261. package/build/component/driver/oauth/error/oauthFailedToGetDomain.js +2 -2
  262. package/build/component/driver/oauth/error/oauthFailedToGetDomain.js.map +1 -1
  263. package/build/component/driver/oauth/error/oauthIdentityProviderInvalid.d.ts +5 -0
  264. package/build/component/driver/oauth/error/oauthIdentityProviderInvalid.d.ts.map +1 -0
  265. package/build/component/driver/oauth/error/oauthIdentityProviderInvalid.js +21 -0
  266. package/build/component/driver/oauth/error/oauthIdentityProviderInvalid.js.map +1 -0
  267. package/build/component/driver/oauth/error/oauthNameTooLong.js +2 -2
  268. package/build/component/driver/oauth/error/oauthNameTooLong.js.map +1 -1
  269. package/build/component/driver/oauth/interface/createOauthArgs.d.ts +2 -0
  270. package/build/component/driver/oauth/interface/createOauthArgs.d.ts.map +1 -1
  271. package/build/component/driver/oauth/interface/updateOauthArgs.d.ts +1 -0
  272. package/build/component/driver/oauth/interface/updateOauthArgs.d.ts.map +1 -1
  273. package/build/component/driver/oauth/update.d.ts.map +1 -1
  274. package/build/component/driver/oauth/update.js +30 -19
  275. package/build/component/driver/oauth/update.js.map +1 -1
  276. package/build/component/driver/oauth/utility/constants.d.ts +1 -1
  277. package/build/component/driver/oauth/utility/constants.js +1 -1
  278. package/build/component/driver/oauth/utility/utility.js +5 -6
  279. package/build/component/driver/oauth/utility/utility.js.map +1 -1
  280. package/build/component/driver/script/baseBuildDriver.js +8 -8
  281. package/build/component/driver/script/baseBuildDriver.js.map +1 -1
  282. package/build/component/driver/script/dotnetBuildDriver.js +3 -3
  283. package/build/component/driver/script/dotnetBuildDriver.js.map +1 -1
  284. package/build/component/driver/script/npmBuildDriver.js +3 -3
  285. package/build/component/driver/script/npmBuildDriver.js.map +1 -1
  286. package/build/component/driver/script/npxBuildDriver.js +5 -5
  287. package/build/component/driver/script/npxBuildDriver.js.map +1 -1
  288. package/build/component/driver/script/scriptDriver.d.ts +2 -0
  289. package/build/component/driver/script/scriptDriver.d.ts.map +1 -1
  290. package/build/component/driver/script/scriptDriver.js +28 -29
  291. package/build/component/driver/script/scriptDriver.js.map +1 -1
  292. package/build/component/driver/teamsApp/appStudio.d.ts.map +1 -1
  293. package/build/component/driver/teamsApp/appStudio.js +43 -54
  294. package/build/component/driver/teamsApp/appStudio.js.map +1 -1
  295. package/build/component/driver/teamsApp/clients/appStudioClient.js +20 -20
  296. package/build/component/driver/teamsApp/clients/appStudioClient.js.map +1 -1
  297. package/build/component/driver/teamsApp/configure.d.ts.map +1 -1
  298. package/build/component/driver/teamsApp/configure.js +23 -23
  299. package/build/component/driver/teamsApp/configure.js.map +1 -1
  300. package/build/component/driver/teamsApp/constants.d.ts +15 -1
  301. package/build/component/driver/teamsApp/constants.d.ts.map +1 -1
  302. package/build/component/driver/teamsApp/constants.js +132 -2
  303. package/build/component/driver/teamsApp/constants.js.map +1 -1
  304. package/build/component/driver/teamsApp/copyAppPackageToSPFx.js +8 -8
  305. package/build/component/driver/teamsApp/copyAppPackageToSPFx.js.map +1 -1
  306. package/build/component/driver/teamsApp/create.d.ts.map +1 -1
  307. package/build/component/driver/teamsApp/create.js +21 -21
  308. package/build/component/driver/teamsApp/create.js.map +1 -1
  309. package/build/component/driver/teamsApp/createAppPackage.d.ts +3 -1
  310. package/build/component/driver/teamsApp/createAppPackage.d.ts.map +1 -1
  311. package/build/component/driver/teamsApp/createAppPackage.js +83 -67
  312. package/build/component/driver/teamsApp/createAppPackage.js.map +1 -1
  313. package/build/component/driver/teamsApp/errors.d.ts +6 -2
  314. package/build/component/driver/teamsApp/errors.d.ts.map +1 -1
  315. package/build/component/driver/teamsApp/errors.js +49 -42
  316. package/build/component/driver/teamsApp/errors.js.map +1 -1
  317. package/build/component/driver/teamsApp/interfaces/CreateAppPackageArgs.d.ts +6 -2
  318. package/build/component/driver/teamsApp/interfaces/CreateAppPackageArgs.d.ts.map +1 -1
  319. package/build/component/driver/teamsApp/interfaces/OauthRegistration.d.ts +2 -0
  320. package/build/component/driver/teamsApp/interfaces/OauthRegistration.d.ts.map +1 -1
  321. package/build/component/driver/teamsApp/interfaces/OauthRegistration.js.map +1 -1
  322. package/build/component/driver/teamsApp/interfaces/SyncManifest.d.ts +20 -0
  323. package/build/component/driver/teamsApp/interfaces/SyncManifest.d.ts.map +1 -0
  324. package/build/component/driver/teamsApp/interfaces/SyncManifest.js +5 -0
  325. package/build/component/driver/teamsApp/interfaces/SyncManifest.js.map +1 -0
  326. package/build/component/driver/teamsApp/interfaces/appdefinitions/IValidationResult.d.ts +1 -0
  327. package/build/component/driver/teamsApp/interfaces/appdefinitions/IValidationResult.d.ts.map +1 -1
  328. package/build/component/driver/teamsApp/publishAppPackage.d.ts.map +1 -1
  329. package/build/component/driver/teamsApp/publishAppPackage.js +35 -35
  330. package/build/component/driver/teamsApp/publishAppPackage.js.map +1 -1
  331. package/build/component/driver/teamsApp/syncManifest.d.ts +14 -0
  332. package/build/component/driver/teamsApp/syncManifest.d.ts.map +1 -0
  333. package/build/component/driver/teamsApp/syncManifest.js +226 -0
  334. package/build/component/driver/teamsApp/syncManifest.js.map +1 -0
  335. package/build/component/driver/teamsApp/teamsappMgr.d.ts.map +1 -1
  336. package/build/component/driver/teamsApp/teamsappMgr.js +41 -42
  337. package/build/component/driver/teamsApp/teamsappMgr.js.map +1 -1
  338. package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.d.ts +5 -3
  339. package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.d.ts.map +1 -1
  340. package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.js +45 -21
  341. package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.js.map +1 -1
  342. package/build/component/driver/teamsApp/utils/ManifestUtils.d.ts +3 -2
  343. package/build/component/driver/teamsApp/utils/ManifestUtils.d.ts.map +1 -1
  344. package/build/component/driver/teamsApp/utils/ManifestUtils.js +63 -39
  345. package/build/component/driver/teamsApp/utils/ManifestUtils.js.map +1 -1
  346. package/build/component/driver/teamsApp/utils/PluginManifestUtils.d.ts +4 -3
  347. package/build/component/driver/teamsApp/utils/PluginManifestUtils.d.ts.map +1 -1
  348. package/build/component/driver/teamsApp/utils/PluginManifestUtils.js +36 -18
  349. package/build/component/driver/teamsApp/utils/PluginManifestUtils.js.map +1 -1
  350. package/build/component/driver/teamsApp/utils/utils.d.ts +4 -4
  351. package/build/component/driver/teamsApp/utils/utils.d.ts.map +1 -1
  352. package/build/component/driver/teamsApp/utils/utils.js +45 -15
  353. package/build/component/driver/teamsApp/utils/utils.js.map +1 -1
  354. package/build/component/driver/teamsApp/validate.js +27 -27
  355. package/build/component/driver/teamsApp/validate.js.map +1 -1
  356. package/build/component/driver/teamsApp/validateAppPackage.d.ts +1 -0
  357. package/build/component/driver/teamsApp/validateAppPackage.d.ts.map +1 -1
  358. package/build/component/driver/teamsApp/validateAppPackage.js +52 -38
  359. package/build/component/driver/teamsApp/validateAppPackage.js.map +1 -1
  360. package/build/component/driver/teamsApp/validateTestCases.d.ts.map +1 -1
  361. package/build/component/driver/teamsApp/validateTestCases.js +36 -36
  362. package/build/component/driver/teamsApp/validateTestCases.js.map +1 -1
  363. package/build/component/driver/util/wrapUtil.js +6 -6
  364. package/build/component/driver/util/wrapUtil.js.map +1 -1
  365. package/build/component/error/componentError.js +8 -8
  366. package/build/component/error/componentError.js.map +1 -1
  367. package/build/component/feature/collaboration.d.ts.map +1 -1
  368. package/build/component/feature/collaboration.js +56 -56
  369. package/build/component/feature/collaboration.js.map +1 -1
  370. package/build/component/feature/createAuthFiles.js +8 -8
  371. package/build/component/feature/createAuthFiles.js.map +1 -1
  372. package/build/component/feature/sso.js +4 -4
  373. package/build/component/feature/sso.js.map +1 -1
  374. package/build/component/generator/apiSpec/generator.d.ts +15 -0
  375. package/build/component/generator/apiSpec/generator.d.ts.map +1 -0
  376. package/build/component/generator/apiSpec/generator.js +260 -0
  377. package/build/component/generator/apiSpec/generator.js.map +1 -0
  378. package/build/component/generator/{copilotPlugin → apiSpec}/helper.d.ts +23 -9
  379. package/build/component/generator/apiSpec/helper.d.ts.map +1 -0
  380. package/build/component/generator/{copilotPlugin → apiSpec}/helper.js +309 -127
  381. package/build/component/generator/apiSpec/helper.js.map +1 -0
  382. package/build/component/generator/constant.d.ts +1 -0
  383. package/build/component/generator/constant.d.ts.map +1 -1
  384. package/build/component/generator/constant.js +2 -1
  385. package/build/component/generator/constant.js.map +1 -1
  386. package/build/component/generator/{officeXMLAddin → copilotExtension}/generator.d.ts +8 -10
  387. package/build/component/generator/copilotExtension/generator.d.ts.map +1 -0
  388. package/build/component/generator/copilotExtension/generator.js +116 -0
  389. package/build/component/generator/copilotExtension/generator.js.map +1 -0
  390. package/build/component/generator/copilotExtension/helper.d.ts +8 -0
  391. package/build/component/generator/copilotExtension/helper.d.ts.map +1 -0
  392. package/build/component/generator/copilotExtension/helper.js +114 -0
  393. package/build/component/generator/copilotExtension/helper.js.map +1 -0
  394. package/build/component/generator/error.d.ts +1 -1
  395. package/build/component/generator/error.d.ts.map +1 -1
  396. package/build/component/generator/error.js +5 -5
  397. package/build/component/generator/error.js.map +1 -1
  398. package/build/component/generator/generator.d.ts.map +1 -1
  399. package/build/component/generator/generator.js +25 -19
  400. package/build/component/generator/generator.js.map +1 -1
  401. package/build/component/generator/generatorAction.js +7 -7
  402. package/build/component/generator/generatorAction.js.map +1 -1
  403. package/build/component/generator/generatorProvider.js +6 -6
  404. package/build/component/generator/generatorProvider.js.map +1 -1
  405. package/build/component/generator/officeAddin/generator.d.ts +1 -2
  406. package/build/component/generator/officeAddin/generator.d.ts.map +1 -1
  407. package/build/component/generator/officeAddin/generator.js +39 -41
  408. package/build/component/generator/officeAddin/generator.js.map +1 -1
  409. package/build/component/generator/officeAddin/helperMethods.js +5 -5
  410. package/build/component/generator/officeAddin/helperMethods.js.map +1 -1
  411. package/build/component/generator/officeXMLAddin/projectConfig.d.ts.map +1 -1
  412. package/build/component/generator/officeXMLAddin/projectConfig.js +0 -75
  413. package/build/component/generator/officeXMLAddin/projectConfig.js.map +1 -1
  414. package/build/component/generator/spfx/depsChecker/generatorChecker.js +4 -4
  415. package/build/component/generator/spfx/depsChecker/generatorChecker.js.map +1 -1
  416. package/build/component/generator/spfx/depsChecker/yoChecker.js +4 -4
  417. package/build/component/generator/spfx/depsChecker/yoChecker.js.map +1 -1
  418. package/build/component/generator/spfx/error.js +19 -19
  419. package/build/component/generator/spfx/error.js.map +1 -1
  420. package/build/component/generator/spfx/spfxGenerator.d.ts.map +1 -1
  421. package/build/component/generator/spfx/spfxGenerator.js +76 -76
  422. package/build/component/generator/spfx/spfxGenerator.js.map +1 -1
  423. package/build/component/generator/spfx/utils/constants.js +8 -8
  424. package/build/component/generator/spfx/utils/constants.js.map +1 -1
  425. package/build/component/generator/spfx/utils/telemetry-helper.js +1 -1
  426. package/build/component/generator/spfx/utils/telemetry-helper.js.map +1 -1
  427. package/build/component/generator/spfx/utils/utils.d.ts +1 -0
  428. package/build/component/generator/spfx/utils/utils.d.ts.map +1 -1
  429. package/build/component/generator/spfx/utils/utils.js +13 -9
  430. package/build/component/generator/spfx/utils/utils.js.map +1 -1
  431. package/build/component/generator/templates/ssrTabGenerator.js +1 -1
  432. package/build/component/generator/templates/ssrTabGenerator.js.map +1 -1
  433. package/build/component/generator/templates/templateGenerator.js +13 -13
  434. package/build/component/generator/templates/templateGenerator.js.map +1 -1
  435. package/build/component/generator/templates/templateNames.d.ts +1 -0
  436. package/build/component/generator/templates/templateNames.d.ts.map +1 -1
  437. package/build/component/generator/templates/templateNames.js +3 -9
  438. package/build/component/generator/templates/templateNames.js.map +1 -1
  439. package/build/component/generator/templates/templateReplaceMap.d.ts.map +1 -1
  440. package/build/component/generator/templates/templateReplaceMap.js +29 -9
  441. package/build/component/generator/templates/templateReplaceMap.js.map +1 -1
  442. package/build/component/generator/utils.js +6 -6
  443. package/build/component/generator/utils.js.map +1 -1
  444. package/build/component/local/constants.d.ts +108 -108
  445. package/build/component/local/localCertificateManager.d.ts.map +1 -1
  446. package/build/component/local/localCertificateManager.js +11 -9
  447. package/build/component/local/localCertificateManager.js.map +1 -1
  448. package/build/component/local/localEnvManager.js +2 -2
  449. package/build/component/local/localEnvManager.js.map +1 -1
  450. package/build/component/local/localTelemetryReporter.js +3 -3
  451. package/build/component/local/localTelemetryReporter.js.map +1 -1
  452. package/build/component/local/portChecker.js +4 -4
  453. package/build/component/local/portChecker.js.map +1 -1
  454. package/build/component/local/taskDefinition.js +3 -3
  455. package/build/component/local/taskDefinition.js.map +1 -1
  456. package/build/component/m365/constants.d.ts +3 -0
  457. package/build/component/m365/constants.d.ts.map +1 -1
  458. package/build/component/m365/constants.js +4 -1
  459. package/build/component/m365/constants.js.map +1 -1
  460. package/build/component/m365/errors.js +2 -2
  461. package/build/component/m365/errors.js.map +1 -1
  462. package/build/component/m365/launchHelper.d.ts +2 -2
  463. package/build/component/m365/launchHelper.d.ts.map +1 -1
  464. package/build/component/m365/launchHelper.js +25 -17
  465. package/build/component/m365/launchHelper.js.map +1 -1
  466. package/build/component/m365/packageService.js +19 -19
  467. package/build/component/m365/packageService.js.map +1 -1
  468. package/build/component/messages.js +7 -7
  469. package/build/component/messages.js.map +1 -1
  470. package/build/component/middleware/actionExecutionMW.js +8 -8
  471. package/build/component/middleware/actionExecutionMW.js.map +1 -1
  472. package/build/component/middleware/envMW.js +6 -6
  473. package/build/component/middleware/envMW.js.map +1 -1
  474. package/build/component/middleware/questionMW.js +3 -3
  475. package/build/component/middleware/questionMW.js.map +1 -1
  476. package/build/component/migrate.js +4 -4
  477. package/build/component/migrate.js.map +1 -1
  478. package/build/component/provisionUtils.js +24 -24
  479. package/build/component/provisionUtils.js.map +1 -1
  480. package/build/component/resource/botService/appStudio/appStudioClient.js +11 -11
  481. package/build/component/resource/botService/appStudio/appStudioClient.js.map +1 -1
  482. package/build/component/resource/botService/botRegistration/botFrameworkRegistration.d.ts.map +1 -1
  483. package/build/component/resource/botService/botRegistration/botFrameworkRegistration.js +7 -7
  484. package/build/component/resource/botService/botRegistration/botFrameworkRegistration.js.map +1 -1
  485. package/build/component/resource/botService/errors.js +2 -2
  486. package/build/component/resource/botService/errors.js.map +1 -1
  487. package/build/component/resource/botService/messages.js +6 -6
  488. package/build/component/resource/botService/messages.js.map +1 -1
  489. package/build/component/resource/botService/strings.js +1 -1
  490. package/build/component/resource/botService/strings.js.map +1 -1
  491. package/build/component/utils/ResourceGroupHelper.js +28 -28
  492. package/build/component/utils/ResourceGroupHelper.js.map +1 -1
  493. package/build/component/utils/azureResourceOperation.js +2 -2
  494. package/build/component/utils/azureResourceOperation.js.map +1 -1
  495. package/build/component/utils/common.d.ts +4 -3
  496. package/build/component/utils/common.d.ts.map +1 -1
  497. package/build/component/utils/common.js +17 -6
  498. package/build/component/utils/common.js.map +1 -1
  499. package/build/component/utils/depsChecker/common.js +2 -2
  500. package/build/component/utils/depsChecker/common.js.map +1 -1
  501. package/build/component/utils/envFunctionUtils.d.ts +12 -0
  502. package/build/component/utils/envFunctionUtils.d.ts.map +1 -0
  503. package/build/component/utils/envFunctionUtils.js +185 -0
  504. package/build/component/utils/envFunctionUtils.js.map +1 -0
  505. package/build/component/utils/envUtil.d.ts +1 -0
  506. package/build/component/utils/envUtil.d.ts.map +1 -1
  507. package/build/component/utils/envUtil.js +19 -19
  508. package/build/component/utils/envUtil.js.map +1 -1
  509. package/build/component/utils/fileOperation.js +3 -4
  510. package/build/component/utils/fileOperation.js.map +1 -1
  511. package/build/component/utils/metadataGraphPermssion.js +3 -3
  512. package/build/component/utils/metadataGraphPermssion.js.map +1 -1
  513. package/build/component/utils/metadataUtil.js +2 -2
  514. package/build/component/utils/metadataUtil.js.map +1 -1
  515. package/build/component/utils/pathUtils.js +5 -5
  516. package/build/component/utils/pathUtils.js.map +1 -1
  517. package/build/component/utils/settingsUtil.js +7 -7
  518. package/build/component/utils/settingsUtil.js.map +1 -1
  519. package/build/component/utils/teamsFxTelemetryReporter.js +1 -1
  520. package/build/component/utils/teamsFxTelemetryReporter.js.map +1 -1
  521. package/build/core/FxCore.d.ts +34 -0
  522. package/build/core/FxCore.d.ts.map +1 -1
  523. package/build/core/FxCore.js +715 -413
  524. package/build/core/FxCore.js.map +1 -1
  525. package/build/core/collaborator.js +65 -65
  526. package/build/core/collaborator.js.map +1 -1
  527. package/build/core/crypto.js +4 -4
  528. package/build/core/crypto.js.map +1 -1
  529. package/build/core/environment.js +7 -7
  530. package/build/core/environment.js.map +1 -1
  531. package/build/core/environmentName.d.ts +0 -1
  532. package/build/core/environmentName.d.ts.map +1 -1
  533. package/build/core/environmentName.js +0 -2
  534. package/build/core/environmentName.js.map +1 -1
  535. package/build/core/middleware/concurrentLocker.js +13 -13
  536. package/build/core/middleware/concurrentLocker.js.map +1 -1
  537. package/build/core/middleware/errorHandler.js +4 -4
  538. package/build/core/middleware/errorHandler.js.map +1 -1
  539. package/build/core/middleware/projectMigratorV3.js +78 -78
  540. package/build/core/middleware/projectMigratorV3.js.map +1 -1
  541. package/build/core/middleware/projectSettingsLoader.js +3 -3
  542. package/build/core/middleware/projectSettingsLoader.js.map +1 -1
  543. package/build/core/middleware/projectVersionChecker.js +9 -9
  544. package/build/core/middleware/projectVersionChecker.js.map +1 -1
  545. package/build/core/middleware/utils/MigrationUtils.js +4 -4
  546. package/build/core/middleware/utils/MigrationUtils.js.map +1 -1
  547. package/build/core/middleware/utils/appYmlGenerator.js +4 -4
  548. package/build/core/middleware/utils/appYmlGenerator.js.map +1 -1
  549. package/build/core/middleware/utils/debug/debugV3MigrationUtils.js +10 -10
  550. package/build/core/middleware/utils/debug/debugV3MigrationUtils.js.map +1 -1
  551. package/build/core/middleware/utils/debug/taskMigrator.js +72 -72
  552. package/build/core/middleware/utils/debug/taskMigrator.js.map +1 -1
  553. package/build/core/middleware/utils/migrationContext.js +1 -1
  554. package/build/core/middleware/utils/migrationContext.js.map +1 -1
  555. package/build/core/middleware/utils/v3MigrationUtils.js +9 -9
  556. package/build/core/middleware/utils/v3MigrationUtils.js.map +1 -1
  557. package/build/core/middleware/videoFilterAppBlocker.js +4 -4
  558. package/build/core/middleware/videoFilterAppBlocker.js.map +1 -1
  559. package/build/core/telemetry.js +1 -1
  560. package/build/core/telemetry.js.map +1 -1
  561. package/build/error/arm.js +10 -10
  562. package/build/error/arm.js.map +1 -1
  563. package/build/error/azure.js +20 -20
  564. package/build/error/azure.js.map +1 -1
  565. package/build/error/common.d.ts +4 -1
  566. package/build/error/common.d.ts.map +1 -1
  567. package/build/error/common.js +87 -75
  568. package/build/error/common.js.map +1 -1
  569. package/build/error/deploy.js +24 -24
  570. package/build/error/deploy.js.map +1 -1
  571. package/build/error/m365.js +6 -6
  572. package/build/error/m365.js.map +1 -1
  573. package/build/error/script.d.ts +2 -2
  574. package/build/error/script.d.ts.map +1 -1
  575. package/build/error/script.js +14 -8
  576. package/build/error/script.js.map +1 -1
  577. package/build/error/teamsApp.d.ts.map +1 -1
  578. package/build/error/teamsApp.js +10 -8
  579. package/build/error/teamsApp.js.map +1 -1
  580. package/build/error/upgrade.js +2 -2
  581. package/build/error/upgrade.js.map +1 -1
  582. package/build/error/yml.js +12 -12
  583. package/build/error/yml.js.map +1 -1
  584. package/build/index.d.ts +11 -7
  585. package/build/index.d.ts.map +1 -1
  586. package/build/index.js +19 -16
  587. package/build/index.js.map +1 -1
  588. package/build/question/constants.d.ts +38 -27
  589. package/build/question/constants.d.ts.map +1 -1
  590. package/build/question/constants.js +286 -294
  591. package/build/question/constants.js.map +1 -1
  592. package/build/question/create.d.ts +5 -3
  593. package/build/question/create.d.ts.map +1 -1
  594. package/build/question/create.js +338 -230
  595. package/build/question/create.js.map +1 -1
  596. package/build/question/generator.js +6 -2
  597. package/build/question/generator.js.map +1 -1
  598. package/build/question/index.d.ts +2 -0
  599. package/build/question/index.d.ts.map +1 -1
  600. package/build/question/index.js +21 -15
  601. package/build/question/index.js.map +1 -1
  602. package/build/question/inputs/AddPluginInputs.d.ts +8 -4
  603. package/build/question/inputs/AddPluginInputs.d.ts.map +1 -1
  604. package/build/question/inputs/CreateProjectInputs.d.ts +10 -4
  605. package/build/question/inputs/CreateProjectInputs.d.ts.map +1 -1
  606. package/build/question/inputs/SyncManifestInputs.d.ts +16 -0
  607. package/build/question/inputs/SyncManifestInputs.d.ts.map +1 -0
  608. package/build/question/inputs/SyncManifestInputs.js +5 -0
  609. package/build/question/inputs/SyncManifestInputs.js.map +1 -0
  610. package/build/question/inputs/UninstallInputs.d.ts +22 -0
  611. package/build/question/inputs/UninstallInputs.d.ts.map +1 -0
  612. package/build/question/inputs/UninstallInputs.js +5 -0
  613. package/build/question/inputs/UninstallInputs.js.map +1 -0
  614. package/build/question/inputs/index.d.ts +2 -0
  615. package/build/question/inputs/index.d.ts.map +1 -1
  616. package/build/question/inputs/index.js +2 -0
  617. package/build/question/inputs/index.js.map +1 -1
  618. package/build/question/options/AddPluginOptions.d.ts.map +1 -1
  619. package/build/question/options/AddPluginOptions.js +19 -10
  620. package/build/question/options/AddPluginOptions.js.map +1 -1
  621. package/build/question/options/CreateProjectOptions.d.ts.map +1 -1
  622. package/build/question/options/CreateProjectOptions.js +27 -24
  623. package/build/question/options/CreateProjectOptions.js.map +1 -1
  624. package/build/question/options/SyncManifestOptions.d.ts +10 -0
  625. package/build/question/options/SyncManifestOptions.d.ts.map +1 -0
  626. package/build/question/options/SyncManifestOptions.js +28 -0
  627. package/build/question/options/SyncManifestOptions.js.map +1 -0
  628. package/build/question/options/UninstallOptions.d.ts +10 -0
  629. package/build/question/options/UninstallOptions.d.ts.map +1 -0
  630. package/build/question/options/UninstallOptions.js +44 -0
  631. package/build/question/options/UninstallOptions.js.map +1 -0
  632. package/build/question/options/index.d.ts +2 -0
  633. package/build/question/options/index.d.ts.map +1 -1
  634. package/build/question/options/index.js +2 -0
  635. package/build/question/options/index.js.map +1 -1
  636. package/build/question/other.d.ts +2 -1
  637. package/build/question/other.d.ts.map +1 -1
  638. package/build/question/other.js +228 -81
  639. package/build/question/other.js.map +1 -1
  640. package/build/tsconfig.tsbuildinfo +1 -0
  641. package/build/ui/visitor.d.ts.map +1 -1
  642. package/build/ui/visitor.js +41 -27
  643. package/build/ui/visitor.js.map +1 -1
  644. package/package.json +15 -10
  645. package/resource/dict.zip +0 -0
  646. package/resource/package.nls.json +180 -133
  647. package/resource/yaml-schema/v1.6/yaml.schema.json +13 -0
  648. package/resource/yaml-schema/v1.7/yaml.schema.json +1842 -0
  649. package/resource/yaml-schema/yaml.schema.json +13 -0
  650. package/templates/fallback/common.zip +0 -0
  651. package/templates/fallback/csharp.zip +0 -0
  652. package/templates/fallback/js.zip +0 -0
  653. package/templates/fallback/python.zip +0 -0
  654. package/templates/fallback/ts.zip +0 -0
  655. package/build/component/generator/copilotPlugin/generator.d.ts +0 -21
  656. package/build/component/generator/copilotPlugin/generator.d.ts.map +0 -1
  657. package/build/component/generator/copilotPlugin/generator.js +0 -399
  658. package/build/component/generator/copilotPlugin/generator.js.map +0 -1
  659. package/build/component/generator/copilotPlugin/helper.d.ts.map +0 -1
  660. package/build/component/generator/copilotPlugin/helper.js.map +0 -1
  661. package/build/component/generator/officeXMLAddin/generator.d.ts.map +0 -1
  662. package/build/component/generator/officeXMLAddin/generator.js +0 -173
  663. package/build/component/generator/officeXMLAddin/generator.js.map +0 -1
@@ -2,14 +2,13 @@
2
2
  // Copyright (c) Microsoft Corporation.
3
3
  // Licensed under the MIT license.
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.getEnvName = exports.updateForCustomApi = exports.formatValidationErrors = exports.isYamlSpecFile = exports.convertSpecParserErrorToFxError = exports.generateScaffoldingSummary = exports.logValidationResults = exports.listPluginExistingOperations = exports.listOperations = exports.defaultPluginManifestFileName = exports.defaultApiSpecJsonFileName = exports.defaultApiSpecYamlFileName = exports.defaultApiSpecFolderName = exports.invalidApiSpecErrorName = exports.specParserGenerateResultWarningsTelemetryProperty = exports.specParserGenerateResultAllSuccessTelemetryProperty = exports.specParserGenerateResultTelemetryEvent = exports.copilotPluginParserOptions = void 0;
5
+ exports.getEnvName = exports.updateForCustomApi = exports.formatValidationErrors = exports.convertSpecParserErrorToFxError = exports.generateScaffoldingSummary = exports.logValidationResults = exports.generateFromApiSpec = exports.listPluginExistingOperations = exports.listOperations = exports.invalidApiSpecErrorName = exports.specParserGenerateResultWarningsTelemetryProperty = exports.specParserGenerateResultAllSuccessTelemetryProperty = exports.specParserGenerateResultTelemetryEvent = exports.getParserOptions = void 0;
6
6
  const tslib_1 = require("tslib");
7
7
  /**
8
8
  * @author yuqzho@microsoft.com
9
9
  */
10
10
  const m365_spec_parser_1 = require("@microsoft/m365-spec-parser");
11
11
  const teamsfx_api_1 = require("@microsoft/teamsfx-api");
12
- const axios_1 = tslib_1.__importDefault(require("axios"));
13
12
  const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
14
13
  const os_1 = require("os");
15
14
  const path_1 = tslib_1.__importDefault(require("path"));
@@ -20,55 +19,84 @@ const constants_1 = require("../../../question/constants");
20
19
  const constant_1 = require("../../configManager/constant");
21
20
  const ManifestUtils_1 = require("../../driver/teamsApp/utils/ManifestUtils");
22
21
  const PluginManifestUtils_1 = require("../../driver/teamsApp/utils/PluginManifestUtils");
23
- exports.copilotPluginParserOptions = {
24
- allowAPIKeyAuth: false,
25
- allowBearerTokenAuth: featureFlags_1.featureFlagManager.getBooleanValue(featureFlags_1.FeatureFlags.CopilotAuth),
26
- allowMultipleParameters: true,
27
- allowOauth2: featureFlags_1.featureFlagManager.getBooleanValue(featureFlags_1.FeatureFlags.CopilotAuth),
28
- projectType: m365_spec_parser_1.ProjectType.Copilot,
29
- allowMissingId: true,
30
- allowSwagger: true,
31
- allowMethods: ["get", "post", "put", "delete", "patch", "head", "connect", "options", "trace"],
32
- allowResponseSemantics: true,
33
- allowConversationStarters: true,
34
- allowConfirmation: true,
35
- };
22
+ const telemetry_1 = require("../../../common/telemetry");
23
+ const util = tslib_1.__importStar(require("util"));
24
+ const constants_2 = require("../../../common/constants");
25
+ function getParserOptions(type, isDeclarativeCopilot) {
26
+ return type === m365_spec_parser_1.ProjectType.Copilot
27
+ ? {
28
+ isGptPlugin: isDeclarativeCopilot,
29
+ allowAPIKeyAuth: false,
30
+ allowBearerTokenAuth: true,
31
+ allowMultipleParameters: true,
32
+ allowOauth2: true,
33
+ projectType: m365_spec_parser_1.ProjectType.Copilot,
34
+ allowMissingId: true,
35
+ allowSwagger: true,
36
+ allowMethods: [
37
+ "get",
38
+ "post",
39
+ "put",
40
+ "delete",
41
+ "patch",
42
+ "head",
43
+ "connect",
44
+ "options",
45
+ "trace",
46
+ ],
47
+ allowResponseSemantics: true,
48
+ allowConversationStarters: true,
49
+ allowConfirmation: false, // confirmation is not stable for public preview in Sydney, so it's temporarily set to false
50
+ }
51
+ : {
52
+ projectType: type,
53
+ allowBearerTokenAuth: true,
54
+ allowMultipleParameters: true,
55
+ allowOauth2: featureFlags_1.featureFlagManager.getBooleanValue(featureFlags_1.FeatureFlags.SMEOAuth),
56
+ };
57
+ }
58
+ exports.getParserOptions = getParserOptions;
36
59
  exports.specParserGenerateResultTelemetryEvent = "spec-parser-generate-result";
37
60
  exports.specParserGenerateResultAllSuccessTelemetryProperty = "all-success";
38
61
  exports.specParserGenerateResultWarningsTelemetryProperty = "warnings";
39
62
  exports.invalidApiSpecErrorName = "invalid-api-spec";
40
63
  const apiSpecNotUsedInPlugin = "api-spec-not-used-in-plugin";
41
- exports.defaultApiSpecFolderName = "apiSpecificationFile";
42
- exports.defaultApiSpecYamlFileName = "openapi.yaml";
43
- exports.defaultApiSpecJsonFileName = "openapi.json";
44
- exports.defaultPluginManifestFileName = "ai-plugin.json";
45
64
  async function listOperations(context, apiSpecUrl, inputs, includeExistingAPIs = true, shouldLogWarning = true, existingCorrelationId) {
46
- const isPlugin = inputs[constants_1.QuestionNames.Capabilities] === constants_1.copilotPluginApiSpecOptionId;
65
+ const isPlugin = inputs[constants_1.QuestionNames.ApiPluginType] === constants_1.apiPluginApiSpecOptionId;
47
66
  const isCustomApi = inputs[constants_1.QuestionNames.CustomCopilotRag] === constants_1.CustomCopilotRagOptions.customApi().id;
67
+ const projectType = isPlugin
68
+ ? m365_spec_parser_1.ProjectType.Copilot
69
+ : isCustomApi
70
+ ? m365_spec_parser_1.ProjectType.TeamsAi
71
+ : m365_spec_parser_1.ProjectType.SME;
48
72
  try {
49
- const specParser = new m365_spec_parser_1.SpecParser(apiSpecUrl, isPlugin
50
- ? exports.copilotPluginParserOptions
51
- : isCustomApi
52
- ? {
53
- projectType: m365_spec_parser_1.ProjectType.TeamsAi,
54
- }
55
- : {
56
- allowBearerTokenAuth: true,
57
- allowMultipleParameters: true,
58
- allowOauth2: featureFlags_1.featureFlagManager.getBooleanValue(featureFlags_1.FeatureFlags.SMEOAuth),
59
- });
73
+ const specParser = new m365_spec_parser_1.SpecParser(apiSpecUrl, getParserOptions(projectType));
60
74
  const validationRes = await specParser.validate();
61
75
  validationRes.errors = formatValidationErrors(validationRes.errors, inputs);
62
- logValidationResults(validationRes.errors, validationRes.warnings, context, shouldLogWarning, false, existingCorrelationId);
76
+ logValidationResults(projectType, validationRes.errors, validationRes.warnings, context, shouldLogWarning, false, validationRes.specHash, existingCorrelationId);
63
77
  if (validationRes.status === m365_spec_parser_1.ValidationStatus.Error) {
64
- return teamsfx_api_1.err(validationRes.errors);
78
+ return (0, teamsfx_api_1.err)(validationRes.errors);
65
79
  }
66
80
  const listResult = await specParser.list();
81
+ const invalidAPIs = listResult.APIs.filter((value) => !value.isValid);
82
+ for (const invalidAPI of invalidAPIs) {
83
+ context.logProvider.warning(`${invalidAPI.api} ${(0, localizeUtils_1.getLocalizedString)("core.copilotPlugin.list.unsupportedBecause")} ${invalidAPI.reason.map(mapInvalidReasonToMessage).join(", ")}`);
84
+ }
85
+ const bearerTokenAuthAPIs = listResult.APIs.filter((api) => api.auth && m365_spec_parser_1.Utils.isBearerTokenAuth(api.auth.authScheme));
86
+ const oauth2AuthAPIs = listResult.APIs.filter((api) => api.auth && m365_spec_parser_1.Utils.isOAuthWithAuthCodeFlow(api.auth.authScheme));
87
+ const otherAuthAPIs = listResult.APIs.filter((api) => api.auth &&
88
+ !m365_spec_parser_1.Utils.isOAuthWithAuthCodeFlow(api.auth.authScheme) &&
89
+ !m365_spec_parser_1.Utils.isBearerTokenAuth(api.auth.authScheme));
67
90
  let operations = listResult.APIs.filter((value) => value.isValid);
68
- context.telemetryReporter.sendTelemetryEvent("spec-parser-list-apis-result" /* listApis */, {
69
- ["valid-apis-count" /* validApisCount */]: listResult.validAPICount.toString(),
70
- ["all-apis-count" /* allApisCount */]: listResult.allAPICount.toString(),
71
- ["is-from-adding-api" /* isFromAddingApi */]: (!includeExistingAPIs).toString(),
91
+ context.telemetryReporter.sendTelemetryEvent("spec-parser-list-apis-result" /* telemetryEvents.listApis */, {
92
+ ["generate-type" /* telemetryProperties.generateType */]: projectType.toString(),
93
+ ["valid-apis-count" /* telemetryProperties.validApisCount */]: listResult.validAPICount.toString(),
94
+ ["all-apis-count" /* telemetryProperties.allApisCount */]: listResult.allAPICount.toString(),
95
+ ["is-from-adding-api" /* telemetryProperties.isFromAddingApi */]: (!includeExistingAPIs).toString(),
96
+ ["bearer-token-auth-count" /* telemetryProperties.bearerTokenAuthCount */]: bearerTokenAuthAPIs.length.toString(),
97
+ ["oauth2-auth-count" /* telemetryProperties.oauth2AuthCount */]: oauth2AuthAPIs.length.toString(),
98
+ ["other-auth-count" /* telemetryProperties.otherAuthCount */]: otherAuthAPIs.length.toString(),
99
+ ["spec-hash" /* telemetryProperties.specHash */]: validationRes.specHash,
72
100
  });
73
101
  // Filter out exsiting APIs
74
102
  if (!includeExistingAPIs) {
@@ -99,8 +127,8 @@ async function listOperations(context, apiSpecUrl, inputs, includeExistingAPIs =
99
127
  content: "",
100
128
  },
101
129
  ], inputs);
102
- logValidationResults(errors, [], context, true, false, existingCorrelationId);
103
- return teamsfx_api_1.err(errors);
130
+ logValidationResults(projectType, errors, [], context, true, false, validationRes.specHash, existingCorrelationId);
131
+ return (0, teamsfx_api_1.err)(errors);
104
132
  }
105
133
  operations = operations.filter((operation) => !existingOperations.includes(operation.api));
106
134
  // No extra API can be added
@@ -111,8 +139,8 @@ async function listOperations(context, apiSpecUrl, inputs, includeExistingAPIs =
111
139
  content: "",
112
140
  },
113
141
  ], inputs);
114
- logValidationResults(errors, [], context, true, false, existingCorrelationId);
115
- return teamsfx_api_1.err(errors);
142
+ logValidationResults(projectType, errors, [], context, true, false, validationRes.specHash, existingCorrelationId);
143
+ return (0, teamsfx_api_1.err)(errors);
116
144
  }
117
145
  }
118
146
  else {
@@ -120,7 +148,7 @@ async function listOperations(context, apiSpecUrl, inputs, includeExistingAPIs =
120
148
  }
121
149
  }
122
150
  const sortedOperations = sortOperations(operations);
123
- return teamsfx_api_1.ok(sortedOperations);
151
+ return (0, teamsfx_api_1.ok)(sortedOperations);
124
152
  }
125
153
  catch (e) {
126
154
  if (e instanceof m365_spec_parser_1.SpecParserError) {
@@ -141,11 +169,11 @@ function sortOperations(operations) {
141
169
  label: operation.api,
142
170
  groupName: arr[0],
143
171
  detail: !operation.auth
144
- ? localizeUtils_1.getLocalizedString("core.copilotPlugin.api.noAuth")
172
+ ? (0, localizeUtils_1.getLocalizedString)("core.copilotPlugin.api.noAuth")
145
173
  : m365_spec_parser_1.Utils.isBearerTokenAuth(operation.auth.authScheme)
146
- ? localizeUtils_1.getLocalizedString("core.copilotPlugin.api.apiKeyAuth")
174
+ ? (0, localizeUtils_1.getLocalizedString)("core.copilotPlugin.api.apiKeyAuth")
147
175
  : m365_spec_parser_1.Utils.isOAuthWithAuthCodeFlow(operation.auth.authScheme)
148
- ? localizeUtils_1.getLocalizedString("core.copilotPlugin.api.oauth")
176
+ ? (0, localizeUtils_1.getLocalizedString)("core.copilotPlugin.api.oauth")
149
177
  : "",
150
178
  data: {
151
179
  serverUrl: operation.server,
@@ -186,28 +214,100 @@ async function listPluginExistingOperations(manifest, teamsManifestPath, destina
186
214
  }
187
215
  }
188
216
  if (!apiSpecFilePath) {
189
- throw new teamsfx_api_1.UserError("listPluginExistingOperations", apiSpecNotUsedInPlugin, localizeUtils_1.getLocalizedString("error.copilotPlugin.apiSpecNotUsedInPlugin", destinationApiSpecFilePath), localizeUtils_1.getLocalizedString("error.copilotPlugin.apiSpecNotUsedInPlugin", destinationApiSpecFilePath));
217
+ throw new teamsfx_api_1.UserError("listPluginExistingOperations", apiSpecNotUsedInPlugin, (0, localizeUtils_1.getLocalizedString)("error.copilotPlugin.apiSpecNotUsedInPlugin", destinationApiSpecFilePath), (0, localizeUtils_1.getLocalizedString)("error.copilotPlugin.apiSpecNotUsedInPlugin", destinationApiSpecFilePath));
190
218
  }
191
- const specParser = new m365_spec_parser_1.SpecParser(apiSpecFilePath, exports.copilotPluginParserOptions);
219
+ const specParser = new m365_spec_parser_1.SpecParser(apiSpecFilePath, getParserOptions(m365_spec_parser_1.ProjectType.Copilot));
192
220
  const listResult = await specParser.list();
193
221
  return listResult.APIs.map((o) => o.api);
194
222
  }
195
223
  exports.listPluginExistingOperations = listPluginExistingOperations;
196
- function logValidationResults(errors, warnings, context, shouldLogWarning, shouldSkipTelemetry, existingCorrelationId) {
224
+ async function generateFromApiSpec(specParser, teamsManifestPath, inputs, context, sourceComponent, projectType, outputFilePath) {
225
+ const operations = featureFlags_1.featureFlagManager.getBooleanValue(featureFlags_1.FeatureFlags.KiotaIntegration) &&
226
+ inputs[constants_1.QuestionNames.ApiPluginManifestPath]
227
+ ? (await specParser.list()).APIs.filter((value) => value.isValid).map((value) => value.api)
228
+ : inputs[constants_1.QuestionNames.ApiOperation];
229
+ const validationRes = await specParser.validate();
230
+ const warnings = validationRes.warnings;
231
+ const operationIdWarning = warnings.find((w) => w.type === m365_spec_parser_1.WarningType.OperationIdMissing);
232
+ if (operationIdWarning && operationIdWarning.data) {
233
+ const apisMissingOperationId = operationIdWarning.data.filter((api) => operations.includes(api));
234
+ if (apisMissingOperationId.length > 0) {
235
+ operationIdWarning.content = util.format((0, localizeUtils_1.getLocalizedString)("core.common.MissingOperationId"), apisMissingOperationId.join(", "));
236
+ delete operationIdWarning.data;
237
+ }
238
+ else {
239
+ warnings.splice(warnings.indexOf(operationIdWarning), 1);
240
+ }
241
+ }
242
+ const specVersionWarning = warnings.find((w) => w.type === m365_spec_parser_1.WarningType.ConvertSwaggerToOpenAPI);
243
+ if (specVersionWarning) {
244
+ specVersionWarning.content = ""; // We don't care content of this warning
245
+ }
246
+ if (validationRes.status === m365_spec_parser_1.ValidationStatus.Error) {
247
+ logValidationResults(projectType, validationRes.errors, warnings, context, false, true, validationRes.specHash);
248
+ const errorMessage = inputs.platform === teamsfx_api_1.Platform.VSCode
249
+ ? (0, localizeUtils_1.getLocalizedString)("core.createProjectQuestion.apiSpec.multipleValidationErrors.vscode.message")
250
+ : (0, localizeUtils_1.getLocalizedString)("core.createProjectQuestion.apiSpec.multipleValidationErrors.message");
251
+ return (0, teamsfx_api_1.err)(new teamsfx_api_1.UserError(sourceComponent, exports.invalidApiSpecErrorName, errorMessage, errorMessage));
252
+ }
253
+ try {
254
+ const generateResult = projectType === m365_spec_parser_1.ProjectType.Copilot
255
+ ? await specParser.generateForCopilot(teamsManifestPath, operations, outputFilePath.destinationApiSpecFilePath, outputFilePath.pluginManifestFilePath, inputs[constants_1.QuestionNames.ApiPluginManifestPath])
256
+ : await specParser.generate(teamsManifestPath, operations, outputFilePath.destinationApiSpecFilePath, projectType === m365_spec_parser_1.ProjectType.TeamsAi ? undefined : outputFilePath.responseTemplateFolder);
257
+ // Send SpecParser.generate() warnings
258
+ context.telemetryReporter.sendTelemetryEvent(exports.specParserGenerateResultTelemetryEvent, {
259
+ ["generate-type" /* telemetryProperties.generateType */]: projectType.toString(),
260
+ [exports.specParserGenerateResultAllSuccessTelemetryProperty]: generateResult.allSuccess.toString(),
261
+ [exports.specParserGenerateResultWarningsTelemetryProperty]: generateResult.warnings
262
+ .map((w) => w.type.toString() + ": " + w.content)
263
+ .join(";"),
264
+ [telemetry_1.TelemetryProperty.Component]: sourceComponent,
265
+ });
266
+ if (generateResult.warnings && generateResult.warnings.length > 0) {
267
+ generateResult.warnings.find((o) => {
268
+ if (o.type === m365_spec_parser_1.WarningType.OperationOnlyContainsOptionalParam) {
269
+ o.content = ""; // We don't care content of this warning
270
+ }
271
+ });
272
+ warnings.push(...generateResult.warnings);
273
+ }
274
+ return (0, teamsfx_api_1.ok)({ warnings });
275
+ }
276
+ catch (e) {
277
+ let error;
278
+ if (e instanceof m365_spec_parser_1.SpecParserError) {
279
+ error = convertSpecParserErrorToFxError(e);
280
+ }
281
+ else {
282
+ error = (0, error_1.assembleError)(e, sourceComponent);
283
+ }
284
+ return (0, teamsfx_api_1.err)(error);
285
+ }
286
+ }
287
+ exports.generateFromApiSpec = generateFromApiSpec;
288
+ function logValidationResults(projectType, errors, warnings, context, shouldLogWarning, shouldSkipTelemetry, specHash, existingCorrelationId) {
197
289
  if (!shouldSkipTelemetry) {
198
290
  const properties = {
199
- ["validation-status" /* validationStatus */]: errors.length !== 0 ? "error" : warnings.length !== 0 ? "warning" : "success",
200
- ["validation-errors" /* validationErrors */]: errors
291
+ ["validation-status" /* telemetryProperties.validationStatus */]: errors.length !== 0 ? "error" : warnings.length !== 0 ? "warning" : "success",
292
+ ["validation-errors" /* telemetryProperties.validationErrors */]: errors
201
293
  .map((error) => formatTelemetryValidationProperty(error))
202
294
  .join(";"),
203
- ["validation-warnings" /* validationWarnings */]: warnings
295
+ ["validation-warnings" /* telemetryProperties.validationWarnings */]: warnings
204
296
  .map((warn) => formatTelemetryValidationProperty(warn))
205
297
  .join(";"),
298
+ ["project-type" /* telemetryProperties.projectType */]: projectType.toString(),
206
299
  };
300
+ if (specHash) {
301
+ properties["spec-hash" /* telemetryProperties.specHash */] = specHash;
302
+ }
303
+ const specNotValidError = errors.find((error) => error.type === m365_spec_parser_1.ErrorType.SpecNotValid);
304
+ if (specNotValidError) {
305
+ properties[telemetry_1.ApiSpecTelemetryPropertis.SpecNotValidDetails] = specNotValidError.content;
306
+ }
207
307
  if (existingCorrelationId) {
208
308
  properties["correlation-id"] = existingCorrelationId;
209
309
  }
210
- context.telemetryReporter.sendTelemetryEvent("validate-api-spec" /* validateApiSpec */, properties);
310
+ context.telemetryReporter.sendTelemetryEvent("validate-api-spec" /* telemetryEvents.validateApiSpec */, properties);
211
311
  }
212
312
  if (errors.length === 0 && (warnings.length === 0 || !shouldLogWarning)) {
213
313
  return;
@@ -229,23 +329,41 @@ function logValidationResults(errors, warnings, context, shouldLogWarning, shoul
229
329
  const warns = warnings.length;
230
330
  const summaryStr = [];
231
331
  if (failed > 0) {
232
- summaryStr.push(localizeUtils_1.getLocalizedString("core.copilotPlugin.validate.summary.validate.failed", failed));
332
+ summaryStr.push((0, localizeUtils_1.getLocalizedString)("core.copilotPlugin.validate.summary.validate.failed", failed));
233
333
  }
234
334
  if (warns > 0 && shouldLogWarning) {
235
- summaryStr.push(localizeUtils_1.getLocalizedString("core.copilotPlugin.validate.summary.validate.warning", warns));
335
+ summaryStr.push((0, localizeUtils_1.getLocalizedString)("core.copilotPlugin.validate.summary.validate.warning", warns));
236
336
  }
237
337
  const outputMessage = os_1.EOL +
238
- localizeUtils_1.getLocalizedString("core.copilotPlugin.validate.apiSpec.summary", summaryStr.join(", "), errorMessage, warningMessage);
338
+ (0, localizeUtils_1.getLocalizedString)("core.copilotPlugin.validate.apiSpec.summary", summaryStr.join(", "), errorMessage, warningMessage);
239
339
  void context.logProvider.info(outputMessage);
240
340
  }
241
341
  exports.logValidationResults = logValidationResults;
242
- function generateScaffoldingSummary(warnings, teamsManifest, apiSpecFilePath) {
342
+ /**
343
+ * Generate scaffolding warning summary.
344
+ * @param warnings warnings returned from spec-parser.
345
+ * @param teamsManifest Teams manifest.
346
+ * @param apiSpecFilePath API spec path relative of project path.
347
+ * @param pluginManifestPath Plugin manifest path relative of project path.
348
+ * @param projectPath Project path.
349
+ * @returns Warning message.
350
+ */
351
+ async function generateScaffoldingSummary(warnings, teamsManifest, apiSpecFilePath, pluginManifestPath, projectPath) {
243
352
  const apiSpecWarningMessage = formatApiSpecValidationWarningMessage(warnings, apiSpecFilePath, teamsManifest);
244
353
  const manifestWarningResult = validateTeamsManifestLength(teamsManifest, warnings);
245
354
  const manifestWarningMessage = manifestWarningResult.map((warn) => {
246
355
  return `${constant_1.SummaryConstant.NotExecuted} ${warn}`;
247
356
  });
248
- if (apiSpecWarningMessage.length || manifestWarningMessage.length) {
357
+ let pluginWarningMessage = [];
358
+ if (pluginManifestPath) {
359
+ const pluginManifestWarningResult = await validatePluginManifestLength(pluginManifestPath, projectPath, warnings);
360
+ pluginWarningMessage = pluginManifestWarningResult.map((warn) => {
361
+ return `${constant_1.SummaryConstant.NotExecuted} ${warn}`;
362
+ });
363
+ }
364
+ if (apiSpecWarningMessage.length ||
365
+ manifestWarningMessage.length ||
366
+ pluginWarningMessage.length) {
249
367
  let details = "";
250
368
  if (apiSpecWarningMessage.length) {
251
369
  details += os_1.EOL + apiSpecWarningMessage.join(os_1.EOL);
@@ -253,7 +371,10 @@ function generateScaffoldingSummary(warnings, teamsManifest, apiSpecFilePath) {
253
371
  if (manifestWarningMessage.length) {
254
372
  details += os_1.EOL + manifestWarningMessage.join(os_1.EOL);
255
373
  }
256
- return localizeUtils_1.getLocalizedString("core.copilotPlugin.scaffold.summary", details);
374
+ if (pluginWarningMessage.length) {
375
+ details += os_1.EOL + pluginWarningMessage.join(os_1.EOL);
376
+ }
377
+ return (0, localizeUtils_1.getLocalizedString)("core.copilotPlugin.scaffold.summary", details);
257
378
  }
258
379
  else {
259
380
  return "";
@@ -265,12 +386,12 @@ function formatApiSpecValidationWarningMessage(specWarnings, apiSpecFileName, te
265
386
  const operationIdWarning = specWarnings.find((w) => w.type === m365_spec_parser_1.WarningType.OperationIdMissing);
266
387
  if (operationIdWarning) {
267
388
  const isApiMe = teamsfx_api_1.ManifestUtil.parseCommonProperties(teamsManifest).isApiME;
268
- resultWarnings.push(localizeUtils_1.getLocalizedString("core.copilotPlugin.scaffold.summary.warning.operationId", `${constant_1.SummaryConstant.NotExecuted} ${operationIdWarning.content}`, isApiMe ? teamsfx_api_1.ManifestTemplateFileName : apiSpecFileName));
389
+ resultWarnings.push((0, localizeUtils_1.getLocalizedString)("core.copilotPlugin.scaffold.summary.warning.operationId", `${constant_1.SummaryConstant.NotExecuted} ${operationIdWarning.content}`, isApiMe ? teamsfx_api_1.ManifestTemplateFileName : apiSpecFileName));
269
390
  }
270
391
  const swaggerWarning = specWarnings.find((w) => w.type === m365_spec_parser_1.WarningType.ConvertSwaggerToOpenAPI);
271
392
  if (swaggerWarning) {
272
393
  resultWarnings.push(`${constant_1.SummaryConstant.NotExecuted} ` +
273
- localizeUtils_1.getLocalizedString("core.copilotPlugin.scaffold.summary.warning.swaggerVersion", apiSpecFileName));
394
+ (0, localizeUtils_1.getLocalizedString)("core.copilotPlugin.scaffold.summary.warning.swaggerVersion", apiSpecFileName));
274
395
  }
275
396
  return resultWarnings;
276
397
  }
@@ -298,8 +419,8 @@ function validateTeamsManifestLength(teamsManifest, warnings) {
298
419
  resultWarnings.push(formatLengthExceedingErrorMessage("/description/short", descriptionShortLimit));
299
420
  }
300
421
  if (!((_b = teamsManifest.description.full) === null || _b === void 0 ? void 0 : _b.length)) {
301
- resultWarnings.push(localizeUtils_1.getLocalizedString("core.copilotPlugin.scaffold.summary.warning.teamsManifest.missingFullDescription") +
302
- localizeUtils_1.getLocalizedString("core.copilotPlugin.scaffold.summary.warning.teamsManifest.mitigation", "full/description", path_1.default.join(teamsfx_api_1.AppPackageFolderName, teamsfx_api_1.ManifestTemplateFileName)));
422
+ resultWarnings.push((0, localizeUtils_1.getLocalizedString)("core.copilotPlugin.scaffold.summary.warning.teamsManifest.missingFullDescription") +
423
+ (0, localizeUtils_1.getLocalizedString)("core.copilotPlugin.scaffold.summary.warning.teamsManifest.mitigation", "full/description", path_1.default.join(teamsfx_api_1.AppPackageFolderName, teamsfx_api_1.ManifestTemplateFileName)));
303
424
  }
304
425
  if (teamsManifest.description.full.length > descriptionFullLimit) {
305
426
  resultWarnings.push(formatLengthExceedingErrorMessage("/description/full", descriptionFullLimit));
@@ -309,8 +430,8 @@ function validateTeamsManifestLength(teamsManifest, warnings) {
309
430
  const optionalParamsOnlyWarnings = warnings.filter((o) => o.type === m365_spec_parser_1.WarningType.OperationOnlyContainsOptionalParam);
310
431
  if (optionalParamsOnlyWarnings) {
311
432
  for (const optionalParamsOnlyWarning of optionalParamsOnlyWarnings) {
312
- resultWarnings.push(localizeUtils_1.getLocalizedString("core.copilotPlugin.scaffold.summary.warning.api.optionalParametersOnly", optionalParamsOnlyWarning.data.commandId, optionalParamsOnlyWarning.data.commandId) +
313
- localizeUtils_1.getLocalizedString("core.copilotPlugin.scaffold.summary.warning.api.optionalParametersOnly.mitigation", optionalParamsOnlyWarning.data.parameterName, optionalParamsOnlyWarning.data.commandId, path_1.default.join(teamsfx_api_1.AppPackageFolderName, teamsfx_api_1.ManifestTemplateFileName), path_1.default.join(teamsfx_api_1.AppPackageFolderName, (_c = teamsManifest.composeExtensions[0].apiSpecificationFile) !== null && _c !== void 0 ? _c : "")));
433
+ resultWarnings.push((0, localizeUtils_1.getLocalizedString)("core.copilotPlugin.scaffold.summary.warning.api.optionalParametersOnly", optionalParamsOnlyWarning.data.commandId, optionalParamsOnlyWarning.data.commandId) +
434
+ (0, localizeUtils_1.getLocalizedString)("core.copilotPlugin.scaffold.summary.warning.api.optionalParametersOnly.mitigation", optionalParamsOnlyWarning.data.parameterName, optionalParamsOnlyWarning.data.commandId, path_1.default.join(teamsfx_api_1.AppPackageFolderName, teamsfx_api_1.ManifestTemplateFileName), path_1.default.join(teamsfx_api_1.AppPackageFolderName, (_c = teamsManifest.composeExtensions[0].apiSpecificationFile) !== null && _c !== void 0 ? _c : "")));
314
435
  }
315
436
  }
316
437
  const commands = teamsManifest.composeExtensions[0].commands;
@@ -318,8 +439,8 @@ function validateTeamsManifestLength(teamsManifest, warnings) {
318
439
  if (command.type === "query") {
319
440
  if (!command.apiResponseRenderingTemplateFile) {
320
441
  const errorDetail = (_d = warnings.find((w) => w.type === m365_spec_parser_1.WarningType.GenerateCardFailed && w.data === command.id)) === null || _d === void 0 ? void 0 : _d.content;
321
- resultWarnings.push(localizeUtils_1.getLocalizedString("core.copilotPlugin.scaffold.summary.warning.teamsManifest.missingCardTemlate", "apiResponseRenderingTemplateFile", command.id) +
322
- localizeUtils_1.getLocalizedString("core.copilotPlugin.scaffold.summary.warning.teamsManifest.missingCardTemlate.mitigation", teamsfx_api_1.AppPackageFolderName, `composeExtensions/commands/${command.id}/apiResponseRenderingTemplateFile`, path_1.default.join(teamsfx_api_1.AppPackageFolderName, teamsfx_api_1.ManifestTemplateFileName)) +
442
+ resultWarnings.push((0, localizeUtils_1.getLocalizedString)("core.copilotPlugin.scaffold.summary.warning.teamsManifest.missingCardTemlate", "apiResponseRenderingTemplateFile", command.id) +
443
+ (0, localizeUtils_1.getLocalizedString)("core.copilotPlugin.scaffold.summary.warning.teamsManifest.missingCardTemlate.mitigation", teamsfx_api_1.AppPackageFolderName, `composeExtensions/commands/${command.id}/apiResponseRenderingTemplateFile`, path_1.default.join(teamsfx_api_1.AppPackageFolderName, teamsfx_api_1.ManifestTemplateFileName)) +
323
444
  (errorDetail ? os_1.EOL + errorDetail : ""));
324
445
  }
325
446
  }
@@ -327,34 +448,41 @@ function validateTeamsManifestLength(teamsManifest, warnings) {
327
448
  }
328
449
  return resultWarnings;
329
450
  }
451
+ async function validatePluginManifestLength(pluginManifestPath, projectPath, warnings) {
452
+ const functionDescriptionLimit = 100;
453
+ const resultWarnings = [];
454
+ const manifestRes = await PluginManifestUtils_1.pluginManifestUtils.readPluginManifestFile(path_1.default.join(projectPath, pluginManifestPath));
455
+ if (manifestRes.isErr()) {
456
+ (0, telemetry_1.sendTelemetryErrorEvent)("spec-generator", "failed-to-get-generate-warning" /* telemetryEvents.failedToGetGenerateWarning */, manifestRes.error);
457
+ return [];
458
+ }
459
+ // validate function description
460
+ const functions = manifestRes.value.functions;
461
+ const functionDescriptionWarnings = warnings
462
+ .filter((w) => w.type === m365_spec_parser_1.WarningType.FuncDescriptionTooLong)
463
+ .map((w) => w.data);
464
+ if (functions) {
465
+ functions.forEach((func) => {
466
+ if (!func.description) {
467
+ resultWarnings.push((0, localizeUtils_1.getLocalizedString)("core.copilotPlugin.scaffold.summary.warning.pluginManifest.missingFunctionDescription", func.name) +
468
+ (0, localizeUtils_1.getLocalizedString)("core.copilotPlugin.scaffold.summary.warning.pluginManifest.missingFunctionDescription.mitigation", func.name, pluginManifestPath));
469
+ }
470
+ else if (functionDescriptionWarnings.includes(func.name)) {
471
+ resultWarnings.push((0, localizeUtils_1.getLocalizedString)("core.copilotPlugin.scaffold.summary.warning.pluginManifest.functionDescription.lengthExceeding", func.name, functionDescriptionLimit) +
472
+ (0, localizeUtils_1.getLocalizedString)("core.copilotPlugin.scaffold.summary.warning.pluginManifest.functionDescription.lengthExceeding.mitigation", func.name, pluginManifestPath));
473
+ }
474
+ });
475
+ }
476
+ return resultWarnings;
477
+ }
330
478
  function formatLengthExceedingErrorMessage(field, limit) {
331
- return (localizeUtils_1.getLocalizedString("core.copilotPlugin.scaffold.summary.warning.teamsManifest.lengthExceeding", field, limit.toString()) +
332
- localizeUtils_1.getLocalizedString("core.copilotPlugin.scaffold.summary.warning.teamsManifest.mitigation", field, path_1.default.join(teamsfx_api_1.AppPackageFolderName, teamsfx_api_1.ManifestTemplateFileName)));
479
+ return ((0, localizeUtils_1.getLocalizedString)("core.copilotPlugin.scaffold.summary.warning.teamsManifest.lengthExceeding", field, limit.toString()) +
480
+ (0, localizeUtils_1.getLocalizedString)("core.copilotPlugin.scaffold.summary.warning.teamsManifest.mitigation", field, path_1.default.join(teamsfx_api_1.AppPackageFolderName, teamsfx_api_1.ManifestTemplateFileName)));
333
481
  }
334
482
  function convertSpecParserErrorToFxError(error) {
335
- return new teamsfx_api_1.SystemError("SpecParser", error.errorType.toString(), error.message, error.message);
483
+ return new teamsfx_api_1.SystemError(constants_2.SpecParserSource, error.errorType.toString(), error.message, error.message);
336
484
  }
337
485
  exports.convertSpecParserErrorToFxError = convertSpecParserErrorToFxError;
338
- async function isYamlSpecFile(specPath) {
339
- if (specPath.endsWith(".yaml") || specPath.endsWith(".yml")) {
340
- return true;
341
- }
342
- else if (specPath.endsWith(".json")) {
343
- return false;
344
- }
345
- const isRemoteFile = specPath.startsWith("http:") || specPath.startsWith("https:");
346
- const fileContent = isRemoteFile
347
- ? (await axios_1.default.get(specPath)).data
348
- : await fs_extra_1.default.readFile(specPath, "utf-8");
349
- try {
350
- JSON.parse(fileContent);
351
- return false;
352
- }
353
- catch (error) {
354
- return true;
355
- }
356
- }
357
- exports.isYamlSpecFile = isYamlSpecFile;
358
486
  function formatValidationErrors(errors, inputs) {
359
487
  return errors.map((error) => {
360
488
  return {
@@ -368,43 +496,43 @@ exports.formatValidationErrors = formatValidationErrors;
368
496
  function mapInvalidReasonToMessage(reason) {
369
497
  switch (reason) {
370
498
  case m365_spec_parser_1.ErrorType.AuthTypeIsNotSupported:
371
- return localizeUtils_1.getLocalizedString("core.common.invalidReason.AuthTypeIsNotSupported");
499
+ return (0, localizeUtils_1.getLocalizedString)("core.common.invalidReason.AuthTypeIsNotSupported");
372
500
  case m365_spec_parser_1.ErrorType.MissingOperationId:
373
- return localizeUtils_1.getLocalizedString("core.common.invalidReason.MissingOperationId");
501
+ return (0, localizeUtils_1.getLocalizedString)("core.common.invalidReason.MissingOperationId");
374
502
  case m365_spec_parser_1.ErrorType.PostBodyContainMultipleMediaTypes:
375
- return localizeUtils_1.getLocalizedString("core.common.invalidReason.PostBodyContainMultipleMediaTypes");
503
+ return (0, localizeUtils_1.getLocalizedString)("core.common.invalidReason.PostBodyContainMultipleMediaTypes");
376
504
  case m365_spec_parser_1.ErrorType.ResponseContainMultipleMediaTypes:
377
- return localizeUtils_1.getLocalizedString("core.common.invalidReason.ResponseContainMultipleMediaTypes");
505
+ return (0, localizeUtils_1.getLocalizedString)("core.common.invalidReason.ResponseContainMultipleMediaTypes");
378
506
  case m365_spec_parser_1.ErrorType.ResponseJsonIsEmpty:
379
- return localizeUtils_1.getLocalizedString("core.common.invalidReason.ResponseJsonIsEmpty");
507
+ return (0, localizeUtils_1.getLocalizedString)("core.common.invalidReason.ResponseJsonIsEmpty");
380
508
  case m365_spec_parser_1.ErrorType.PostBodySchemaIsNotJson:
381
- return localizeUtils_1.getLocalizedString("core.common.invalidReason.PostBodySchemaIsNotJson");
509
+ return (0, localizeUtils_1.getLocalizedString)("core.common.invalidReason.PostBodySchemaIsNotJson");
382
510
  case m365_spec_parser_1.ErrorType.PostBodyContainsRequiredUnsupportedSchema:
383
- return localizeUtils_1.getLocalizedString("core.common.invalidReason.PostBodyContainsRequiredUnsupportedSchema");
511
+ return (0, localizeUtils_1.getLocalizedString)("core.common.invalidReason.PostBodyContainsRequiredUnsupportedSchema");
384
512
  case m365_spec_parser_1.ErrorType.ParamsContainRequiredUnsupportedSchema:
385
- return localizeUtils_1.getLocalizedString("core.common.invalidReason.ParamsContainRequiredUnsupportedSchema");
513
+ return (0, localizeUtils_1.getLocalizedString)("core.common.invalidReason.ParamsContainRequiredUnsupportedSchema");
386
514
  case m365_spec_parser_1.ErrorType.ParamsContainsNestedObject:
387
- return localizeUtils_1.getLocalizedString("core.common.invalidReason.ParamsContainsNestedObject");
515
+ return (0, localizeUtils_1.getLocalizedString)("core.common.invalidReason.ParamsContainsNestedObject");
388
516
  case m365_spec_parser_1.ErrorType.RequestBodyContainsNestedObject:
389
- return localizeUtils_1.getLocalizedString("core.common.invalidReason.RequestBodyContainsNestedObject");
517
+ return (0, localizeUtils_1.getLocalizedString)("core.common.invalidReason.RequestBodyContainsNestedObject");
390
518
  case m365_spec_parser_1.ErrorType.ExceededRequiredParamsLimit:
391
- return localizeUtils_1.getLocalizedString("core.common.invalidReason.ExceededRequiredParamsLimit");
519
+ return (0, localizeUtils_1.getLocalizedString)("core.common.invalidReason.ExceededRequiredParamsLimit");
392
520
  case m365_spec_parser_1.ErrorType.NoParameter:
393
- return localizeUtils_1.getLocalizedString("core.common.invalidReason.NoParameter");
521
+ return (0, localizeUtils_1.getLocalizedString)("core.common.invalidReason.NoParameter");
394
522
  case m365_spec_parser_1.ErrorType.NoAPIInfo:
395
- return localizeUtils_1.getLocalizedString("core.common.invalidReason.NoAPIInfo");
523
+ return (0, localizeUtils_1.getLocalizedString)("core.common.invalidReason.NoAPIInfo");
396
524
  case m365_spec_parser_1.ErrorType.MethodNotAllowed:
397
- return localizeUtils_1.getLocalizedString("core.common.invalidReason.MethodNotAllowed");
525
+ return (0, localizeUtils_1.getLocalizedString)("core.common.invalidReason.MethodNotAllowed");
398
526
  case m365_spec_parser_1.ErrorType.UrlPathNotExist:
399
- return localizeUtils_1.getLocalizedString("core.common.invalidReason.UrlPathNotExist");
527
+ return (0, localizeUtils_1.getLocalizedString)("core.common.invalidReason.UrlPathNotExist");
400
528
  case m365_spec_parser_1.ErrorType.CircularReferenceNotSupported:
401
- return localizeUtils_1.getLocalizedString("core.common.invalidReason.CircularReference");
529
+ return (0, localizeUtils_1.getLocalizedString)("core.common.invalidReason.CircularReference");
402
530
  default:
403
531
  return reason.toString();
404
532
  }
405
533
  }
406
534
  function formatValidationErrorContent(error, inputs) {
407
- const isPlugin = inputs[constants_1.QuestionNames.Capabilities] === constants_1.copilotPluginApiSpecOptionId;
535
+ const isPlugin = inputs[constants_1.QuestionNames.ApiPluginType] === constants_1.apiPluginApiSpecOptionId;
408
536
  try {
409
537
  switch (error.type) {
410
538
  case m365_spec_parser_1.ErrorType.SpecNotValid: {
@@ -414,18 +542,18 @@ function formatValidationErrorContent(error, inputs) {
414
542
  .split("\n")
415
543
  .map((o) => o.trim())
416
544
  .join(". ");
417
- content = `${content}. ${localizeUtils_1.getLocalizedString("core.common.ErrorFetchApiSpec")}`;
545
+ content = `${content}. ${(0, localizeUtils_1.getLocalizedString)("core.common.ErrorFetchApiSpec")}`;
418
546
  }
419
547
  return content;
420
548
  }
421
549
  case m365_spec_parser_1.ErrorType.RemoteRefNotSupported:
422
- return localizeUtils_1.getLocalizedString("core.common.RemoteRefNotSupported", error.data.join(", "));
550
+ return (0, localizeUtils_1.getLocalizedString)("core.common.RemoteRefNotSupported", error.data.join(", "));
423
551
  case m365_spec_parser_1.ErrorType.NoServerInformation:
424
- return localizeUtils_1.getLocalizedString("core.common.NoServerInformation");
552
+ return (0, localizeUtils_1.getLocalizedString)("core.common.NoServerInformation");
425
553
  case m365_spec_parser_1.ErrorType.UrlProtocolNotSupported:
426
- return localizeUtils_1.getLocalizedString("core.common.UrlProtocolNotSupported", error.data);
554
+ return (0, localizeUtils_1.getLocalizedString)("core.common.UrlProtocolNotSupported", error.data);
427
555
  case m365_spec_parser_1.ErrorType.RelativeServerUrlNotSupported:
428
- return localizeUtils_1.getLocalizedString("core.common.RelativeServerUrlNotSupported");
556
+ return (0, localizeUtils_1.getLocalizedString)("core.common.RelativeServerUrlNotSupported");
429
557
  case m365_spec_parser_1.ErrorType.NoSupportedApi:
430
558
  const messages = [];
431
559
  const invalidAPIInfo = error.data;
@@ -435,25 +563,25 @@ function formatValidationErrorContent(error, inputs) {
435
563
  messages.push(mes);
436
564
  }
437
565
  if (messages.length === 0) {
438
- messages.push(localizeUtils_1.getLocalizedString("core.common.invalidReason.NoAPIs"));
566
+ messages.push((0, localizeUtils_1.getLocalizedString)("core.common.invalidReason.NoAPIs"));
439
567
  }
440
568
  return isPlugin
441
- ? localizeUtils_1.getLocalizedString("core.common.NoSupportedApiCopilot", messages.join("\n"))
442
- : localizeUtils_1.getLocalizedString("core.common.NoSupportedApi", messages.join("\n"));
569
+ ? (0, localizeUtils_1.getLocalizedString)("core.common.NoSupportedApiCopilot", messages.join("\n"))
570
+ : (0, localizeUtils_1.getLocalizedString)("core.common.NoSupportedApi", messages.join("\n"));
443
571
  case m365_spec_parser_1.ErrorType.NoExtraAPICanBeAdded:
444
572
  return isPlugin
445
- ? localizeUtils_1.getLocalizedString("error.copilot.noExtraAPICanBeAdded")
446
- : localizeUtils_1.getLocalizedString("error.apime.noExtraAPICanBeAdded");
573
+ ? (0, localizeUtils_1.getLocalizedString)("error.copilot.noExtraAPICanBeAdded")
574
+ : (0, localizeUtils_1.getLocalizedString)("error.apime.noExtraAPICanBeAdded");
447
575
  case m365_spec_parser_1.ErrorType.ResolveServerUrlFailed:
448
576
  return error.content;
449
577
  case m365_spec_parser_1.ErrorType.Cancelled:
450
- return localizeUtils_1.getLocalizedString("core.common.CancelledMessage");
578
+ return (0, localizeUtils_1.getLocalizedString)("core.common.CancelledMessage");
451
579
  case m365_spec_parser_1.ErrorType.SwaggerNotSupported:
452
- return localizeUtils_1.getLocalizedString("core.common.SwaggerNotSupported");
580
+ return (0, localizeUtils_1.getLocalizedString)("core.common.SwaggerNotSupported");
453
581
  case m365_spec_parser_1.ErrorType.SpecVersionNotSupported:
454
- return localizeUtils_1.getLocalizedString("core.common.SpecVersionNotSupported", error.data);
582
+ return (0, localizeUtils_1.getLocalizedString)("core.common.SpecVersionNotSupported", error.data);
455
583
  case m365_spec_parser_1.ErrorType.AddedAPINotInOriginalSpec:
456
- return localizeUtils_1.getLocalizedString("core.common.AddedAPINotInOriginalSpec");
584
+ return (0, localizeUtils_1.getLocalizedString)("core.common.AddedAPINotInOriginalSpec");
457
585
  default:
458
586
  return error.content;
459
587
  }
@@ -494,20 +622,24 @@ function parseSpec(spec) {
494
622
  }
495
623
  return [res, needAuth];
496
624
  }
625
+ const commonLanguages = [constants_1.ProgrammingLanguage.TS, constants_1.ProgrammingLanguage.JS, constants_1.ProgrammingLanguage.PY];
497
626
  async function updatePromptForCustomApi(spec, language, chatFolder) {
498
- if (language === constants_1.ProgrammingLanguage.JS || language === constants_1.ProgrammingLanguage.TS) {
627
+ if (commonLanguages.includes(language)) {
499
628
  const promptFilePath = path_1.default.join(chatFolder, "skprompt.txt");
500
629
  const prompt = `The following is a conversation with an AI assistant.\nThe assistant can help to call APIs for the open api spec file${spec.info.description ? ". " + spec.info.description : "."}\nIf the API doesn't require parameters, invoke it with default JSON object { "path": null, "body": null, "query": null }.\n\ncontext:\nAvailable actions: {{getAction}}.`;
501
630
  await fs_extra_1.default.writeFile(promptFilePath, prompt, { encoding: "utf-8", flag: "w" });
502
631
  }
503
632
  }
504
633
  async function updateAdaptiveCardForCustomApi(specItems, language, destinationPath) {
505
- if (language === constants_1.ProgrammingLanguage.JS || language === constants_1.ProgrammingLanguage.TS) {
634
+ if (commonLanguages.includes(language)) {
506
635
  const adaptiveCardsFolderPath = path_1.default.join(destinationPath, "src", "adaptiveCards");
507
636
  await fs_extra_1.default.ensureDir(adaptiveCardsFolderPath);
508
637
  for (const item of specItems) {
509
- const name = item.item.operationId;
510
- const [card] = m365_spec_parser_1.AdaptiveCardGenerator.generateAdaptiveCard(item.item, true);
638
+ const name = item.item.operationId.replace(/[^a-zA-Z0-9]/g, "_");
639
+ const [card, jsonPath] = m365_spec_parser_1.AdaptiveCardGenerator.generateAdaptiveCard(item.item, true);
640
+ if (jsonPath !== "$" && card.body && card.body[0] && card.body[0].$data) {
641
+ card.body[0].$data = `\${${jsonPath}}`;
642
+ }
511
643
  const cardFilePath = path_1.default.join(adaptiveCardsFolderPath, `${name}.json`);
512
644
  await fs_extra_1.default.writeFile(cardFilePath, JSON.stringify(card, null, 2));
513
645
  }
@@ -515,7 +647,7 @@ async function updateAdaptiveCardForCustomApi(specItems, language, destinationPa
515
647
  }
516
648
  async function updateActionForCustomApi(specItems, language, chatFolder) {
517
649
  var _a, _b;
518
- if (language === constants_1.ProgrammingLanguage.JS || language === constants_1.ProgrammingLanguage.TS) {
650
+ if (commonLanguages.includes(language)) {
519
651
  const actionsFilePath = path_1.default.join(chatFolder, "actions.json");
520
652
  const actions = [];
521
653
  for (const item of specItems) {
@@ -567,7 +699,8 @@ app.ai.action("{{operationId}}", async (context, state, parameter) => {
567
699
  const result = await path.{{method}}(parameter.path, parameter.body, {
568
700
  params: parameter.query,
569
701
  });
570
- const card = generateAdaptiveCard("../adaptiveCards/{{operationId}}.json", result);
702
+ const cardName = "{{operationId}}".replace(/[^a-zA-Z0-9]/g, "_");
703
+ const card = generateAdaptiveCard("../adaptiveCards/" + cardName + ".json", result);
571
704
  await context.sendActivity({ attachments: [card] });
572
705
  } else {
573
706
  await context.sendActivity("no result");
@@ -584,13 +717,44 @@ app.ai.action("{{operationId}}", async (context: TurnContext, state: Application
584
717
  const result = await path.{{method}}(parameter.path, parameter.body, {
585
718
  params: parameter.query,
586
719
  });
587
- const card = generateAdaptiveCard("../adaptiveCards/{{operationId}}.json", result);
720
+ const cardName = "{{operationId}}".replace(/[^a-zA-Z0-9]/g, "_");
721
+ const card = generateAdaptiveCard("../adaptiveCards/" + cardName + ".json", result);
588
722
  await context.sendActivity({ attachments: [card] });
589
723
  } else {
590
724
  await context.sendActivity("no result");
591
725
  }
592
726
  return "result";
593
727
  });
728
+ `,
729
+ python: `
730
+ @bot_app.ai.action("{{operationId}}")
731
+ async def {{operationId}}(
732
+ context: ActionTurnContext[Dict[str, Any]],
733
+ state: AppTurnState,
734
+ ):
735
+ parameters = context.data
736
+ path = parameters.get("path", {})
737
+ body = parameters.get("body", None)
738
+ query = parameters.get("query", {})
739
+ resp = client.{{operationId}}(**path, json=body, _headers={}, _params=query, _cookies={})
740
+
741
+ if resp.status_code != 200:
742
+ await context.send_activity(resp.reason)
743
+ else:
744
+ card_template_path = os.path.join(current_dir, 'adaptiveCards/{{operationId}}.json')
745
+ with open(card_template_path) as card_template_file:
746
+ adaptive_card_template = card_template_file.read()
747
+
748
+ renderer = AdaptiveCardRenderer(adaptive_card_template)
749
+
750
+ json_resoponse_str = resp.text
751
+ rendered_card_str = renderer.render(json_resoponse_str)
752
+ rendered_card_json = json.loads(rendered_card_str)
753
+ card = CardFactory.adaptive_card(rendered_card_json)
754
+ message = MessageFactory.attachment(card)
755
+
756
+ await context.send_activity(message)
757
+ return "success"
594
758
  `,
595
759
  };
596
760
  const AuthCode = {
@@ -626,6 +790,24 @@ async function updateCodeForCustomApi(specItems, language, destinationPath, open
626
790
  .replace("// Replace with action code", actionsCode.join("\n"));
627
791
  await fs_extra_1.default.writeFile(indexFilePath, updateIndexFileContent);
628
792
  }
793
+ else if (language === constants_1.ProgrammingLanguage.PY) {
794
+ // Update code in bot.py
795
+ const actionsCode = [];
796
+ const codeTemplate = ActionCode["python"];
797
+ for (const item of specItems) {
798
+ const code = codeTemplate
799
+ .replace(/{{operationId}}/g, item.item.operationId)
800
+ .replace(/{{pathUrl}}/g, item.pathUrl)
801
+ .replace(/{{method}}/g, item.method);
802
+ actionsCode.push(code);
803
+ }
804
+ const botFilePath = path_1.default.join(destinationPath, "src", "bot.py");
805
+ const botFileContent = (await fs_extra_1.default.readFile(botFilePath)).toString();
806
+ const updateBotFileContent = botFileContent
807
+ .replace("{{OPENAPI_SPEC_PATH}}", openapiSpecFileName)
808
+ .replace("# Replace with action code", actionsCode.join("\n"));
809
+ await fs_extra_1.default.writeFile(botFilePath, updateBotFileContent);
810
+ }
629
811
  }
630
812
  async function updateForCustomApi(spec, language, destinationPath, openapiSpecFileName) {
631
813
  const chatFolder = path_1.default.join(destinationPath, "src", "prompts", "chat");