@microsoft/teamsfx-core 3.0.9-rc.1 → 3.0.10-alpha.08ea48cc3.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 (325) hide show
  1. package/build/client/graphClient.d.ts +1 -0
  2. package/build/client/graphClient.d.ts.map +1 -1
  3. package/build/client/teamsDevPortalClient.d.ts +1 -0
  4. package/build/client/teamsDevPortalClient.d.ts.map +1 -1
  5. package/build/common/featureFlags.d.ts +9 -50
  6. package/build/common/featureFlags.d.ts.map +1 -1
  7. package/build/common/featureFlags.js +12 -42
  8. package/build/common/featureFlags.js.map +1 -1
  9. package/build/common/localizeUtils.d.ts.map +1 -1
  10. package/build/common/localizeUtils.js +36 -12
  11. package/build/common/localizeUtils.js.map +1 -1
  12. package/build/common/telemetry.d.ts +2 -0
  13. package/build/common/telemetry.d.ts.map +1 -1
  14. package/build/common/telemetry.js +2 -0
  15. package/build/common/telemetry.js.map +1 -1
  16. package/build/common/templates-config.json +4 -4
  17. package/build/component/constants.d.ts +1 -0
  18. package/build/component/constants.d.ts.map +1 -1
  19. package/build/component/constants.js +2 -1
  20. package/build/component/constants.js.map +1 -1
  21. package/build/component/coordinator/index.d.ts.map +1 -1
  22. package/build/component/coordinator/index.js +0 -11
  23. package/build/component/coordinator/index.js.map +1 -1
  24. package/build/component/deps-checker/internal/dotnetChecker.d.ts +5 -1
  25. package/build/component/deps-checker/internal/dotnetChecker.d.ts.map +1 -1
  26. package/build/component/deps-checker/internal/dotnetChecker.js +16 -8
  27. package/build/component/deps-checker/internal/dotnetChecker.js.map +1 -1
  28. package/build/component/driver/deploy/spfx/utility/spoClient.d.ts +1 -0
  29. package/build/component/driver/deploy/spfx/utility/spoClient.d.ts.map +1 -1
  30. package/build/component/driver/devTool/httpClient.d.ts +1 -0
  31. package/build/component/driver/devTool/httpClient.d.ts.map +1 -1
  32. package/build/component/driver/devTool/nodeInstaller.d.ts +1 -0
  33. package/build/component/driver/devTool/nodeInstaller.d.ts.map +1 -1
  34. package/build/component/driver/script/scriptDriver.d.ts +1 -0
  35. package/build/component/driver/script/scriptDriver.d.ts.map +1 -1
  36. package/build/component/driver/script/scriptDriver.js +1 -1
  37. package/build/component/driver/script/scriptDriver.js.map +1 -1
  38. package/build/component/driver/share/utils.d.ts.map +1 -1
  39. package/build/component/driver/share/utils.js +6 -0
  40. package/build/component/driver/share/utils.js.map +1 -1
  41. package/build/component/driver/teamsApp/constants.d.ts +1 -1
  42. package/build/component/driver/teamsApp/constants.d.ts.map +1 -1
  43. package/build/component/driver/teamsApp/constants.js +2 -2
  44. package/build/component/driver/teamsApp/constants.js.map +1 -1
  45. package/build/component/driver/teamsApp/copyAppPackageToSPFx.d.ts +1 -0
  46. package/build/component/driver/teamsApp/copyAppPackageToSPFx.d.ts.map +1 -1
  47. package/build/component/driver/teamsApp/createAppPackage.d.ts.map +1 -1
  48. package/build/component/driver/teamsApp/createAppPackage.js +12 -1
  49. package/build/component/driver/teamsApp/createAppPackage.js.map +1 -1
  50. package/build/component/driver/teamsApp/interfaces/appdefinitions/appPackage.d.ts +1 -0
  51. package/build/component/driver/teamsApp/interfaces/appdefinitions/appPackage.d.ts.map +1 -1
  52. package/build/component/driver/teamsApp/publishAppPackage.d.ts +2 -0
  53. package/build/component/driver/teamsApp/publishAppPackage.d.ts.map +1 -1
  54. package/build/component/driver/teamsApp/publishAppPackage.js +79 -4
  55. package/build/component/driver/teamsApp/publishAppPackage.js.map +1 -1
  56. package/build/component/driver/teamsApp/utils/ManifestUtils.d.ts +1 -0
  57. package/build/component/driver/teamsApp/utils/ManifestUtils.d.ts.map +1 -1
  58. package/build/component/driver/teamsApp/utils/ManifestUtils.js +7 -8
  59. package/build/component/driver/teamsApp/utils/ManifestUtils.js.map +1 -1
  60. package/build/component/driver/teamsApp/utils/PluginManifestUtils.d.ts +20 -0
  61. package/build/component/driver/teamsApp/utils/PluginManifestUtils.d.ts.map +1 -1
  62. package/build/component/driver/teamsApp/utils/PluginManifestUtils.js +152 -2
  63. package/build/component/driver/teamsApp/utils/PluginManifestUtils.js.map +1 -1
  64. package/build/component/generator/configFiles/configGenerator.d.ts +15 -0
  65. package/build/component/generator/configFiles/configGenerator.d.ts.map +1 -0
  66. package/build/component/generator/configFiles/configGenerator.js +167 -0
  67. package/build/component/generator/configFiles/configGenerator.js.map +1 -0
  68. package/build/component/generator/configFiles/copyPolicy.d.ts +10 -0
  69. package/build/component/generator/configFiles/copyPolicy.d.ts.map +1 -0
  70. package/build/component/generator/configFiles/copyPolicy.js +42 -0
  71. package/build/component/generator/configFiles/copyPolicy.js.map +1 -0
  72. package/build/component/generator/configFiles/jsonMerger.d.ts +11 -0
  73. package/build/component/generator/configFiles/jsonMerger.d.ts.map +1 -0
  74. package/build/component/generator/configFiles/jsonMerger.js +83 -0
  75. package/build/component/generator/configFiles/jsonMerger.js.map +1 -0
  76. package/build/component/generator/configFiles/renderTemplate.d.ts +2 -0
  77. package/build/component/generator/configFiles/renderTemplate.d.ts.map +1 -0
  78. package/build/component/generator/configFiles/renderTemplate.js +16 -0
  79. package/build/component/generator/configFiles/renderTemplate.js.map +1 -0
  80. package/build/component/generator/declarativeAgent/generator.d.ts +5 -0
  81. package/build/component/generator/declarativeAgent/generator.d.ts.map +1 -1
  82. package/build/component/generator/declarativeAgent/generator.js +78 -28
  83. package/build/component/generator/declarativeAgent/generator.js.map +1 -1
  84. package/build/component/generator/declarativeAgent/helper.d.ts.map +1 -1
  85. package/build/component/generator/declarativeAgent/helper.js +0 -1
  86. package/build/component/generator/declarativeAgent/helper.js.map +1 -1
  87. package/build/component/generator/generator.d.ts.map +1 -1
  88. package/build/component/generator/generator.js +3 -13
  89. package/build/component/generator/generator.js.map +1 -1
  90. package/build/component/generator/generatorAction.d.ts +1 -0
  91. package/build/component/generator/generatorAction.d.ts.map +1 -1
  92. package/build/component/generator/officeAddin/generator.d.ts.map +1 -1
  93. package/build/component/generator/officeAddin/generator.js +6 -4
  94. package/build/component/generator/officeAddin/generator.js.map +1 -1
  95. package/build/component/generator/officeAddin/metaOSHelper.d.ts.map +1 -1
  96. package/build/component/generator/officeAddin/metaOSHelper.js +13 -6
  97. package/build/component/generator/officeAddin/metaOSHelper.js.map +1 -1
  98. package/build/component/generator/openApiSpec/common.d.ts.map +1 -1
  99. package/build/component/generator/openApiSpec/common.js +11 -22
  100. package/build/component/generator/openApiSpec/common.js.map +1 -1
  101. package/build/component/generator/openApiSpec/kiota.d.ts +0 -6
  102. package/build/component/generator/openApiSpec/kiota.d.ts.map +1 -1
  103. package/build/component/generator/openApiSpec/kiota.js +2 -17
  104. package/build/component/generator/openApiSpec/kiota.js.map +1 -1
  105. package/build/component/generator/templates/metadata/index.d.ts.map +1 -1
  106. package/build/component/generator/templates/metadata/index.js +21 -25
  107. package/build/component/generator/templates/metadata/index.js.map +1 -1
  108. package/build/component/generator/templates/templateInfo.d.ts +1 -1
  109. package/build/component/generator/templates/templateInfo.d.ts.map +1 -1
  110. package/build/component/generator/templates/templateNames.d.ts +1 -0
  111. package/build/component/generator/templates/templateNames.d.ts.map +1 -1
  112. package/build/component/generator/templates/templateNames.js +1 -0
  113. package/build/component/generator/templates/templateNames.js.map +1 -1
  114. package/build/component/generator/templates/templateReplaceMap.d.ts.map +1 -1
  115. package/build/component/generator/templates/templateReplaceMap.js +2 -12
  116. package/build/component/generator/templates/templateReplaceMap.js.map +1 -1
  117. package/build/component/generator/utils.d.ts +3 -2
  118. package/build/component/generator/utils.d.ts.map +1 -1
  119. package/build/component/generator/utils.js.map +1 -1
  120. package/build/component/m365/packageService.d.ts.map +1 -1
  121. package/build/component/m365/packageService.js +16 -20
  122. package/build/component/m365/packageService.js.map +1 -1
  123. package/build/component/middleware/envMW.d.ts.map +1 -1
  124. package/build/component/middleware/envMW.js +7 -0
  125. package/build/component/middleware/envMW.js.map +1 -1
  126. package/build/component/utils/envUtil.d.ts +1 -0
  127. package/build/component/utils/envUtil.d.ts.map +1 -1
  128. package/build/component/utils/odrProvider.d.ts +49 -0
  129. package/build/component/utils/odrProvider.d.ts.map +1 -0
  130. package/build/component/utils/odrProvider.js +100 -0
  131. package/build/component/utils/odrProvider.js.map +1 -0
  132. package/build/component/utils/pathUtils.d.ts +2 -1
  133. package/build/component/utils/pathUtils.d.ts.map +1 -1
  134. package/build/component/utils/pathUtils.js +19 -3
  135. package/build/component/utils/pathUtils.js.map +1 -1
  136. package/build/component/utils/settingsUtil.d.ts +1 -1
  137. package/build/component/utils/settingsUtil.d.ts.map +1 -1
  138. package/build/component/utils/settingsUtil.js +20 -7
  139. package/build/component/utils/settingsUtil.js.map +1 -1
  140. package/build/core/FxCore.d.ts +10 -3
  141. package/build/core/FxCore.d.ts.map +1 -1
  142. package/build/core/FxCore.declarativeAgent.d.ts +6 -0
  143. package/build/core/FxCore.declarativeAgent.d.ts.map +1 -0
  144. package/build/core/FxCore.declarativeAgent.js +210 -0
  145. package/build/core/FxCore.declarativeAgent.js.map +1 -0
  146. package/build/core/FxCore.js +99 -208
  147. package/build/core/FxCore.js.map +1 -1
  148. package/build/core/generateConfigFiles.d.ts +4 -0
  149. package/build/core/generateConfigFiles.d.ts.map +1 -0
  150. package/build/core/generateConfigFiles.js +61 -0
  151. package/build/core/generateConfigFiles.js.map +1 -0
  152. package/build/core/middleware/projectSettingsLoader.d.ts.map +1 -1
  153. package/build/core/middleware/projectSettingsLoader.js +8 -2
  154. package/build/core/middleware/projectSettingsLoader.js.map +1 -1
  155. package/build/index.d.ts +2 -1
  156. package/build/index.d.ts.map +1 -1
  157. package/build/index.js +5 -5
  158. package/build/index.js.map +1 -1
  159. package/build/question/collaborator.d.ts.map +1 -1
  160. package/build/question/collaborator.js +5 -8
  161. package/build/question/collaborator.js.map +1 -1
  162. package/build/question/constants.d.ts.map +1 -1
  163. package/build/question/constants.js +1 -3
  164. package/build/question/constants.js.map +1 -1
  165. package/build/question/inputs/CreateProjectInputs.d.ts +1 -15
  166. package/build/question/inputs/CreateProjectInputs.d.ts.map +1 -1
  167. package/build/question/options/CreateProjectOptions.d.ts +1 -1
  168. package/build/question/options/CreateProjectOptions.d.ts.map +1 -1
  169. package/build/question/options/CreateProjectOptions.js +0 -56
  170. package/build/question/options/CreateProjectOptions.js.map +1 -1
  171. package/build/question/other.d.ts.map +1 -1
  172. package/build/question/other.js +7 -8
  173. package/build/question/other.js.map +1 -1
  174. package/build/question/questionNames.d.ts +3 -0
  175. package/build/question/questionNames.d.ts.map +1 -1
  176. package/build/question/questionNames.js +3 -0
  177. package/build/question/questionNames.js.map +1 -1
  178. package/build/question/scaffold/commonNodes.d.ts +7 -0
  179. package/build/question/scaffold/commonNodes.d.ts.map +1 -0
  180. package/build/question/scaffold/commonNodes.js +154 -0
  181. package/build/question/scaffold/commonNodes.js.map +1 -0
  182. package/build/question/scaffold/constructNode.d.ts +3 -0
  183. package/build/question/scaffold/constructNode.d.ts.map +1 -0
  184. package/build/question/scaffold/constructNode.js +50 -0
  185. package/build/question/scaffold/constructNode.js.map +1 -0
  186. package/build/question/scaffold/vs/createRootNode.d.ts +1 -0
  187. package/build/question/scaffold/vs/createRootNode.d.ts.map +1 -1
  188. package/build/question/scaffold/vs/createRootNode.js +14 -16
  189. package/build/question/scaffold/vs/createRootNode.js.map +1 -1
  190. package/build/question/scaffold/vsc/ProjectTypeOptions.d.ts +0 -1
  191. package/build/question/scaffold/vsc/ProjectTypeOptions.d.ts.map +1 -1
  192. package/build/question/scaffold/vsc/ProjectTypeOptions.js +1 -14
  193. package/build/question/scaffold/vsc/ProjectTypeOptions.js.map +1 -1
  194. package/build/question/scaffold/vsc/createFromTdpNode.js +1 -1
  195. package/build/question/scaffold/vsc/createFromTdpNode.js.map +1 -1
  196. package/build/question/scaffold/vsc/createRootNode.d.ts +0 -7
  197. package/build/question/scaffold/vsc/createRootNode.d.ts.map +1 -1
  198. package/build/question/scaffold/vsc/createRootNode.js +4 -77
  199. package/build/question/scaffold/vsc/createRootNode.js.map +1 -1
  200. package/build/question/scaffold/vsc/customEngineAgentNode.d.ts +1 -1
  201. package/build/question/scaffold/vsc/customEngineAgentNode.d.ts.map +1 -1
  202. package/build/question/scaffold/vsc/customEngineAgentNode.js +22 -24
  203. package/build/question/scaffold/vsc/customEngineAgentNode.js.map +1 -1
  204. package/build/question/scaffold/vsc/daProjectTypeNode.d.ts.map +1 -1
  205. package/build/question/scaffold/vsc/daProjectTypeNode.js +4 -4
  206. package/build/question/scaffold/vsc/daProjectTypeNode.js.map +1 -1
  207. package/build/question/scaffold/vsc/officeAddinProjectTypeNode.d.ts +0 -1
  208. package/build/question/scaffold/vsc/officeAddinProjectTypeNode.d.ts.map +1 -1
  209. package/build/question/scaffold/vsc/officeAddinProjectTypeNode.js +2 -51
  210. package/build/question/scaffold/vsc/officeAddinProjectTypeNode.js.map +1 -1
  211. package/build/question/scaffold/vsc/teamsProjectTypeNode.d.ts +4 -7
  212. package/build/question/scaffold/vsc/teamsProjectTypeNode.d.ts.map +1 -1
  213. package/build/question/scaffold/vsc/teamsProjectTypeNode.js +96 -202
  214. package/build/question/scaffold/vsc/teamsProjectTypeNode.js.map +1 -1
  215. package/build/ui/visitor.d.ts.map +1 -1
  216. package/build/ui/visitor.js +5 -0
  217. package/build/ui/visitor.js.map +1 -1
  218. package/package.json +6 -6
  219. package/resource/package.nls.cs.json +116 -84
  220. package/resource/package.nls.de.json +126 -94
  221. package/resource/package.nls.es.json +126 -94
  222. package/resource/package.nls.fr.json +114 -82
  223. package/resource/package.nls.it.json +127 -95
  224. package/resource/package.nls.ja.json +115 -83
  225. package/resource/package.nls.json +16 -27
  226. package/resource/package.nls.ko.json +123 -91
  227. package/resource/package.nls.pl.json +125 -93
  228. package/resource/package.nls.pt-BR.json +122 -90
  229. package/resource/package.nls.ru.json +116 -84
  230. package/resource/package.nls.tr.json +113 -81
  231. package/resource/package.nls.zh-Hans.json +114 -82
  232. package/resource/package.nls.zh-Hant.json +120 -88
  233. package/resource/templates/package.nls.cs.json +33 -0
  234. package/resource/templates/package.nls.de.json +33 -0
  235. package/resource/templates/package.nls.es.json +33 -0
  236. package/resource/templates/package.nls.fr.json +33 -0
  237. package/resource/templates/package.nls.it.json +33 -0
  238. package/resource/templates/package.nls.ja.json +33 -0
  239. package/resource/templates/package.nls.json +33 -0
  240. package/resource/templates/package.nls.ko.json +33 -0
  241. package/resource/templates/package.nls.pl.json +33 -0
  242. package/resource/templates/package.nls.pt-BR.json +33 -0
  243. package/resource/templates/package.nls.ru.json +33 -0
  244. package/resource/templates/package.nls.tr.json +33 -0
  245. package/resource/templates/package.nls.zh-Hans.json +33 -0
  246. package/resource/templates/package.nls.zh-Hant.json +33 -0
  247. package/resource/templates/package.nls.zh-cn.json +21 -0
  248. package/resource/templates/package.nls.zh-tw.json +21 -0
  249. package/templates/configs/local/python/.vscode/launch.json.tpl +93 -0
  250. package/templates/configs/local/python/.vscode/tasks.json.tpl +103 -0
  251. package/templates/configs/local/python/env/.env.local +6 -0
  252. package/templates/configs/local/python/m365agents.local.yml.tpl +121 -0
  253. package/templates/configs/local/typescript/.gitignore +1 -0
  254. package/templates/configs/local/typescript/.vscode/launch.json.tpl +147 -0
  255. package/templates/configs/local/typescript/.vscode/tasks.json.tpl +129 -0
  256. package/templates/configs/local/typescript/env/.env.local +6 -0
  257. package/templates/configs/local/typescript/m365agents.local.yml.tpl +129 -0
  258. package/templates/configs/local/typescript/package.json +8 -0
  259. package/templates/configs/playground/python/.vscode/launch.json +46 -0
  260. package/templates/configs/playground/python/.vscode/tasks.json +35 -0
  261. package/templates/configs/playground/python/env/.env.playground +7 -0
  262. package/templates/configs/playground/python/m365agents.playground.yml +14 -0
  263. package/templates/configs/playground/typescript/.gitignore +4 -0
  264. package/templates/configs/playground/typescript/.localConfigs.playground +0 -0
  265. package/templates/configs/playground/typescript/.vscode/launch.json +31 -0
  266. package/templates/configs/playground/typescript/.vscode/tasks.json +104 -0
  267. package/templates/configs/playground/typescript/env/.env.playground +7 -0
  268. package/templates/configs/playground/typescript/env/.env.playground.user +0 -0
  269. package/templates/configs/playground/typescript/m365agents.playground.yml +23 -0
  270. package/templates/configs/playground/typescript/package.json +9 -0
  271. package/templates/fallback/common.zip +0 -0
  272. package/templates/fallback/csharp.zip +0 -0
  273. package/templates/fallback/js.zip +0 -0
  274. package/templates/fallback/python.zip +0 -0
  275. package/templates/fallback/ts.zip +0 -0
  276. package/templates/metadata/allTemplates.json +429 -0
  277. package/templates/metadata/defaultGeneratorTemplates.json +233 -0
  278. package/templates/metadata.zip +0 -0
  279. package/templates/ui/ceaNode.json +30 -0
  280. package/templates/ui/teamsNode.json +124 -0
  281. package/build/component/generator/templates/metadata/agentForTeams.d.ts +0 -3
  282. package/build/component/generator/templates/metadata/agentForTeams.d.ts.map +0 -1
  283. package/build/component/generator/templates/metadata/agentForTeams.js +0 -147
  284. package/build/component/generator/templates/metadata/agentForTeams.js.map +0 -1
  285. package/build/component/generator/templates/metadata/bot.d.ts +0 -3
  286. package/build/component/generator/templates/metadata/bot.d.ts.map +0 -1
  287. package/build/component/generator/templates/metadata/bot.js +0 -142
  288. package/build/component/generator/templates/metadata/bot.js.map +0 -1
  289. package/build/component/generator/templates/metadata/customEngineAgent.d.ts +0 -3
  290. package/build/component/generator/templates/metadata/customEngineAgent.d.ts.map +0 -1
  291. package/build/component/generator/templates/metadata/customEngineAgent.js +0 -39
  292. package/build/component/generator/templates/metadata/customEngineAgent.js.map +0 -1
  293. package/build/component/generator/templates/metadata/da.d.ts +0 -3
  294. package/build/component/generator/templates/metadata/da.d.ts.map +0 -1
  295. package/build/component/generator/templates/metadata/da.js +0 -117
  296. package/build/component/generator/templates/metadata/da.js.map +0 -1
  297. package/build/component/generator/templates/metadata/graphConnector.d.ts +0 -3
  298. package/build/component/generator/templates/metadata/graphConnector.d.ts.map +0 -1
  299. package/build/component/generator/templates/metadata/graphConnector.js +0 -15
  300. package/build/component/generator/templates/metadata/graphConnector.js.map +0 -1
  301. package/build/component/generator/templates/metadata/me.d.ts +0 -3
  302. package/build/component/generator/templates/metadata/me.d.ts.map +0 -1
  303. package/build/component/generator/templates/metadata/me.js +0 -111
  304. package/build/component/generator/templates/metadata/me.js.map +0 -1
  305. package/build/component/generator/templates/metadata/special.d.ts +0 -3
  306. package/build/component/generator/templates/metadata/special.d.ts.map +0 -1
  307. package/build/component/generator/templates/metadata/special.js +0 -70
  308. package/build/component/generator/templates/metadata/special.js.map +0 -1
  309. package/build/component/generator/templates/metadata/tab.d.ts +0 -3
  310. package/build/component/generator/templates/metadata/tab.d.ts.map +0 -1
  311. package/build/component/generator/templates/metadata/tab.js +0 -59
  312. package/build/component/generator/templates/metadata/tab.js.map +0 -1
  313. package/build/component/generator/templates/metadata/teams.d.ts +0 -3
  314. package/build/component/generator/templates/metadata/teams.d.ts.map +0 -1
  315. package/build/component/generator/templates/metadata/teams.js +0 -238
  316. package/build/component/generator/templates/metadata/teams.js.map +0 -1
  317. package/build/component/generator/templates/metadata/vs.d.ts +0 -3
  318. package/build/component/generator/templates/metadata/vs.d.ts.map +0 -1
  319. package/build/component/generator/templates/metadata/vs.js +0 -22
  320. package/build/component/generator/templates/metadata/vs.js.map +0 -1
  321. package/build/component/generator/templates/metadata/wxp.d.ts +0 -3
  322. package/build/component/generator/templates/metadata/wxp.d.ts.map +0 -1
  323. package/build/component/generator/templates/metadata/wxp.js +0 -33
  324. package/build/component/generator/templates/metadata/wxp.js.map +0 -1
  325. package/build/tsconfig.tsbuildinfo +0 -1
@@ -19,6 +19,8 @@ const os_1 = require("os");
19
19
  const envFunctionUtils_1 = require("../../../utils/envFunctionUtils");
20
20
  const utils_2 = require("../../../../common/utils");
21
21
  const featureFlags_1 = require("../../../../common/featureFlags");
22
+ const odrProvider_1 = require("../../../utils/odrProvider");
23
+ const constants_1 = require("../../../constants");
22
24
  class PluginManifestUtils {
23
25
  async readPluginManifestFile(path) {
24
26
  if (!(await fs_extra_1.default.pathExists(path))) {
@@ -60,11 +62,13 @@ class PluginManifestUtils {
60
62
  return (0, teamsfx_api_1.err)(manifestRes.error);
61
63
  }
62
64
  try {
63
- const res = await teamsfx_api_1.ManifestUtil.validateManifest(manifestRes.value);
65
+ const schemaErrors = await teamsfx_api_1.ManifestUtil.validateManifest(manifestRes.value);
66
+ const localMCPPluginErrors = await this.validateLocalMCPPluginRuntimes(manifestRes.value);
67
+ const allErrors = [...schemaErrors, ...localMCPPluginErrors];
64
68
  return (0, teamsfx_api_1.ok)({
65
69
  id: plugin.id,
66
70
  filePath: path,
67
- validationResult: res,
71
+ validationResult: allErrors,
68
72
  });
69
73
  }
70
74
  catch (e) {
@@ -171,6 +175,152 @@ class PluginManifestUtils {
171
175
  }
172
176
  return files;
173
177
  }
178
+ /**
179
+ * Validate LocalPlugin runtimes that use MCP servers.
180
+ * Validates four requirements:
181
+ * 1. local_endpoint must start with mcp://
182
+ * 2. run_for_functions entries must match tool names in MCP server
183
+ * 3. Function names must appear in run_for_functions
184
+ * 4. Functions cannot redefine parameters—must match MCP server
185
+ * @param manifest The plugin manifest to validate
186
+ * @param _context Driver context for logging
187
+ * @returns Array of validation error strings
188
+ */
189
+ async validateLocalMCPPluginRuntimes(manifest) {
190
+ var _a, _b, _c;
191
+ const errors = [];
192
+ if (!manifest.runtimes) {
193
+ return errors;
194
+ }
195
+ const localPluginRuntimes = manifest.runtimes.filter((rt) => rt.type === "LocalPlugin");
196
+ if (localPluginRuntimes.length === 0) {
197
+ return errors;
198
+ }
199
+ let mcpServers = [];
200
+ if (process.platform === "win32") {
201
+ try {
202
+ mcpServers = await odrProvider_1.ODRProvider.listServers();
203
+ }
204
+ catch (error) {
205
+ return errors;
206
+ }
207
+ }
208
+ const mcpServerMap = new Map(mcpServers.map((s) => [s.identifier, s]));
209
+ for (const runtime of localPluginRuntimes) {
210
+ const runtimeIdx = manifest.runtimes.indexOf(runtime);
211
+ const localEndpoint = runtime.spec.local_endpoint;
212
+ // 1. Only check the ones with endpoint starting with mcp://
213
+ if (!localEndpoint.startsWith(constants_1.LocalMcpPrefix)) {
214
+ continue;
215
+ }
216
+ const mcpIdentifier = localEndpoint.replace(new RegExp(`^${constants_1.LocalMcpPrefix}`), "");
217
+ const mcpServer = mcpServerMap.get(mcpIdentifier);
218
+ if (!mcpServer) {
219
+ errors.push(`/runtimes/${runtimeIdx}/spec/local_endpoint: ` +
220
+ `MCP server "${mcpIdentifier}" not found in ODR provider.`);
221
+ continue;
222
+ }
223
+ const mcpToolNames = new Set(mcpServer.tools.map((t) => t.name));
224
+ // 2. run_for_functions entries must match tool names in MCP server
225
+ (_a = runtime.run_for_functions) === null || _a === void 0 ? void 0 : _a.forEach((funcName, funcIdx) => {
226
+ if (!mcpToolNames.has(funcName)) {
227
+ const availableTools = Array.from(mcpToolNames).join(", ");
228
+ errors.push(`/runtimes/${runtimeIdx}/run_for_functions[${funcIdx}]: ` +
229
+ `Tool "${funcName}" not found in MCP server "${mcpServer.display_name}". ` +
230
+ `Available tools: ${availableTools}`);
231
+ }
232
+ });
233
+ // 3. Function names must appear in run_for_functions
234
+ const runForFunctionsSet = new Set(runtime.run_for_functions || []);
235
+ (_b = manifest.functions) === null || _b === void 0 ? void 0 : _b.forEach((func, funcIdx) => {
236
+ if (mcpToolNames.has(func.name) && !runForFunctionsSet.has(func.name)) {
237
+ errors.push(`/functions[${funcIdx}]: ` +
238
+ `Function "${func.name}" exists in MCP server but is not listed in /runtimes/${runtimeIdx}/run_for_functions.`);
239
+ }
240
+ });
241
+ // 4. Functions cannot redefine parameters—must match MCP server
242
+ (_c = runtime.run_for_functions) === null || _c === void 0 ? void 0 : _c.forEach((funcName) => {
243
+ var _a;
244
+ const manifestFunc = (_a = manifest.functions) === null || _a === void 0 ? void 0 : _a.find((f) => f.name === funcName);
245
+ const mcpTool = mcpServer.tools.find((t) => t.name === funcName);
246
+ if (manifestFunc && mcpTool) {
247
+ const paramErrors = this.validateFunctionParameters(manifestFunc, mcpTool, funcName);
248
+ errors.push(...paramErrors);
249
+ }
250
+ });
251
+ }
252
+ return errors;
253
+ }
254
+ /**
255
+ * Validate that function parameters match exactly between manifest and MCP tool.
256
+ * @param manifestFunc The function definition from the manifest
257
+ * @param mcpTool The tool definition from MCP server
258
+ * @param funcName The function name for error messages
259
+ * @returns Array of validation error strings
260
+ */
261
+ validateFunctionParameters(manifestFunc, mcpTool, funcName) {
262
+ var _a, _b, _c, _d;
263
+ const errors = [];
264
+ const manifestParams = ((_a = manifestFunc.parameters) === null || _a === void 0 ? void 0 : _a.properties) || {};
265
+ const mcpParams = ((_b = mcpTool.inputSchema) === null || _b === void 0 ? void 0 : _b.properties) || {};
266
+ const manifestRequired = ((_c = manifestFunc.parameters) === null || _c === void 0 ? void 0 : _c.required) || [];
267
+ const mcpRequired = ((_d = mcpTool.inputSchema) === null || _d === void 0 ? void 0 : _d.required) || [];
268
+ const manifestParamNames = new Set(Object.keys(manifestParams));
269
+ const mcpParamNames = new Set(Object.keys(mcpParams));
270
+ // Extra parameters in manifest not in MCP
271
+ manifestParamNames.forEach((prop) => {
272
+ if (!mcpParamNames.has(prop)) {
273
+ errors.push(`/functions["${funcName}"]/parameters/properties/${prop}: ` +
274
+ `Parameter not defined in MCP server. Functions cannot redefine parameters.`);
275
+ }
276
+ });
277
+ // Missing parameters from MCP
278
+ mcpParamNames.forEach((prop) => {
279
+ if (!manifestParamNames.has(prop)) {
280
+ errors.push(`/functions["${funcName}"]/parameters/properties/${prop}: ` +
281
+ `Missing parameter defined in MCP server. All MCP parameters must be included.`);
282
+ }
283
+ });
284
+ // Validate required array matches
285
+ const manifestRequiredSet = new Set(manifestRequired);
286
+ const mcpRequiredSet = new Set(mcpRequired);
287
+ const extraRequired = manifestRequired.filter((r) => !mcpRequiredSet.has(r));
288
+ const missingRequired = mcpRequired.filter((r) => !manifestRequiredSet.has(r));
289
+ if (extraRequired.length > 0) {
290
+ errors.push(`/functions["${funcName}"]/parameters/required: ` +
291
+ `Extra required parameters not in MCP server: ${extraRequired.join(", ")}`);
292
+ }
293
+ if (missingRequired.length > 0) {
294
+ errors.push(`/functions["${funcName}"]/parameters/required: ` +
295
+ `Missing required parameters from MCP server: ${missingRequired.join(", ")}`);
296
+ }
297
+ // Validate parameter types and properties for matching parameters
298
+ manifestParamNames.forEach((prop) => {
299
+ if (mcpParamNames.has(prop)) {
300
+ const manifestParam = manifestParams[prop];
301
+ const mcpParam = mcpParams[prop];
302
+ // Type check
303
+ if (manifestParam.type !== mcpParam.type) {
304
+ errors.push(`/functions["${funcName}"]/parameters/properties/${prop}/type: ` +
305
+ `Type mismatch. Manifest has "${String(manifestParam.type)}", ` +
306
+ `MCP server has "${String(mcpParam.type)}".`);
307
+ }
308
+ // Enum check
309
+ if (manifestParam.enum || mcpParam.enum) {
310
+ const manifestEnumSorted = manifestParam.enum
311
+ ? [...manifestParam.enum].sort()
312
+ : undefined;
313
+ const mcpEnumSorted = mcpParam.enum ? [...mcpParam.enum].sort() : undefined;
314
+ if (JSON.stringify(manifestEnumSorted) !== JSON.stringify(mcpEnumSorted)) {
315
+ errors.push(`/functions["${funcName}"]/parameters/properties/${prop}/enum: ` +
316
+ `Enum mismatch. Manifest: ${JSON.stringify(manifestParam.enum)}, ` +
317
+ `MCP: ${JSON.stringify(mcpParam.enum)}.`);
318
+ }
319
+ }
320
+ }
321
+ });
322
+ return errors;
323
+ }
174
324
  }
175
325
  exports.PluginManifestUtils = PluginManifestUtils;
176
326
  exports.pluginManifestUtils = new PluginManifestUtils();
@@ -1 +1 @@
1
- {"version":3,"file":"PluginManifestUtils.js","sourceRoot":"","sources":["../../../../../src/component/driver/teamsApp/utils/PluginManifestUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PluginManifestUtils.js","sourceRoot":"","sources":["../../../../../src/component/driver/teamsApp/utils/PluginManifestUtils.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;AAElC,wDAegC;AAChC,gEAA0B;AAC1B,qDAA8E;AAC9E,kEAAiC;AACjC,wDAAwB;AACxB,mDAAgD;AAChD,mCAA8C;AAC9C,wCAAoD;AACpD,sCAA2C;AAC3C,oEAAwF;AAExF,8DAAkE;AAClE,2BAAyB;AACzB,sEAA+D;AAE/D,oDAA0D;AAC1D,kEAAmF;AACnF,4DAA6E;AAC7E,kDAAoD;AAEpD,MAAa,mBAAmB;IACvB,KAAK,CAAC,sBAAsB,CACjC,IAAY;QAEZ,IAAI,CAAC,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE;YAChC,OAAO,IAAA,iBAAG,EAAC,IAAI,0BAAiB,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC,CAAC;SAChE;QACD,uCAAuC;QACvC,+CAA+C;QAC/C,IAAI,OAAO,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7D,OAAO,GAAG,IAAA,mBAAQ,EAAC,OAAO,CAAC,CAAC;QAE5B,IAAI;YACF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAyB,CAAC;YAC7D,OAAO,IAAA,gBAAE,EAAC,QAAQ,CAAC,CAAC;SACrB;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,IAAA,iBAAG,EAAC,IAAI,wBAAe,CAAC,IAAI,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC;SACjE;IACH,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,WAAW,CACtB,IAAY,EACZ,OAAsB;QAEtB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC5D,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE;YACvB,OAAO,IAAA,iBAAG,EAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SAC/B;QACD,6CAA6C;QAC7C,MAAM,mBAAmB,GAAG,MAAM,IAAA,2BAAmB,EACnD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,EACjC,IAAI,EACJ,+BAAY,CAAC,cAAc,EAC3B,OAAO,CACR,CAAC;QAEF,IAAI,mBAAmB,CAAC,KAAK,EAAE,EAAE;YAC/B,OAAO,IAAA,iBAAG,EAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;SACvC;QACD,MAAM,sBAAsB,GAAG,mBAAmB,CAAC,KAAK,CAAC;QACzD,OAAO,IAAA,gBAAE,EAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAChD,CAAC;IAEM,KAAK,CAAC,qBAAqB,CAChC,MAAe,EACf,IAAY,EACZ,OAAsB;QAEtB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1D,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE;YACvB,OAAO,IAAA,iBAAG,EAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SAC/B;QAED,IAAI;YACF,MAAM,YAAY,GAAG,MAAM,0BAAY,CAAC,gBAAgB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC5E,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC1F,MAAM,SAAS,GAAG,CAAC,GAAG,YAAY,EAAE,GAAG,oBAAoB,CAAC,CAAC;YAE7D,OAAO,IAAA,gBAAE,EAAC;gBACR,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,QAAQ,EAAE,IAAI;gBACd,gBAAgB,EAAE,SAAS;aAC5B,CAAC,CAAC;SACJ;QAAC,OAAO,CAAM,EAAE;YACf,OAAO,IAAA,iBAAG,EACR,gCAAsB,CAAC,SAAS,CAC9B,uBAAc,CAAC,qBAAqB,CAAC,IAAI,EACzC,uBAAc,CAAC,qBAAqB,CAAC,OAAO,CAAC;gBAC3C,IAAA,kCAAkB,EAChB,2CAA2C,EAC3C,WAAW,CAAC,KAAK,CAAC,OAAO,EACzB,CAAC,CAAC,OAAO,CACV;aACF,CAAC,CACH,CACF,CAAC;SACH;IACH,CAAC;IAEM,KAAK,CAAC,mCAAmC,CAC9C,QAA0B,EAC1B,YAAoB;QAEpB,MAAM,iBAAiB,GAAG,MAAM,6BAAa,CAAC,iBAAiB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACxF,IAAI,iBAAiB,CAAC,KAAK,EAAE,EAAE;YAC7B,OAAO,IAAA,iBAAG,EAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;SACrC;QACD,MAAM,cAAc,GAAG,iBAAiB,CAAC,KAAK,CAAC;QAC/C,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC;QAC3E,IAAI,gBAAgB,CAAC,KAAK,EAAE,EAAE;YAC5B,OAAO,IAAA,iBAAG,EAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;SACpC;QACD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,4BAA4B,CAC1D,gBAAgB,CAAC,KAAK,EACtB,cAAc,CACf,CAAC;QACF,OAAO,IAAA,gBAAE,EAAC,YAAY,CAAC,CAAC;IAC1B,CAAC;IAEM,mBAAmB,CACxB,aAA6C,EAC7C,QAAkB;QAElB,MAAM,gBAAgB,GAAG,aAAa,CAAC,gBAAgB,CAAC;QACxD,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;QACxC,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,OAAO,EAAE,CAAC;SACX;QAED,IAAI,QAAQ,KAAK,sBAAQ,CAAC,GAAG,EAAE;YAC7B,MAAM,MAAM,GAAG,gBAAgB;iBAC5B,GAAG,CAAC,CAAC,KAAa,EAAE,EAAE;gBACrB,OAAO,GAAG,0BAAe,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;YAC9C,CAAC,CAAC;iBACD,IAAI,CAAC,QAAG,CAAC,CAAC;YACb,OAAO,CACL,IAAA,kCAAkB,EAAC,0DAA0D,EAAE,QAAQ,CAAC;gBACxF,QAAG;gBACH,MAAM,CACP,CAAC;SACH;aAAM;YACL,MAAM,aAAa,GAAG,EAAE,CAAC;YACzB,aAAa,CAAC,IAAI,CAAC;gBACjB,OAAO,EACL,IAAA,gCAAgB,EAAC,0DAA0D,EAAE,QAAQ,CAAC;oBACtF,IAAI;gBACN,KAAK,EAAE,oBAAM,CAAC,YAAY;aAC3B,CAAC,CAAC;YACH,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAa,EAAE,EAAE;gBACrC,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,0BAAe,CAAC,MAAM,GAAG,EAAE,KAAK,EAAE,oBAAM,CAAC,UAAU,EAAE,CAAC,CAAC;gBACxF,aAAa,CAAC,IAAI,CAAC;oBACjB,OAAO,EAAE,GAAG,KAAK,IAAI;oBACrB,KAAK,EAAE,oBAAM,CAAC,YAAY;iBAC3B,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,OAAO,aAAa,CAAC;SACtB;IACH,CAAC;IAEM,KAAK,CAAC,kCAAkC,CAC7C,WAAmB,EACnB,aAAqB,EACrB,kBAAkB,GAAG,KAAK;QAE1B,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI;YACF,MAAM,GAAG,CAAC,CAAC,MAAM,IAAA,sBAAc,EAAC,WAAW,CAAC,CAAC,CAAC;SAC/C;QAAC,OAAO,CAAC,EAAE,GAAE;QAEd,IAAI,mBAAmB,GACrB,MAAM,IAAI,iCAAkB,CAAC,eAAe,CAAC,2BAAY,CAAC,mBAAmB,CAAC;YAC5E,CAAC,CAAC,wCAA0B;YAC5B,CAAC,CAAC,wCAA0B,CAAC;QACjC,gDAAgD;QAChD,IAAI,CAAC,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE;YACzE,OAAO,cAAI,CAAC,IAAI,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;SACtD;QAED,MAAM,yBAAyB,GAAG,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,IAAI,qBAAqB,GAAG,CAAC,CAAC;QAC9B,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAC3C,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,CACnB,CAAC;QAEF,OAAO,MAAM,kBAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC,EAAE;YACzE,qBAAqB,EAAE,CAAC;YACxB,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAC3C,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,CACnB,CAAC;SACH;QACD,MAAM,mBAAmB,GAAG,cAAI,CAAC,IAAI,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;QAE1E,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,kBAAkB,CAChB,yBAAiC,EACjC,mBAA2B,EAC3B,qBAA6B,EAC7B,kBAA2B;QAE3B,IAAI,mBAAmB,CAAC;QACxB,IAAI,kBAAkB,EAAE;YACtB,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9D,mBAAmB,GAAG,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,qBAAqB,IAAI,gBAAgB,CAAC,CAAC,CAAC,IAAI,mBAAmB,EAAE,CAAC;SACvH;aAAM;YACL,mBAAmB,GAAG,GAAG,yBAAyB,IAAI,qBAAqB,IAAI,mBAAmB,EAAE,CAAC;SACtG;QACD,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,4BAA4B,CAChC,MAA4B,EAC5B,UAAkB;;QAElB,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO,KAAK,CAAC;SACd;QACD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC9B,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,KAAI,MAAA,OAAO,CAAC,IAAI,0CAAE,GAAG,CAAA,EAAE;gBACnD,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC1E,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;oBACjC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBACtB;aACF;SACF;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;;;;OAUG;IACI,KAAK,CAAC,8BAA8B,CAAC,QAA8B;;QACxE,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;YACtB,OAAO,MAAM,CAAC;SACf;QAED,MAAM,mBAAmB,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAClD,CAAC,EAAE,EAAkC,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,aAAa,CAClE,CAAC;QAEF,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE;YACpC,OAAO,MAAM,CAAC;SACf;QAED,IAAI,UAAU,GAAgB,EAAE,CAAC;QACjC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;YAChC,IAAI;gBACF,UAAU,GAAG,MAAM,yBAAW,CAAC,WAAW,EAAE,CAAC;aAC9C;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,MAAM,CAAC;aACf;SACF;QAED,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvE,KAAK,MAAM,OAAO,IAAI,mBAAmB,EAAE;YACzC,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACtD,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC;YAElD,4DAA4D;YAC5D,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,0BAAc,CAAC,EAAE;gBAC7C,SAAS;aACV;YAED,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,0BAAc,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAClF,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAElD,IAAI,CAAC,SAAS,EAAE;gBACd,MAAM,CAAC,IAAI,CACT,aAAa,UAAU,wBAAwB;oBAC7C,eAAe,aAAa,8BAA8B,CAC7D,CAAC;gBACF,SAAS;aACV;YAED,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAEjE,mEAAmE;YACnE,MAAA,OAAO,CAAC,iBAAiB,0CAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;gBACvD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;oBAC/B,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC3D,MAAM,CAAC,IAAI,CACT,aAAa,UAAU,sBAAsB,OAAO,KAAK;wBACvD,SAAS,QAAQ,8BAA8B,SAAS,CAAC,YAAY,KAAK;wBAC1E,oBAAoB,cAAc,EAAE,CACvC,CAAC;iBACH;YACH,CAAC,CAAC,CAAC;YAEH,qDAAqD;YACrD,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;YACpE,MAAA,QAAQ,CAAC,SAAS,0CAAE,OAAO,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;gBAC5C,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACrE,MAAM,CAAC,IAAI,CACT,cAAc,OAAO,KAAK;wBACxB,aAAa,IAAI,CAAC,IAAI,yDAAyD,UAAU,qBAAqB,CACjH,CAAC;iBACH;YACH,CAAC,CAAC,CAAC;YAEH,gEAAgE;YAChE,MAAA,OAAO,CAAC,iBAAiB,0CAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;;gBAC9C,MAAM,YAAY,GAAG,MAAA,QAAQ,CAAC,SAAS,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;gBAC1E,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;gBAEjE,IAAI,YAAY,IAAI,OAAO,EAAE;oBAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,0BAA0B,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;oBACrF,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;iBAC7B;YACH,CAAC,CAAC,CAAC;SACJ;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;OAMG;IACK,0BAA0B,CAChC,YAA4B,EAC5B,OAAgB,EAChB,QAAgB;;QAEhB,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,cAAc,GAAG,CAAA,MAAA,YAAY,CAAC,UAAU,0CAAE,UAAU,KAAI,EAAE,CAAC;QACjE,MAAM,SAAS,GAAG,CAAA,MAAA,OAAO,CAAC,WAAW,0CAAE,UAAU,KAAI,EAAE,CAAC;QACxD,MAAM,gBAAgB,GAAG,CAAA,MAAA,YAAY,CAAC,UAAU,0CAAE,QAAQ,KAAI,EAAE,CAAC;QACjE,MAAM,WAAW,GAAG,CAAA,MAAA,OAAO,CAAC,WAAW,0CAAE,QAAQ,KAAI,EAAE,CAAC;QAExD,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QAChE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAEtD,0CAA0C;QAC1C,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAClC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC5B,MAAM,CAAC,IAAI,CACT,eAAe,QAAQ,4BAA4B,IAAI,IAAI;oBACzD,4EAA4E,CAC/E,CAAC;aACH;QACH,CAAC,CAAC,CAAC;QAEH,8BAA8B;QAC9B,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC7B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBACjC,MAAM,CAAC,IAAI,CACT,eAAe,QAAQ,4BAA4B,IAAI,IAAI;oBACzD,+EAA+E,CAClF,CAAC;aACH;QACH,CAAC,CAAC,CAAC;QAEH,kCAAkC;QAClC,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACtD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;QAE5C,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,eAAe,GAAI,WAAwB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7F,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,MAAM,CAAC,IAAI,CACT,eAAe,QAAQ,0BAA0B;gBAC/C,gDAAgD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC7E,CAAC;SACH;QAED,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9B,MAAM,CAAC,IAAI,CACT,eAAe,QAAQ,0BAA0B;gBAC/C,gDAAgD,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC/E,CAAC;SACH;QAED,kEAAkE;QAClE,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAClC,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC3B,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;gBAC3C,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;gBAEjC,aAAa;gBACb,IAAI,aAAa,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE;oBACxC,MAAM,CAAC,IAAI,CACT,eAAe,QAAQ,4BAA4B,IAAI,SAAS;wBAC9D,gCAAgC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK;wBAC/D,mBAAmB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAC/C,CAAC;iBACH;gBAED,aAAa;gBACb,IAAI,aAAa,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE;oBACvC,MAAM,kBAAkB,GAAG,aAAa,CAAC,IAAI;wBAC3C,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;wBAChC,CAAC,CAAC,SAAS,CAAC;oBACd,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;oBAE5E,IAAI,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE;wBACxE,MAAM,CAAC,IAAI,CACT,eAAe,QAAQ,4BAA4B,IAAI,SAAS;4BAC9D,4BAA4B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI;4BAClE,QAAQ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAC3C,CAAC;qBACH;iBACF;aACF;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAnaD,kDAmaC;AAEY,QAAA,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { Context, FxError, GeneratorResult, Result } from "@microsoft/teamsfx-api";
2
+ export declare class ConfigGenerator {
3
+ componentName: string;
4
+ run(context: Context, destinationPath: string, components: {
5
+ name: string;
6
+ programmingLanguage: string;
7
+ }[], features: Record<string, unknown>): Promise<Result<GeneratorResult, FxError>>;
8
+ private getCapabilities;
9
+ private getPolicyKey;
10
+ private detectFileConflict;
11
+ private getFileExtensionWithoutTemplate;
12
+ private generateConfigFilesByPolicy;
13
+ }
14
+ export declare const configGenerator: ConfigGenerator;
15
+ //# sourceMappingURL=configGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configGenerator.d.ts","sourceRoot":"","sources":["../../../../src/component/generator/configFiles/configGenerator.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,OAAO,EAEP,OAAO,EACP,eAAe,EAEf,MAAM,EAEP,MAAM,wBAAwB,CAAC;AAchC,qBAAa,eAAe;IAC1B,aAAa,SAAqB;IAWrB,GAAG,CACd,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAA;KAAE,EAAE,EAC3D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IA6E5C,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,YAAY;YAIN,kBAAkB;IAsBhC,OAAO,CAAC,+BAA+B;YAKzB,2BAA2B;CAsD1C;AAED,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT license.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.configGenerator = exports.ConfigGenerator = void 0;
6
+ const tslib_1 = require("tslib");
7
+ const lib_1 = require("@feathersjs/hooks/lib");
8
+ const teamsfx_api_1 = require("@microsoft/teamsfx-api");
9
+ const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
10
+ const path_1 = tslib_1.__importDefault(require("path"));
11
+ const uuid = tslib_1.__importStar(require("uuid"));
12
+ const localizeUtils_1 = require("../../../common/localizeUtils");
13
+ const telemetry_1 = require("../../../common/telemetry");
14
+ const folder_1 = require("../../../folder");
15
+ const messages_1 = require("../../messages");
16
+ const actionExecutionMW_1 = require("../../middleware/actionExecutionMW");
17
+ const settingsUtil_1 = require("../../utils/settingsUtil");
18
+ const copyPolicy_1 = require("./copyPolicy");
19
+ const jsonMerger_1 = require("./jsonMerger");
20
+ const renderTemplate_1 = require("./renderTemplate");
21
+ class ConfigGenerator {
22
+ constructor() {
23
+ this.componentName = "ConfigGenerator";
24
+ }
25
+ async run(context, destinationPath, components, features) {
26
+ await context.userInteraction.showMessage("info", "Generating configuration files...", false);
27
+ // telemetry props
28
+ const successComponents = [];
29
+ const failedComponents = [];
30
+ // Process all components: detect conflicts and generate files in a single pass
31
+ for (const component of components) {
32
+ const policyKey = this.getPolicyKey(component);
33
+ const policy = copyPolicy_1.policys[policyKey];
34
+ if (!policy) {
35
+ return (0, teamsfx_api_1.err)(new teamsfx_api_1.UserError(this.componentName, "UnknownPolicyError", (0, localizeUtils_1.getDefaultString)("error.generator.UnknownPolicy", policyKey)));
36
+ }
37
+ const fileDetectionResult = await this.detectFileConflict(destinationPath, policy);
38
+ if (fileDetectionResult.isErr()) {
39
+ await context.userInteraction.showMessage("warn", fileDetectionResult.error.message, false);
40
+ failedComponents.push(policyKey);
41
+ continue;
42
+ }
43
+ const sourcePath = path_1.default.join((0, folder_1.getTemplatesFolder)(), "configs", component.name, component.programmingLanguage);
44
+ await context.userInteraction.showMessage("info", `Processing ${component.name} (${component.programmingLanguage})...`, false);
45
+ const changes = await this.generateConfigFilesByPolicy(sourcePath, destinationPath, policy, features);
46
+ // Show what files were changed
47
+ for (const change of changes) {
48
+ const action = change.action === "added"
49
+ ? "Added"
50
+ : change.action === "modified"
51
+ ? "Modified"
52
+ : "Skipped";
53
+ await context.userInteraction.showMessage("info", ` ${action}: ${change.file}`, false);
54
+ }
55
+ successComponents.push(policyKey);
56
+ }
57
+ const settingsRes = await settingsUtil_1.settingsUtil.readSettings(destinationPath, false);
58
+ if (settingsRes.isErr())
59
+ return (0, teamsfx_api_1.err)(settingsRes.error);
60
+ const settings = settingsRes.value;
61
+ if (!settings.trackingId) {
62
+ settings.trackingId = uuid.v4();
63
+ }
64
+ await settingsUtil_1.settingsUtil.writeSettings(destinationPath, settings);
65
+ context.telemetryReporter.sendTelemetryEvent(telemetry_1.TelemetryEvent.GenerateConfigSummary, {
66
+ [telemetry_1.ProjectTypeProps.TeamsManifestCapabilities]: this.getCapabilities(features).join(",") || "",
67
+ successComponents: successComponents.join(",") || "",
68
+ failedComponents: failedComponents.join(",") || "",
69
+ trackingId: settings.trackingId || "",
70
+ });
71
+ return (0, teamsfx_api_1.ok)({});
72
+ }
73
+ getCapabilities(features) {
74
+ const capabilities = [];
75
+ if (features["hasTab"])
76
+ capabilities.push("Tab");
77
+ if (features["hasBot"])
78
+ capabilities.push("Bot");
79
+ if (features["hasMessageExtension"])
80
+ capabilities.push("ME");
81
+ if (features["hasDeclarativeAgent"])
82
+ capabilities.push("DA");
83
+ if (features["hasCustomEngineAgent"])
84
+ capabilities.push("CEA");
85
+ return capabilities;
86
+ }
87
+ getPolicyKey(component) {
88
+ return `${component.name}-${component.programmingLanguage}`;
89
+ }
90
+ async detectFileConflict(destinationPath, policy) {
91
+ for (const [filePath, copyPolicy] of Object.entries(policy)) {
92
+ if (!copyPolicy.allowExistingFile) {
93
+ const fullPath = path_1.default.join(destinationPath, filePath);
94
+ const fileExists = await fs_extra_1.default.pathExists(fullPath);
95
+ if (fileExists) {
96
+ return (0, teamsfx_api_1.err)(new teamsfx_api_1.UserError(this.componentName, "ConflictFileError", (0, localizeUtils_1.getDefaultString)("error.generator.FileConflictError", filePath)));
97
+ }
98
+ }
99
+ }
100
+ return (0, teamsfx_api_1.ok)(undefined);
101
+ }
102
+ getFileExtensionWithoutTemplate(filePath) {
103
+ const withoutTemplate = filePath.endsWith(".tpl") ? filePath.slice(0, -4) : filePath;
104
+ return path_1.default.extname(withoutTemplate);
105
+ }
106
+ async generateConfigFilesByPolicy(sourcePath, destinationPath, policy, features) {
107
+ const changes = [];
108
+ for (const [filePath, copyPolicy] of Object.entries(policy)) {
109
+ const isTemplate = filePath.endsWith(".tpl");
110
+ let srcFilePath = path_1.default.join(sourcePath, filePath);
111
+ const destFilePath = path_1.default.join(destinationPath, isTemplate ? filePath.slice(0, -4) : filePath);
112
+ const fileExtension = this.getFileExtensionWithoutTemplate(filePath);
113
+ let renderedFilePath = null;
114
+ // Render template if needed
115
+ if (isTemplate) {
116
+ renderedFilePath = destFilePath + ".rendered";
117
+ const renderedContent = (0, renderTemplate_1.renderTemplate)(srcFilePath, features);
118
+ await fs_extra_1.default.outputFile(renderedFilePath, renderedContent, "utf-8");
119
+ srcFilePath = renderedFilePath;
120
+ }
121
+ try {
122
+ // Handle existing files
123
+ const fileExists = await fs_extra_1.default.pathExists(destFilePath);
124
+ const relativeFilePath = path_1.default.relative(destinationPath, destFilePath);
125
+ if (fileExists) {
126
+ if (copyPolicy.policy === "add" && fileExtension === ".json") {
127
+ await (0, jsonMerger_1.mergeJsonFile)(srcFilePath, destFilePath);
128
+ changes.push({ file: relativeFilePath, action: "modified" });
129
+ }
130
+ else {
131
+ // For "skip" or non-JSON files, do nothing
132
+ changes.push({ file: relativeFilePath, action: "skipped" });
133
+ }
134
+ }
135
+ else {
136
+ // If the file does not exist, just copy it.
137
+ await fs_extra_1.default.copy(srcFilePath, destFilePath);
138
+ changes.push({ file: relativeFilePath, action: "added" });
139
+ }
140
+ }
141
+ finally {
142
+ // Clean up rendered temp file
143
+ if (renderedFilePath !== null) {
144
+ await fs_extra_1.default.remove(renderedFilePath);
145
+ }
146
+ }
147
+ }
148
+ return changes;
149
+ }
150
+ }
151
+ tslib_1.__decorate([
152
+ (0, lib_1.hooks)([
153
+ (0, actionExecutionMW_1.ActionExecutionMW)({
154
+ enableProgressBar: true,
155
+ progressTitle: messages_1.ProgressTitles.create,
156
+ progressSteps: 1,
157
+ enableTelemetry: true,
158
+ telemetryEventName: telemetry_1.TelemetryEvent.GenerateConfig,
159
+ }),
160
+ ]),
161
+ tslib_1.__metadata("design:type", Function),
162
+ tslib_1.__metadata("design:paramtypes", [Object, String, Array, Object]),
163
+ tslib_1.__metadata("design:returntype", Promise)
164
+ ], ConfigGenerator.prototype, "run", null);
165
+ exports.ConfigGenerator = ConfigGenerator;
166
+ exports.configGenerator = new ConfigGenerator();
167
+ //# sourceMappingURL=configGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configGenerator.js","sourceRoot":"","sources":["../../../../src/component/generator/configFiles/configGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export interface CopyPolicy {
2
+ allowExistingFile: boolean;
3
+ policy: "add" | "skip" | "error";
4
+ }
5
+ export declare const playgroundNode: Record<string, CopyPolicy>;
6
+ export declare const localNode: Record<string, CopyPolicy>;
7
+ export declare const playgroundPython: Record<string, CopyPolicy>;
8
+ export declare const localPython: Record<string, CopyPolicy>;
9
+ export declare const policys: Record<string, Record<string, CopyPolicy>>;
10
+ //# sourceMappingURL=copyPolicy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copyPolicy.d.ts","sourceRoot":"","sources":["../../../../src/component/generator/configFiles/copyPolicy.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;CAClC;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAQrD,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAMhD,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAOvD,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAKlD,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAK9D,CAAC"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT license.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.policys = exports.localPython = exports.playgroundPython = exports.localNode = exports.playgroundNode = void 0;
6
+ exports.playgroundNode = {
7
+ "package.json": { allowExistingFile: true, policy: "add" },
8
+ ".vscode/launch.json": { allowExistingFile: true, policy: "add" },
9
+ ".vscode/tasks.json": { allowExistingFile: true, policy: "add" },
10
+ "env/.env.playground": { allowExistingFile: false, policy: "skip" },
11
+ "env/.env.playground.user": { allowExistingFile: false, policy: "skip" },
12
+ "m365agents.playground.yml": { allowExistingFile: false, policy: "error" },
13
+ ".localConfigs.playground": { allowExistingFile: true, policy: "skip" },
14
+ };
15
+ exports.localNode = {
16
+ "package.json": { allowExistingFile: true, policy: "add" },
17
+ ".vscode/launch.json.tpl": { allowExistingFile: true, policy: "add" },
18
+ ".vscode/tasks.json.tpl": { allowExistingFile: true, policy: "add" },
19
+ "env/.env.local": { allowExistingFile: false, policy: "skip" },
20
+ "m365agents.local.yml.tpl": { allowExistingFile: false, policy: "error" },
21
+ };
22
+ exports.playgroundPython = {
23
+ ".vscode/launch.json": { allowExistingFile: true, policy: "add" },
24
+ ".vscode/tasks.json": { allowExistingFile: true, policy: "add" },
25
+ "env/.env.playground": { allowExistingFile: false, policy: "skip" },
26
+ "env/.env.playground.user": { allowExistingFile: false, policy: "skip" },
27
+ ".localConfigs.playground": { allowExistingFile: true, policy: "skip" },
28
+ "m365agents.playground.yml": { allowExistingFile: false, policy: "error" },
29
+ };
30
+ exports.localPython = {
31
+ ".vscode/launch.json.tpl": { allowExistingFile: true, policy: "add" },
32
+ ".vscode/tasks.json.tpl": { allowExistingFile: true, policy: "add" },
33
+ "env/.env.local": { allowExistingFile: false, policy: "skip" },
34
+ "m365agents.local.yml.tpl": { allowExistingFile: false, policy: "error" },
35
+ };
36
+ exports.policys = {
37
+ "playground-typescript": exports.playgroundNode,
38
+ "local-typescript": exports.localNode,
39
+ "playground-python": exports.playgroundPython,
40
+ "local-python": exports.localPython,
41
+ };
42
+ //# sourceMappingURL=copyPolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copyPolicy.js","sourceRoot":"","sources":["../../../../src/component/generator/configFiles/copyPolicy.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAOrB,QAAA,cAAc,GAA+B;IACxD,cAAc,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;IAC1D,qBAAqB,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;IACjE,oBAAoB,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;IAChE,qBAAqB,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;IACnE,0BAA0B,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;IACxE,2BAA2B,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;IAC1E,0BAA0B,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;CACxE,CAAC;AAEW,QAAA,SAAS,GAA+B;IACnD,cAAc,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;IAC1D,yBAAyB,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;IACrE,wBAAwB,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;IACpE,gBAAgB,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;IAC9D,0BAA0B,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;CAC1E,CAAC;AAEW,QAAA,gBAAgB,GAA+B;IAC1D,qBAAqB,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;IACjE,oBAAoB,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;IAChE,qBAAqB,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;IACnE,0BAA0B,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;IACxE,0BAA0B,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IACvE,2BAA2B,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;CAC3E,CAAC;AAEW,QAAA,WAAW,GAA+B;IACrD,yBAAyB,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;IACrE,wBAAwB,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;IACpE,gBAAgB,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;IAC9D,0BAA0B,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;CAC1E,CAAC;AAEW,QAAA,OAAO,GAA+C;IACjE,uBAAuB,EAAE,sBAAc;IACvC,kBAAkB,EAAE,iBAAS;IAC7B,mBAAmB,EAAE,wBAAgB;IACrC,cAAc,EAAE,mBAAW;CAC5B,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Merge source JSON file (with comments) into target JSON file (with comments) at node level.
3
+ * Rules:
4
+ * - If a top-level or nested property in source does not exist in target, add it (preserving source value).
5
+ * - If property exists and both values are arrays, append source array elements to target array (with de-duplication).
6
+ * - If property exists and both values are plain objects, recurse.
7
+ * - Otherwise (primitive / mismatched types), keep the existing target value (no overwrite).
8
+ * - Comments present in the existing target file are preserved. New properties won't have comments unless provided in target.
9
+ */
10
+ export declare function mergeJsonFile(sourcePath: string, targetPath: string): Promise<void>;
11
+ //# sourceMappingURL=jsonMerger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonMerger.d.ts","sourceRoot":"","sources":["../../../../src/component/generator/configFiles/jsonMerger.ts"],"names":[],"mappings":"AAMA;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBzF"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT license.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.mergeJsonFile = void 0;
6
+ const tslib_1 = require("tslib");
7
+ const commentJson = tslib_1.__importStar(require("comment-json"));
8
+ const fs = tslib_1.__importStar(require("fs-extra"));
9
+ /**
10
+ * Merge source JSON file (with comments) into target JSON file (with comments) at node level.
11
+ * Rules:
12
+ * - If a top-level or nested property in source does not exist in target, add it (preserving source value).
13
+ * - If property exists and both values are arrays, append source array elements to target array (with de-duplication).
14
+ * - If property exists and both values are plain objects, recurse.
15
+ * - Otherwise (primitive / mismatched types), keep the existing target value (no overwrite).
16
+ * - Comments present in the existing target file are preserved. New properties won't have comments unless provided in target.
17
+ */
18
+ async function mergeJsonFile(sourcePath, targetPath) {
19
+ if (!(await fs.pathExists(sourcePath)))
20
+ return; // nothing to merge
21
+ if (!(await fs.pathExists(targetPath))) {
22
+ // If target does not exist just copy source over
23
+ await fs.copy(sourcePath, targetPath);
24
+ return;
25
+ }
26
+ const rawSource = await fs.readFile(sourcePath, "utf8");
27
+ const rawTarget = await fs.readFile(targetPath, "utf8");
28
+ // Parse with comment-json to retain comments/whitespace metadata where possible
29
+ // Do NOT pass 'true' as third param (that would strip comments)
30
+ const source = commentJson.parse(rawSource);
31
+ const target = commentJson.parse(rawTarget);
32
+ const merged = mergeNodes(target, source);
33
+ const output = commentJson.stringify(merged, null, 2) + "\n";
34
+ await fs.writeFile(targetPath, output, "utf8");
35
+ }
36
+ exports.mergeJsonFile = mergeJsonFile;
37
+ function isPlainObject(val) {
38
+ return !!val && typeof val === "object" && !Array.isArray(val);
39
+ }
40
+ function arrayContains(arr, el) {
41
+ // For primitives, use strict equality
42
+ if (typeof el !== "object" || el === null) {
43
+ return arr.includes(el);
44
+ }
45
+ // For objects/arrays, use deep equality check
46
+ return arr.some((item) => JSON.stringify(item) === JSON.stringify(el));
47
+ }
48
+ function mergeNodes(target, source) {
49
+ if (Array.isArray(target) && Array.isArray(source)) {
50
+ // Append all elements from source (retain order, no duplicates)
51
+ for (const el of source) {
52
+ if (!arrayContains(target, el)) {
53
+ target.push(el);
54
+ }
55
+ }
56
+ return target;
57
+ }
58
+ if (isPlainObject(target) && isPlainObject(source)) {
59
+ for (const key of Object.keys(source)) {
60
+ const sVal = source[key];
61
+ if (!(key in target)) {
62
+ target[key] = sVal;
63
+ }
64
+ else {
65
+ const tVal = target[key];
66
+ if (Array.isArray(tVal) && Array.isArray(sVal)) {
67
+ for (const el of sVal) {
68
+ if (!arrayContains(tVal, el)) {
69
+ tVal.push(el);
70
+ }
71
+ }
72
+ }
73
+ else if (isPlainObject(tVal) && isPlainObject(sVal)) {
74
+ mergeNodes(tVal, sVal);
75
+ } // else keep existing primitive / mismatched types
76
+ }
77
+ }
78
+ return target;
79
+ }
80
+ // For primitives or mismatched types: do not overwrite target per requirements
81
+ return target;
82
+ }
83
+ //# sourceMappingURL=jsonMerger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonMerger.js","sourceRoot":"","sources":["../../../../src/component/generator/configFiles/jsonMerger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function renderTemplate(templateFilePath: string, context: Record<string, any>): string;
2
+ //# sourceMappingURL=renderTemplate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderTemplate.d.ts","sourceRoot":"","sources":["../../../../src/component/generator/configFiles/renderTemplate.ts"],"names":[],"mappings":"AAMA,wBAAgB,cAAc,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAK7F"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT license.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.renderTemplate = void 0;
6
+ const tslib_1 = require("tslib");
7
+ const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
8
+ const handlebars_1 = tslib_1.__importDefault(require("handlebars"));
9
+ function renderTemplate(templateFilePath, context) {
10
+ const templateContent = fs_extra_1.default.readFileSync(templateFilePath, "utf-8");
11
+ const template = handlebars_1.default.compile(templateContent);
12
+ const renderedContent = template(context);
13
+ return renderedContent;
14
+ }
15
+ exports.renderTemplate = renderTemplate;
16
+ //# sourceMappingURL=renderTemplate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderTemplate.js","sourceRoot":"","sources":["../../../../src/component/generator/configFiles/renderTemplate.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;AAElC,gEAA0B;AAC1B,oEAAoC;AAEpC,SAAgB,cAAc,CAAC,gBAAwB,EAAE,OAA4B;IACnF,MAAM,eAAe,GAAG,kBAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,oBAAU,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACrD,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,eAAe,CAAC;AACzB,CAAC;AALD,wCAKC"}
@@ -15,5 +15,10 @@ export declare class DeclarativeAgentGenerator extends DefaultTemplateGenerator
15
15
  activate(context: Context, inputs: Inputs): boolean;
16
16
  getTemplateInfos(context: Context, inputs: Inputs, destinationPath: string, actionContext?: ActionContext): Promise<Result<TemplateInfo[], FxError>>;
17
17
  post(context: Context, inputs: Inputs, destinationPath: string, actionContext?: ActionContext): Promise<Result<GeneratorResult, FxError>>;
18
+ /**
19
+ * Process selected MCP local servers from inputs and format for template
20
+ * Handles both single and multiple server selection for backward compatibility
21
+ */
22
+ private processMCPLocalServers;
18
23
  }
19
24
  //# sourceMappingURL=generator.d.ts.map