@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.
- package/build/client/graphClient.d.ts +1 -0
- package/build/client/graphClient.d.ts.map +1 -1
- package/build/client/teamsDevPortalClient.d.ts +1 -0
- package/build/client/teamsDevPortalClient.d.ts.map +1 -1
- package/build/common/featureFlags.d.ts +9 -50
- package/build/common/featureFlags.d.ts.map +1 -1
- package/build/common/featureFlags.js +12 -42
- package/build/common/featureFlags.js.map +1 -1
- package/build/common/localizeUtils.d.ts.map +1 -1
- package/build/common/localizeUtils.js +36 -12
- package/build/common/localizeUtils.js.map +1 -1
- package/build/common/telemetry.d.ts +2 -0
- package/build/common/telemetry.d.ts.map +1 -1
- package/build/common/telemetry.js +2 -0
- package/build/common/telemetry.js.map +1 -1
- package/build/common/templates-config.json +4 -4
- package/build/component/constants.d.ts +1 -0
- package/build/component/constants.d.ts.map +1 -1
- package/build/component/constants.js +2 -1
- package/build/component/constants.js.map +1 -1
- package/build/component/coordinator/index.d.ts.map +1 -1
- package/build/component/coordinator/index.js +0 -11
- package/build/component/coordinator/index.js.map +1 -1
- package/build/component/deps-checker/internal/dotnetChecker.d.ts +5 -1
- package/build/component/deps-checker/internal/dotnetChecker.d.ts.map +1 -1
- package/build/component/deps-checker/internal/dotnetChecker.js +16 -8
- package/build/component/deps-checker/internal/dotnetChecker.js.map +1 -1
- package/build/component/driver/deploy/spfx/utility/spoClient.d.ts +1 -0
- package/build/component/driver/deploy/spfx/utility/spoClient.d.ts.map +1 -1
- package/build/component/driver/devTool/httpClient.d.ts +1 -0
- package/build/component/driver/devTool/httpClient.d.ts.map +1 -1
- package/build/component/driver/devTool/nodeInstaller.d.ts +1 -0
- package/build/component/driver/devTool/nodeInstaller.d.ts.map +1 -1
- package/build/component/driver/script/scriptDriver.d.ts +1 -0
- package/build/component/driver/script/scriptDriver.d.ts.map +1 -1
- package/build/component/driver/script/scriptDriver.js +1 -1
- package/build/component/driver/script/scriptDriver.js.map +1 -1
- package/build/component/driver/share/utils.d.ts.map +1 -1
- package/build/component/driver/share/utils.js +6 -0
- package/build/component/driver/share/utils.js.map +1 -1
- package/build/component/driver/teamsApp/constants.d.ts +1 -1
- package/build/component/driver/teamsApp/constants.d.ts.map +1 -1
- package/build/component/driver/teamsApp/constants.js +2 -2
- package/build/component/driver/teamsApp/constants.js.map +1 -1
- package/build/component/driver/teamsApp/copyAppPackageToSPFx.d.ts +1 -0
- package/build/component/driver/teamsApp/copyAppPackageToSPFx.d.ts.map +1 -1
- package/build/component/driver/teamsApp/createAppPackage.d.ts.map +1 -1
- package/build/component/driver/teamsApp/createAppPackage.js +12 -1
- package/build/component/driver/teamsApp/createAppPackage.js.map +1 -1
- package/build/component/driver/teamsApp/interfaces/appdefinitions/appPackage.d.ts +1 -0
- package/build/component/driver/teamsApp/interfaces/appdefinitions/appPackage.d.ts.map +1 -1
- package/build/component/driver/teamsApp/publishAppPackage.d.ts +2 -0
- package/build/component/driver/teamsApp/publishAppPackage.d.ts.map +1 -1
- package/build/component/driver/teamsApp/publishAppPackage.js +79 -4
- package/build/component/driver/teamsApp/publishAppPackage.js.map +1 -1
- package/build/component/driver/teamsApp/utils/ManifestUtils.d.ts +1 -0
- package/build/component/driver/teamsApp/utils/ManifestUtils.d.ts.map +1 -1
- package/build/component/driver/teamsApp/utils/ManifestUtils.js +7 -8
- package/build/component/driver/teamsApp/utils/ManifestUtils.js.map +1 -1
- package/build/component/driver/teamsApp/utils/PluginManifestUtils.d.ts +20 -0
- package/build/component/driver/teamsApp/utils/PluginManifestUtils.d.ts.map +1 -1
- package/build/component/driver/teamsApp/utils/PluginManifestUtils.js +152 -2
- package/build/component/driver/teamsApp/utils/PluginManifestUtils.js.map +1 -1
- package/build/component/generator/configFiles/configGenerator.d.ts +15 -0
- package/build/component/generator/configFiles/configGenerator.d.ts.map +1 -0
- package/build/component/generator/configFiles/configGenerator.js +167 -0
- package/build/component/generator/configFiles/configGenerator.js.map +1 -0
- package/build/component/generator/configFiles/copyPolicy.d.ts +10 -0
- package/build/component/generator/configFiles/copyPolicy.d.ts.map +1 -0
- package/build/component/generator/configFiles/copyPolicy.js +42 -0
- package/build/component/generator/configFiles/copyPolicy.js.map +1 -0
- package/build/component/generator/configFiles/jsonMerger.d.ts +11 -0
- package/build/component/generator/configFiles/jsonMerger.d.ts.map +1 -0
- package/build/component/generator/configFiles/jsonMerger.js +83 -0
- package/build/component/generator/configFiles/jsonMerger.js.map +1 -0
- package/build/component/generator/configFiles/renderTemplate.d.ts +2 -0
- package/build/component/generator/configFiles/renderTemplate.d.ts.map +1 -0
- package/build/component/generator/configFiles/renderTemplate.js +16 -0
- package/build/component/generator/configFiles/renderTemplate.js.map +1 -0
- package/build/component/generator/declarativeAgent/generator.d.ts +5 -0
- package/build/component/generator/declarativeAgent/generator.d.ts.map +1 -1
- package/build/component/generator/declarativeAgent/generator.js +78 -28
- package/build/component/generator/declarativeAgent/generator.js.map +1 -1
- package/build/component/generator/declarativeAgent/helper.d.ts.map +1 -1
- package/build/component/generator/declarativeAgent/helper.js +0 -1
- package/build/component/generator/declarativeAgent/helper.js.map +1 -1
- package/build/component/generator/generator.d.ts.map +1 -1
- package/build/component/generator/generator.js +3 -13
- package/build/component/generator/generator.js.map +1 -1
- package/build/component/generator/generatorAction.d.ts +1 -0
- package/build/component/generator/generatorAction.d.ts.map +1 -1
- package/build/component/generator/officeAddin/generator.d.ts.map +1 -1
- package/build/component/generator/officeAddin/generator.js +6 -4
- package/build/component/generator/officeAddin/generator.js.map +1 -1
- package/build/component/generator/officeAddin/metaOSHelper.d.ts.map +1 -1
- package/build/component/generator/officeAddin/metaOSHelper.js +13 -6
- package/build/component/generator/officeAddin/metaOSHelper.js.map +1 -1
- package/build/component/generator/openApiSpec/common.d.ts.map +1 -1
- package/build/component/generator/openApiSpec/common.js +11 -22
- package/build/component/generator/openApiSpec/common.js.map +1 -1
- package/build/component/generator/openApiSpec/kiota.d.ts +0 -6
- package/build/component/generator/openApiSpec/kiota.d.ts.map +1 -1
- package/build/component/generator/openApiSpec/kiota.js +2 -17
- package/build/component/generator/openApiSpec/kiota.js.map +1 -1
- package/build/component/generator/templates/metadata/index.d.ts.map +1 -1
- package/build/component/generator/templates/metadata/index.js +21 -25
- package/build/component/generator/templates/metadata/index.js.map +1 -1
- package/build/component/generator/templates/templateInfo.d.ts +1 -1
- package/build/component/generator/templates/templateInfo.d.ts.map +1 -1
- package/build/component/generator/templates/templateNames.d.ts +1 -0
- package/build/component/generator/templates/templateNames.d.ts.map +1 -1
- package/build/component/generator/templates/templateNames.js +1 -0
- package/build/component/generator/templates/templateNames.js.map +1 -1
- package/build/component/generator/templates/templateReplaceMap.d.ts.map +1 -1
- package/build/component/generator/templates/templateReplaceMap.js +2 -12
- package/build/component/generator/templates/templateReplaceMap.js.map +1 -1
- package/build/component/generator/utils.d.ts +3 -2
- package/build/component/generator/utils.d.ts.map +1 -1
- package/build/component/generator/utils.js.map +1 -1
- package/build/component/m365/packageService.d.ts.map +1 -1
- package/build/component/m365/packageService.js +16 -20
- package/build/component/m365/packageService.js.map +1 -1
- package/build/component/middleware/envMW.d.ts.map +1 -1
- package/build/component/middleware/envMW.js +7 -0
- package/build/component/middleware/envMW.js.map +1 -1
- package/build/component/utils/envUtil.d.ts +1 -0
- package/build/component/utils/envUtil.d.ts.map +1 -1
- package/build/component/utils/odrProvider.d.ts +49 -0
- package/build/component/utils/odrProvider.d.ts.map +1 -0
- package/build/component/utils/odrProvider.js +100 -0
- package/build/component/utils/odrProvider.js.map +1 -0
- package/build/component/utils/pathUtils.d.ts +2 -1
- package/build/component/utils/pathUtils.d.ts.map +1 -1
- package/build/component/utils/pathUtils.js +19 -3
- package/build/component/utils/pathUtils.js.map +1 -1
- package/build/component/utils/settingsUtil.d.ts +1 -1
- package/build/component/utils/settingsUtil.d.ts.map +1 -1
- package/build/component/utils/settingsUtil.js +20 -7
- package/build/component/utils/settingsUtil.js.map +1 -1
- package/build/core/FxCore.d.ts +10 -3
- package/build/core/FxCore.d.ts.map +1 -1
- package/build/core/FxCore.declarativeAgent.d.ts +6 -0
- package/build/core/FxCore.declarativeAgent.d.ts.map +1 -0
- package/build/core/FxCore.declarativeAgent.js +210 -0
- package/build/core/FxCore.declarativeAgent.js.map +1 -0
- package/build/core/FxCore.js +99 -208
- package/build/core/FxCore.js.map +1 -1
- package/build/core/generateConfigFiles.d.ts +4 -0
- package/build/core/generateConfigFiles.d.ts.map +1 -0
- package/build/core/generateConfigFiles.js +61 -0
- package/build/core/generateConfigFiles.js.map +1 -0
- package/build/core/middleware/projectSettingsLoader.d.ts.map +1 -1
- package/build/core/middleware/projectSettingsLoader.js +8 -2
- package/build/core/middleware/projectSettingsLoader.js.map +1 -1
- package/build/index.d.ts +2 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +5 -5
- package/build/index.js.map +1 -1
- package/build/question/collaborator.d.ts.map +1 -1
- package/build/question/collaborator.js +5 -8
- package/build/question/collaborator.js.map +1 -1
- package/build/question/constants.d.ts.map +1 -1
- package/build/question/constants.js +1 -3
- package/build/question/constants.js.map +1 -1
- package/build/question/inputs/CreateProjectInputs.d.ts +1 -15
- package/build/question/inputs/CreateProjectInputs.d.ts.map +1 -1
- package/build/question/options/CreateProjectOptions.d.ts +1 -1
- package/build/question/options/CreateProjectOptions.d.ts.map +1 -1
- package/build/question/options/CreateProjectOptions.js +0 -56
- package/build/question/options/CreateProjectOptions.js.map +1 -1
- package/build/question/other.d.ts.map +1 -1
- package/build/question/other.js +7 -8
- package/build/question/other.js.map +1 -1
- package/build/question/questionNames.d.ts +3 -0
- package/build/question/questionNames.d.ts.map +1 -1
- package/build/question/questionNames.js +3 -0
- package/build/question/questionNames.js.map +1 -1
- package/build/question/scaffold/commonNodes.d.ts +7 -0
- package/build/question/scaffold/commonNodes.d.ts.map +1 -0
- package/build/question/scaffold/commonNodes.js +154 -0
- package/build/question/scaffold/commonNodes.js.map +1 -0
- package/build/question/scaffold/constructNode.d.ts +3 -0
- package/build/question/scaffold/constructNode.d.ts.map +1 -0
- package/build/question/scaffold/constructNode.js +50 -0
- package/build/question/scaffold/constructNode.js.map +1 -0
- package/build/question/scaffold/vs/createRootNode.d.ts +1 -0
- package/build/question/scaffold/vs/createRootNode.d.ts.map +1 -1
- package/build/question/scaffold/vs/createRootNode.js +14 -16
- package/build/question/scaffold/vs/createRootNode.js.map +1 -1
- package/build/question/scaffold/vsc/ProjectTypeOptions.d.ts +0 -1
- package/build/question/scaffold/vsc/ProjectTypeOptions.d.ts.map +1 -1
- package/build/question/scaffold/vsc/ProjectTypeOptions.js +1 -14
- package/build/question/scaffold/vsc/ProjectTypeOptions.js.map +1 -1
- package/build/question/scaffold/vsc/createFromTdpNode.js +1 -1
- package/build/question/scaffold/vsc/createFromTdpNode.js.map +1 -1
- package/build/question/scaffold/vsc/createRootNode.d.ts +0 -7
- package/build/question/scaffold/vsc/createRootNode.d.ts.map +1 -1
- package/build/question/scaffold/vsc/createRootNode.js +4 -77
- package/build/question/scaffold/vsc/createRootNode.js.map +1 -1
- package/build/question/scaffold/vsc/customEngineAgentNode.d.ts +1 -1
- package/build/question/scaffold/vsc/customEngineAgentNode.d.ts.map +1 -1
- package/build/question/scaffold/vsc/customEngineAgentNode.js +22 -24
- package/build/question/scaffold/vsc/customEngineAgentNode.js.map +1 -1
- package/build/question/scaffold/vsc/daProjectTypeNode.d.ts.map +1 -1
- package/build/question/scaffold/vsc/daProjectTypeNode.js +4 -4
- package/build/question/scaffold/vsc/daProjectTypeNode.js.map +1 -1
- package/build/question/scaffold/vsc/officeAddinProjectTypeNode.d.ts +0 -1
- package/build/question/scaffold/vsc/officeAddinProjectTypeNode.d.ts.map +1 -1
- package/build/question/scaffold/vsc/officeAddinProjectTypeNode.js +2 -51
- package/build/question/scaffold/vsc/officeAddinProjectTypeNode.js.map +1 -1
- package/build/question/scaffold/vsc/teamsProjectTypeNode.d.ts +4 -7
- package/build/question/scaffold/vsc/teamsProjectTypeNode.d.ts.map +1 -1
- package/build/question/scaffold/vsc/teamsProjectTypeNode.js +96 -202
- package/build/question/scaffold/vsc/teamsProjectTypeNode.js.map +1 -1
- package/build/ui/visitor.d.ts.map +1 -1
- package/build/ui/visitor.js +5 -0
- package/build/ui/visitor.js.map +1 -1
- package/package.json +6 -6
- package/resource/package.nls.cs.json +116 -84
- package/resource/package.nls.de.json +126 -94
- package/resource/package.nls.es.json +126 -94
- package/resource/package.nls.fr.json +114 -82
- package/resource/package.nls.it.json +127 -95
- package/resource/package.nls.ja.json +115 -83
- package/resource/package.nls.json +16 -27
- package/resource/package.nls.ko.json +123 -91
- package/resource/package.nls.pl.json +125 -93
- package/resource/package.nls.pt-BR.json +122 -90
- package/resource/package.nls.ru.json +116 -84
- package/resource/package.nls.tr.json +113 -81
- package/resource/package.nls.zh-Hans.json +114 -82
- package/resource/package.nls.zh-Hant.json +120 -88
- package/resource/templates/package.nls.cs.json +33 -0
- package/resource/templates/package.nls.de.json +33 -0
- package/resource/templates/package.nls.es.json +33 -0
- package/resource/templates/package.nls.fr.json +33 -0
- package/resource/templates/package.nls.it.json +33 -0
- package/resource/templates/package.nls.ja.json +33 -0
- package/resource/templates/package.nls.json +33 -0
- package/resource/templates/package.nls.ko.json +33 -0
- package/resource/templates/package.nls.pl.json +33 -0
- package/resource/templates/package.nls.pt-BR.json +33 -0
- package/resource/templates/package.nls.ru.json +33 -0
- package/resource/templates/package.nls.tr.json +33 -0
- package/resource/templates/package.nls.zh-Hans.json +33 -0
- package/resource/templates/package.nls.zh-Hant.json +33 -0
- package/resource/templates/package.nls.zh-cn.json +21 -0
- package/resource/templates/package.nls.zh-tw.json +21 -0
- package/templates/configs/local/python/.vscode/launch.json.tpl +93 -0
- package/templates/configs/local/python/.vscode/tasks.json.tpl +103 -0
- package/templates/configs/local/python/env/.env.local +6 -0
- package/templates/configs/local/python/m365agents.local.yml.tpl +121 -0
- package/templates/configs/local/typescript/.gitignore +1 -0
- package/templates/configs/local/typescript/.vscode/launch.json.tpl +147 -0
- package/templates/configs/local/typescript/.vscode/tasks.json.tpl +129 -0
- package/templates/configs/local/typescript/env/.env.local +6 -0
- package/templates/configs/local/typescript/m365agents.local.yml.tpl +129 -0
- package/templates/configs/local/typescript/package.json +8 -0
- package/templates/configs/playground/python/.vscode/launch.json +46 -0
- package/templates/configs/playground/python/.vscode/tasks.json +35 -0
- package/templates/configs/playground/python/env/.env.playground +7 -0
- package/templates/configs/playground/python/m365agents.playground.yml +14 -0
- package/templates/configs/playground/typescript/.gitignore +4 -0
- package/templates/configs/playground/typescript/.localConfigs.playground +0 -0
- package/templates/configs/playground/typescript/.vscode/launch.json +31 -0
- package/templates/configs/playground/typescript/.vscode/tasks.json +104 -0
- package/templates/configs/playground/typescript/env/.env.playground +7 -0
- package/templates/configs/playground/typescript/env/.env.playground.user +0 -0
- package/templates/configs/playground/typescript/m365agents.playground.yml +23 -0
- package/templates/configs/playground/typescript/package.json +9 -0
- package/templates/fallback/common.zip +0 -0
- package/templates/fallback/csharp.zip +0 -0
- package/templates/fallback/js.zip +0 -0
- package/templates/fallback/python.zip +0 -0
- package/templates/fallback/ts.zip +0 -0
- package/templates/metadata/allTemplates.json +429 -0
- package/templates/metadata/defaultGeneratorTemplates.json +233 -0
- package/templates/metadata.zip +0 -0
- package/templates/ui/ceaNode.json +30 -0
- package/templates/ui/teamsNode.json +124 -0
- package/build/component/generator/templates/metadata/agentForTeams.d.ts +0 -3
- package/build/component/generator/templates/metadata/agentForTeams.d.ts.map +0 -1
- package/build/component/generator/templates/metadata/agentForTeams.js +0 -147
- package/build/component/generator/templates/metadata/agentForTeams.js.map +0 -1
- package/build/component/generator/templates/metadata/bot.d.ts +0 -3
- package/build/component/generator/templates/metadata/bot.d.ts.map +0 -1
- package/build/component/generator/templates/metadata/bot.js +0 -142
- package/build/component/generator/templates/metadata/bot.js.map +0 -1
- package/build/component/generator/templates/metadata/customEngineAgent.d.ts +0 -3
- package/build/component/generator/templates/metadata/customEngineAgent.d.ts.map +0 -1
- package/build/component/generator/templates/metadata/customEngineAgent.js +0 -39
- package/build/component/generator/templates/metadata/customEngineAgent.js.map +0 -1
- package/build/component/generator/templates/metadata/da.d.ts +0 -3
- package/build/component/generator/templates/metadata/da.d.ts.map +0 -1
- package/build/component/generator/templates/metadata/da.js +0 -117
- package/build/component/generator/templates/metadata/da.js.map +0 -1
- package/build/component/generator/templates/metadata/graphConnector.d.ts +0 -3
- package/build/component/generator/templates/metadata/graphConnector.d.ts.map +0 -1
- package/build/component/generator/templates/metadata/graphConnector.js +0 -15
- package/build/component/generator/templates/metadata/graphConnector.js.map +0 -1
- package/build/component/generator/templates/metadata/me.d.ts +0 -3
- package/build/component/generator/templates/metadata/me.d.ts.map +0 -1
- package/build/component/generator/templates/metadata/me.js +0 -111
- package/build/component/generator/templates/metadata/me.js.map +0 -1
- package/build/component/generator/templates/metadata/special.d.ts +0 -3
- package/build/component/generator/templates/metadata/special.d.ts.map +0 -1
- package/build/component/generator/templates/metadata/special.js +0 -70
- package/build/component/generator/templates/metadata/special.js.map +0 -1
- package/build/component/generator/templates/metadata/tab.d.ts +0 -3
- package/build/component/generator/templates/metadata/tab.d.ts.map +0 -1
- package/build/component/generator/templates/metadata/tab.js +0 -59
- package/build/component/generator/templates/metadata/tab.js.map +0 -1
- package/build/component/generator/templates/metadata/teams.d.ts +0 -3
- package/build/component/generator/templates/metadata/teams.d.ts.map +0 -1
- package/build/component/generator/templates/metadata/teams.js +0 -238
- package/build/component/generator/templates/metadata/teams.js.map +0 -1
- package/build/component/generator/templates/metadata/vs.d.ts +0 -3
- package/build/component/generator/templates/metadata/vs.d.ts.map +0 -1
- package/build/component/generator/templates/metadata/vs.js +0 -22
- package/build/component/generator/templates/metadata/vs.js.map +0 -1
- package/build/component/generator/templates/metadata/wxp.d.ts +0 -3
- package/build/component/generator/templates/metadata/wxp.d.ts.map +0 -1
- package/build/component/generator/templates/metadata/wxp.js +0 -33
- package/build/component/generator/templates/metadata/wxp.js.map +0 -1
- 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
|
|
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:
|
|
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":";AAAA,uCAAuC;AACvC,kCAAkC;;;;AAElC,kEAA4C;AAC5C,qDAA+B;AAE/B;;;;;;;;GAQG;AACI,KAAK,UAAU,aAAa,CAAC,UAAkB,EAAE,UAAkB;IACxE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAAE,OAAO,CAAC,mBAAmB;IACnE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE;QACtC,iDAAiD;QACjD,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACtC,OAAO;KACR;IAED,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAExD,gFAAgF;IAChF,gEAAgE;IAChE,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAE5C,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE1C,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IAC7D,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AACjD,CAAC;AApBD,sCAoBC;AAED,SAAS,aAAa,CAAC,GAAY;IACjC,OAAO,CAAC,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,aAAa,CAAC,GAAc,EAAE,EAAW;IAChD,sCAAsC;IACtC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,IAAI,EAAE;QACzC,OAAO,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;KACzB;IACD,8CAA8C;IAC9C,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,UAAU,CACjB,MAAoC,EACpC,MAAoC;IAEpC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAClD,gEAAgE;QAChE,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE;YACvB,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;gBAC7B,MAAiE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC7E;SACF;QACD,OAAO,MAAM,CAAC;KACf;IACD,IAAI,aAAa,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE;QAClD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACrC,MAAM,IAAI,GAAI,MAAuD,CAAC,GAAG,CAAC,CAAC;YAC3E,IAAI,CAAC,CAAC,GAAG,IAAK,MAAuD,CAAC,EAAE;gBACrE,MAAuD,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;aACtE;iBAAM;gBACL,MAAM,IAAI,GAAI,MAAuD,CAAC,GAAG,CAAC,CAAC;gBAC3E,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBAC9C,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE;wBACrB,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE;4BAC3B,IAA+D,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;yBAC3E;qBACF;iBACF;qBAAM,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE;oBACrD,UAAU,CACR,IAA+C,EAC/C,IAA+C,CAChD,CAAC;iBACH,CAAC,kDAAkD;aACrD;SACF;QACD,OAAO,MAAM,CAAC;KACf;IACD,+EAA+E;IAC/E,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -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
|