@microsoft/teamsfx-core 3.0.13 → 3.0.14-alpha.0890e15c35.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 (550) hide show
  1. package/build/client/teamsDevPortalClient.d.ts +7 -2
  2. package/build/client/teamsDevPortalClient.d.ts.map +1 -1
  3. package/build/client/teamsDevPortalClient.js +63 -59
  4. package/build/client/teamsDevPortalClient.js.map +1 -1
  5. package/build/client/teamsGraphClient.d.ts +6 -3
  6. package/build/client/teamsGraphClient.d.ts.map +1 -1
  7. package/build/client/teamsGraphClient.js +20 -3
  8. package/build/client/teamsGraphClient.js.map +1 -1
  9. package/build/common/daSpecParser.d.ts +16 -1
  10. package/build/common/daSpecParser.d.ts.map +1 -1
  11. package/build/common/daSpecParser.js +34 -21
  12. package/build/common/daSpecParser.js.map +1 -1
  13. package/build/common/featureFlags.d.ts +22 -2
  14. package/build/common/featureFlags.d.ts.map +1 -1
  15. package/build/common/featureFlags.js +31 -3
  16. package/build/common/featureFlags.js.map +1 -1
  17. package/build/common/fetchHelper.d.ts.map +1 -1
  18. package/build/common/fetchHelper.js +41 -3
  19. package/build/common/fetchHelper.js.map +1 -1
  20. package/build/common/kiotaClient.d.ts +3 -3
  21. package/build/common/kiotaClient.d.ts.map +1 -1
  22. package/build/common/kiotaClient.js +10 -10
  23. package/build/common/kiotaClient.js.map +1 -1
  24. package/build/common/projectSettingsHelper.d.ts +0 -2
  25. package/build/common/projectSettingsHelper.d.ts.map +1 -1
  26. package/build/common/projectSettingsHelper.js +1 -56
  27. package/build/common/projectSettingsHelper.js.map +1 -1
  28. package/build/common/telemetry.d.ts +4 -15
  29. package/build/common/telemetry.d.ts.map +1 -1
  30. package/build/common/telemetry.js +7 -20
  31. package/build/common/telemetry.js.map +1 -1
  32. package/build/common/templates-config.json +9 -2
  33. package/build/common/tools.d.ts +6 -1
  34. package/build/common/tools.d.ts.map +1 -1
  35. package/build/common/tools.js +13 -8
  36. package/build/common/tools.js.map +1 -1
  37. package/build/common/wrappedAxiosClient.d.ts +1 -1
  38. package/build/common/wrappedAxiosClient.d.ts.map +1 -1
  39. package/build/common/wrappedAxiosClient.js +12 -13
  40. package/build/common/wrappedAxiosClient.js.map +1 -1
  41. package/build/component/configManager/actionInjector.d.ts +16 -1
  42. package/build/component/configManager/actionInjector.d.ts.map +1 -1
  43. package/build/component/configManager/actionInjector.js +106 -1
  44. package/build/component/configManager/actionInjector.js.map +1 -1
  45. package/build/component/configManager/validator.d.ts.map +1 -1
  46. package/build/component/configManager/validator.js +2 -0
  47. package/build/component/configManager/validator.js.map +1 -1
  48. package/build/component/coordinator/index.d.ts +4 -0
  49. package/build/component/coordinator/index.d.ts.map +1 -1
  50. package/build/component/coordinator/index.js +10 -3
  51. package/build/component/coordinator/index.js.map +1 -1
  52. package/build/component/deps-checker/internal/funcToolChecker.d.ts +6 -0
  53. package/build/component/deps-checker/internal/funcToolChecker.d.ts.map +1 -1
  54. package/build/component/deps-checker/internal/funcToolChecker.js +15 -12
  55. package/build/component/deps-checker/internal/funcToolChecker.js.map +1 -1
  56. package/build/component/deps-checker/internal/nodeChecker.js +1 -1
  57. package/build/component/deps-checker/internal/nodeChecker.js.map +1 -1
  58. package/build/component/deps-checker/internal/testToolChecker.d.ts +12 -0
  59. package/build/component/deps-checker/internal/testToolChecker.d.ts.map +1 -1
  60. package/build/component/deps-checker/internal/testToolChecker.js +23 -14
  61. package/build/component/deps-checker/internal/testToolChecker.js.map +1 -1
  62. package/build/component/developerPortalScaffoldUtils.d.ts +11 -1
  63. package/build/component/developerPortalScaffoldUtils.d.ts.map +1 -1
  64. package/build/component/developerPortalScaffoldUtils.js +21 -12
  65. package/build/component/developerPortalScaffoldUtils.js.map +1 -1
  66. package/build/component/driver/aad/utility/aadManifestHelper.d.ts +1 -1
  67. package/build/component/driver/aad/utility/aadManifestHelper.d.ts.map +1 -1
  68. package/build/component/driver/aad/utility/aadManifestHelper.js +7 -4
  69. package/build/component/driver/aad/utility/aadManifestHelper.js.map +1 -1
  70. package/build/component/driver/add/addWebPart.d.ts +9 -0
  71. package/build/component/driver/add/addWebPart.d.ts.map +1 -1
  72. package/build/component/driver/add/addWebPart.js +13 -7
  73. package/build/component/driver/add/addWebPart.js.map +1 -1
  74. package/build/component/driver/arm/util/handleError.d.ts +5 -0
  75. package/build/component/driver/arm/util/handleError.d.ts.map +1 -1
  76. package/build/component/driver/arm/util/handleError.js +10 -5
  77. package/build/component/driver/arm/util/handleError.js.map +1 -1
  78. package/build/component/driver/copilotAgent/interfaces/PublishArgs.d.ts +14 -0
  79. package/build/component/driver/copilotAgent/interfaces/PublishArgs.d.ts.map +1 -0
  80. package/build/component/driver/copilotAgent/interfaces/PublishArgs.js +5 -0
  81. package/build/component/driver/copilotAgent/interfaces/PublishArgs.js.map +1 -0
  82. package/build/component/driver/copilotAgent/publish.d.ts +16 -0
  83. package/build/component/driver/copilotAgent/publish.d.ts.map +1 -0
  84. package/build/component/driver/copilotAgent/publish.js +175 -0
  85. package/build/component/driver/copilotAgent/publish.js.map +1 -0
  86. package/build/component/driver/dcr/create.d.ts +10 -0
  87. package/build/component/driver/dcr/create.d.ts.map +1 -0
  88. package/build/component/driver/dcr/create.js +142 -0
  89. package/build/component/driver/dcr/create.js.map +1 -0
  90. package/build/component/driver/dcr/error/dcrNameTooLong.d.ts +5 -0
  91. package/build/component/driver/dcr/error/dcrNameTooLong.d.ts.map +1 -0
  92. package/build/component/driver/dcr/error/dcrNameTooLong.js +21 -0
  93. package/build/component/driver/dcr/error/dcrNameTooLong.js.map +1 -0
  94. package/build/component/driver/dcr/error/dcrWellKnownInvalid.d.ts +5 -0
  95. package/build/component/driver/dcr/error/dcrWellKnownInvalid.d.ts.map +1 -0
  96. package/build/component/driver/dcr/error/dcrWellKnownInvalid.js +21 -0
  97. package/build/component/driver/dcr/error/dcrWellKnownInvalid.js.map +1 -0
  98. package/build/component/driver/dcr/interface/createDcrArgs.d.ts +9 -0
  99. package/build/component/driver/dcr/interface/createDcrArgs.d.ts.map +1 -0
  100. package/build/component/driver/dcr/interface/createDcrArgs.js +5 -0
  101. package/build/component/driver/dcr/interface/createDcrArgs.js.map +1 -0
  102. package/build/component/driver/dcr/interface/createDcrOutputs.d.ts +7 -0
  103. package/build/component/driver/dcr/interface/createDcrOutputs.d.ts.map +1 -0
  104. package/build/component/driver/dcr/interface/createDcrOutputs.js +10 -0
  105. package/build/component/driver/dcr/interface/createDcrOutputs.js.map +1 -0
  106. package/build/component/driver/dcr/utility/constants.d.ts +7 -0
  107. package/build/component/driver/dcr/utility/constants.d.ts.map +1 -0
  108. package/build/component/driver/dcr/utility/constants.js +12 -0
  109. package/build/component/driver/dcr/utility/constants.js.map +1 -0
  110. package/build/component/driver/deploy/azure/azureStaticWebAppGetDeploymentTokenDriver.d.ts +8 -1
  111. package/build/component/driver/deploy/azure/azureStaticWebAppGetDeploymentTokenDriver.d.ts.map +1 -1
  112. package/build/component/driver/deploy/azure/azureStaticWebAppGetDeploymentTokenDriver.js +15 -10
  113. package/build/component/driver/deploy/azure/azureStaticWebAppGetDeploymentTokenDriver.js.map +1 -1
  114. package/build/component/driver/devTool/httpClient.d.ts +4 -0
  115. package/build/component/driver/devTool/httpClient.d.ts.map +1 -1
  116. package/build/component/driver/devTool/httpClient.js +6 -3
  117. package/build/component/driver/devTool/httpClient.js.map +1 -1
  118. package/build/component/driver/index.d.ts +2 -0
  119. package/build/component/driver/index.d.ts.map +1 -1
  120. package/build/component/driver/index.js +2 -0
  121. package/build/component/driver/index.js.map +1 -1
  122. package/build/component/driver/m365/acquire.d.ts +13 -1
  123. package/build/component/driver/m365/acquire.d.ts.map +1 -1
  124. package/build/component/driver/m365/acquire.js +16 -8
  125. package/build/component/driver/m365/acquire.js.map +1 -1
  126. package/build/component/driver/oauth/update.d.ts +6 -0
  127. package/build/component/driver/oauth/update.d.ts.map +1 -1
  128. package/build/component/driver/oauth/update.js +8 -4
  129. package/build/component/driver/oauth/update.js.map +1 -1
  130. package/build/component/driver/script/scriptDriver.d.ts +6 -0
  131. package/build/component/driver/script/scriptDriver.d.ts.map +1 -1
  132. package/build/component/driver/script/scriptDriver.js +9 -4
  133. package/build/component/driver/script/scriptDriver.js.map +1 -1
  134. package/build/component/driver/share/utils.d.ts.map +1 -1
  135. package/build/component/driver/share/utils.js +9 -7
  136. package/build/component/driver/share/utils.js.map +1 -1
  137. package/build/component/driver/teamsApp/constants.d.ts +4 -3
  138. package/build/component/driver/teamsApp/constants.d.ts.map +1 -1
  139. package/build/component/driver/teamsApp/constants.js +4 -3
  140. package/build/component/driver/teamsApp/constants.js.map +1 -1
  141. package/build/component/driver/teamsApp/createAppPackage.d.ts +8 -0
  142. package/build/component/driver/teamsApp/createAppPackage.d.ts.map +1 -1
  143. package/build/component/driver/teamsApp/createAppPackage.js +113 -13
  144. package/build/component/driver/teamsApp/createAppPackage.js.map +1 -1
  145. package/build/component/driver/teamsApp/interfaces/DcrRegistration.d.ts +10 -0
  146. package/build/component/driver/teamsApp/interfaces/DcrRegistration.d.ts.map +1 -0
  147. package/build/component/driver/teamsApp/interfaces/DcrRegistration.js +5 -0
  148. package/build/component/driver/teamsApp/interfaces/DcrRegistration.js.map +1 -0
  149. package/build/component/driver/teamsApp/interfaces/ValidationResult.d.ts +6 -0
  150. package/build/component/driver/teamsApp/interfaces/ValidationResult.d.ts.map +1 -1
  151. package/build/component/driver/teamsApp/publishAppPackage.d.ts +4 -2
  152. package/build/component/driver/teamsApp/publishAppPackage.d.ts.map +1 -1
  153. package/build/component/driver/teamsApp/publishAppPackage.js +9 -55
  154. package/build/component/driver/teamsApp/publishAppPackage.js.map +1 -1
  155. package/build/component/driver/teamsApp/syncManifest.d.ts +16 -3
  156. package/build/component/driver/teamsApp/syncManifest.d.ts.map +1 -1
  157. package/build/component/driver/teamsApp/syncManifest.js +28 -18
  158. package/build/component/driver/teamsApp/syncManifest.js.map +1 -1
  159. package/build/component/driver/teamsApp/teamsappMgr.d.ts +4 -0
  160. package/build/component/driver/teamsApp/teamsappMgr.d.ts.map +1 -1
  161. package/build/component/driver/teamsApp/teamsappMgr.js +6 -3
  162. package/build/component/driver/teamsApp/teamsappMgr.js.map +1 -1
  163. package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.d.ts +2 -0
  164. package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.d.ts.map +1 -1
  165. package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.js +113 -1
  166. package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.js.map +1 -1
  167. package/build/component/driver/teamsApp/utils/ManifestUtils.d.ts +5 -1
  168. package/build/component/driver/teamsApp/utils/ManifestUtils.d.ts.map +1 -1
  169. package/build/component/driver/teamsApp/utils/ManifestUtils.js +14 -3
  170. package/build/component/driver/teamsApp/utils/ManifestUtils.js.map +1 -1
  171. package/build/component/driver/teamsApp/utils/McpCertVerification.d.ts +17 -0
  172. package/build/component/driver/teamsApp/utils/McpCertVerification.d.ts.map +1 -0
  173. package/build/component/driver/teamsApp/utils/McpCertVerification.js +72 -0
  174. package/build/component/driver/teamsApp/utils/McpCertVerification.js.map +1 -0
  175. package/build/component/driver/teamsApp/utils/telemetry.d.ts +1 -0
  176. package/build/component/driver/teamsApp/utils/telemetry.d.ts.map +1 -1
  177. package/build/component/driver/teamsApp/utils/telemetry.js +1 -0
  178. package/build/component/driver/teamsApp/utils/telemetry.js.map +1 -1
  179. package/build/component/driver/teamsApp/validate.d.ts.map +1 -1
  180. package/build/component/driver/teamsApp/validate.js +12 -2
  181. package/build/component/driver/teamsApp/validate.js.map +1 -1
  182. package/build/component/driver/teamsApp/validateTestCases.d.ts +12 -0
  183. package/build/component/driver/teamsApp/validateTestCases.d.ts.map +1 -1
  184. package/build/component/driver/teamsApp/validateTestCases.js +17 -8
  185. package/build/component/driver/teamsApp/validateTestCases.js.map +1 -1
  186. package/build/component/driver/typeSpec/compile.d.ts +9 -0
  187. package/build/component/driver/typeSpec/compile.d.ts.map +1 -1
  188. package/build/component/driver/typeSpec/compile.js +16 -10
  189. package/build/component/driver/typeSpec/compile.js.map +1 -1
  190. package/build/component/generator/declarativeAgent/generator.d.ts +8 -0
  191. package/build/component/generator/declarativeAgent/generator.d.ts.map +1 -1
  192. package/build/component/generator/declarativeAgent/generator.js +16 -10
  193. package/build/component/generator/declarativeAgent/generator.js.map +1 -1
  194. package/build/component/generator/declarativeAgent/helper.d.ts +31 -0
  195. package/build/component/generator/declarativeAgent/helper.d.ts.map +1 -1
  196. package/build/component/generator/declarativeAgent/helper.js +237 -34
  197. package/build/component/generator/declarativeAgent/helper.js.map +1 -1
  198. package/build/component/generator/defaultGenerator.d.ts.map +1 -1
  199. package/build/component/generator/defaultGenerator.js +14 -1
  200. package/build/component/generator/defaultGenerator.js.map +1 -1
  201. package/build/component/generator/error.d.ts +3 -0
  202. package/build/component/generator/error.d.ts.map +1 -1
  203. package/build/component/generator/error.js +7 -1
  204. package/build/component/generator/error.js.map +1 -1
  205. package/build/component/generator/generatorAction.d.ts +9 -0
  206. package/build/component/generator/generatorAction.d.ts.map +1 -1
  207. package/build/component/generator/generatorAction.js +16 -8
  208. package/build/component/generator/generatorAction.js.map +1 -1
  209. package/build/component/generator/officeAddin/generator.d.ts +12 -0
  210. package/build/component/generator/officeAddin/generator.d.ts.map +1 -1
  211. package/build/component/generator/officeAddin/generator.js +53 -3
  212. package/build/component/generator/officeAddin/generator.js.map +1 -1
  213. package/build/component/generator/officeAddin/helperMethods.d.ts +4 -0
  214. package/build/component/generator/officeAddin/helperMethods.d.ts.map +1 -1
  215. package/build/component/generator/officeAddin/helperMethods.js +6 -3
  216. package/build/component/generator/officeAddin/helperMethods.js.map +1 -1
  217. package/build/component/generator/openApiSpec/customEngineAgentGenerator.d.ts +9 -0
  218. package/build/component/generator/openApiSpec/customEngineAgentGenerator.d.ts.map +1 -1
  219. package/build/component/generator/openApiSpec/customEngineAgentGenerator.js +11 -5
  220. package/build/component/generator/openApiSpec/customEngineAgentGenerator.js.map +1 -1
  221. package/build/component/generator/openPlugin/authorParser.d.ts +8 -0
  222. package/build/component/generator/openPlugin/authorParser.d.ts.map +1 -0
  223. package/build/component/generator/openPlugin/authorParser.js +49 -0
  224. package/build/component/generator/openPlugin/authorParser.js.map +1 -0
  225. package/build/component/generator/openPlugin/deterministicId.d.ts +6 -0
  226. package/build/component/generator/openPlugin/deterministicId.d.ts.map +1 -0
  227. package/build/component/generator/openPlugin/deterministicId.js +31 -0
  228. package/build/component/generator/openPlugin/deterministicId.js.map +1 -0
  229. package/build/component/generator/openPlugin/exporter.d.ts +18 -0
  230. package/build/component/generator/openPlugin/exporter.d.ts.map +1 -0
  231. package/build/component/generator/openPlugin/exporter.js +233 -0
  232. package/build/component/generator/openPlugin/exporter.js.map +1 -0
  233. package/build/component/generator/openPlugin/iconStrategy.d.ts +8 -0
  234. package/build/component/generator/openPlugin/iconStrategy.d.ts.map +1 -0
  235. package/build/component/generator/openPlugin/iconStrategy.js +62 -0
  236. package/build/component/generator/openPlugin/iconStrategy.js.map +1 -0
  237. package/build/component/generator/openPlugin/importer.d.ts +25 -0
  238. package/build/component/generator/openPlugin/importer.d.ts.map +1 -0
  239. package/build/component/generator/openPlugin/importer.js +140 -0
  240. package/build/component/generator/openPlugin/importer.js.map +1 -0
  241. package/build/component/generator/openPlugin/mapper.d.ts +6 -0
  242. package/build/component/generator/openPlugin/mapper.d.ts.map +1 -0
  243. package/build/component/generator/openPlugin/mapper.js +141 -0
  244. package/build/component/generator/openPlugin/mapper.js.map +1 -0
  245. package/build/component/generator/openPlugin/parser.d.ts +3 -0
  246. package/build/component/generator/openPlugin/parser.d.ts.map +1 -0
  247. package/build/component/generator/openPlugin/parser.js +153 -0
  248. package/build/component/generator/openPlugin/parser.js.map +1 -0
  249. package/build/component/generator/openPlugin/placeholderPng.d.ts +6 -0
  250. package/build/component/generator/openPlugin/placeholderPng.d.ts.map +1 -0
  251. package/build/component/generator/openPlugin/placeholderPng.js +71 -0
  252. package/build/component/generator/openPlugin/placeholderPng.js.map +1 -0
  253. package/build/component/generator/openPlugin/textUtils.d.ts +12 -0
  254. package/build/component/generator/openPlugin/textUtils.d.ts.map +1 -0
  255. package/build/component/generator/openPlugin/textUtils.js +43 -0
  256. package/build/component/generator/openPlugin/textUtils.js.map +1 -0
  257. package/build/component/generator/openPlugin/types.d.ts +128 -0
  258. package/build/component/generator/openPlugin/types.d.ts.map +1 -0
  259. package/build/component/generator/openPlugin/types.js.map +1 -0
  260. package/build/component/generator/spfx/utils/constants.d.ts +1 -1
  261. package/build/component/generator/spfx/utils/constants.js +1 -1
  262. package/build/component/generator/templateHelper.d.ts +15 -0
  263. package/build/component/generator/templateHelper.d.ts.map +1 -1
  264. package/build/component/generator/templateHelper.js +28 -0
  265. package/build/component/generator/templateHelper.js.map +1 -1
  266. package/build/component/generator/templates/metadata/index.d.ts.map +1 -1
  267. package/build/component/generator/templates/metadata/index.js +12 -5
  268. package/build/component/generator/templates/metadata/index.js.map +1 -1
  269. package/build/component/generator/templates/templateNames.d.ts +4 -1
  270. package/build/component/generator/templates/templateNames.d.ts.map +1 -1
  271. package/build/component/generator/templates/templateNames.js +5 -0
  272. package/build/component/generator/templates/templateNames.js.map +1 -1
  273. package/build/component/generator/templates/templateReplaceMap.d.ts.map +1 -1
  274. package/build/component/generator/templates/templateReplaceMap.js +4 -1
  275. package/build/component/generator/templates/templateReplaceMap.js.map +1 -1
  276. package/build/component/generator/utils.js +8 -8
  277. package/build/component/generator/utils.js.map +1 -1
  278. package/build/component/generator/v4MetadataSource.d.ts +23 -0
  279. package/build/component/generator/v4MetadataSource.d.ts.map +1 -0
  280. package/build/component/generator/v4MetadataSource.js +42 -0
  281. package/build/component/generator/v4MetadataSource.js.map +1 -0
  282. package/build/component/generator/v4TemplateBridge.d.ts +40 -0
  283. package/build/component/generator/v4TemplateBridge.d.ts.map +1 -0
  284. package/build/component/generator/v4TemplateBridge.js +125 -0
  285. package/build/component/generator/v4TemplateBridge.js.map +1 -0
  286. package/build/component/local/localCertificateManager.d.ts +17 -1
  287. package/build/component/local/localCertificateManager.d.ts.map +1 -1
  288. package/build/component/local/localCertificateManager.js +48 -31
  289. package/build/component/local/localCertificateManager.js.map +1 -1
  290. package/build/component/m365/packageService.d.ts +10 -0
  291. package/build/component/m365/packageService.d.ts.map +1 -1
  292. package/build/component/m365/packageService.js +55 -13
  293. package/build/component/m365/packageService.js.map +1 -1
  294. package/build/component/middleware/envMW.d.ts.map +1 -1
  295. package/build/component/middleware/envMW.js +5 -0
  296. package/build/component/middleware/envMW.js.map +1 -1
  297. package/build/component/utils/ResourceGroupHelper.d.ts +4 -0
  298. package/build/component/utils/ResourceGroupHelper.d.ts.map +1 -1
  299. package/build/component/utils/ResourceGroupHelper.js +7 -4
  300. package/build/component/utils/ResourceGroupHelper.js.map +1 -1
  301. package/build/component/utils/charsetUtils.js +3 -3
  302. package/build/component/utils/charsetUtils.js.map +1 -1
  303. package/build/component/utils/fileOperation.d.ts +10 -0
  304. package/build/component/utils/fileOperation.d.ts.map +1 -1
  305. package/build/component/utils/fileOperation.js +27 -17
  306. package/build/component/utils/fileOperation.js.map +1 -1
  307. package/build/component/utils/mcpAuthScaffolder.d.ts +106 -0
  308. package/build/component/utils/mcpAuthScaffolder.d.ts.map +1 -0
  309. package/build/component/utils/mcpAuthScaffolder.js +153 -0
  310. package/build/component/utils/mcpAuthScaffolder.js.map +1 -0
  311. package/build/component/utils/mcpToolFetcher.d.ts +12 -1
  312. package/build/component/utils/mcpToolFetcher.d.ts.map +1 -1
  313. package/build/component/utils/mcpToolFetcher.js +23 -3
  314. package/build/component/utils/mcpToolFetcher.js.map +1 -1
  315. package/build/component/utils/metadataGraphPermssion.d.ts +4 -0
  316. package/build/component/utils/metadataGraphPermssion.d.ts.map +1 -1
  317. package/build/component/utils/metadataGraphPermssion.js +7 -4
  318. package/build/component/utils/metadataGraphPermssion.js.map +1 -1
  319. package/build/component/utils/odrProvider.d.ts +6 -0
  320. package/build/component/utils/odrProvider.d.ts.map +1 -1
  321. package/build/component/utils/odrProvider.js +9 -4
  322. package/build/component/utils/odrProvider.js.map +1 -1
  323. package/build/core/FxCore.d.ts +46 -4
  324. package/build/core/FxCore.d.ts.map +1 -1
  325. package/build/core/FxCore.declarativeAgent.d.ts +9 -0
  326. package/build/core/FxCore.declarativeAgent.d.ts.map +1 -1
  327. package/build/core/FxCore.declarativeAgent.js +286 -174
  328. package/build/core/FxCore.declarativeAgent.js.map +1 -1
  329. package/build/core/FxCore.js +443 -140
  330. package/build/core/FxCore.js.map +1 -1
  331. package/build/core/FxCore.openPlugin.d.ts +29 -0
  332. package/build/core/FxCore.openPlugin.d.ts.map +1 -0
  333. package/build/core/FxCore.openPlugin.js +135 -0
  334. package/build/core/FxCore.openPlugin.js.map +1 -0
  335. package/build/core/collaborator.d.ts +4 -0
  336. package/build/core/collaborator.d.ts.map +1 -1
  337. package/build/core/collaborator.js +6 -3
  338. package/build/core/collaborator.js.map +1 -1
  339. package/build/core/middleware/concurrentLocker.d.ts +9 -0
  340. package/build/core/middleware/concurrentLocker.d.ts.map +1 -1
  341. package/build/core/middleware/concurrentLocker.js +14 -11
  342. package/build/core/middleware/concurrentLocker.js.map +1 -1
  343. package/build/core/middleware/errorHandler.d.ts.map +1 -1
  344. package/build/core/middleware/errorHandler.js +9 -0
  345. package/build/core/middleware/errorHandler.js.map +1 -1
  346. package/build/core/middleware/fileLocker.d.ts +6 -0
  347. package/build/core/middleware/fileLocker.d.ts.map +1 -1
  348. package/build/core/middleware/fileLocker.js +11 -6
  349. package/build/core/middleware/fileLocker.js.map +1 -1
  350. package/build/core/middleware/utils/v3MigrationUtils.d.ts +1 -34
  351. package/build/core/middleware/utils/v3MigrationUtils.d.ts.map +1 -1
  352. package/build/core/middleware/utils/v3MigrationUtils.js +6 -245
  353. package/build/core/middleware/utils/v3MigrationUtils.js.map +1 -1
  354. package/build/error/teamsApp.d.ts +3 -0
  355. package/build/error/teamsApp.d.ts.map +1 -1
  356. package/build/error/teamsApp.js +15 -1
  357. package/build/error/teamsApp.js.map +1 -1
  358. package/build/question/constants.d.ts.map +1 -1
  359. package/build/question/constants.js +1 -6
  360. package/build/question/constants.js.map +1 -1
  361. package/build/question/create.d.ts +8 -1
  362. package/build/question/create.d.ts.map +1 -1
  363. package/build/question/create.js +24 -15
  364. package/build/question/create.js.map +1 -1
  365. package/build/question/index.d.ts +1 -0
  366. package/build/question/index.d.ts.map +1 -1
  367. package/build/question/index.js +3 -0
  368. package/build/question/index.js.map +1 -1
  369. package/build/question/inputs/AddPluginInputs.d.ts +1 -1
  370. package/build/question/inputs/AddPluginInputs.d.ts.map +1 -1
  371. package/build/question/inputs/AddSkillInputs.d.ts +10 -0
  372. package/build/question/inputs/AddSkillInputs.d.ts.map +1 -0
  373. package/build/question/inputs/AddSkillInputs.js +5 -0
  374. package/build/question/inputs/AddSkillInputs.js.map +1 -0
  375. package/build/question/inputs/CreateProjectInputs.d.ts +7 -1
  376. package/build/question/inputs/CreateProjectInputs.d.ts.map +1 -1
  377. package/build/question/inputs/ExportOpenPluginInputs.d.ts +10 -0
  378. package/build/question/inputs/ExportOpenPluginInputs.d.ts.map +1 -0
  379. package/build/question/inputs/ExportOpenPluginInputs.js +5 -0
  380. package/build/question/inputs/ExportOpenPluginInputs.js.map +1 -0
  381. package/build/question/inputs/ImportOpenPluginInputs.d.ts +28 -0
  382. package/build/question/inputs/ImportOpenPluginInputs.d.ts.map +1 -0
  383. package/build/question/inputs/ImportOpenPluginInputs.js +5 -0
  384. package/build/question/inputs/ImportOpenPluginInputs.js.map +1 -0
  385. package/build/question/inputs/index.d.ts +3 -0
  386. package/build/question/inputs/index.d.ts.map +1 -1
  387. package/build/question/inputs/index.js +3 -0
  388. package/build/question/inputs/index.js.map +1 -1
  389. package/build/question/options/AddPluginOptions.js +1 -1
  390. package/build/question/options/AddPluginOptions.js.map +1 -1
  391. package/build/question/options/AddSkillOptions.d.ts +4 -0
  392. package/build/question/options/AddSkillOptions.d.ts.map +1 -0
  393. package/build/question/options/AddSkillOptions.js +47 -0
  394. package/build/question/options/AddSkillOptions.js.map +1 -0
  395. package/build/question/options/CreateProjectOptions.d.ts.map +1 -1
  396. package/build/question/options/CreateProjectOptions.js +17 -2
  397. package/build/question/options/CreateProjectOptions.js.map +1 -1
  398. package/build/question/options/ExportOpenPluginOptions.d.ts +4 -0
  399. package/build/question/options/ExportOpenPluginOptions.d.ts.map +1 -0
  400. package/build/question/options/ExportOpenPluginOptions.js +29 -0
  401. package/build/question/options/ExportOpenPluginOptions.js.map +1 -0
  402. package/build/question/options/ImportOpenPluginOptions.d.ts +4 -0
  403. package/build/question/options/ImportOpenPluginOptions.d.ts.map +1 -0
  404. package/build/question/options/ImportOpenPluginOptions.js +54 -0
  405. package/build/question/options/ImportOpenPluginOptions.js.map +1 -0
  406. package/build/question/options/index.d.ts +3 -0
  407. package/build/question/options/index.d.ts.map +1 -1
  408. package/build/question/options/index.js +3 -0
  409. package/build/question/options/index.js.map +1 -1
  410. package/build/question/other.d.ts +1 -0
  411. package/build/question/other.d.ts.map +1 -1
  412. package/build/question/other.js +152 -35
  413. package/build/question/other.js.map +1 -1
  414. package/build/question/questionNames.d.ts +10 -1
  415. package/build/question/questionNames.d.ts.map +1 -1
  416. package/build/question/questionNames.js +9 -0
  417. package/build/question/questionNames.js.map +1 -1
  418. package/build/question/scaffold/vsc/CapabilityOptions.d.ts +1 -0
  419. package/build/question/scaffold/vsc/CapabilityOptions.d.ts.map +1 -1
  420. package/build/question/scaffold/vsc/CapabilityOptions.js +11 -0
  421. package/build/question/scaffold/vsc/CapabilityOptions.js.map +1 -1
  422. package/build/question/scaffold/vsc/ProjectTypeOptions.d.ts +2 -0
  423. package/build/question/scaffold/vsc/ProjectTypeOptions.d.ts.map +1 -1
  424. package/build/question/scaffold/vsc/ProjectTypeOptions.js +9 -0
  425. package/build/question/scaffold/vsc/ProjectTypeOptions.js.map +1 -1
  426. package/build/question/scaffold/vsc/daProjectTypeNode.d.ts.map +1 -1
  427. package/build/question/scaffold/vsc/daProjectTypeNode.js +1 -3
  428. package/build/question/scaffold/vsc/daProjectTypeNode.js.map +1 -1
  429. package/build/question/scaffold/vsc/rootNode.js +6 -4
  430. package/build/question/scaffold/vsc/rootNode.js.map +1 -1
  431. package/build/question/scaffold/vsc/teamsProjectTypeNode.d.ts +32 -0
  432. package/build/question/scaffold/vsc/teamsProjectTypeNode.d.ts.map +1 -1
  433. package/build/question/scaffold/vsc/teamsProjectTypeNode.js +136 -36
  434. package/build/question/scaffold/vsc/teamsProjectTypeNode.js.map +1 -1
  435. package/build/question/share.d.ts +7 -0
  436. package/build/question/share.d.ts.map +1 -1
  437. package/build/question/share.js +7 -3
  438. package/build/question/share.js.map +1 -1
  439. package/build/v4/distribution/bundledFloor.d.ts +12 -0
  440. package/build/v4/distribution/bundledFloor.d.ts.map +1 -0
  441. package/build/v4/distribution/bundledFloor.js +80 -0
  442. package/build/v4/distribution/bundledFloor.js.map +1 -0
  443. package/build/v4/distribution/templateConfig.d.ts +79 -0
  444. package/build/v4/distribution/templateConfig.d.ts.map +1 -0
  445. package/build/v4/distribution/templateConfig.js +81 -0
  446. package/build/v4/distribution/templateConfig.js.map +1 -0
  447. package/build/v4/distribution/templatePackage.d.ts +29 -0
  448. package/build/v4/distribution/templatePackage.d.ts.map +1 -0
  449. package/build/v4/distribution/templatePackage.js +82 -0
  450. package/build/v4/distribution/templatePackage.js.map +1 -0
  451. package/build/v4/distribution/templateSource.d.ts +67 -0
  452. package/build/v4/distribution/templateSource.d.ts.map +1 -0
  453. package/build/v4/distribution/templateSource.js +220 -0
  454. package/build/v4/distribution/templateSource.js.map +1 -0
  455. package/build/v4/distribution/templateSourcePort.d.ts +50 -0
  456. package/build/v4/distribution/templateSourcePort.d.ts.map +1 -0
  457. package/build/v4/distribution/templateSourcePort.js +207 -0
  458. package/build/v4/distribution/templateSourcePort.js.map +1 -0
  459. package/build/v4/index.d.ts +13 -0
  460. package/build/v4/index.d.ts.map +1 -0
  461. package/build/v4/index.js +18 -0
  462. package/build/v4/index.js.map +1 -0
  463. package/package.json +18 -79
  464. package/resource/package.nls.cs.json +42 -14
  465. package/resource/package.nls.de.json +43 -15
  466. package/resource/package.nls.es.json +42 -14
  467. package/resource/package.nls.fr.json +42 -14
  468. package/resource/package.nls.it.json +43 -15
  469. package/resource/package.nls.ja.json +42 -14
  470. package/resource/package.nls.json +64 -14
  471. package/resource/package.nls.ko.json +42 -14
  472. package/resource/package.nls.pl.json +43 -15
  473. package/resource/package.nls.pt-BR.json +42 -14
  474. package/resource/package.nls.ru.json +43 -15
  475. package/resource/package.nls.tr.json +44 -16
  476. package/resource/package.nls.zh-Hans.json +42 -14
  477. package/resource/package.nls.zh-Hant.json +54 -26
  478. package/resource/templates/package.nls.cs.json +2 -0
  479. package/resource/templates/package.nls.de.json +2 -0
  480. package/resource/templates/package.nls.es.json +2 -0
  481. package/resource/templates/package.nls.fr.json +2 -0
  482. package/resource/templates/package.nls.it.json +2 -0
  483. package/resource/templates/package.nls.ja.json +2 -0
  484. package/resource/templates/package.nls.json +5 -0
  485. package/resource/templates/package.nls.ko.json +2 -0
  486. package/resource/templates/package.nls.pl.json +2 -0
  487. package/resource/templates/package.nls.pt-BR.json +2 -0
  488. package/resource/templates/package.nls.ru.json +2 -0
  489. package/resource/templates/package.nls.tr.json +2 -0
  490. package/resource/templates/package.nls.zh-Hans.json +2 -0
  491. package/resource/templates/package.nls.zh-Hant.json +2 -0
  492. package/resource/yaml-schema/v1.12/yaml.schema.json +2132 -0
  493. package/resource/yaml-schema/v1.13/yaml.schema.json +2193 -0
  494. package/resource/yaml-schema/yaml.schema.json +124 -2
  495. package/templates/fallback/common.zip +0 -0
  496. package/templates/fallback/csharp.zip +0 -0
  497. package/templates/fallback/js.zip +0 -0
  498. package/templates/fallback/python.zip +0 -0
  499. package/templates/fallback/ts.zip +0 -0
  500. package/templates/metadata/allTemplates.json +16 -0
  501. package/templates/metadata/defaultGeneratorTemplates.json +8 -0
  502. package/templates/metadata.zip +0 -0
  503. package/templates/ui/tdpNode.json +8 -2
  504. package/templates/ui/wizardNode.json +34 -2
  505. package/templates/v4/floor.json +3 -0
  506. package/templates/v4/templates.zip +0 -0
  507. package/build/core/middleware/projectMigratorV3.d.ts +0 -39
  508. package/build/core/middleware/projectMigratorV3.d.ts.map +0 -1
  509. package/build/core/middleware/projectMigratorV3.js +0 -694
  510. package/build/core/middleware/projectMigratorV3.js.map +0 -1
  511. package/build/core/middleware/projectVersionChecker.d.ts +0 -3
  512. package/build/core/middleware/projectVersionChecker.d.ts.map +0 -1
  513. package/build/core/middleware/projectVersionChecker.js +0 -60
  514. package/build/core/middleware/projectVersionChecker.js.map +0 -1
  515. package/build/core/middleware/types.d.ts +0 -9
  516. package/build/core/middleware/types.d.ts.map +0 -1
  517. package/build/core/middleware/types.js.map +0 -1
  518. package/build/core/middleware/utils/MigrationUtils.d.ts +0 -13
  519. package/build/core/middleware/utils/MigrationUtils.d.ts.map +0 -1
  520. package/build/core/middleware/utils/MigrationUtils.js +0 -212
  521. package/build/core/middleware/utils/MigrationUtils.js.map +0 -1
  522. package/build/core/middleware/utils/appYmlGenerator.d.ts +0 -34
  523. package/build/core/middleware/utils/appYmlGenerator.d.ts.map +0 -1
  524. package/build/core/middleware/utils/appYmlGenerator.js +0 -158
  525. package/build/core/middleware/utils/appYmlGenerator.js.map +0 -1
  526. package/build/core/middleware/utils/debug/appLocalYmlGenerator.d.ts +0 -65
  527. package/build/core/middleware/utils/debug/appLocalYmlGenerator.d.ts.map +0 -1
  528. package/build/core/middleware/utils/debug/appLocalYmlGenerator.js +0 -61
  529. package/build/core/middleware/utils/debug/appLocalYmlGenerator.js.map +0 -1
  530. package/build/core/middleware/utils/debug/constants.d.ts +0 -20
  531. package/build/core/middleware/utils/debug/constants.d.ts.map +0 -1
  532. package/build/core/middleware/utils/debug/constants.js +0 -28
  533. package/build/core/middleware/utils/debug/constants.js.map +0 -1
  534. package/build/core/middleware/utils/debug/debugMigrationContext.d.ts +0 -14
  535. package/build/core/middleware/utils/debug/debugMigrationContext.d.ts.map +0 -1
  536. package/build/core/middleware/utils/debug/debugMigrationContext.js +0 -23
  537. package/build/core/middleware/utils/debug/debugMigrationContext.js.map +0 -1
  538. package/build/core/middleware/utils/debug/debugV3MigrationUtils.d.ts +0 -37
  539. package/build/core/middleware/utils/debug/debugV3MigrationUtils.d.ts.map +0 -1
  540. package/build/core/middleware/utils/debug/debugV3MigrationUtils.js +0 -291
  541. package/build/core/middleware/utils/debug/debugV3MigrationUtils.js.map +0 -1
  542. package/build/core/middleware/utils/debug/taskMigrator.d.ts +0 -22
  543. package/build/core/middleware/utils/debug/taskMigrator.d.ts.map +0 -1
  544. package/build/core/middleware/utils/debug/taskMigrator.js +0 -935
  545. package/build/core/middleware/utils/debug/taskMigrator.js.map +0 -1
  546. package/build/core/middleware/utils/migrationContext.d.ts +0 -32
  547. package/build/core/middleware/utils/migrationContext.d.ts.map +0 -1
  548. package/build/core/middleware/utils/migrationContext.js +0 -104
  549. package/build/core/middleware/utils/migrationContext.js.map +0 -1
  550. /package/build/{core/middleware → component/generator/openPlugin}/types.js +0 -0
@@ -2,13 +2,14 @@
2
2
  // Copyright (c) Microsoft Corporation.
3
3
  // Licensed under the MIT license.
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.FxCore = void 0;
5
+ exports.FxCore = exports.fxCoreDeps = void 0;
6
6
  const tslib_1 = require("tslib");
7
7
  const hooks_1 = require("@feathersjs/hooks");
8
8
  const m365_spec_parser_1 = require("@microsoft/m365-spec-parser");
9
9
  const teamsfx_api_1 = require("@microsoft/teamsfx-api");
10
10
  const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
11
11
  const jsonschema = tslib_1.__importStar(require("jsonschema"));
12
+ const adm_zip_1 = tslib_1.__importDefault(require("adm-zip"));
12
13
  const os = tslib_1.__importStar(require("os"));
13
14
  const path = tslib_1.__importStar(require("path"));
14
15
  require("reflect-metadata");
@@ -17,6 +18,7 @@ const url_1 = require("url");
17
18
  const teamsDevPortalClient_1 = require("../client/teamsDevPortalClient");
18
19
  const constants_1 = require("../common/constants");
19
20
  const daSpecParser_1 = require("../common/daSpecParser");
21
+ const featureFlags_1 = require("../common/featureFlags");
20
22
  const globalVars_1 = require("../common/globalVars");
21
23
  const localizeUtils_1 = require("../common/localizeUtils");
22
24
  const projectSettingsHelper_1 = require("../common/projectSettingsHelper");
@@ -34,7 +36,7 @@ const aadManifestHelper_1 = require("../component/driver/aad/utility/aadManifest
34
36
  const buildAadManifest_1 = require("../component/driver/aad/utility/buildAadManifest");
35
37
  require("../component/driver/index");
36
38
  require("../component/driver/script/scriptDriver");
37
- const utils_2 = require("../component/driver/share/utils");
39
+ const shareUtils = tslib_1.__importStar(require("../component/driver/share/utils"));
38
40
  const appStudio_1 = require("../component/driver/teamsApp/appStudio");
39
41
  const errors_1 = require("../component/driver/teamsApp/errors");
40
42
  const results_1 = require("../component/driver/teamsApp/results");
@@ -42,13 +44,15 @@ const teamsappMgr_1 = require("../component/driver/teamsApp/teamsappMgr");
42
44
  const CopilotGptManifestUtils_1 = require("../component/driver/teamsApp/utils/CopilotGptManifestUtils");
43
45
  const ManifestUtils_1 = require("../component/driver/teamsApp/utils/ManifestUtils");
44
46
  const PluginManifestUtils_1 = require("../component/driver/teamsApp/utils/PluginManifestUtils");
45
- const utils_3 = require("../component/driver/teamsApp/utils/utils");
46
- const utils_4 = require("../component/driver/util/utils");
47
+ const utils_2 = require("../component/driver/teamsApp/utils/utils");
48
+ const utils_3 = require("../component/driver/util/utils");
47
49
  const oneDriveSharePointHandler_1 = require("../component/generator/declarativeAgent/oneDriveSharePointHandler");
50
+ const openApiSpecHelper = tslib_1.__importStar(require("../component/generator/openApiSpec/helper"));
48
51
  const helper_1 = require("../component/generator/openApiSpec/helper");
49
52
  const templateHelper_1 = require("../component/generator/templateHelper");
50
53
  const templateNames_1 = require("../component/generator/templates/templateNames");
51
- const utils_5 = require("../component/generator/utils");
54
+ const utils_4 = require("../component/generator/utils");
55
+ const v4MetadataSource_1 = require("../component/generator/v4MetadataSource");
52
56
  const launchHelper_1 = require("../component/m365/launchHelper");
53
57
  const packageService_1 = require("../component/m365/packageService");
54
58
  const envMW_1 = require("../component/middleware/envMW");
@@ -59,28 +63,52 @@ const metadataUtil_1 = require("../component/utils/metadataUtil");
59
63
  const pathUtils_1 = require("../component/utils/pathUtils");
60
64
  const settingsUtil_1 = require("../component/utils/settingsUtil");
61
65
  const common_2 = require("../error/common");
62
- const upgrade_1 = require("../error/upgrade");
63
66
  const yml_1 = require("../error/yml");
64
67
  const constants_3 = require("../question/constants");
65
68
  const other_1 = require("../question/other");
66
69
  const ProjectTypeOptions_1 = require("../question/scaffold/vsc/ProjectTypeOptions");
67
70
  const share_1 = require("../question/share");
68
71
  const callback_1 = require("./callback");
72
+ const collaboratorCore = tslib_1.__importStar(require("./collaborator"));
69
73
  const collaborator_1 = require("./collaborator");
70
74
  const crypto_1 = require("./crypto");
71
75
  const environmentName_1 = require("./environmentName");
72
- const FxCore_declarativeAgent_1 = require("./FxCore.declarativeAgent");
76
+ const FxCore_openPlugin_1 = require("./FxCore.openPlugin");
73
77
  const generateConfigFiles_1 = require("./generateConfigFiles");
74
78
  const concurrentLocker_1 = require("./middleware/concurrentLocker");
75
79
  const contextInjector_1 = require("./middleware/contextInjector");
76
80
  const errorHandler_1 = require("./middleware/errorHandler");
77
81
  const fileLocker_1 = require("./middleware/fileLocker");
78
- const projectMigratorV3_1 = require("./middleware/projectMigratorV3");
79
82
  const retry_1 = require("./middleware/retry");
80
83
  const v3MigrationUtils_1 = require("./middleware/utils/v3MigrationUtils");
81
84
  const share_2 = require("./share");
82
85
  const telemetry_2 = require("./telemetry");
83
- class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
86
+ exports.fxCoreDeps = {
87
+ parseShareAppActionYamlConfig: shareUtils.parseShareAppActionYamlConfig,
88
+ shareWithTenant: share_2.shareWithTenant,
89
+ addSharedUsers: share_2.addSharedUsers,
90
+ removeShareAccess: share_2.removeShareAccess,
91
+ grantPermission: collaboratorCore.grantPermission,
92
+ checkPermission: collaboratorCore.checkPermission,
93
+ listCollaborator: collaboratorCore.listCollaborator,
94
+ buildAadManifest: buildAadManifest_1.buildAadManifest,
95
+ listAPIInfo: daSpecParser_1.listAPIInfo,
96
+ listOperations: openApiSpecHelper.listOperations,
97
+ getManifestPath: CopilotGptManifestUtils_1.copilotGptManifestUtils.getManifestPath,
98
+ readCopilotGptManifestFile: CopilotGptManifestUtils_1.copilotGptManifestUtils.readCopilotGptManifestFile,
99
+ updateConversationStarters: CopilotGptManifestUtils_1.copilotGptManifestUtils.updateConversationStarters,
100
+ isValidProjectV3: projectSettingsHelper_1.isValidProjectV3,
101
+ getProjectVersionFromPath: v3MigrationUtils_1.getProjectVersionFromPath,
102
+ getTrackingIdFromPath: v3MigrationUtils_1.getTrackingIdFromPath,
103
+ getVersionState: v3MigrationUtils_1.getVersionState,
104
+ getCoreVersion: () => require("../../package.json").version,
105
+ useLocalTemplate: templateHelper_1.useLocalTemplate,
106
+ getTemplateLatestVersion: utils_4.getTemplateLatestVersion,
107
+ getTemplateVSLatestVersion: utils_4.getTemplateVSLatestVersion,
108
+ fetchZipFromUrl: utils_4.fetchZipFromUrl,
109
+ unzip: utils_4.unzip,
110
+ };
111
+ class FxCore extends FxCore_openPlugin_1.FxCoreOpenPluginPart {
84
112
  constructor(tools) {
85
113
  super();
86
114
  (0, globalVars_1.setTools)(tools);
@@ -109,12 +137,12 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
109
137
  inputs[constants_3.QuestionNames.Scratch] = constants_3.ScratchOptions.yes().id;
110
138
  // should never happen as we do same check on Developer Portal.
111
139
  if (inputs.teamsAppFromTdp) {
112
- if ((0, utils_3.containsUnsupportedFeature)(inputs.teamsAppFromTdp)) {
140
+ if ((0, utils_2.containsUnsupportedFeature)(inputs.teamsAppFromTdp)) {
113
141
  return (0, teamsfx_api_1.err)(new common_2.InputValidationError("manifest.json", "App contains unsupported features"));
114
142
  }
115
143
  else {
116
144
  context.telemetryReporter.sendTelemetryEvent(telemetry_2.CoreTelemetryEvent.CreateFromTdpStart, {
117
- [telemetry_2.CoreTelemetryProperty.TdpTeamsAppFeatures]: (0, utils_3.getFeaturesFromAppDefinition)(inputs.teamsAppFromTdp).join(","),
145
+ [telemetry_2.CoreTelemetryProperty.TdpTeamsAppFeatures]: (0, utils_2.getFeaturesFromAppDefinition)(inputs.teamsAppFromTdp).join(","),
118
146
  [telemetry_2.CoreTelemetryProperty.TdpTeamsAppId]: inputs.teamsAppFromTdp.teamsAppId,
119
147
  });
120
148
  }
@@ -180,7 +208,7 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
180
208
  */
181
209
  async provisionResourcesOnce(inputs, ctx) {
182
210
  inputs.stage = teamsfx_api_1.Stage.provision;
183
- const context = (0, utils_4.createDriverContext)(inputs);
211
+ const context = (0, utils_3.createDriverContext)(inputs);
184
212
  try {
185
213
  const res = await coordinator_1.coordinator.provision(context, inputs);
186
214
  if (res.isOk()) {
@@ -446,7 +474,7 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
446
474
  */
447
475
  async deployArtifacts(inputs, ctx) {
448
476
  inputs.stage = teamsfx_api_1.Stage.deploy;
449
- const context = (0, utils_4.createDriverContext)(inputs);
477
+ const context = (0, utils_3.createDriverContext)(inputs);
450
478
  const res = await coordinator_1.coordinator.deploy(context, inputs);
451
479
  if (res.isOk()) {
452
480
  ctx.envVars = res.value;
@@ -482,7 +510,7 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
482
510
  manifestPath: manifestTemplatePath,
483
511
  outputFilePath: manifestOutputPath,
484
512
  };
485
- const Context = (0, utils_4.createDriverContext)(inputs);
513
+ const Context = (0, utils_3.createDriverContext)(inputs);
486
514
  (0, globalVars_1.setErrorContext)({ component: "aadAppUpdate" });
487
515
  const res = await updateAadClient.execute(inputArgs, Context);
488
516
  if (res.result.isErr()) {
@@ -517,7 +545,7 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
517
545
  framework: inputs[constants_3.QuestionNames.SPFxFramework],
518
546
  spfxPackage: constants_3.SPFxVersionOptionIds.installLocally,
519
547
  };
520
- const Context = (0, utils_4.createDriverContext)(inputs);
548
+ const Context = (0, utils_3.createDriverContext)(inputs);
521
549
  const res = await driver.run(args, Context);
522
550
  if (res.isErr()) {
523
551
  return (0, teamsfx_api_1.err)(res.error);
@@ -529,7 +557,7 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
529
557
  */
530
558
  async publishApplication(inputs, ctx) {
531
559
  inputs.stage = teamsfx_api_1.Stage.publish;
532
- const context = (0, utils_4.createDriverContext)(inputs);
560
+ const context = (0, utils_3.createDriverContext)(inputs);
533
561
  const res = await coordinator_1.coordinator.publish(context, inputs);
534
562
  if (res.isOk()) {
535
563
  ctx.envVars = res.value;
@@ -542,11 +570,17 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
542
570
  }
543
571
  }
544
572
  async removeSharedAccess(inputs, ctx) {
545
- const emails = inputs[constants_3.QuestionNames.RemoveUsers];
573
+ const removeUsersInput = inputs[constants_3.QuestionNames.RemoveUsers];
574
+ const emails = Array.isArray(removeUsersInput)
575
+ ? removeUsersInput
576
+ : removeUsersInput
577
+ ?.split(",")
578
+ .map((email) => email.trim())
579
+ .filter((email) => !!email) ?? [];
546
580
  if (!emails || emails.length === 0) {
547
581
  return (0, teamsfx_api_1.err)(new common_2.MissingRequiredInputError("emails", "FxCore"));
548
582
  }
549
- const parseRes = await (0, utils_2.parseShareAppActionYamlConfig)(inputs.projectPath);
583
+ const parseRes = await exports.fxCoreDeps.parseShareAppActionYamlConfig(inputs.projectPath);
550
584
  if (parseRes.isErr()) {
551
585
  return (0, teamsfx_api_1.err)(parseRes.error);
552
586
  }
@@ -602,12 +636,19 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
602
636
  let emails = [];
603
637
  if (scope === share_1.ShareScopeOption.ShareAppWithSpecificUsers ||
604
638
  operation === share_1.ShareOperationOption.RemoveShareAccessFromUsers) {
605
- emails = inputs[constants_3.QuestionNames.UserEmail].split(",").map((e) => e.trim());
639
+ emails =
640
+ inputs[constants_3.QuestionNames.UserEmail]
641
+ ?.split(",")
642
+ .map((e) => e.trim())
643
+ .filter((e) => !!e) ?? [];
644
+ if (emails.length === 0) {
645
+ return (0, teamsfx_api_1.err)(new common_2.InputValidationError("emails", "No emails"));
646
+ }
606
647
  if (emails.length > constants_3.MAX_EMAIL_NUMBER) {
607
648
  return (0, teamsfx_api_1.err)(new common_2.InputValidationError("emails", "Too many emails"));
608
649
  }
609
650
  }
610
- const parseRes = await (0, utils_2.parseShareAppActionYamlConfig)(inputs.projectPath);
651
+ const parseRes = await exports.fxCoreDeps.parseShareAppActionYamlConfig(inputs.projectPath);
611
652
  if (parseRes.isErr()) {
612
653
  return (0, teamsfx_api_1.err)(parseRes.error);
613
654
  }
@@ -621,13 +662,13 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
621
662
  }
622
663
  const mosToken = mosTokenRes.value;
623
664
  if (operation === share_1.ShareOperationOption.RemoveShareAccessFromUsers) {
624
- return (0, share_2.removeShareAccess)(mosToken, sharedTitleId, emails);
665
+ return exports.fxCoreDeps.removeShareAccess(mosToken, sharedTitleId, emails);
625
666
  }
626
667
  else if (scope === share_1.ShareScopeOption.ShareAppWithTenantUsers) {
627
- return (0, share_2.shareWithTenant)(mosToken, sharedTitleId);
668
+ return exports.fxCoreDeps.shareWithTenant(mosToken, sharedTitleId);
628
669
  }
629
670
  else if (scope === share_1.ShareScopeOption.ShareAppWithSpecificUsers) {
630
- return (0, share_2.addSharedUsers)(mosToken, sharedTitleId, emails);
671
+ return exports.fxCoreDeps.addSharedUsers(mosToken, sharedTitleId, emails);
631
672
  }
632
673
  else {
633
674
  return (0, teamsfx_api_1.err)(new common_2.InputValidationError("shareOption", "Invalid share option"));
@@ -638,7 +679,7 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
638
679
  */
639
680
  async executeUserTask(func, inputs) {
640
681
  let res = (0, teamsfx_api_1.ok)(undefined);
641
- const context = (0, utils_4.createDriverContext)(inputs);
682
+ const context = (0, utils_3.createDriverContext)(inputs);
642
683
  if (func.method === "addSso") {
643
684
  // used in v3 only in VS
644
685
  inputs.stage = teamsfx_api_1.Stage.addFeature;
@@ -661,8 +702,8 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
661
702
  }
662
703
  await fs_extra_1.default.ensureDir(path.join(inputs.projectPath, "build"));
663
704
  const manifestOutputPath = path.join(inputs.projectPath, "build", `aad.${inputs.env}.json`);
664
- const Context = (0, utils_4.createDriverContext)(inputs);
665
- await (0, buildAadManifest_1.buildAadManifest)(Context, manifestTemplatePath, manifestOutputPath);
705
+ const Context = (0, utils_3.createDriverContext)(inputs);
706
+ await exports.fxCoreDeps.buildAadManifest(Context, manifestTemplatePath, manifestOutputPath);
666
707
  return (0, teamsfx_api_1.ok)(undefined);
667
708
  }
668
709
  async convertAadToNewSchema(inputs) {
@@ -733,7 +774,7 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
733
774
  */
734
775
  async validateManifest(inputs) {
735
776
  inputs.stage = teamsfx_api_1.Stage.validateApplication;
736
- const context = (0, utils_4.createDriverContext)(inputs);
777
+ const context = (0, utils_3.createDriverContext)(inputs);
737
778
  const teamsAppManifestFilePath = inputs["manifest-path"];
738
779
  const args = {
739
780
  manifestPath: teamsAppManifestFilePath,
@@ -748,7 +789,7 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
748
789
  */
749
790
  async validateAppPackage(inputs) {
750
791
  inputs.stage = teamsfx_api_1.Stage.validateApplication;
751
- const context = (0, utils_4.createDriverContext)(inputs);
792
+ const context = (0, utils_3.createDriverContext)(inputs);
752
793
  const teamsAppPackageFilePath = inputs["app-package-file-path"];
753
794
  const args = {
754
795
  appPackagePath: teamsAppPackageFilePath,
@@ -758,7 +799,7 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
758
799
  return (await driver.execute(args, context)).result;
759
800
  }
760
801
  async validateWithTestCases(inputs) {
761
- const context = (0, utils_4.createDriverContext)(inputs);
802
+ const context = (0, utils_3.createDriverContext)(inputs);
762
803
  const args = {
763
804
  appPackagePath: inputs["app-package-file-path"],
764
805
  showMessage: true,
@@ -771,7 +812,7 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
771
812
  * v3 only none lifecycle command
772
813
  */
773
814
  async syncManifest(inputs) {
774
- const context = (0, utils_4.createDriverContext)(inputs);
815
+ const context = (0, utils_3.createDriverContext)(inputs);
775
816
  const projectPath = inputs[constants_3.QuestionNames.ProjectPath];
776
817
  const env = inputs[constants_3.QuestionNames.Env];
777
818
  const teamsAppId = inputs[constants_3.QuestionNames.TeamsAppId];
@@ -788,7 +829,7 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
788
829
  */
789
830
  async createAppPackage(inputs) {
790
831
  inputs.stage = teamsfx_api_1.Stage.createAppPackage;
791
- const context = (0, utils_4.createDriverContext)(inputs);
832
+ const context = (0, utils_3.createDriverContext)(inputs);
792
833
  // For TSP projects
793
834
  await (0, tools_1.runForTypeSpecProject)(inputs.projectPath, context);
794
835
  const teamsAppManifestFilePath = inputs?.[constants_3.QuestionNames.TeamsAppManifestFilePath];
@@ -966,7 +1007,7 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
966
1007
  inputs.stage = teamsfx_api_1.Stage.grantPermission;
967
1008
  const context = (0, globalVars_1.createContext)();
968
1009
  (0, globalVars_1.setErrorContext)({ component: "collaborator" });
969
- const res = await (0, collaborator_1.grantPermission)(context, inputs, globalVars_1.TOOLS.tokenProvider);
1010
+ const res = await exports.fxCoreDeps.grantPermission(context, inputs, globalVars_1.TOOLS.tokenProvider);
970
1011
  return res;
971
1012
  }
972
1013
  /**
@@ -975,7 +1016,7 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
975
1016
  async checkPermission(inputs) {
976
1017
  inputs.stage = teamsfx_api_1.Stage.checkPermission;
977
1018
  const context = (0, globalVars_1.createContext)();
978
- const res = await (0, collaborator_1.checkPermission)(context, inputs, globalVars_1.TOOLS.tokenProvider);
1019
+ const res = await exports.fxCoreDeps.checkPermission(context, inputs, globalVars_1.TOOLS.tokenProvider);
979
1020
  return res;
980
1021
  }
981
1022
  /**
@@ -984,7 +1025,7 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
984
1025
  async listCollaborator(inputs) {
985
1026
  inputs.stage = teamsfx_api_1.Stage.listCollaborator;
986
1027
  const context = (0, globalVars_1.createContext)();
987
- const res = await (0, collaborator_1.listCollaborator)(context, inputs, globalVars_1.TOOLS.tokenProvider);
1028
+ const res = await exports.fxCoreDeps.listCollaborator(context, inputs, globalVars_1.TOOLS.tokenProvider);
988
1029
  return res;
989
1030
  }
990
1031
  getSelectedEnv(inputs) {
@@ -1065,45 +1106,16 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
1065
1106
  globalVars_1.TOOLS.logProvider.info(`env file created: ${targetDotEnvFile}`);
1066
1107
  return (0, teamsfx_api_1.ok)(undefined);
1067
1108
  }
1068
- // a phantom migration method for V3
1069
- async phantomMigrationV3(inputs) {
1070
- // If the project is invalid or upgraded, the ProjectMigratorMWV3 will not take action.
1071
- // Check invaliad/upgraded project here before call ProjectMigratorMWV3
1072
- const projectPath = inputs.projectPath || "";
1073
- const version = await (0, v3MigrationUtils_1.getProjectVersionFromPath)(projectPath);
1074
- if (version.source === versionMetadata_1.VersionSource.teamsapp) {
1075
- return (0, teamsfx_api_1.err)(new upgrade_1.NoNeedUpgradeError());
1076
- }
1077
- else if (version.source === versionMetadata_1.VersionSource.projectSettings) {
1078
- const isValid = await (0, projectMigratorV3_1.checkActiveResourcePlugins)(projectPath);
1079
- if (!isValid) {
1080
- return (0, teamsfx_api_1.err)(new common_2.InvalidProjectError(projectPath));
1081
- }
1082
- }
1083
- if (version.source === versionMetadata_1.VersionSource.unknown) {
1084
- return (0, teamsfx_api_1.err)(new common_2.InvalidProjectError(projectPath));
1085
- }
1086
- return this.innerMigrationV3(inputs);
1087
- }
1088
- innerMigrationV3(inputs) {
1089
- return (0, teamsfx_api_1.ok)(undefined);
1090
- }
1091
1109
  // a project version check
1092
1110
  async projectVersionCheck(inputs) {
1093
1111
  const projectPath = inputs.projectPath || "";
1094
- if ((0, projectSettingsHelper_1.isValidProjectV3)(projectPath) || (0, projectSettingsHelper_1.isValidProjectV2)(projectPath)) {
1095
- const versionInfo = await (0, v3MigrationUtils_1.getProjectVersionFromPath)(projectPath);
1112
+ if (exports.fxCoreDeps.isValidProjectV3(projectPath)) {
1113
+ const versionInfo = await exports.fxCoreDeps.getProjectVersionFromPath(projectPath);
1096
1114
  if (!versionInfo.version) {
1097
1115
  return (0, teamsfx_api_1.err)(new common_2.InvalidProjectError(projectPath));
1098
1116
  }
1099
- const trackingId = await (0, v3MigrationUtils_1.getTrackingIdFromPath)(projectPath);
1100
- const isSupport = (0, v3MigrationUtils_1.getVersionState)(versionInfo);
1101
- // if the project is upgradeable, check whether the project is valid and invalid project should not show upgrade option.
1102
- if (isSupport === versionMetadata_1.VersionState.upgradeable) {
1103
- if (!(await (0, projectMigratorV3_1.checkActiveResourcePlugins)(projectPath))) {
1104
- return (0, teamsfx_api_1.err)(new common_2.InvalidProjectError(projectPath));
1105
- }
1106
- }
1117
+ const trackingId = await exports.fxCoreDeps.getTrackingIdFromPath(projectPath);
1118
+ const isSupport = exports.fxCoreDeps.getVersionState(versionInfo);
1107
1119
  return (0, teamsfx_api_1.ok)({
1108
1120
  currentVersion: versionInfo.version,
1109
1121
  trackingId,
@@ -1189,11 +1201,11 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
1189
1201
  }
1190
1202
  }
1191
1203
  async preProvisionForVS(inputs) {
1192
- const context = (0, utils_4.createDriverContext)(inputs);
1204
+ const context = (0, utils_3.createDriverContext)(inputs);
1193
1205
  return coordinator_1.coordinator.preProvisionForVS(context, inputs);
1194
1206
  }
1195
1207
  async preCheckYmlAndEnvForVS(inputs) {
1196
- const context = (0, utils_4.createDriverContext)(inputs);
1208
+ const context = (0, utils_3.createDriverContext)(inputs);
1197
1209
  const result = await coordinator_1.coordinator.preCheckYmlAndEnvForVS(context, inputs);
1198
1210
  return result;
1199
1211
  }
@@ -1251,11 +1263,11 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
1251
1263
  }
1252
1264
  if (authNames.size >= 1) {
1253
1265
  for (const authName of authNames) {
1254
- await (0, helper_1.injectAuthAction)(inputs.projectPath, [...authNames][0], authNamesDict[authName], outputApiSpecPath, false);
1266
+ await openApiSpecHelper.injectAuthAction(inputs.projectPath, [...authNames][0], authNamesDict[authName], outputApiSpecPath, false);
1255
1267
  }
1256
1268
  }
1257
1269
  let pluginPath;
1258
- const generateResult = await (0, helper_1.generateFromApiSpec)(specParser, manifestPath, inputs, context, "copilotPluginAddAPI", m365_spec_parser_1.ProjectType.SME, {
1270
+ const generateResult = await openApiSpecHelper.generateFromApiSpec(specParser, manifestPath, inputs, context, "copilotPluginAddAPI", m365_spec_parser_1.ProjectType.SME, {
1259
1271
  destinationApiSpecFilePath: outputApiSpecPath,
1260
1272
  responseTemplateFolder: adaptiveCardFolder,
1261
1273
  pluginManifestFilePath: pluginPath,
@@ -1264,7 +1276,7 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
1264
1276
  return (0, teamsfx_api_1.err)(generateResult.error);
1265
1277
  }
1266
1278
  if (generateResult.value.warnings && generateResult.value.warnings.length > 0) {
1267
- const warnSummary = await (0, helper_1.generateScaffoldingSummary)(generateResult.value.warnings, manifestRes.value, path.relative(inputs.projectPath, outputApiSpecPath), pluginPath === undefined ? undefined : path.relative(inputs.projectPath, pluginPath), inputs.projectPath);
1279
+ const warnSummary = await openApiSpecHelper.generateScaffoldingSummary(generateResult.value.warnings, manifestRes.value, path.relative(inputs.projectPath, outputApiSpecPath), pluginPath === undefined ? undefined : path.relative(inputs.projectPath, pluginPath), inputs.projectPath);
1268
1280
  if (warnSummary) {
1269
1281
  context.logProvider.info(warnSummary);
1270
1282
  }
@@ -1306,7 +1318,7 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
1306
1318
  }
1307
1319
  }
1308
1320
  async copilotPluginListOperations(inputs) {
1309
- const res = await (0, helper_1.listOperations)((0, globalVars_1.createContext)(), inputs.apiSpecUrl, inputs, inputs.includeExistingAPIs, inputs.shouldLogWarning);
1321
+ const res = await exports.fxCoreDeps.listOperations((0, globalVars_1.createContext)(), inputs.apiSpecUrl, inputs, inputs.includeExistingAPIs, inputs.shouldLogWarning);
1310
1322
  if (res.isErr()) {
1311
1323
  const msg = res.error.map((e) => e.content).join("\n");
1312
1324
  return (0, teamsfx_api_1.err)(new teamsfx_api_1.UserError("FxCore", "ListOpenAPISpecOperationsError", msg, msg));
@@ -1328,13 +1340,14 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
1328
1340
  async regeneratePlugin(inputs) {
1329
1341
  const projectPath = inputs.projectPath;
1330
1342
  const context = (0, globalVars_1.createContext)();
1331
- const teamsManifestPath = inputs[constants_3.QuestionNames.ManifestPath];
1343
+ const teamsManifestPath = (inputs[constants_3.QuestionNames.ManifestPath] ??
1344
+ inputs[constants_3.QuestionNames.TeamsAppManifestFilePath]);
1332
1345
  const appPackageFolder = path.dirname(teamsManifestPath);
1333
1346
  const manifestRes = await ManifestUtils_1.manifestUtils._readAppManifest(teamsManifestPath);
1334
1347
  if (manifestRes.isErr()) {
1335
1348
  return (0, teamsfx_api_1.err)(manifestRes.error);
1336
1349
  }
1337
- const gptManifestFilePathRes = await CopilotGptManifestUtils_1.copilotGptManifestUtils.getManifestPath(teamsManifestPath);
1350
+ const gptManifestFilePathRes = await exports.fxCoreDeps.getManifestPath(teamsManifestPath);
1338
1351
  if (gptManifestFilePathRes.isErr()) {
1339
1352
  return (0, teamsfx_api_1.err)(gptManifestFilePathRes.error);
1340
1353
  }
@@ -1342,7 +1355,7 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
1342
1355
  // Will be used if generating from API spec
1343
1356
  let authNameAndSchemes = [];
1344
1357
  const specPath = inputs[constants_3.QuestionNames.ApiSpecLocation].trim();
1345
- const listResult = await (0, daSpecParser_1.listAPIInfo)(specPath);
1358
+ const listResult = await exports.fxCoreDeps.listAPIInfo(specPath);
1346
1359
  authNameAndSchemes = this.parseAuthNameAndScheme(listResult, inputs);
1347
1360
  if (authNameAndSchemes.length > 0) {
1348
1361
  const doesLocalYamlPathExists = await fs_extra_1.default.pathExists(path.join(projectPath, versionMetadata_1.MetadataV3.localConfigFile));
@@ -1359,7 +1372,7 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
1359
1372
  }
1360
1373
  const destinationPluginManifestPath = inputs[constants_3.QuestionNames.SelectPluginManifest];
1361
1374
  const destinationApiSpecPath = inputs[constants_3.QuestionNames.SelectOpenAPISpecFromPlugin];
1362
- const generateRes = await (0, helper_1.generateFromApiSpec)(undefined, teamsManifestPath, inputs, context, teamsfx_api_1.Stage.RegeneratePlugin, m365_spec_parser_1.ProjectType.Copilot, {
1375
+ const generateRes = await openApiSpecHelper.generateFromApiSpec(undefined, teamsManifestPath, inputs, context, teamsfx_api_1.Stage.RegeneratePlugin, m365_spec_parser_1.ProjectType.Copilot, {
1363
1376
  destinationApiSpecFilePath: destinationApiSpecPath,
1364
1377
  pluginManifestFilePath: destinationPluginManifestPath,
1365
1378
  }, inputs[constants_3.QuestionNames.ApiSpecLocation].trim(), true);
@@ -1368,21 +1381,21 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
1368
1381
  }
1369
1382
  const warnings = generateRes.value.warnings;
1370
1383
  if (warnings && warnings.length > 0) {
1371
- const warnSummary = await (0, helper_1.generateScaffoldingSummary)(warnings, manifestRes.value, path.relative(projectPath, destinationApiSpecPath), path.relative(projectPath, destinationPluginManifestPath), projectPath);
1384
+ const warnSummary = await openApiSpecHelper.generateScaffoldingSummary(warnings, manifestRes.value, path.relative(projectPath, destinationApiSpecPath), path.relative(projectPath, destinationPluginManifestPath), projectPath);
1372
1385
  context.logProvider.info(warnSummary + "\n");
1373
1386
  }
1374
1387
  for (const authNameAndScheme of authNameAndSchemes) {
1375
1388
  await this.updateAuthActionInYaml(authNameAndScheme.authName, authNameAndScheme.authScheme, projectPath, destinationApiSpecPath, destinationPluginManifestPath, false);
1376
1389
  }
1377
1390
  const declarativeAgentManifestPath = gptManifestFilePathRes.value;
1378
- const declarativeAgentManifesRes = await CopilotGptManifestUtils_1.copilotGptManifestUtils.readCopilotGptManifestFile(declarativeAgentManifestPath);
1391
+ const declarativeAgentManifesRes = await exports.fxCoreDeps.readCopilotGptManifestFile(declarativeAgentManifestPath);
1379
1392
  if (declarativeAgentManifesRes.isErr()) {
1380
1393
  return (0, teamsfx_api_1.err)(declarativeAgentManifesRes.error);
1381
1394
  }
1382
1395
  const declarativeAgentManifest = declarativeAgentManifesRes.value;
1383
1396
  for (const action of declarativeAgentManifest.actions) {
1384
1397
  const actionPath = path.normalize(path.join(appPackageFolder, action.file));
1385
- await CopilotGptManifestUtils_1.copilotGptManifestUtils.updateConversationStarters(actionPath, declarativeAgentManifest);
1398
+ await exports.fxCoreDeps.updateConversationStarters(actionPath, declarativeAgentManifest);
1386
1399
  }
1387
1400
  const actionId = inputs[constants_3.QuestionNames.SelectPluginId];
1388
1401
  if (inputs.platform === teamsfx_api_1.Platform.VSCode) {
@@ -1481,6 +1494,281 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
1481
1494
  this.showAddKnowledgeSuccessMessage(context, inputs, agentManifestPath, knowledgeSource);
1482
1495
  return (0, teamsfx_api_1.ok)(result);
1483
1496
  }
1497
+ /**
1498
+ * Add Skill
1499
+ */
1500
+ async addSkill(inputs) {
1501
+ if (!featureFlags_1.featureFlagManager.getBooleanValue(featureFlags_1.FeatureFlags.AgentSkillsManifest)) {
1502
+ return (0, teamsfx_api_1.err)(new teamsfx_api_1.UserError("FxCore", "AgentSkillsDisabled", (0, localizeUtils_1.getLocalizedString)("core.addSkill.featureFlagDisabled")));
1503
+ }
1504
+ if (!inputs.projectPath) {
1505
+ throw new Error("projectPath is undefined"); // should never happen
1506
+ }
1507
+ const context = (0, globalVars_1.createContext)();
1508
+ const projectPath = inputs.projectPath;
1509
+ const teamsManifestPath = path.resolve(projectPath, inputs[constants_3.QuestionNames.ManifestPath]);
1510
+ const appPackageFolder = path.dirname(teamsManifestPath);
1511
+ // Validate the project is valid for adding a skill
1512
+ const manifestRes = await ManifestUtils_1.manifestUtils._readAppManifest(teamsManifestPath);
1513
+ if (manifestRes.isErr()) {
1514
+ return (0, teamsfx_api_1.err)(manifestRes.error);
1515
+ }
1516
+ const teamsManifest = manifestRes.value;
1517
+ const agent = teamsManifest.copilotExtensions
1518
+ ? teamsManifest.copilotExtensions.declarativeCopilots?.[0]
1519
+ : teamsManifest.copilotAgents?.declarativeAgents?.[0];
1520
+ if (!agent?.file) {
1521
+ return (0, teamsfx_api_1.err)(results_1.AppStudioResultFactory.UserError(errors_1.AppStudioError.TeamsAppRequiredPropertyMissingError.name, errors_1.AppStudioError.TeamsAppRequiredPropertyMissingError.message("declarativeAgents", teamsManifestPath)));
1522
+ }
1523
+ const agentFilePathRes = await CopilotGptManifestUtils_1.copilotGptManifestUtils.getManifestPath(teamsManifestPath);
1524
+ if (agentFilePathRes.isErr()) {
1525
+ return (0, teamsfx_api_1.err)(agentFilePathRes.error);
1526
+ }
1527
+ const agentManifestPath = agentFilePathRes.value;
1528
+ // Confirm before modifying files (matches addPlugin pattern)
1529
+ const confirmMessage = (0, localizeUtils_1.getLocalizedString)("core.addSkill.confirm", path.relative(inputs.projectPath, appPackageFolder));
1530
+ const confirmRes = await context.userInteraction.showMessage("warn", confirmMessage, true, (0, localizeUtils_1.getLocalizedString)("core.addSkill.continue"));
1531
+ if (confirmRes.isErr()) {
1532
+ return (0, teamsfx_api_1.err)(confirmRes.error);
1533
+ }
1534
+ else if (confirmRes.value !== (0, localizeUtils_1.getLocalizedString)("core.addSkill.continue")) {
1535
+ return (0, teamsfx_api_1.err)(new common_2.UserCancelError());
1536
+ }
1537
+ const skillName = inputs[constants_3.QuestionNames.SkillName];
1538
+ const skillDescription = inputs[constants_3.QuestionNames.SkillDescription];
1539
+ const skillFrom = inputs[constants_3.QuestionNames.SkillFrom];
1540
+ const skillFromZipFile = inputs[constants_3.QuestionNames.SkillFromZipFile];
1541
+ let skillFolder;
1542
+ if (skillFrom || skillFromZipFile) {
1543
+ const isZipImport = skillFromZipFile || (skillFrom && skillFrom.toLowerCase().endsWith(".zip"));
1544
+ const sourcePath = skillFromZipFile || skillFrom;
1545
+ if (isZipImport) {
1546
+ // Zip import mode
1547
+ const importRes = await this.importSkillFromZip(sourcePath, appPackageFolder, agentManifestPath);
1548
+ if (importRes.isErr()) {
1549
+ return (0, teamsfx_api_1.err)(importRes.error);
1550
+ }
1551
+ skillFolder = importRes.value;
1552
+ }
1553
+ else {
1554
+ // Existing skill folder mode: validate it's within appPackage
1555
+ const skillAbsPath = path.resolve(appPackageFolder, sourcePath);
1556
+ const relativePath = path.relative(appPackageFolder, skillAbsPath);
1557
+ if (relativePath.startsWith("..")) {
1558
+ return (0, teamsfx_api_1.err)(new teamsfx_api_1.UserError("FxCore", "SkillOutsideAppPackage", "The skill directory must be within the app package folder."));
1559
+ }
1560
+ // Validate folder name format
1561
+ const folderName = path.basename(skillAbsPath);
1562
+ const namePattern = /^[a-zA-Z][a-zA-Z0-9-]*$/;
1563
+ if (!namePattern.test(folderName)) {
1564
+ return (0, teamsfx_api_1.err)(new teamsfx_api_1.UserError("FxCore", "InvalidSkillFolderName", `Skill folder name "${folderName}" is invalid. It must start with a letter and contain only letters, numbers, and hyphens.`));
1565
+ }
1566
+ // Validate SKILL.md exists
1567
+ const skillMdPath = path.join(skillAbsPath, "SKILL.md");
1568
+ if (!(await fs_extra_1.default.pathExists(skillMdPath))) {
1569
+ return (0, teamsfx_api_1.err)(new teamsfx_api_1.UserError("FxCore", "SkillMdNotFound", `SKILL.md not found in ${skillAbsPath}. Each skill directory must contain a SKILL.md file.`));
1570
+ }
1571
+ // Validate skill name in SKILL.md matches folder name
1572
+ const skillMdContent = await fs_extra_1.default.readFile(skillMdPath, "utf-8");
1573
+ const nameMatch = skillMdContent.match(/^---[\s\S]*?^name:\s*(.+)$/m);
1574
+ if (nameMatch) {
1575
+ const skillMdName = nameMatch[1].trim();
1576
+ if (skillMdName !== folderName) {
1577
+ return (0, teamsfx_api_1.err)(new teamsfx_api_1.UserError("FxCore", "SkillNameMismatch", `Skill name "${skillMdName}" in SKILL.md does not match folder name "${folderName}". They must be the same.`));
1578
+ }
1579
+ }
1580
+ skillFolder = (0, utils_2.normalizePath)(path.relative(path.dirname(agentManifestPath), skillAbsPath), true);
1581
+ }
1582
+ }
1583
+ else {
1584
+ // New skill mode: create the directory and SKILL.md
1585
+ const skillDir = path.join(appPackageFolder, "skills", skillName);
1586
+ await fs_extra_1.default.ensureDir(skillDir);
1587
+ const skillMdContent = [
1588
+ "---",
1589
+ `name: ${skillName}`,
1590
+ `description: ${skillDescription}`,
1591
+ "---",
1592
+ `# ${skillName}`,
1593
+ "",
1594
+ "<!-- Add your skill instructions here -->",
1595
+ "<!-- The agent will follow these instructions when this skill is activated -->",
1596
+ "",
1597
+ ].join("\n");
1598
+ await fs_extra_1.default.writeFile(path.join(skillDir, "SKILL.md"), skillMdContent);
1599
+ skillFolder = (0, utils_2.normalizePath)(path.relative(path.dirname(agentManifestPath), skillDir), true);
1600
+ }
1601
+ // Add skill entry to DA manifest
1602
+ const addSkillRes = await CopilotGptManifestUtils_1.copilotGptManifestUtils.addSkill(agentManifestPath, skillFolder);
1603
+ if (addSkillRes.isErr()) {
1604
+ return (0, teamsfx_api_1.err)(addSkillRes.error);
1605
+ }
1606
+ // Optionally expose skill to Copilot via top-level Teams manifest agentSkills
1607
+ const exposeToCopilot = inputs[constants_3.QuestionNames.ExposeToCopilot];
1608
+ if (exposeToCopilot === true || exposeToCopilot === "yes") {
1609
+ // Compute folder path relative to app package folder (Teams manifest dir)
1610
+ const skillAbsPath = path.resolve(path.dirname(agentManifestPath), skillFolder);
1611
+ const teamsManifestSkillFolder = (0, utils_2.normalizePath)(path.relative(appPackageFolder, skillAbsPath), true);
1612
+ // Read, update, and write the Teams manifest
1613
+ const teamsManifestForSkill = manifestRes.value;
1614
+ if (!teamsManifestForSkill.agentSkills) {
1615
+ teamsManifestForSkill.agentSkills = [];
1616
+ }
1617
+ if (!teamsManifestForSkill.agentSkills.some((s) => s.folder === teamsManifestSkillFolder)) {
1618
+ teamsManifestForSkill.agentSkills.push({ folder: teamsManifestSkillFolder });
1619
+ }
1620
+ await fs_extra_1.default.writeFile(teamsManifestPath, JSON.stringify(teamsManifestForSkill, null, 4));
1621
+ }
1622
+ // Show success message
1623
+ if (inputs.platform === teamsfx_api_1.Platform.VSCode) {
1624
+ const successMessage = (0, localizeUtils_1.getLocalizedString)("core.addSkill.success.vsc");
1625
+ const viewAgentManifest = (0, localizeUtils_1.getLocalizedString)("core.addSkill.success.viewAgentManifest");
1626
+ void context.userInteraction
1627
+ .showMessage("info", successMessage, false, viewAgentManifest)
1628
+ .then((userRes) => {
1629
+ if (userRes.isOk() && userRes.value === viewAgentManifest) {
1630
+ void globalVars_1.TOOLS?.ui?.openFile?.(agentManifestPath);
1631
+ }
1632
+ });
1633
+ }
1634
+ else {
1635
+ const successMessage = (0, localizeUtils_1.getLocalizedString)("core.addSkill.success", agentManifestPath);
1636
+ void context.userInteraction.showMessage("info", successMessage, false);
1637
+ }
1638
+ return (0, teamsfx_api_1.ok)(undefined);
1639
+ }
1640
+ /**
1641
+ * Import a skill from a .zip file into the appPackage/skills folder.
1642
+ * Validates zip entries for security, extracts to a temp directory, then moves atomically.
1643
+ */
1644
+ async importSkillFromZip(zipPath, appPackageFolder, agentManifestPath) {
1645
+ // Resolve zip path relative to CWD (not appPackage)
1646
+ const resolvedZipPath = path.resolve(zipPath);
1647
+ if (!(await fs_extra_1.default.pathExists(resolvedZipPath))) {
1648
+ return (0, teamsfx_api_1.err)(new teamsfx_api_1.UserError("FxCore", "ZipFileNotFound", `Zip file not found: ${resolvedZipPath}`));
1649
+ }
1650
+ let zip;
1651
+ try {
1652
+ zip = new adm_zip_1.default(resolvedZipPath);
1653
+ }
1654
+ catch {
1655
+ return (0, teamsfx_api_1.err)(new teamsfx_api_1.UserError("FxCore", "InvalidZipFile", `Failed to read zip file: ${resolvedZipPath}. Please provide a valid .zip file.`));
1656
+ }
1657
+ const entries = zip.getEntries();
1658
+ // Metadata directories to ignore
1659
+ const ignoredPrefixes = ["__MACOSX/", ".DS_Store"];
1660
+ // Security: validate all entries before extraction
1661
+ for (const entry of entries) {
1662
+ const entryName = entry.entryName.replace(/\\/g, "/");
1663
+ if (entryName.includes("..") || path.isAbsolute(entryName) || entryName.startsWith("/")) {
1664
+ return (0, teamsfx_api_1.err)(new teamsfx_api_1.UserError("FxCore", "ZipInvalidEntries", (0, localizeUtils_1.getLocalizedString)("core.addSkill.zipInvalidEntries")));
1665
+ }
1666
+ }
1667
+ // Filter out metadata entries
1668
+ const validEntries = entries.filter((entry) => {
1669
+ const entryName = entry.entryName.replace(/\\/g, "/");
1670
+ return !ignoredPrefixes.some((prefix) => entryName.startsWith(prefix) || entryName === prefix.replace("/", ""));
1671
+ });
1672
+ // Determine zip layout: single top-level directory or root-level files
1673
+ const topLevelDirs = new Set();
1674
+ let hasRootFiles = false;
1675
+ for (const entry of validEntries) {
1676
+ const entryName = entry.entryName.replace(/\\/g, "/");
1677
+ const parts = entryName.split("/").filter((p) => p.length > 0);
1678
+ if (parts.length === 1 && !entry.isDirectory) {
1679
+ hasRootFiles = true;
1680
+ }
1681
+ else if (parts.length >= 1) {
1682
+ topLevelDirs.add(parts[0]);
1683
+ }
1684
+ }
1685
+ let skillContentPrefix = "";
1686
+ let derivedSkillName;
1687
+ if (!hasRootFiles && topLevelDirs.size === 1) {
1688
+ // Single top-level directory layout
1689
+ skillContentPrefix = [...topLevelDirs][0] + "/";
1690
+ derivedSkillName = [...topLevelDirs][0];
1691
+ }
1692
+ else if (hasRootFiles) {
1693
+ // Root-level files layout: derive name from SKILL.md frontmatter
1694
+ const skillMdEntry = validEntries.find((e) => {
1695
+ const name = e.entryName.replace(/\\/g, "/");
1696
+ return name === "SKILL.md" || name === "./SKILL.md";
1697
+ });
1698
+ if (!skillMdEntry) {
1699
+ return (0, teamsfx_api_1.err)(new teamsfx_api_1.UserError("FxCore", "ZipNoSkillMd", (0, localizeUtils_1.getLocalizedString)("core.addSkill.zipNoSkillMd")));
1700
+ }
1701
+ const skillMdContent = skillMdEntry.getData().toString("utf-8");
1702
+ const nameMatch = skillMdContent.match(/^---[\s\S]*?^name:\s*(.+)$/m);
1703
+ if (!nameMatch) {
1704
+ return (0, teamsfx_api_1.err)(new teamsfx_api_1.UserError("FxCore", "ZipNoSkillMd", (0, localizeUtils_1.getLocalizedString)("core.addSkill.zipNoSkillMd") +
1705
+ " The SKILL.md file must include a 'name' field in its frontmatter."));
1706
+ }
1707
+ derivedSkillName = nameMatch[1].trim();
1708
+ }
1709
+ else {
1710
+ return (0, teamsfx_api_1.err)(new teamsfx_api_1.UserError("FxCore", "ZipInvalidLayout", (0, localizeUtils_1.getLocalizedString)("core.addSkill.zipInvalidLayout")));
1711
+ }
1712
+ // Validate skill name format
1713
+ const namePattern = /^[a-zA-Z][a-zA-Z0-9-]*$/;
1714
+ if (!namePattern.test(derivedSkillName)) {
1715
+ return (0, teamsfx_api_1.err)(new teamsfx_api_1.UserError("FxCore", "InvalidSkillFolderName", `Skill name "${derivedSkillName}" is invalid. It must start with a letter and contain only letters, numbers, and hyphens.`));
1716
+ }
1717
+ // Check target folder doesn't already exist
1718
+ const targetSkillDir = path.join(appPackageFolder, "skills", derivedSkillName);
1719
+ if (await fs_extra_1.default.pathExists(targetSkillDir)) {
1720
+ return (0, teamsfx_api_1.err)(new teamsfx_api_1.UserError("FxCore", "SkillFolderAlreadyExists", (0, localizeUtils_1.getLocalizedString)("core.addSkill.zipSkillFolderExists", derivedSkillName)));
1721
+ }
1722
+ // Extract to temp directory first, then move atomically
1723
+ const tempDir = await fs_extra_1.default.mkdtemp(path.join(os.tmpdir(), "atk-skill-import-"));
1724
+ const tempSkillDir = path.join(tempDir, derivedSkillName);
1725
+ try {
1726
+ await fs_extra_1.default.ensureDir(tempSkillDir);
1727
+ // Extract relevant entries
1728
+ for (const entry of validEntries) {
1729
+ if (entry.isDirectory)
1730
+ continue;
1731
+ const entryName = entry.entryName.replace(/\\/g, "/");
1732
+ let relativeName = entryName;
1733
+ if (skillContentPrefix && entryName.startsWith(skillContentPrefix)) {
1734
+ relativeName = entryName.slice(skillContentPrefix.length);
1735
+ }
1736
+ if (!relativeName)
1737
+ continue;
1738
+ const targetPath = path.join(tempSkillDir, relativeName);
1739
+ // Re-validate no path traversal after joining
1740
+ const normalizedTarget = path.resolve(targetPath);
1741
+ if (!normalizedTarget.startsWith(path.resolve(tempSkillDir))) {
1742
+ return (0, teamsfx_api_1.err)(new teamsfx_api_1.UserError("FxCore", "ZipInvalidEntries", (0, localizeUtils_1.getLocalizedString)("core.addSkill.zipInvalidEntries")));
1743
+ }
1744
+ await fs_extra_1.default.ensureDir(path.dirname(targetPath));
1745
+ await fs_extra_1.default.writeFile(targetPath, entry.getData());
1746
+ }
1747
+ // Validate SKILL.md exists in extracted content
1748
+ const extractedSkillMdPath = path.join(tempSkillDir, "SKILL.md");
1749
+ if (!(await fs_extra_1.default.pathExists(extractedSkillMdPath))) {
1750
+ return (0, teamsfx_api_1.err)(new teamsfx_api_1.UserError("FxCore", "ZipNoSkillMd", (0, localizeUtils_1.getLocalizedString)("core.addSkill.zipNoSkillMd")));
1751
+ }
1752
+ // Validate name in SKILL.md matches derived folder name
1753
+ const extractedSkillMd = await fs_extra_1.default.readFile(extractedSkillMdPath, "utf-8");
1754
+ const extractedNameMatch = extractedSkillMd.match(/^---[\s\S]*?^name:\s*(.+)$/m);
1755
+ if (extractedNameMatch) {
1756
+ const extractedName = extractedNameMatch[1].trim();
1757
+ if (extractedName !== derivedSkillName) {
1758
+ return (0, teamsfx_api_1.err)(new teamsfx_api_1.UserError("FxCore", "SkillNameMismatch", `Skill name "${extractedName}" in SKILL.md does not match folder name "${derivedSkillName}". They must be the same.`));
1759
+ }
1760
+ }
1761
+ // Move to final location
1762
+ await fs_extra_1.default.ensureDir(path.dirname(targetSkillDir));
1763
+ await fs_extra_1.default.move(tempSkillDir, targetSkillDir);
1764
+ }
1765
+ finally {
1766
+ // Clean up temp directory
1767
+ await fs_extra_1.default.remove(tempDir).catch(() => { });
1768
+ }
1769
+ const skillFolder = (0, utils_2.normalizePath)(path.relative(path.dirname(agentManifestPath), targetSkillDir), true);
1770
+ return (0, teamsfx_api_1.ok)(skillFolder);
1771
+ }
1484
1772
  /**
1485
1773
  * only for vs code extension
1486
1774
  */
@@ -1543,7 +1831,7 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
1543
1831
  suffix += 1;
1544
1832
  actionId = `action_${suffix}`;
1545
1833
  }
1546
- const addActionRes = await CopilotGptManifestUtils_1.copilotGptManifestUtils.addAction(declarativeCopilotManifestPath, actionId, (0, utils_3.normalizePath)(path.relative(appPackageFolder, pluginManifestFilePath), true));
1834
+ const addActionRes = await CopilotGptManifestUtils_1.copilotGptManifestUtils.addAction(declarativeCopilotManifestPath, actionId, (0, utils_2.normalizePath)(path.relative(appPackageFolder, pluginManifestFilePath), true));
1547
1835
  if (addActionRes.isErr()) {
1548
1836
  return (0, teamsfx_api_1.err)(addActionRes.error);
1549
1837
  }
@@ -1554,7 +1842,7 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
1554
1842
  // 2. Update teamsapp.local.yaml and teamsapp.yaml if need to add auth action
1555
1843
  const specPath = inputs[constants_3.QuestionNames.ApiSpecLocation].trim();
1556
1844
  for (const authInfo of authData) {
1557
- await (0, helper_1.injectAuthAction)(inputs.projectPath, authInfo.authName, undefined, specPath, false, authInfo.authType === "apiKey" ? "ApiKeyPluginVault" : "OAuthPluginVault", false, authInfo.registrationId);
1845
+ await openApiSpecHelper.injectAuthAction(inputs.projectPath, authInfo.authName, undefined, specPath, false, authInfo.authType === "apiKey" ? "ApiKeyPluginVault" : "OAuthPluginVault", false, authInfo.registrationId);
1558
1846
  }
1559
1847
  // 3. Update plugin manifest to add ac info (optional)
1560
1848
  await (0, helper_1.generateAdaptiveCardInPluginManifestForKiota)(pluginManifestFilePath, specPath, context);
@@ -1633,7 +1921,7 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
1633
1921
  authTypeScheme = constant_1.MicrosoftEntraAuthType;
1634
1922
  break;
1635
1923
  }
1636
- const addAuthActionRes = await (0, helper_1.injectAuthAction)(inputs.projectPath, authName, undefined, apiSpecPath, true, authTypeScheme, "enablePKCE" in authParameters ? authParameters.enablePKCE : undefined);
1924
+ const addAuthActionRes = await openApiSpecHelper.injectAuthAction(inputs.projectPath, authName, undefined, apiSpecPath, true, authTypeScheme, "enablePKCE" in authParameters ? authParameters.enablePKCE : undefined);
1637
1925
  if (addAuthActionRes?.registrationIdEnvName) {
1638
1926
  const pluginManifest = (await fs_extra_1.default.readJson(pluginManifestPath));
1639
1927
  pluginManifest.runtimes?.forEach((runtime) => {
@@ -1670,13 +1958,13 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
1670
1958
  [telemetry_1.TelemetryProperty.AddAuthType]: authType,
1671
1959
  });
1672
1960
  }
1673
- catch (err) {
1674
- const error = (0, common_2.assembleError)(err);
1961
+ catch (e) {
1962
+ const error = (0, common_2.assembleError)(e);
1675
1963
  context.telemetryReporter.sendTelemetryErrorEvent(telemetry_1.TelemetryEvent.AddAuthAction, {
1676
1964
  [telemetry_1.TelemetryProperty.ErrorCode]: error.name,
1677
1965
  [telemetry_1.TelemetryProperty.ErrorMessage]: error.message,
1678
1966
  });
1679
- return err(error);
1967
+ return (0, teamsfx_api_1.err)(error);
1680
1968
  }
1681
1969
  return (0, teamsfx_api_1.ok)(undefined);
1682
1970
  }
@@ -1713,7 +2001,7 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
1713
2001
  }
1714
2002
  async installAppToChannel(inputs) {
1715
2003
  const installAppDriver = typedi_1.Container.get("devChannel/installApp");
1716
- const context = (0, utils_4.createDriverContext)(inputs);
2004
+ const context = (0, utils_3.createDriverContext)(inputs);
1717
2005
  (0, globalVars_1.setErrorContext)({ component: "devChannelInstallApp" });
1718
2006
  const env = inputs.env;
1719
2007
  const readEnvRes = await envUtil_1.envUtil.readEnv(context.projectPath, env, false, false);
@@ -1736,29 +2024,60 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
1736
2024
  * dynamic template metadata download
1737
2025
  */
1738
2026
  async fetchOnlineTemplateMetadata() {
1739
- if ((0, templateHelper_1.useLocalTemplate)()) {
2027
+ if (exports.fxCoreDeps.useLocalTemplate()) {
1740
2028
  return (0, teamsfx_api_1.ok)(undefined); // Skip if using local templates
1741
2029
  }
1742
2030
  // Downloads the latest online template metadata (metadata.zip) into user's home .fx folder.
1743
2031
  // Caches the template version so subsequent calls avoid redundant downloads if unchanged.
1744
2032
  try {
1745
- // Determine latest template version (respect prerelease env variable similar to getTemplateVSCUrl)
1746
- const coreVersion = require("../../package.json").version;
1747
- let latestVersion = "0.0.0-rc";
1748
- if (coreVersion.includes("alpha") ||
1749
- coreVersion.includes("beta") ||
1750
- coreVersion.includes("rc")) {
1751
- // daily build, prerelease or rc
1752
- latestVersion = "0.0.0-rc";
1753
- }
1754
- else {
1755
- // stable version
1756
- latestVersion = await (0, utils_5.getTemplateLatestVersion)();
1757
- }
2033
+ const useV4Channel = featureFlags_1.featureFlagManager.getBooleanValue(featureFlags_1.FeatureFlags.V4Enabled);
1758
2034
  const homedir = os.homedir();
1759
2035
  const metadataDir = path.join(homedir, `.${String(teamsfx_api_1.ConfigFolderName)}`);
1760
2036
  await fs_extra_1.default.ensureDir(metadataDir);
1761
- const versionFile = path.join(metadataDir, "template-version.txt");
2037
+ let latestVersion;
2038
+ if (useV4Channel) {
2039
+ // Transitional: in the v4 channel the metadata rides the SAME single
2040
+ // decision point as the template package —
2041
+ // `resolveTemplateSource((v4.range, v4.bundled, port))`. The `bundled`
2042
+ // field is CD-baked (= !goproduct), so goproduct builds (stable AND
2043
+ // prerelease) resolve to an online/cache source while non-goproduct or
2044
+ // daily builds resolve to the bundled floor. metadata.zip lives in the
2045
+ // same `templates-v4@<ver>` release as the resolved package, so the
2046
+ // resolved version names the release to pull metadata from. Remove once
2047
+ // selector.json drives metadata distribution.
2048
+ const resolved = await (0, v4MetadataSource_1.resolveV4MetadataSource)();
2049
+ if (resolved.isErr()) {
2050
+ // Malformed tag list / digest mismatch are hard errors (no silent
2051
+ // fallback). An unreachable channel does not reach here — it already
2052
+ // resolved to a bundled-fallback origin handled below.
2053
+ return (0, teamsfx_api_1.err)(resolved.error);
2054
+ }
2055
+ const source = resolved.value;
2056
+ if (source.origin === "bundled" || source.origin === "bundled-fallback") {
2057
+ // Bundled build or unreachable channel: read the bundled metadata
2058
+ // (the readers fall back via `useBundledMetadataForV4`). No download.
2059
+ return (0, teamsfx_api_1.ok)(undefined);
2060
+ }
2061
+ latestVersion = source.version;
2062
+ }
2063
+ else {
2064
+ // v3: prerelease builds use the mutable rolling `0.0.0-rc` tag; stable
2065
+ // builds resolve the latest published templates version.
2066
+ const coreVersion = exports.fxCoreDeps.getCoreVersion();
2067
+ if (coreVersion.includes("alpha") ||
2068
+ coreVersion.includes("beta") ||
2069
+ coreVersion.includes("rc")) {
2070
+ latestVersion = "0.0.0-rc";
2071
+ }
2072
+ else {
2073
+ latestVersion = await exports.fxCoreDeps.getTemplateLatestVersion();
2074
+ }
2075
+ }
2076
+ // Use a channel-specific cache file so flipping the flag triggers a fresh
2077
+ // download instead of a stale v3 cache hit; the v4 file's presence is also
2078
+ // the readers' signal (`useBundledMetadataForV4`) that downloaded v4
2079
+ // metadata is available.
2080
+ const versionFile = path.join(metadataDir, useV4Channel ? "template-version-v4.txt" : "template-version.txt");
1762
2081
  const needDownload = async () => {
1763
2082
  // Always re-download for mutable pre-release tags (content changes but tag stays the same)
1764
2083
  if (latestVersion === "0.0.0-rc")
@@ -1776,11 +2095,12 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
1776
2095
  if (!(await needDownload())) {
1777
2096
  return (0, teamsfx_api_1.ok)(undefined); // Already up-to-date
1778
2097
  }
1779
- // Construct metadata.zip download URL based on tag prefix and version
1780
- const tag = `${templates_config_json_1.default.tagPrefix}${latestVersion}`;
2098
+ // Construct metadata.zip download URL based on tag prefix and version.
2099
+ const tagPrefix = useV4Channel ? templates_config_json_1.default.v4tagPrefix : templates_config_json_1.default.tagPrefix;
2100
+ const tag = `${tagPrefix}${latestVersion}`;
1781
2101
  const metadataZipUrl = `${templates_config_json_1.default.templateDownloadBaseURL}/${tag}/metadata.zip`;
1782
- const zip = await (0, utils_5.fetchZipFromUrl)(metadataZipUrl);
1783
- await (0, utils_5.unzip)(zip, metadataDir);
2102
+ const zip = await exports.fxCoreDeps.fetchZipFromUrl(metadataZipUrl);
2103
+ await exports.fxCoreDeps.unzip(zip, metadataDir);
1784
2104
  await fs_extra_1.default.writeFile(versionFile, latestVersion, { encoding: "utf-8" });
1785
2105
  // Clear locale cache so freshly downloaded NLS files are picked up
1786
2106
  (0, localizeUtils_1.clearLocaleCache)();
@@ -1796,16 +2116,16 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
1796
2116
  * dynamic VS template metadata download
1797
2117
  */
1798
2118
  async fetchOnlineTemplateMetadataForVS() {
1799
- if ((0, templateHelper_1.useLocalTemplate)()) {
2119
+ if (exports.fxCoreDeps.useLocalTemplate()) {
1800
2120
  return (0, teamsfx_api_1.ok)(undefined); // Skip if using local templates
1801
2121
  }
1802
2122
  try {
1803
2123
  // VS ships stable templates with a stable fx-core and test/pre-release
1804
2124
  // templates with a beta fx-core. So beta = pre-stable test build → RC.
1805
- const coreVersion = require("../../package.json").version;
2125
+ const coreVersion = exports.fxCoreDeps.getCoreVersion();
1806
2126
  const latestVersion = coreVersion.includes("beta")
1807
2127
  ? "0.0.0-rc"
1808
- : await (0, utils_5.getTemplateVSLatestVersion)();
2128
+ : await exports.fxCoreDeps.getTemplateVSLatestVersion();
1809
2129
  const homedir = os.homedir();
1810
2130
  const metadataDir = path.join(homedir, `.${String(teamsfx_api_1.ConfigFolderName)}`, "vs-metadata");
1811
2131
  await fs_extra_1.default.ensureDir(metadataDir);
@@ -1826,8 +2146,8 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
1826
2146
  }
1827
2147
  const tag = `${templates_config_json_1.default.vstagPrefix}${latestVersion}`;
1828
2148
  const metadataZipUrl = `${templates_config_json_1.default.templateDownloadBaseURL}/${tag}/metadata.zip`;
1829
- const zip = await (0, utils_5.fetchZipFromUrl)(metadataZipUrl);
1830
- await (0, utils_5.unzip)(zip, metadataDir);
2149
+ const zip = await exports.fxCoreDeps.fetchZipFromUrl(metadataZipUrl);
2150
+ await exports.fxCoreDeps.unzip(zip, metadataDir);
1831
2151
  await fs_extra_1.default.writeFile(versionFile, latestVersion, { encoding: "utf-8" });
1832
2152
  return (0, teamsfx_api_1.ok)(undefined);
1833
2153
  }
@@ -1845,7 +2165,7 @@ class FxCore extends FxCore_declarativeAgent_1.FxCoreDeclarativeAgentPart {
1845
2165
  }
1846
2166
  async updateAuthActionInYaml(authName, authScheme, projectPath, apSpecPath, pluginManifestPath, forceToAddNew = true) {
1847
2167
  if (authName && authScheme) {
1848
- const authInjectRes = await (0, helper_1.injectAuthAction)(projectPath, authName, authScheme, apSpecPath, forceToAddNew);
2168
+ const authInjectRes = await openApiSpecHelper.injectAuthAction(projectPath, authName, authScheme, apSpecPath, forceToAddNew);
1849
2169
  if (authInjectRes?.defaultRegistrationIdEnvName &&
1850
2170
  authInjectRes?.registrationIdEnvName &&
1851
2171
  authInjectRes.defaultRegistrationIdEnvName !== authInjectRes.registrationIdEnvName) {
@@ -2033,7 +2353,6 @@ tslib_1.__decorate([
2033
2353
  (0, hooks_1.hooks)([
2034
2354
  (0, globalVars_1.ErrorContextMW)({ component: "FxCore", stage: "provision", reset: true }),
2035
2355
  errorHandler_1.ErrorHandlerMW,
2036
- projectMigratorV3_1.ProjectMigratorMWV3,
2037
2356
  (0, envMW_1.EnvLoaderMW)(false),
2038
2357
  concurrentLocker_1.ConcurrentLockerMW,
2039
2358
  contextInjector_1.ContextInjectorMW,
@@ -2047,7 +2366,6 @@ tslib_1.__decorate([
2047
2366
  (0, hooks_1.hooks)([
2048
2367
  (0, globalVars_1.ErrorContextMW)({ component: "FxCore", stage: "uninstall", reset: true }),
2049
2368
  errorHandler_1.ErrorHandlerMW,
2050
- projectMigratorV3_1.ProjectMigratorMWV3,
2051
2369
  (0, questionMW_1.QuestionMW)("uninstall"),
2052
2370
  ]),
2053
2371
  tslib_1.__metadata("design:type", Function),
@@ -2116,7 +2434,6 @@ tslib_1.__decorate([
2116
2434
  (0, hooks_1.hooks)([
2117
2435
  (0, globalVars_1.ErrorContextMW)({ component: "FxCore", stage: "deploy", reset: true }),
2118
2436
  errorHandler_1.ErrorHandlerMW,
2119
- projectMigratorV3_1.ProjectMigratorMWV3,
2120
2437
  (0, envMW_1.EnvLoaderMW)(false),
2121
2438
  concurrentLocker_1.ConcurrentLockerMW,
2122
2439
  contextInjector_1.ContextInjectorMW,
@@ -2136,7 +2453,6 @@ tslib_1.__decorate([
2136
2453
  (0, hooks_1.hooks)([
2137
2454
  (0, globalVars_1.ErrorContextMW)({ component: "FxCore", stage: "deployAadManifest", reset: true }),
2138
2455
  errorHandler_1.ErrorHandlerMW,
2139
- projectMigratorV3_1.ProjectMigratorMWV3,
2140
2456
  (0, questionMW_1.QuestionMW)("deployAadManifest"),
2141
2457
  (0, envMW_1.EnvLoaderMW)(true, true),
2142
2458
  concurrentLocker_1.ConcurrentLockerMW,
@@ -2151,7 +2467,6 @@ tslib_1.__decorate([
2151
2467
  (0, globalVars_1.ErrorContextMW)({ component: "FxCore", stage: "addWebpart", reset: true }),
2152
2468
  errorHandler_1.ErrorHandlerMW,
2153
2469
  (0, questionMW_1.QuestionMW)("addWebpart"),
2154
- projectMigratorV3_1.ProjectMigratorMWV3,
2155
2470
  concurrentLocker_1.ConcurrentLockerMW,
2156
2471
  ]),
2157
2472
  tslib_1.__metadata("design:type", Function),
@@ -2162,7 +2477,6 @@ tslib_1.__decorate([
2162
2477
  (0, hooks_1.hooks)([
2163
2478
  (0, globalVars_1.ErrorContextMW)({ component: "FxCore", stage: "publish", reset: true }),
2164
2479
  errorHandler_1.ErrorHandlerMW,
2165
- projectMigratorV3_1.ProjectMigratorMWV3,
2166
2480
  (0, envMW_1.EnvLoaderMW)(false),
2167
2481
  concurrentLocker_1.ConcurrentLockerMW,
2168
2482
  contextInjector_1.ContextInjectorMW,
@@ -2177,7 +2491,6 @@ tslib_1.__decorate([
2177
2491
  (0, globalVars_1.ErrorContextMW)({ component: "FxCore", stage: "share", reset: true }),
2178
2492
  errorHandler_1.ErrorHandlerMW,
2179
2493
  (0, questionMW_1.QuestionMW)("removeSharedAccess"),
2180
- projectMigratorV3_1.ProjectMigratorMWV3,
2181
2494
  (0, envMW_1.EnvLoaderMW)(false),
2182
2495
  concurrentLocker_1.ConcurrentLockerMW,
2183
2496
  contextInjector_1.ContextInjectorMW,
@@ -2191,7 +2504,6 @@ tslib_1.__decorate([
2191
2504
  (0, globalVars_1.ErrorContextMW)({ component: "FxCore", stage: "share", reset: true }),
2192
2505
  errorHandler_1.ErrorHandlerMW,
2193
2506
  (0, questionMW_1.QuestionMW)("share"),
2194
- projectMigratorV3_1.ProjectMigratorMWV3,
2195
2507
  (0, envMW_1.EnvLoaderMW)(false),
2196
2508
  concurrentLocker_1.ConcurrentLockerMW,
2197
2509
  contextInjector_1.ContextInjectorMW,
@@ -2205,7 +2517,6 @@ tslib_1.__decorate([
2205
2517
  (0, hooks_1.hooks)([
2206
2518
  (0, globalVars_1.ErrorContextMW)({ component: "FxCore", stage: "executeUserTask", reset: true }),
2207
2519
  errorHandler_1.ErrorHandlerMW,
2208
- projectMigratorV3_1.ProjectMigratorMWV3,
2209
2520
  (0, envMW_1.EnvLoaderMW)(false),
2210
2521
  concurrentLocker_1.ConcurrentLockerMW,
2211
2522
  ]),
@@ -2217,7 +2528,6 @@ tslib_1.__decorate([
2217
2528
  (0, hooks_1.hooks)([
2218
2529
  (0, globalVars_1.ErrorContextMW)({ component: "FxCore", stage: "buildAadManifest", reset: true }),
2219
2530
  errorHandler_1.ErrorHandlerMW,
2220
- projectMigratorV3_1.ProjectMigratorMWV3,
2221
2531
  (0, envMW_1.EnvLoaderMW)(false),
2222
2532
  concurrentLocker_1.ConcurrentLockerMW,
2223
2533
  ]),
@@ -2239,7 +2549,6 @@ tslib_1.__decorate([
2239
2549
  (0, hooks_1.hooks)([
2240
2550
  (0, globalVars_1.ErrorContextMW)({ component: "FxCore", stage: "deployTeamsManifest", reset: true }),
2241
2551
  errorHandler_1.ErrorHandlerMW,
2242
- projectMigratorV3_1.ProjectMigratorMWV3,
2243
2552
  (0, questionMW_1.QuestionMW)("selectTeamsAppManifest"),
2244
2553
  (0, envMW_1.EnvLoaderMW)(true),
2245
2554
  concurrentLocker_1.ConcurrentLockerMW,
@@ -2404,7 +2713,6 @@ tslib_1.__decorate([
2404
2713
  (0, hooks_1.hooks)([
2405
2714
  (0, globalVars_1.ErrorContextMW)({ component: "FxCore", stage: "grantPermission", reset: true }),
2406
2715
  errorHandler_1.ErrorHandlerMW,
2407
- projectMigratorV3_1.ProjectMigratorMWV3,
2408
2716
  (0, questionMW_1.QuestionMW)("grantPermission"),
2409
2717
  (0, envMW_1.EnvLoaderMW)(false, true),
2410
2718
  concurrentLocker_1.ConcurrentLockerMW,
@@ -2418,7 +2726,6 @@ tslib_1.__decorate([
2418
2726
  (0, hooks_1.hooks)([
2419
2727
  (0, globalVars_1.ErrorContextMW)({ component: "FxCore", stage: "checkPermission", reset: true }),
2420
2728
  errorHandler_1.ErrorHandlerMW,
2421
- projectMigratorV3_1.ProjectMigratorMWV3,
2422
2729
  (0, questionMW_1.QuestionMW)("listCollaborator"),
2423
2730
  (0, envMW_1.EnvLoaderMW)(false, true),
2424
2731
  concurrentLocker_1.ConcurrentLockerMW,
@@ -2432,7 +2739,6 @@ tslib_1.__decorate([
2432
2739
  (0, hooks_1.hooks)([
2433
2740
  (0, globalVars_1.ErrorContextMW)({ component: "FxCore", stage: "listCollaborator", reset: true }),
2434
2741
  errorHandler_1.ErrorHandlerMW,
2435
- projectMigratorV3_1.ProjectMigratorMWV3,
2436
2742
  (0, questionMW_1.QuestionMW)("listCollaborator"),
2437
2743
  (0, envMW_1.EnvLoaderMW)(false, true),
2438
2744
  concurrentLocker_1.ConcurrentLockerMW,
@@ -2481,18 +2787,6 @@ tslib_1.__decorate([
2481
2787
  tslib_1.__metadata("design:paramtypes", [Object]),
2482
2788
  tslib_1.__metadata("design:returntype", Promise)
2483
2789
  ], FxCore.prototype, "createEnv", null);
2484
- tslib_1.__decorate([
2485
- (0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ component: "FxCore", stage: "phantomMigrationV3", reset: true })]),
2486
- tslib_1.__metadata("design:type", Function),
2487
- tslib_1.__metadata("design:paramtypes", [Object]),
2488
- tslib_1.__metadata("design:returntype", Promise)
2489
- ], FxCore.prototype, "phantomMigrationV3", null);
2490
- tslib_1.__decorate([
2491
- (0, hooks_1.hooks)([errorHandler_1.ErrorHandlerMW, projectMigratorV3_1.ProjectMigratorMWV3]),
2492
- tslib_1.__metadata("design:type", Function),
2493
- tslib_1.__metadata("design:paramtypes", [Object]),
2494
- tslib_1.__metadata("design:returntype", Object)
2495
- ], FxCore.prototype, "innerMigrationV3", null);
2496
2790
  tslib_1.__decorate([
2497
2791
  (0, hooks_1.hooks)([
2498
2792
  (0, globalVars_1.ErrorContextMW)({ component: "FxCore", stage: "projectVersionCheck", reset: true }),
@@ -2506,7 +2800,6 @@ tslib_1.__decorate([
2506
2800
  (0, hooks_1.hooks)([
2507
2801
  (0, globalVars_1.ErrorContextMW)({ component: "FxCore", stage: "preProvisionForVS" }),
2508
2802
  errorHandler_1.ErrorHandlerMW,
2509
- projectMigratorV3_1.ProjectMigratorMWV3,
2510
2803
  (0, envMW_1.EnvLoaderMW)(false),
2511
2804
  concurrentLocker_1.ConcurrentLockerMW,
2512
2805
  contextInjector_1.ContextInjectorMW,
@@ -2519,7 +2812,6 @@ tslib_1.__decorate([
2519
2812
  (0, hooks_1.hooks)([
2520
2813
  (0, globalVars_1.ErrorContextMW)({ component: "FxCore", stage: "preCheckYmlAndEnvForVS" }),
2521
2814
  errorHandler_1.ErrorHandlerMW,
2522
- projectMigratorV3_1.ProjectMigratorMWV3,
2523
2815
  (0, envMW_1.EnvLoaderMW)(false),
2524
2816
  concurrentLocker_1.ConcurrentLockerMW,
2525
2817
  contextInjector_1.ContextInjectorMW,
@@ -2606,6 +2898,17 @@ tslib_1.__decorate([
2606
2898
  tslib_1.__metadata("design:paramtypes", [Object]),
2607
2899
  tslib_1.__metadata("design:returntype", Promise)
2608
2900
  ], FxCore.prototype, "addKnowledge", null);
2901
+ tslib_1.__decorate([
2902
+ (0, hooks_1.hooks)([
2903
+ (0, globalVars_1.ErrorContextMW)({ component: "FxCore", stage: teamsfx_api_1.Stage.addSkill }),
2904
+ errorHandler_1.ErrorHandlerMW,
2905
+ (0, questionMW_1.QuestionMW)("addSkill"),
2906
+ concurrentLocker_1.ConcurrentLockerMW,
2907
+ ]),
2908
+ tslib_1.__metadata("design:type", Function),
2909
+ tslib_1.__metadata("design:paramtypes", [Object]),
2910
+ tslib_1.__metadata("design:returntype", Promise)
2911
+ ], FxCore.prototype, "addSkill", null);
2609
2912
  tslib_1.__decorate([
2610
2913
  (0, hooks_1.hooks)([
2611
2914
  (0, globalVars_1.ErrorContextMW)({ component: "FxCore", stage: "getODSPItemDetails", reset: true }),