@microsoft/teamsfx-core 3.0.13 → 3.0.14-alpha.0890e15c35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/client/teamsDevPortalClient.d.ts +7 -2
- package/build/client/teamsDevPortalClient.d.ts.map +1 -1
- package/build/client/teamsDevPortalClient.js +63 -59
- package/build/client/teamsDevPortalClient.js.map +1 -1
- package/build/client/teamsGraphClient.d.ts +6 -3
- package/build/client/teamsGraphClient.d.ts.map +1 -1
- package/build/client/teamsGraphClient.js +20 -3
- package/build/client/teamsGraphClient.js.map +1 -1
- package/build/common/daSpecParser.d.ts +16 -1
- package/build/common/daSpecParser.d.ts.map +1 -1
- package/build/common/daSpecParser.js +34 -21
- package/build/common/daSpecParser.js.map +1 -1
- package/build/common/featureFlags.d.ts +22 -2
- package/build/common/featureFlags.d.ts.map +1 -1
- package/build/common/featureFlags.js +31 -3
- package/build/common/featureFlags.js.map +1 -1
- package/build/common/fetchHelper.d.ts.map +1 -1
- package/build/common/fetchHelper.js +41 -3
- package/build/common/fetchHelper.js.map +1 -1
- package/build/common/kiotaClient.d.ts +3 -3
- package/build/common/kiotaClient.d.ts.map +1 -1
- package/build/common/kiotaClient.js +10 -10
- package/build/common/kiotaClient.js.map +1 -1
- package/build/common/projectSettingsHelper.d.ts +0 -2
- package/build/common/projectSettingsHelper.d.ts.map +1 -1
- package/build/common/projectSettingsHelper.js +1 -56
- package/build/common/projectSettingsHelper.js.map +1 -1
- package/build/common/telemetry.d.ts +4 -15
- package/build/common/telemetry.d.ts.map +1 -1
- package/build/common/telemetry.js +7 -20
- package/build/common/telemetry.js.map +1 -1
- package/build/common/templates-config.json +9 -2
- package/build/common/tools.d.ts +6 -1
- package/build/common/tools.d.ts.map +1 -1
- package/build/common/tools.js +13 -8
- package/build/common/tools.js.map +1 -1
- package/build/common/wrappedAxiosClient.d.ts +1 -1
- package/build/common/wrappedAxiosClient.d.ts.map +1 -1
- package/build/common/wrappedAxiosClient.js +12 -13
- package/build/common/wrappedAxiosClient.js.map +1 -1
- package/build/component/configManager/actionInjector.d.ts +16 -1
- package/build/component/configManager/actionInjector.d.ts.map +1 -1
- package/build/component/configManager/actionInjector.js +106 -1
- package/build/component/configManager/actionInjector.js.map +1 -1
- package/build/component/configManager/validator.d.ts.map +1 -1
- package/build/component/configManager/validator.js +2 -0
- package/build/component/configManager/validator.js.map +1 -1
- package/build/component/coordinator/index.d.ts +4 -0
- package/build/component/coordinator/index.d.ts.map +1 -1
- package/build/component/coordinator/index.js +10 -3
- package/build/component/coordinator/index.js.map +1 -1
- package/build/component/deps-checker/internal/funcToolChecker.d.ts +6 -0
- package/build/component/deps-checker/internal/funcToolChecker.d.ts.map +1 -1
- package/build/component/deps-checker/internal/funcToolChecker.js +15 -12
- package/build/component/deps-checker/internal/funcToolChecker.js.map +1 -1
- package/build/component/deps-checker/internal/nodeChecker.js +1 -1
- package/build/component/deps-checker/internal/nodeChecker.js.map +1 -1
- package/build/component/deps-checker/internal/testToolChecker.d.ts +12 -0
- package/build/component/deps-checker/internal/testToolChecker.d.ts.map +1 -1
- package/build/component/deps-checker/internal/testToolChecker.js +23 -14
- package/build/component/deps-checker/internal/testToolChecker.js.map +1 -1
- package/build/component/developerPortalScaffoldUtils.d.ts +11 -1
- package/build/component/developerPortalScaffoldUtils.d.ts.map +1 -1
- package/build/component/developerPortalScaffoldUtils.js +21 -12
- package/build/component/developerPortalScaffoldUtils.js.map +1 -1
- package/build/component/driver/aad/utility/aadManifestHelper.d.ts +1 -1
- package/build/component/driver/aad/utility/aadManifestHelper.d.ts.map +1 -1
- package/build/component/driver/aad/utility/aadManifestHelper.js +7 -4
- package/build/component/driver/aad/utility/aadManifestHelper.js.map +1 -1
- package/build/component/driver/add/addWebPart.d.ts +9 -0
- package/build/component/driver/add/addWebPart.d.ts.map +1 -1
- package/build/component/driver/add/addWebPart.js +13 -7
- package/build/component/driver/add/addWebPart.js.map +1 -1
- package/build/component/driver/arm/util/handleError.d.ts +5 -0
- package/build/component/driver/arm/util/handleError.d.ts.map +1 -1
- package/build/component/driver/arm/util/handleError.js +10 -5
- package/build/component/driver/arm/util/handleError.js.map +1 -1
- package/build/component/driver/copilotAgent/interfaces/PublishArgs.d.ts +14 -0
- package/build/component/driver/copilotAgent/interfaces/PublishArgs.d.ts.map +1 -0
- package/build/component/driver/copilotAgent/interfaces/PublishArgs.js +5 -0
- package/build/component/driver/copilotAgent/interfaces/PublishArgs.js.map +1 -0
- package/build/component/driver/copilotAgent/publish.d.ts +16 -0
- package/build/component/driver/copilotAgent/publish.d.ts.map +1 -0
- package/build/component/driver/copilotAgent/publish.js +175 -0
- package/build/component/driver/copilotAgent/publish.js.map +1 -0
- package/build/component/driver/dcr/create.d.ts +10 -0
- package/build/component/driver/dcr/create.d.ts.map +1 -0
- package/build/component/driver/dcr/create.js +142 -0
- package/build/component/driver/dcr/create.js.map +1 -0
- package/build/component/driver/dcr/error/dcrNameTooLong.d.ts +5 -0
- package/build/component/driver/dcr/error/dcrNameTooLong.d.ts.map +1 -0
- package/build/component/driver/dcr/error/dcrNameTooLong.js +21 -0
- package/build/component/driver/dcr/error/dcrNameTooLong.js.map +1 -0
- package/build/component/driver/dcr/error/dcrWellKnownInvalid.d.ts +5 -0
- package/build/component/driver/dcr/error/dcrWellKnownInvalid.d.ts.map +1 -0
- package/build/component/driver/dcr/error/dcrWellKnownInvalid.js +21 -0
- package/build/component/driver/dcr/error/dcrWellKnownInvalid.js.map +1 -0
- package/build/component/driver/dcr/interface/createDcrArgs.d.ts +9 -0
- package/build/component/driver/dcr/interface/createDcrArgs.d.ts.map +1 -0
- package/build/component/driver/dcr/interface/createDcrArgs.js +5 -0
- package/build/component/driver/dcr/interface/createDcrArgs.js.map +1 -0
- package/build/component/driver/dcr/interface/createDcrOutputs.d.ts +7 -0
- package/build/component/driver/dcr/interface/createDcrOutputs.d.ts.map +1 -0
- package/build/component/driver/dcr/interface/createDcrOutputs.js +10 -0
- package/build/component/driver/dcr/interface/createDcrOutputs.js.map +1 -0
- package/build/component/driver/dcr/utility/constants.d.ts +7 -0
- package/build/component/driver/dcr/utility/constants.d.ts.map +1 -0
- package/build/component/driver/dcr/utility/constants.js +12 -0
- package/build/component/driver/dcr/utility/constants.js.map +1 -0
- package/build/component/driver/deploy/azure/azureStaticWebAppGetDeploymentTokenDriver.d.ts +8 -1
- package/build/component/driver/deploy/azure/azureStaticWebAppGetDeploymentTokenDriver.d.ts.map +1 -1
- package/build/component/driver/deploy/azure/azureStaticWebAppGetDeploymentTokenDriver.js +15 -10
- package/build/component/driver/deploy/azure/azureStaticWebAppGetDeploymentTokenDriver.js.map +1 -1
- package/build/component/driver/devTool/httpClient.d.ts +4 -0
- package/build/component/driver/devTool/httpClient.d.ts.map +1 -1
- package/build/component/driver/devTool/httpClient.js +6 -3
- package/build/component/driver/devTool/httpClient.js.map +1 -1
- package/build/component/driver/index.d.ts +2 -0
- package/build/component/driver/index.d.ts.map +1 -1
- package/build/component/driver/index.js +2 -0
- package/build/component/driver/index.js.map +1 -1
- package/build/component/driver/m365/acquire.d.ts +13 -1
- package/build/component/driver/m365/acquire.d.ts.map +1 -1
- package/build/component/driver/m365/acquire.js +16 -8
- package/build/component/driver/m365/acquire.js.map +1 -1
- package/build/component/driver/oauth/update.d.ts +6 -0
- package/build/component/driver/oauth/update.d.ts.map +1 -1
- package/build/component/driver/oauth/update.js +8 -4
- package/build/component/driver/oauth/update.js.map +1 -1
- package/build/component/driver/script/scriptDriver.d.ts +6 -0
- package/build/component/driver/script/scriptDriver.d.ts.map +1 -1
- package/build/component/driver/script/scriptDriver.js +9 -4
- 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 +9 -7
- package/build/component/driver/share/utils.js.map +1 -1
- package/build/component/driver/teamsApp/constants.d.ts +4 -3
- package/build/component/driver/teamsApp/constants.d.ts.map +1 -1
- package/build/component/driver/teamsApp/constants.js +4 -3
- package/build/component/driver/teamsApp/constants.js.map +1 -1
- package/build/component/driver/teamsApp/createAppPackage.d.ts +8 -0
- package/build/component/driver/teamsApp/createAppPackage.d.ts.map +1 -1
- package/build/component/driver/teamsApp/createAppPackage.js +113 -13
- package/build/component/driver/teamsApp/createAppPackage.js.map +1 -1
- package/build/component/driver/teamsApp/interfaces/DcrRegistration.d.ts +10 -0
- package/build/component/driver/teamsApp/interfaces/DcrRegistration.d.ts.map +1 -0
- package/build/component/driver/teamsApp/interfaces/DcrRegistration.js +5 -0
- package/build/component/driver/teamsApp/interfaces/DcrRegistration.js.map +1 -0
- package/build/component/driver/teamsApp/interfaces/ValidationResult.d.ts +6 -0
- package/build/component/driver/teamsApp/interfaces/ValidationResult.d.ts.map +1 -1
- package/build/component/driver/teamsApp/publishAppPackage.d.ts +4 -2
- package/build/component/driver/teamsApp/publishAppPackage.d.ts.map +1 -1
- package/build/component/driver/teamsApp/publishAppPackage.js +9 -55
- package/build/component/driver/teamsApp/publishAppPackage.js.map +1 -1
- package/build/component/driver/teamsApp/syncManifest.d.ts +16 -3
- package/build/component/driver/teamsApp/syncManifest.d.ts.map +1 -1
- package/build/component/driver/teamsApp/syncManifest.js +28 -18
- package/build/component/driver/teamsApp/syncManifest.js.map +1 -1
- package/build/component/driver/teamsApp/teamsappMgr.d.ts +4 -0
- package/build/component/driver/teamsApp/teamsappMgr.d.ts.map +1 -1
- package/build/component/driver/teamsApp/teamsappMgr.js +6 -3
- package/build/component/driver/teamsApp/teamsappMgr.js.map +1 -1
- package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.d.ts +2 -0
- package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.d.ts.map +1 -1
- package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.js +113 -1
- package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.js.map +1 -1
- package/build/component/driver/teamsApp/utils/ManifestUtils.d.ts +5 -1
- package/build/component/driver/teamsApp/utils/ManifestUtils.d.ts.map +1 -1
- package/build/component/driver/teamsApp/utils/ManifestUtils.js +14 -3
- package/build/component/driver/teamsApp/utils/ManifestUtils.js.map +1 -1
- package/build/component/driver/teamsApp/utils/McpCertVerification.d.ts +17 -0
- package/build/component/driver/teamsApp/utils/McpCertVerification.d.ts.map +1 -0
- package/build/component/driver/teamsApp/utils/McpCertVerification.js +72 -0
- package/build/component/driver/teamsApp/utils/McpCertVerification.js.map +1 -0
- package/build/component/driver/teamsApp/utils/telemetry.d.ts +1 -0
- package/build/component/driver/teamsApp/utils/telemetry.d.ts.map +1 -1
- package/build/component/driver/teamsApp/utils/telemetry.js +1 -0
- package/build/component/driver/teamsApp/utils/telemetry.js.map +1 -1
- package/build/component/driver/teamsApp/validate.d.ts.map +1 -1
- package/build/component/driver/teamsApp/validate.js +12 -2
- package/build/component/driver/teamsApp/validate.js.map +1 -1
- package/build/component/driver/teamsApp/validateTestCases.d.ts +12 -0
- package/build/component/driver/teamsApp/validateTestCases.d.ts.map +1 -1
- package/build/component/driver/teamsApp/validateTestCases.js +17 -8
- package/build/component/driver/teamsApp/validateTestCases.js.map +1 -1
- package/build/component/driver/typeSpec/compile.d.ts +9 -0
- package/build/component/driver/typeSpec/compile.d.ts.map +1 -1
- package/build/component/driver/typeSpec/compile.js +16 -10
- package/build/component/driver/typeSpec/compile.js.map +1 -1
- package/build/component/generator/declarativeAgent/generator.d.ts +8 -0
- package/build/component/generator/declarativeAgent/generator.d.ts.map +1 -1
- package/build/component/generator/declarativeAgent/generator.js +16 -10
- package/build/component/generator/declarativeAgent/generator.js.map +1 -1
- package/build/component/generator/declarativeAgent/helper.d.ts +31 -0
- package/build/component/generator/declarativeAgent/helper.d.ts.map +1 -1
- package/build/component/generator/declarativeAgent/helper.js +237 -34
- package/build/component/generator/declarativeAgent/helper.js.map +1 -1
- package/build/component/generator/defaultGenerator.d.ts.map +1 -1
- package/build/component/generator/defaultGenerator.js +14 -1
- package/build/component/generator/defaultGenerator.js.map +1 -1
- package/build/component/generator/error.d.ts +3 -0
- package/build/component/generator/error.d.ts.map +1 -1
- package/build/component/generator/error.js +7 -1
- package/build/component/generator/error.js.map +1 -1
- package/build/component/generator/generatorAction.d.ts +9 -0
- package/build/component/generator/generatorAction.d.ts.map +1 -1
- package/build/component/generator/generatorAction.js +16 -8
- package/build/component/generator/generatorAction.js.map +1 -1
- package/build/component/generator/officeAddin/generator.d.ts +12 -0
- package/build/component/generator/officeAddin/generator.d.ts.map +1 -1
- package/build/component/generator/officeAddin/generator.js +53 -3
- package/build/component/generator/officeAddin/generator.js.map +1 -1
- package/build/component/generator/officeAddin/helperMethods.d.ts +4 -0
- package/build/component/generator/officeAddin/helperMethods.d.ts.map +1 -1
- package/build/component/generator/officeAddin/helperMethods.js +6 -3
- package/build/component/generator/officeAddin/helperMethods.js.map +1 -1
- package/build/component/generator/openApiSpec/customEngineAgentGenerator.d.ts +9 -0
- package/build/component/generator/openApiSpec/customEngineAgentGenerator.d.ts.map +1 -1
- package/build/component/generator/openApiSpec/customEngineAgentGenerator.js +11 -5
- package/build/component/generator/openApiSpec/customEngineAgentGenerator.js.map +1 -1
- package/build/component/generator/openPlugin/authorParser.d.ts +8 -0
- package/build/component/generator/openPlugin/authorParser.d.ts.map +1 -0
- package/build/component/generator/openPlugin/authorParser.js +49 -0
- package/build/component/generator/openPlugin/authorParser.js.map +1 -0
- package/build/component/generator/openPlugin/deterministicId.d.ts +6 -0
- package/build/component/generator/openPlugin/deterministicId.d.ts.map +1 -0
- package/build/component/generator/openPlugin/deterministicId.js +31 -0
- package/build/component/generator/openPlugin/deterministicId.js.map +1 -0
- package/build/component/generator/openPlugin/exporter.d.ts +18 -0
- package/build/component/generator/openPlugin/exporter.d.ts.map +1 -0
- package/build/component/generator/openPlugin/exporter.js +233 -0
- package/build/component/generator/openPlugin/exporter.js.map +1 -0
- package/build/component/generator/openPlugin/iconStrategy.d.ts +8 -0
- package/build/component/generator/openPlugin/iconStrategy.d.ts.map +1 -0
- package/build/component/generator/openPlugin/iconStrategy.js +62 -0
- package/build/component/generator/openPlugin/iconStrategy.js.map +1 -0
- package/build/component/generator/openPlugin/importer.d.ts +25 -0
- package/build/component/generator/openPlugin/importer.d.ts.map +1 -0
- package/build/component/generator/openPlugin/importer.js +140 -0
- package/build/component/generator/openPlugin/importer.js.map +1 -0
- package/build/component/generator/openPlugin/mapper.d.ts +6 -0
- package/build/component/generator/openPlugin/mapper.d.ts.map +1 -0
- package/build/component/generator/openPlugin/mapper.js +141 -0
- package/build/component/generator/openPlugin/mapper.js.map +1 -0
- package/build/component/generator/openPlugin/parser.d.ts +3 -0
- package/build/component/generator/openPlugin/parser.d.ts.map +1 -0
- package/build/component/generator/openPlugin/parser.js +153 -0
- package/build/component/generator/openPlugin/parser.js.map +1 -0
- package/build/component/generator/openPlugin/placeholderPng.d.ts +6 -0
- package/build/component/generator/openPlugin/placeholderPng.d.ts.map +1 -0
- package/build/component/generator/openPlugin/placeholderPng.js +71 -0
- package/build/component/generator/openPlugin/placeholderPng.js.map +1 -0
- package/build/component/generator/openPlugin/textUtils.d.ts +12 -0
- package/build/component/generator/openPlugin/textUtils.d.ts.map +1 -0
- package/build/component/generator/openPlugin/textUtils.js +43 -0
- package/build/component/generator/openPlugin/textUtils.js.map +1 -0
- package/build/component/generator/openPlugin/types.d.ts +128 -0
- package/build/component/generator/openPlugin/types.d.ts.map +1 -0
- package/build/component/generator/openPlugin/types.js.map +1 -0
- package/build/component/generator/spfx/utils/constants.d.ts +1 -1
- package/build/component/generator/spfx/utils/constants.js +1 -1
- package/build/component/generator/templateHelper.d.ts +15 -0
- package/build/component/generator/templateHelper.d.ts.map +1 -1
- package/build/component/generator/templateHelper.js +28 -0
- package/build/component/generator/templateHelper.js.map +1 -1
- package/build/component/generator/templates/metadata/index.d.ts.map +1 -1
- package/build/component/generator/templates/metadata/index.js +12 -5
- package/build/component/generator/templates/metadata/index.js.map +1 -1
- package/build/component/generator/templates/templateNames.d.ts +4 -1
- package/build/component/generator/templates/templateNames.d.ts.map +1 -1
- package/build/component/generator/templates/templateNames.js +5 -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 +4 -1
- package/build/component/generator/templates/templateReplaceMap.js.map +1 -1
- package/build/component/generator/utils.js +8 -8
- package/build/component/generator/utils.js.map +1 -1
- package/build/component/generator/v4MetadataSource.d.ts +23 -0
- package/build/component/generator/v4MetadataSource.d.ts.map +1 -0
- package/build/component/generator/v4MetadataSource.js +42 -0
- package/build/component/generator/v4MetadataSource.js.map +1 -0
- package/build/component/generator/v4TemplateBridge.d.ts +40 -0
- package/build/component/generator/v4TemplateBridge.d.ts.map +1 -0
- package/build/component/generator/v4TemplateBridge.js +125 -0
- package/build/component/generator/v4TemplateBridge.js.map +1 -0
- package/build/component/local/localCertificateManager.d.ts +17 -1
- package/build/component/local/localCertificateManager.d.ts.map +1 -1
- package/build/component/local/localCertificateManager.js +48 -31
- package/build/component/local/localCertificateManager.js.map +1 -1
- package/build/component/m365/packageService.d.ts +10 -0
- package/build/component/m365/packageService.d.ts.map +1 -1
- package/build/component/m365/packageService.js +55 -13
- 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 +5 -0
- package/build/component/middleware/envMW.js.map +1 -1
- package/build/component/utils/ResourceGroupHelper.d.ts +4 -0
- package/build/component/utils/ResourceGroupHelper.d.ts.map +1 -1
- package/build/component/utils/ResourceGroupHelper.js +7 -4
- package/build/component/utils/ResourceGroupHelper.js.map +1 -1
- package/build/component/utils/charsetUtils.js +3 -3
- package/build/component/utils/charsetUtils.js.map +1 -1
- package/build/component/utils/fileOperation.d.ts +10 -0
- package/build/component/utils/fileOperation.d.ts.map +1 -1
- package/build/component/utils/fileOperation.js +27 -17
- package/build/component/utils/fileOperation.js.map +1 -1
- package/build/component/utils/mcpAuthScaffolder.d.ts +106 -0
- package/build/component/utils/mcpAuthScaffolder.d.ts.map +1 -0
- package/build/component/utils/mcpAuthScaffolder.js +153 -0
- package/build/component/utils/mcpAuthScaffolder.js.map +1 -0
- package/build/component/utils/mcpToolFetcher.d.ts +12 -1
- package/build/component/utils/mcpToolFetcher.d.ts.map +1 -1
- package/build/component/utils/mcpToolFetcher.js +23 -3
- package/build/component/utils/mcpToolFetcher.js.map +1 -1
- package/build/component/utils/metadataGraphPermssion.d.ts +4 -0
- package/build/component/utils/metadataGraphPermssion.d.ts.map +1 -1
- package/build/component/utils/metadataGraphPermssion.js +7 -4
- package/build/component/utils/metadataGraphPermssion.js.map +1 -1
- package/build/component/utils/odrProvider.d.ts +6 -0
- package/build/component/utils/odrProvider.d.ts.map +1 -1
- package/build/component/utils/odrProvider.js +9 -4
- package/build/component/utils/odrProvider.js.map +1 -1
- package/build/core/FxCore.d.ts +46 -4
- package/build/core/FxCore.d.ts.map +1 -1
- package/build/core/FxCore.declarativeAgent.d.ts +9 -0
- package/build/core/FxCore.declarativeAgent.d.ts.map +1 -1
- package/build/core/FxCore.declarativeAgent.js +286 -174
- package/build/core/FxCore.declarativeAgent.js.map +1 -1
- package/build/core/FxCore.js +443 -140
- package/build/core/FxCore.js.map +1 -1
- package/build/core/FxCore.openPlugin.d.ts +29 -0
- package/build/core/FxCore.openPlugin.d.ts.map +1 -0
- package/build/core/FxCore.openPlugin.js +135 -0
- package/build/core/FxCore.openPlugin.js.map +1 -0
- package/build/core/collaborator.d.ts +4 -0
- package/build/core/collaborator.d.ts.map +1 -1
- package/build/core/collaborator.js +6 -3
- package/build/core/collaborator.js.map +1 -1
- package/build/core/middleware/concurrentLocker.d.ts +9 -0
- package/build/core/middleware/concurrentLocker.d.ts.map +1 -1
- package/build/core/middleware/concurrentLocker.js +14 -11
- package/build/core/middleware/concurrentLocker.js.map +1 -1
- package/build/core/middleware/errorHandler.d.ts.map +1 -1
- package/build/core/middleware/errorHandler.js +9 -0
- package/build/core/middleware/errorHandler.js.map +1 -1
- package/build/core/middleware/fileLocker.d.ts +6 -0
- package/build/core/middleware/fileLocker.d.ts.map +1 -1
- package/build/core/middleware/fileLocker.js +11 -6
- package/build/core/middleware/fileLocker.js.map +1 -1
- package/build/core/middleware/utils/v3MigrationUtils.d.ts +1 -34
- package/build/core/middleware/utils/v3MigrationUtils.d.ts.map +1 -1
- package/build/core/middleware/utils/v3MigrationUtils.js +6 -245
- package/build/core/middleware/utils/v3MigrationUtils.js.map +1 -1
- package/build/error/teamsApp.d.ts +3 -0
- package/build/error/teamsApp.d.ts.map +1 -1
- package/build/error/teamsApp.js +15 -1
- package/build/error/teamsApp.js.map +1 -1
- package/build/question/constants.d.ts.map +1 -1
- package/build/question/constants.js +1 -6
- package/build/question/constants.js.map +1 -1
- package/build/question/create.d.ts +8 -1
- package/build/question/create.d.ts.map +1 -1
- package/build/question/create.js +24 -15
- package/build/question/create.js.map +1 -1
- package/build/question/index.d.ts +1 -0
- package/build/question/index.d.ts.map +1 -1
- package/build/question/index.js +3 -0
- package/build/question/index.js.map +1 -1
- package/build/question/inputs/AddPluginInputs.d.ts +1 -1
- package/build/question/inputs/AddPluginInputs.d.ts.map +1 -1
- package/build/question/inputs/AddSkillInputs.d.ts +10 -0
- package/build/question/inputs/AddSkillInputs.d.ts.map +1 -0
- package/build/question/inputs/AddSkillInputs.js +5 -0
- package/build/question/inputs/AddSkillInputs.js.map +1 -0
- package/build/question/inputs/CreateProjectInputs.d.ts +7 -1
- package/build/question/inputs/CreateProjectInputs.d.ts.map +1 -1
- package/build/question/inputs/ExportOpenPluginInputs.d.ts +10 -0
- package/build/question/inputs/ExportOpenPluginInputs.d.ts.map +1 -0
- package/build/question/inputs/ExportOpenPluginInputs.js +5 -0
- package/build/question/inputs/ExportOpenPluginInputs.js.map +1 -0
- package/build/question/inputs/ImportOpenPluginInputs.d.ts +28 -0
- package/build/question/inputs/ImportOpenPluginInputs.d.ts.map +1 -0
- package/build/question/inputs/ImportOpenPluginInputs.js +5 -0
- package/build/question/inputs/ImportOpenPluginInputs.js.map +1 -0
- package/build/question/inputs/index.d.ts +3 -0
- package/build/question/inputs/index.d.ts.map +1 -1
- package/build/question/inputs/index.js +3 -0
- package/build/question/inputs/index.js.map +1 -1
- package/build/question/options/AddPluginOptions.js +1 -1
- package/build/question/options/AddPluginOptions.js.map +1 -1
- package/build/question/options/AddSkillOptions.d.ts +4 -0
- package/build/question/options/AddSkillOptions.d.ts.map +1 -0
- package/build/question/options/AddSkillOptions.js +47 -0
- package/build/question/options/AddSkillOptions.js.map +1 -0
- package/build/question/options/CreateProjectOptions.d.ts.map +1 -1
- package/build/question/options/CreateProjectOptions.js +17 -2
- package/build/question/options/CreateProjectOptions.js.map +1 -1
- package/build/question/options/ExportOpenPluginOptions.d.ts +4 -0
- package/build/question/options/ExportOpenPluginOptions.d.ts.map +1 -0
- package/build/question/options/ExportOpenPluginOptions.js +29 -0
- package/build/question/options/ExportOpenPluginOptions.js.map +1 -0
- package/build/question/options/ImportOpenPluginOptions.d.ts +4 -0
- package/build/question/options/ImportOpenPluginOptions.d.ts.map +1 -0
- package/build/question/options/ImportOpenPluginOptions.js +54 -0
- package/build/question/options/ImportOpenPluginOptions.js.map +1 -0
- package/build/question/options/index.d.ts +3 -0
- package/build/question/options/index.d.ts.map +1 -1
- package/build/question/options/index.js +3 -0
- package/build/question/options/index.js.map +1 -1
- package/build/question/other.d.ts +1 -0
- package/build/question/other.d.ts.map +1 -1
- package/build/question/other.js +152 -35
- package/build/question/other.js.map +1 -1
- package/build/question/questionNames.d.ts +10 -1
- package/build/question/questionNames.d.ts.map +1 -1
- package/build/question/questionNames.js +9 -0
- package/build/question/questionNames.js.map +1 -1
- package/build/question/scaffold/vsc/CapabilityOptions.d.ts +1 -0
- package/build/question/scaffold/vsc/CapabilityOptions.d.ts.map +1 -1
- package/build/question/scaffold/vsc/CapabilityOptions.js +11 -0
- package/build/question/scaffold/vsc/CapabilityOptions.js.map +1 -1
- package/build/question/scaffold/vsc/ProjectTypeOptions.d.ts +2 -0
- package/build/question/scaffold/vsc/ProjectTypeOptions.d.ts.map +1 -1
- package/build/question/scaffold/vsc/ProjectTypeOptions.js +9 -0
- package/build/question/scaffold/vsc/ProjectTypeOptions.js.map +1 -1
- package/build/question/scaffold/vsc/daProjectTypeNode.d.ts.map +1 -1
- package/build/question/scaffold/vsc/daProjectTypeNode.js +1 -3
- package/build/question/scaffold/vsc/daProjectTypeNode.js.map +1 -1
- package/build/question/scaffold/vsc/rootNode.js +6 -4
- package/build/question/scaffold/vsc/rootNode.js.map +1 -1
- package/build/question/scaffold/vsc/teamsProjectTypeNode.d.ts +32 -0
- package/build/question/scaffold/vsc/teamsProjectTypeNode.d.ts.map +1 -1
- package/build/question/scaffold/vsc/teamsProjectTypeNode.js +136 -36
- package/build/question/scaffold/vsc/teamsProjectTypeNode.js.map +1 -1
- package/build/question/share.d.ts +7 -0
- package/build/question/share.d.ts.map +1 -1
- package/build/question/share.js +7 -3
- package/build/question/share.js.map +1 -1
- package/build/v4/distribution/bundledFloor.d.ts +12 -0
- package/build/v4/distribution/bundledFloor.d.ts.map +1 -0
- package/build/v4/distribution/bundledFloor.js +80 -0
- package/build/v4/distribution/bundledFloor.js.map +1 -0
- package/build/v4/distribution/templateConfig.d.ts +79 -0
- package/build/v4/distribution/templateConfig.d.ts.map +1 -0
- package/build/v4/distribution/templateConfig.js +81 -0
- package/build/v4/distribution/templateConfig.js.map +1 -0
- package/build/v4/distribution/templatePackage.d.ts +29 -0
- package/build/v4/distribution/templatePackage.d.ts.map +1 -0
- package/build/v4/distribution/templatePackage.js +82 -0
- package/build/v4/distribution/templatePackage.js.map +1 -0
- package/build/v4/distribution/templateSource.d.ts +67 -0
- package/build/v4/distribution/templateSource.d.ts.map +1 -0
- package/build/v4/distribution/templateSource.js +220 -0
- package/build/v4/distribution/templateSource.js.map +1 -0
- package/build/v4/distribution/templateSourcePort.d.ts +50 -0
- package/build/v4/distribution/templateSourcePort.d.ts.map +1 -0
- package/build/v4/distribution/templateSourcePort.js +207 -0
- package/build/v4/distribution/templateSourcePort.js.map +1 -0
- package/build/v4/index.d.ts +13 -0
- package/build/v4/index.d.ts.map +1 -0
- package/build/v4/index.js +18 -0
- package/build/v4/index.js.map +1 -0
- package/package.json +18 -79
- package/resource/package.nls.cs.json +42 -14
- package/resource/package.nls.de.json +43 -15
- package/resource/package.nls.es.json +42 -14
- package/resource/package.nls.fr.json +42 -14
- package/resource/package.nls.it.json +43 -15
- package/resource/package.nls.ja.json +42 -14
- package/resource/package.nls.json +64 -14
- package/resource/package.nls.ko.json +42 -14
- package/resource/package.nls.pl.json +43 -15
- package/resource/package.nls.pt-BR.json +42 -14
- package/resource/package.nls.ru.json +43 -15
- package/resource/package.nls.tr.json +44 -16
- package/resource/package.nls.zh-Hans.json +42 -14
- package/resource/package.nls.zh-Hant.json +54 -26
- package/resource/templates/package.nls.cs.json +2 -0
- package/resource/templates/package.nls.de.json +2 -0
- package/resource/templates/package.nls.es.json +2 -0
- package/resource/templates/package.nls.fr.json +2 -0
- package/resource/templates/package.nls.it.json +2 -0
- package/resource/templates/package.nls.ja.json +2 -0
- package/resource/templates/package.nls.json +5 -0
- package/resource/templates/package.nls.ko.json +2 -0
- package/resource/templates/package.nls.pl.json +2 -0
- package/resource/templates/package.nls.pt-BR.json +2 -0
- package/resource/templates/package.nls.ru.json +2 -0
- package/resource/templates/package.nls.tr.json +2 -0
- package/resource/templates/package.nls.zh-Hans.json +2 -0
- package/resource/templates/package.nls.zh-Hant.json +2 -0
- package/resource/yaml-schema/v1.12/yaml.schema.json +2132 -0
- package/resource/yaml-schema/v1.13/yaml.schema.json +2193 -0
- package/resource/yaml-schema/yaml.schema.json +124 -2
- 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 +16 -0
- package/templates/metadata/defaultGeneratorTemplates.json +8 -0
- package/templates/metadata.zip +0 -0
- package/templates/ui/tdpNode.json +8 -2
- package/templates/ui/wizardNode.json +34 -2
- package/templates/v4/floor.json +3 -0
- package/templates/v4/templates.zip +0 -0
- package/build/core/middleware/projectMigratorV3.d.ts +0 -39
- package/build/core/middleware/projectMigratorV3.d.ts.map +0 -1
- package/build/core/middleware/projectMigratorV3.js +0 -694
- package/build/core/middleware/projectMigratorV3.js.map +0 -1
- package/build/core/middleware/projectVersionChecker.d.ts +0 -3
- package/build/core/middleware/projectVersionChecker.d.ts.map +0 -1
- package/build/core/middleware/projectVersionChecker.js +0 -60
- package/build/core/middleware/projectVersionChecker.js.map +0 -1
- package/build/core/middleware/types.d.ts +0 -9
- package/build/core/middleware/types.d.ts.map +0 -1
- package/build/core/middleware/types.js.map +0 -1
- package/build/core/middleware/utils/MigrationUtils.d.ts +0 -13
- package/build/core/middleware/utils/MigrationUtils.d.ts.map +0 -1
- package/build/core/middleware/utils/MigrationUtils.js +0 -212
- package/build/core/middleware/utils/MigrationUtils.js.map +0 -1
- package/build/core/middleware/utils/appYmlGenerator.d.ts +0 -34
- package/build/core/middleware/utils/appYmlGenerator.d.ts.map +0 -1
- package/build/core/middleware/utils/appYmlGenerator.js +0 -158
- package/build/core/middleware/utils/appYmlGenerator.js.map +0 -1
- package/build/core/middleware/utils/debug/appLocalYmlGenerator.d.ts +0 -65
- package/build/core/middleware/utils/debug/appLocalYmlGenerator.d.ts.map +0 -1
- package/build/core/middleware/utils/debug/appLocalYmlGenerator.js +0 -61
- package/build/core/middleware/utils/debug/appLocalYmlGenerator.js.map +0 -1
- package/build/core/middleware/utils/debug/constants.d.ts +0 -20
- package/build/core/middleware/utils/debug/constants.d.ts.map +0 -1
- package/build/core/middleware/utils/debug/constants.js +0 -28
- package/build/core/middleware/utils/debug/constants.js.map +0 -1
- package/build/core/middleware/utils/debug/debugMigrationContext.d.ts +0 -14
- package/build/core/middleware/utils/debug/debugMigrationContext.d.ts.map +0 -1
- package/build/core/middleware/utils/debug/debugMigrationContext.js +0 -23
- package/build/core/middleware/utils/debug/debugMigrationContext.js.map +0 -1
- package/build/core/middleware/utils/debug/debugV3MigrationUtils.d.ts +0 -37
- package/build/core/middleware/utils/debug/debugV3MigrationUtils.d.ts.map +0 -1
- package/build/core/middleware/utils/debug/debugV3MigrationUtils.js +0 -291
- package/build/core/middleware/utils/debug/debugV3MigrationUtils.js.map +0 -1
- package/build/core/middleware/utils/debug/taskMigrator.d.ts +0 -22
- package/build/core/middleware/utils/debug/taskMigrator.d.ts.map +0 -1
- package/build/core/middleware/utils/debug/taskMigrator.js +0 -935
- package/build/core/middleware/utils/debug/taskMigrator.js.map +0 -1
- package/build/core/middleware/utils/migrationContext.d.ts +0 -32
- package/build/core/middleware/utils/migrationContext.d.ts.map +0 -1
- package/build/core/middleware/utils/migrationContext.js +0 -104
- package/build/core/middleware/utils/migrationContext.js.map +0 -1
- /package/build/{core/middleware → component/generator/openPlugin}/types.js +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright (c) Microsoft Corporation.
|
|
3
3
|
// Licensed under the MIT license.
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.FxCoreDeclarativeAgentPart = void 0;
|
|
5
|
+
exports.FxCoreDeclarativeAgentPart = exports.fxCoreDeclarativeAgentDeps = void 0;
|
|
6
6
|
const tslib_1 = require("tslib");
|
|
7
7
|
const hooks_1 = require("@feathersjs/hooks");
|
|
8
8
|
const m365_spec_parser_1 = require("@microsoft/m365-spec-parser");
|
|
@@ -14,7 +14,7 @@ const globalVars_1 = require("../common/globalVars");
|
|
|
14
14
|
const localizeUtils_1 = require("../common/localizeUtils");
|
|
15
15
|
const telemetry_1 = require("../common/telemetry");
|
|
16
16
|
const versionMetadata_1 = require("../common/versionMetadata");
|
|
17
|
-
const
|
|
17
|
+
const featureFlags_1 = require("../common/featureFlags");
|
|
18
18
|
const constants_1 = require("../component/constants");
|
|
19
19
|
const errors_1 = require("../component/driver/teamsApp/errors");
|
|
20
20
|
const results_1 = require("../component/driver/teamsApp/results");
|
|
@@ -26,7 +26,7 @@ const helper_1 = require("../component/generator/declarativeAgent/helper");
|
|
|
26
26
|
const helper_2 = require("../component/generator/openApiSpec/helper");
|
|
27
27
|
const questionMW_1 = require("../component/middleware/questionMW");
|
|
28
28
|
const common_1 = require("../component/utils/common");
|
|
29
|
-
const
|
|
29
|
+
const mcpAuthScaffolder_1 = require("../component/utils/mcpAuthScaffolder");
|
|
30
30
|
const pathUtils_1 = require("../component/utils/pathUtils");
|
|
31
31
|
const common_2 = require("../error/common");
|
|
32
32
|
const constants_2 = require("../question/constants");
|
|
@@ -35,6 +35,13 @@ const concurrentLocker_1 = require("./middleware/concurrentLocker");
|
|
|
35
35
|
const errorHandler_1 = require("./middleware/errorHandler");
|
|
36
36
|
// Non-translatable CLI command template used in warning messages
|
|
37
37
|
const mcpAddActionHint = "atk add action --api-plugin-type mcp --mcp-da-server-url <server-url> --mcp-tools-file-path <path-to-tools-json> --interactive false";
|
|
38
|
+
exports.fxCoreDeclarativeAgentDeps = {
|
|
39
|
+
addExistingPlugin: helper_1.addExistingPlugin,
|
|
40
|
+
createNewActionPluginManifest: helper_1.createNewActionPluginManifest,
|
|
41
|
+
deriveMCPServerNameFromUrl: helper_1.deriveMCPServerNameFromUrl,
|
|
42
|
+
generateFromApiSpec: helper_2.generateFromApiSpec,
|
|
43
|
+
generateScaffoldingSummary: helper_2.generateScaffoldingSummary,
|
|
44
|
+
};
|
|
38
45
|
class FxCoreDeclarativeAgentPart {
|
|
39
46
|
async updateActionWithMCP(inputs) {
|
|
40
47
|
const context = (0, globalVars_1.createContext)();
|
|
@@ -60,7 +67,7 @@ class FxCoreDeclarativeAgentPart {
|
|
|
60
67
|
return (0, teamsfx_api_1.err)(results_1.AppStudioResultFactory.UserError(errors_1.AppStudioError.TeamsAppRequiredPropertyMissingError.name, errors_1.AppStudioError.TeamsAppRequiredPropertyMissingError.message("declarativeAgents", teamsManifestPath)));
|
|
61
68
|
}
|
|
62
69
|
const declarativeAgentManifestPath = path.join(projectPath, teamsfx_api_1.AppPackageFolderName, declarativeAgentRelativePath);
|
|
63
|
-
const createRes = await
|
|
70
|
+
const createRes = await exports.fxCoreDeclarativeAgentDeps.createNewActionPluginManifest(projectPath, desiredFileName, declarativeAgentManifestPath);
|
|
64
71
|
if (createRes.isErr()) {
|
|
65
72
|
return (0, teamsfx_api_1.err)(createRes.error);
|
|
66
73
|
}
|
|
@@ -76,19 +83,12 @@ class FxCoreDeclarativeAgentPart {
|
|
|
76
83
|
const serverName = inputs[constants_2.QuestionNames.MCPForDAServerName];
|
|
77
84
|
const mcpAuth = inputs[constants_2.QuestionNames.MCPForDAAuth];
|
|
78
85
|
const authType = inputs[constants_2.QuestionNames.MCPForDAAuthType];
|
|
79
|
-
let
|
|
80
|
-
let oauthTokenUrl = undefined;
|
|
81
|
-
let oauthRefreshUrl = undefined;
|
|
86
|
+
let mcpAuthEndpoints = {};
|
|
82
87
|
let registrationId = undefined;
|
|
83
88
|
if (mcpAuth === "OAuthPluginVault") {
|
|
84
89
|
try {
|
|
85
90
|
registrationId = `MCP_DA_AUTH_ID_${serverName.toUpperCase()}`;
|
|
86
|
-
|
|
87
|
-
const metadata = await (0, mcpToolFetcher_1.resolveMCPOAuthMetadata)(inputs[constants_2.QuestionNames.MCPForDAAuthMetadataUrl], inputs[constants_2.QuestionNames.MCPForDAAuthWellKnownUrl]);
|
|
88
|
-
oauthAuthorizationUrl = metadata.authorizationUrl;
|
|
89
|
-
oauthTokenUrl = metadata.tokenUrl;
|
|
90
|
-
oauthRefreshUrl = metadata.refreshUrl;
|
|
91
|
-
}
|
|
91
|
+
mcpAuthEndpoints = await (0, mcpAuthScaffolder_1.resolveMCPAuthEndpoints)(authType, inputs);
|
|
92
92
|
}
|
|
93
93
|
catch (error) {
|
|
94
94
|
void context.userInteraction.showMessage("error", (0, localizeUtils_1.getLocalizedString)("core.MCPForDA.mcpAuthMetadataMissingError", error.message), false);
|
|
@@ -181,19 +181,21 @@ class FxCoreDeclarativeAgentPart {
|
|
|
181
181
|
},
|
|
182
182
|
},
|
|
183
183
|
run_for_functions: mcpToolsSelected,
|
|
184
|
-
auth:
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
reference_id: `$\{\{${registrationId}\}\}`,
|
|
188
|
-
}
|
|
189
|
-
: {
|
|
190
|
-
type: "None",
|
|
191
|
-
},
|
|
184
|
+
auth: (0, mcpAuthScaffolder_1.deriveMCPManifestOAuth)(authType, registrationId) ?? {
|
|
185
|
+
type: "None",
|
|
186
|
+
},
|
|
192
187
|
});
|
|
193
188
|
}
|
|
194
189
|
if (mcpAuth === "OAuthPluginVault" && !!registrationId) {
|
|
195
190
|
// insert oauth info in teamsapp.yaml
|
|
196
|
-
await
|
|
191
|
+
await (0, mcpAuthScaffolder_1.injectMCPAuthActionToYml)({
|
|
192
|
+
ymlPath: pathUtils_1.pathUtils.getYmlFilePath(projectPath),
|
|
193
|
+
authType,
|
|
194
|
+
authName: serverName,
|
|
195
|
+
registrationId,
|
|
196
|
+
mcpServerUrl,
|
|
197
|
+
endpoints: mcpAuthEndpoints,
|
|
198
|
+
});
|
|
197
199
|
}
|
|
198
200
|
void context.userInteraction
|
|
199
201
|
.showMessage("info", (0, localizeUtils_1.getLocalizedString)("core.MCPForDA.updatePluginManifest", aiPluginFilePathRelative), false, "Provision")
|
|
@@ -238,10 +240,21 @@ class FxCoreDeclarativeAgentPart {
|
|
|
238
240
|
// The CLI flow (below) keeps the original non-interactive behavior of
|
|
239
241
|
// probing the MCP server, fetching tools and writing ai-plugin.json + yaml
|
|
240
242
|
// OAuth registration, since the CLI has no equivalent notification UX.
|
|
241
|
-
|
|
243
|
+
//
|
|
244
|
+
// Under the Dynamic Tool Discovery (DT) flag this early redirect is skipped
|
|
245
|
+
// so that VS Code runs the same inline scaffolder as the CLI — the
|
|
246
|
+
// CodeLens "fetch action" hop is absorbed into add-action itself.
|
|
247
|
+
if (isGenerateFromMCP &&
|
|
248
|
+
inputs.platform === teamsfx_api_1.Platform.VSCode &&
|
|
249
|
+
!featureFlags_1.featureFlagManager.getBooleanValue(featureFlags_1.FeatureFlags.MCPForDADT)) {
|
|
242
250
|
return await this.addPluginFromMCP(inputs, context);
|
|
243
251
|
}
|
|
244
|
-
|
|
252
|
+
// VS Code MCP inline flow (DT on) skips the Teams-manifest picker; infer
|
|
253
|
+
// the path from `projectPath/appPackage/manifest.json` to match the leaner
|
|
254
|
+
// `updateActionWithMCP` UX. CLI and non-MCP flows still supply ManifestPath
|
|
255
|
+
// via the question tree / `--manifest-file`.
|
|
256
|
+
const teamsManifestPath = inputs[constants_2.QuestionNames.ManifestPath] ??
|
|
257
|
+
path.join(inputs.projectPath, teamsfx_api_1.AppPackageFolderName, teamsfx_api_1.ManifestTemplateFileName);
|
|
245
258
|
const appPackageFolder = path.dirname(teamsManifestPath);
|
|
246
259
|
// validate the project is valid for adding plugin
|
|
247
260
|
const manifestRes = await ManifestUtils_1.manifestUtils._readAppManifest(teamsManifestPath);
|
|
@@ -265,7 +278,13 @@ class FxCoreDeclarativeAgentPart {
|
|
|
265
278
|
return (0, teamsfx_api_1.err)(declarativeCopilotManifesRes.error);
|
|
266
279
|
}
|
|
267
280
|
const declarativeCopilotManifest = declarativeCopilotManifesRes.value;
|
|
268
|
-
|
|
281
|
+
const mcpAuthTypeChoice = inputs[constants_2.QuestionNames.MCPForDAAuthType];
|
|
282
|
+
const mcpTouchesYml = isGenerateFromMCP && mcpAuthTypeChoice && mcpAuthTypeChoice !== "none";
|
|
283
|
+
let confirmMessage = (0, localizeUtils_1.getLocalizedString)(isGenerateFromMCP
|
|
284
|
+
? mcpTouchesYml
|
|
285
|
+
? "core.addApi.confirm.mcp.teamsYaml"
|
|
286
|
+
: "core.addApi.confirm.mcp"
|
|
287
|
+
: "core.addApi.confirm", path.relative(inputs.projectPath, appPackageFolder), ...(mcpTouchesYml ? [versionMetadata_1.MetadataV4.configFile] : []));
|
|
269
288
|
// Will be used if generating from API spec
|
|
270
289
|
let specParser = undefined;
|
|
271
290
|
let authNameAndSchemes = [];
|
|
@@ -281,12 +300,20 @@ class FxCoreDeclarativeAgentPart {
|
|
|
281
300
|
}
|
|
282
301
|
}
|
|
283
302
|
// confirm
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
303
|
+
// VS Code MCP inline flow (DT on) skips the confirmation modal to match
|
|
304
|
+
// the leaner `updateActionWithMCP` UX; writes happen as soon as the last
|
|
305
|
+
// required answer is provided. CLI interactive and other flows still show it.
|
|
306
|
+
const skipConfirmModal = isGenerateFromMCP &&
|
|
307
|
+
inputs.platform === teamsfx_api_1.Platform.VSCode &&
|
|
308
|
+
featureFlags_1.featureFlagManager.getBooleanValue(featureFlags_1.FeatureFlags.MCPForDADT);
|
|
309
|
+
if (!skipConfirmModal) {
|
|
310
|
+
const confirmRes = await context.userInteraction.showMessage("warn", confirmMessage, true, (0, localizeUtils_1.getLocalizedString)("core.addApi.continue"));
|
|
311
|
+
if (confirmRes.isErr()) {
|
|
312
|
+
return (0, teamsfx_api_1.err)(confirmRes.error);
|
|
313
|
+
}
|
|
314
|
+
else if (confirmRes.value !== (0, localizeUtils_1.getLocalizedString)("core.addApi.continue")) {
|
|
315
|
+
return (0, teamsfx_api_1.err)(new common_2.UserCancelError());
|
|
316
|
+
}
|
|
290
317
|
}
|
|
291
318
|
// find the next available action id
|
|
292
319
|
let actionId = "";
|
|
@@ -303,7 +330,7 @@ class FxCoreDeclarativeAgentPart {
|
|
|
303
330
|
destinationPluginManifestPath =
|
|
304
331
|
await CopilotGptManifestUtils_1.copilotGptManifestUtils.getDefaultNextAvailablePluginManifestPath(appPackageFolder, undefined);
|
|
305
332
|
const destinationApiSpecPath = await PluginManifestUtils_1.pluginManifestUtils.getDefaultNextAvailableApiSpecPath(inputs[constants_2.QuestionNames.ApiSpecLocation].trim(), path.join(appPackageFolder, teamsfx_api_1.DefaultApiSpecFolderName));
|
|
306
|
-
const generateRes = await
|
|
333
|
+
const generateRes = await exports.fxCoreDeclarativeAgentDeps.generateFromApiSpec(specParser, teamsManifestPath, inputs, context, teamsfx_api_1.Stage.addPlugin, m365_spec_parser_1.ProjectType.Copilot, {
|
|
307
334
|
destinationApiSpecFilePath: destinationApiSpecPath,
|
|
308
335
|
pluginManifestFilePath: destinationPluginManifestPath,
|
|
309
336
|
}, inputs[constants_2.QuestionNames.ApiSpecLocation].trim());
|
|
@@ -312,7 +339,7 @@ class FxCoreDeclarativeAgentPart {
|
|
|
312
339
|
}
|
|
313
340
|
const warnings = generateRes.value.warnings;
|
|
314
341
|
if (warnings && warnings.length > 0) {
|
|
315
|
-
const warnSummary = await
|
|
342
|
+
const warnSummary = await exports.fxCoreDeclarativeAgentDeps.generateScaffoldingSummary(warnings, manifestRes.value, path.relative(inputs.projectPath, destinationApiSpecPath), path.relative(inputs.projectPath, destinationPluginManifestPath), inputs.projectPath);
|
|
316
343
|
context.logProvider.info(warnSummary + "\n");
|
|
317
344
|
}
|
|
318
345
|
const addActionRes = await CopilotGptManifestUtils_1.copilotGptManifestUtils.addAction(declarativeCopilotManifestPath, actionId, (0, utils_1.normalizePath)(path.relative(appPackageFolder, destinationPluginManifestPath), true));
|
|
@@ -333,175 +360,260 @@ class FxCoreDeclarativeAgentPart {
|
|
|
333
360
|
if (!mcpServerUrl) {
|
|
334
361
|
return (0, teamsfx_api_1.err)(new teamsfx_api_1.UserError(teamsfx_api_1.Stage.addPlugin, "MissingMCPServerUrl", (0, localizeUtils_1.getLocalizedString)("core.MCPForDA.missingServerUrl"), (0, localizeUtils_1.getLocalizedString)("core.MCPForDA.missingServerUrl")));
|
|
335
362
|
}
|
|
336
|
-
//
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
363
|
+
// Dynamic Tool Discovery flow: skip static tool fetching entirely;
|
|
364
|
+
// write ai-plugin.json with a `ModelContextProtocol` runtime that the
|
|
365
|
+
// agent host probes for tools at runtime, then inject the OAuth/DCR step.
|
|
366
|
+
if (featureFlags_1.featureFlagManager.getBooleanValue(featureFlags_1.FeatureFlags.MCPForDADT)) {
|
|
367
|
+
destinationPluginManifestPath =
|
|
368
|
+
await CopilotGptManifestUtils_1.copilotGptManifestUtils.getDefaultNextAvailablePluginManifestPath(appPackageFolder, undefined);
|
|
369
|
+
// Namespace the action by the MCP server host (shared rule with the
|
|
370
|
+
// create flow) so actions targeting different MCP servers get distinct
|
|
371
|
+
// namespaces. The derived value is alphanumeric + lowercase, satisfying
|
|
372
|
+
// the plugin manifest schema (which rejects `_` and other punctuation).
|
|
373
|
+
const namespace = (0, helper_1.deriveMCPNamespaceFromUrl)(mcpServerUrl);
|
|
374
|
+
const pluginManifest = {
|
|
375
|
+
$schema: "https://developer.microsoft.com/json-schemas/copilot/plugin/v2.4/schema.json",
|
|
376
|
+
schema_version: "v2.4",
|
|
377
|
+
name_for_human: "MCP Action",
|
|
378
|
+
description_for_human: "Action powered by MCP server",
|
|
379
|
+
contact_email: "publisher-email@example.com",
|
|
380
|
+
namespace,
|
|
381
|
+
functions: [],
|
|
382
|
+
runtimes: [
|
|
383
|
+
{
|
|
384
|
+
type: "RemoteMCPServer",
|
|
385
|
+
spec: { url: mcpServerUrl },
|
|
386
|
+
run_for_functions: ["*"],
|
|
387
|
+
},
|
|
388
|
+
],
|
|
389
|
+
};
|
|
390
|
+
const authType = inputs[constants_2.QuestionNames.MCPForDAAuthType];
|
|
391
|
+
if (authType === "none") {
|
|
392
|
+
pluginManifest.runtimes[0].auth = { type: "None" };
|
|
352
393
|
}
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
const { probeMCPServerAuth } = await Promise.resolve().then(() => tslib_1.__importStar(require("../component/utils/mcpToolFetcher")));
|
|
360
|
-
const authProbe = await probeMCPServerAuth(mcpServerUrl);
|
|
361
|
-
if (authProbe.requiresAuth) {
|
|
362
|
-
inputs[constants_2.QuestionNames.MCPForDAAuth] = "OAuthPluginVault";
|
|
363
|
-
if (authProbe.authMetadataUrl) {
|
|
364
|
-
inputs[constants_2.QuestionNames.MCPForDAAuthMetadataUrl] = authProbe.authMetadataUrl;
|
|
365
|
-
}
|
|
394
|
+
else if (authType) {
|
|
395
|
+
const serverName = (0, helper_1.deriveMCPServerNameFromUrl)(mcpServerUrl).toUpperCase();
|
|
396
|
+
const registrationId = (0, helper_1.deriveMCPRegistrationIdFromUrl)(mcpServerUrl);
|
|
397
|
+
const manifestOAuth = (0, mcpAuthScaffolder_1.deriveMCPManifestOAuth)(authType, registrationId);
|
|
398
|
+
if (manifestOAuth) {
|
|
399
|
+
pluginManifest.runtimes[0].auth = manifestOAuth;
|
|
366
400
|
}
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
else if (result.requiresAuth) {
|
|
385
|
-
// Store auth metadata for later use
|
|
386
|
-
inputs[constants_2.QuestionNames.MCPForDAAuth] = "OAuthPluginVault";
|
|
387
|
-
if (result.authMetadataUrl) {
|
|
388
|
-
inputs[constants_2.QuestionNames.MCPForDAAuthMetadataUrl] = result.authMetadataUrl;
|
|
401
|
+
try {
|
|
402
|
+
const endpoints = await (0, mcpAuthScaffolder_1.resolveMCPAuthEndpoints)(authType, inputs);
|
|
403
|
+
const ymlPath = pathUtils_1.pathUtils.getYmlFilePath(inputs.projectPath);
|
|
404
|
+
if (ymlPath) {
|
|
405
|
+
await (0, mcpAuthScaffolder_1.injectMCPAuthActionToYml)({
|
|
406
|
+
ymlPath,
|
|
407
|
+
authType,
|
|
408
|
+
// Per SCN-DA-CREATE-WITH-MCP-SERVER the `name:` of the injected
|
|
409
|
+
// oauth/dcr step matches the ai-plugin.json `namespace`, not the
|
|
410
|
+
// declarativeAgent action id (which stays the template default).
|
|
411
|
+
authName: namespace,
|
|
412
|
+
registrationId,
|
|
413
|
+
mcpServerUrl,
|
|
414
|
+
endpoints,
|
|
415
|
+
persistCredentialEnvRefs: true,
|
|
416
|
+
serverName,
|
|
417
|
+
});
|
|
389
418
|
}
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
419
|
+
await (0, mcpAuthScaffolder_1.persistMCPAuthCredentialEnvVars)({
|
|
420
|
+
projectPath: inputs.projectPath,
|
|
421
|
+
authType,
|
|
422
|
+
serverName,
|
|
423
|
+
clientId: inputs[constants_2.QuestionNames.MCPForDAClientId],
|
|
424
|
+
clientSecret: inputs[constants_2.QuestionNames.MCPForDAClientSecret],
|
|
425
|
+
scopes: inputs[constants_2.QuestionNames.MCPForDAScopes],
|
|
393
426
|
});
|
|
394
427
|
}
|
|
395
|
-
|
|
428
|
+
catch (error) {
|
|
396
429
|
mcpWarnings.push({
|
|
397
|
-
type: "
|
|
398
|
-
content: (0, localizeUtils_1.getLocalizedString)("core.MCPForDA.
|
|
430
|
+
type: "mcpAuthMetadataError",
|
|
431
|
+
content: (0, localizeUtils_1.getLocalizedString)("core.MCPForDA.mcpAuthMetadataMissingError", error.message),
|
|
399
432
|
});
|
|
400
433
|
}
|
|
401
434
|
}
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
435
|
+
await fs_extra_1.default.ensureFile(destinationPluginManifestPath);
|
|
436
|
+
await fs_extra_1.default.writeJSON(destinationPluginManifestPath, pluginManifest, { spaces: 4 });
|
|
437
|
+
const addActionRes = await CopilotGptManifestUtils_1.copilotGptManifestUtils.addAction(declarativeCopilotManifestPath, actionId, (0, utils_1.normalizePath)(path.relative(appPackageFolder, destinationPluginManifestPath), true));
|
|
438
|
+
if (addActionRes.isErr()) {
|
|
439
|
+
return (0, teamsfx_api_1.err)(addActionRes.error);
|
|
407
440
|
}
|
|
408
|
-
}
|
|
409
|
-
// If no tools available (auth required or fetch failed), skip creating plugin - just warn
|
|
410
|
-
const mcpTools = inputs[constants_2.QuestionNames.MCPForDAAvailableTools];
|
|
411
|
-
const mcpToolsSelected = inputs[constants_2.QuestionNames.MCPForDAPreFetchTools] || [];
|
|
412
|
-
if (!mcpTools || mcpTools.length === 0 || mcpToolsSelected.length === 0) {
|
|
413
441
|
if (mcpWarnings.length > 0) {
|
|
414
442
|
for (const warning of mcpWarnings) {
|
|
415
443
|
context.logProvider.warning(warning.content);
|
|
416
444
|
}
|
|
417
445
|
}
|
|
418
|
-
return (0, teamsfx_api_1.ok)(undefined);
|
|
419
446
|
}
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
};
|
|
432
|
-
if (mcpTools && mcpTools.length > 0 && mcpToolsSelected.length > 0) {
|
|
433
|
-
const selectedTools = mcpTools.filter((tool) => mcpToolsSelected.includes(tool.name));
|
|
434
|
-
pluginManifest.functions = selectedTools.map((tool) => ({
|
|
435
|
-
name: tool.name,
|
|
436
|
-
description: tool.description || "",
|
|
437
|
-
}));
|
|
438
|
-
// Write mcp-tools file with full tool definitions (no field filtering)
|
|
439
|
-
const mcpToolsFile = `mcp-tools-${suffix}.json`;
|
|
440
|
-
const mcpToolsOutputPath = path.join(appPackageFolder, mcpToolsFile);
|
|
441
|
-
await fs_extra_1.default.writeJSON(mcpToolsOutputPath, { tools: selectedTools }, { spaces: 4 });
|
|
442
|
-
pluginManifest.runtimes = [
|
|
443
|
-
{
|
|
444
|
-
type: "RemoteMCPServer",
|
|
445
|
-
spec: {
|
|
446
|
-
url: mcpServerUrl,
|
|
447
|
-
mcp_tool_description: {
|
|
448
|
-
file: mcpToolsFile,
|
|
449
|
-
},
|
|
450
|
-
},
|
|
451
|
-
run_for_functions: pluginManifest.functions.map((f) => f.name),
|
|
452
|
-
},
|
|
453
|
-
];
|
|
454
|
-
// Auth handling
|
|
455
|
-
const mcpAuth = inputs[constants_2.QuestionNames.MCPForDAAuth];
|
|
456
|
-
if (mcpAuth === "OAuthPluginVault") {
|
|
457
|
-
const authType = inputs[constants_2.QuestionNames.MCPForDAAuthType];
|
|
458
|
-
if (!authType) {
|
|
459
|
-
return (0, teamsfx_api_1.err)(new teamsfx_api_1.UserError(teamsfx_api_1.Stage.addPlugin, "MissingMCPAuthType", (0, localizeUtils_1.getLocalizedString)("core.MCPForDA.missingAuthType"), (0, localizeUtils_1.getLocalizedString)("core.MCPForDA.missingAuthType")));
|
|
447
|
+
else {
|
|
448
|
+
// Load tools from file if provided and not yet loaded
|
|
449
|
+
const existingTools = inputs[constants_2.QuestionNames.MCPForDAAvailableTools];
|
|
450
|
+
if (toolsFilePath && (!existingTools || existingTools.length === 0)) {
|
|
451
|
+
try {
|
|
452
|
+
const { readMCPToolsFromFile } = await Promise.resolve().then(() => tslib_1.__importStar(require("../component/utils/mcpToolFetcher")));
|
|
453
|
+
const fileTools = await readMCPToolsFromFile(toolsFilePath);
|
|
454
|
+
inputs[constants_2.QuestionNames.MCPForDAAvailableTools] = fileTools;
|
|
455
|
+
if (!inputs[constants_2.QuestionNames.MCPForDAPreFetchTools]) {
|
|
456
|
+
inputs[constants_2.QuestionNames.MCPForDAPreFetchTools] = fileTools.map((t) => t.name);
|
|
457
|
+
}
|
|
460
458
|
}
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
459
|
+
catch {
|
|
460
|
+
mcpWarnings.push({
|
|
461
|
+
type: "mcpToolsFileReadError",
|
|
462
|
+
content: (0, localizeUtils_1.getLocalizedString)("core.MCPForDA.toolsFileReadError", toolsFilePath, mcpAddActionHint),
|
|
463
|
+
});
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
// Probe auth if tools were loaded from file but auth not yet detected
|
|
467
|
+
if (inputs[constants_2.QuestionNames.MCPForDAAvailableTools]?.length > 0 &&
|
|
468
|
+
!inputs[constants_2.QuestionNames.MCPForDAAuth] &&
|
|
469
|
+
mcpServerUrl) {
|
|
467
470
|
try {
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
refreshUrl = metadata.refreshUrl;
|
|
471
|
+
const { probeMCPServerAuth } = await Promise.resolve().then(() => tslib_1.__importStar(require("../component/utils/mcpToolFetcher")));
|
|
472
|
+
const authProbe = await probeMCPServerAuth(mcpServerUrl);
|
|
473
|
+
if (authProbe.requiresAuth) {
|
|
474
|
+
inputs[constants_2.QuestionNames.MCPForDAAuth] = "OAuthPluginVault";
|
|
475
|
+
if (authProbe.authMetadataUrl) {
|
|
476
|
+
inputs[constants_2.QuestionNames.MCPForDAAuthMetadataUrl] = authProbe.authMetadataUrl;
|
|
477
|
+
}
|
|
476
478
|
}
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
479
|
+
}
|
|
480
|
+
catch {
|
|
481
|
+
// Auth probe failed - continue without auth
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
// Auto-fetch tools if not yet loaded (CLI flow for no-auth servers)
|
|
485
|
+
const currentTools = inputs[constants_2.QuestionNames.MCPForDAAvailableTools];
|
|
486
|
+
if ((!currentTools || currentTools.length === 0) && mcpServerUrl) {
|
|
487
|
+
try {
|
|
488
|
+
const { fetchMCPTools } = await Promise.resolve().then(() => tslib_1.__importStar(require("../component/utils/mcpToolFetcher")));
|
|
489
|
+
const result = await fetchMCPTools(mcpServerUrl);
|
|
490
|
+
if (!result.requiresAuth && result.tools.length > 0) {
|
|
491
|
+
inputs[constants_2.QuestionNames.MCPForDAAvailableTools] = result.tools;
|
|
492
|
+
if (!inputs[constants_2.QuestionNames.MCPForDAPreFetchTools]) {
|
|
493
|
+
inputs[constants_2.QuestionNames.MCPForDAPreFetchTools] = result.tools.map((t) => t.name);
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
else if (result.requiresAuth) {
|
|
497
|
+
// Store auth metadata for later use
|
|
498
|
+
inputs[constants_2.QuestionNames.MCPForDAAuth] = "OAuthPluginVault";
|
|
499
|
+
if (result.authMetadataUrl) {
|
|
500
|
+
inputs[constants_2.QuestionNames.MCPForDAAuthMetadataUrl] = result.authMetadataUrl;
|
|
501
|
+
}
|
|
502
|
+
mcpWarnings.push({
|
|
503
|
+
type: "mcpAuthRequired",
|
|
504
|
+
content: (0, localizeUtils_1.getLocalizedString)("core.MCPForDA.authRequired", mcpServerUrl, mcpAddActionHint),
|
|
505
|
+
});
|
|
506
|
+
}
|
|
507
|
+
else {
|
|
508
|
+
mcpWarnings.push({
|
|
509
|
+
type: "mcpNoToolsFetched",
|
|
510
|
+
content: (0, localizeUtils_1.getLocalizedString)("core.MCPForDA.noToolsFetched", mcpServerUrl, mcpAddActionHint),
|
|
511
|
+
});
|
|
480
512
|
}
|
|
481
513
|
}
|
|
482
|
-
catch
|
|
514
|
+
catch {
|
|
483
515
|
mcpWarnings.push({
|
|
484
|
-
type: "
|
|
485
|
-
content: (0, localizeUtils_1.getLocalizedString)("core.MCPForDA.
|
|
516
|
+
type: "mcpFetchError",
|
|
517
|
+
content: (0, localizeUtils_1.getLocalizedString)("core.MCPForDA.fetchError", mcpServerUrl, mcpAddActionHint),
|
|
486
518
|
});
|
|
487
519
|
}
|
|
488
520
|
}
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
521
|
+
// If no tools available (auth required or fetch failed), skip creating plugin - just warn
|
|
522
|
+
const mcpTools = inputs[constants_2.QuestionNames.MCPForDAAvailableTools];
|
|
523
|
+
const mcpToolsSelected = inputs[constants_2.QuestionNames.MCPForDAPreFetchTools] || [];
|
|
524
|
+
if (!mcpTools || mcpTools.length === 0 || mcpToolsSelected.length === 0) {
|
|
525
|
+
if (mcpWarnings.length > 0) {
|
|
526
|
+
for (const warning of mcpWarnings) {
|
|
527
|
+
context.logProvider.warning(warning.content);
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
return (0, teamsfx_api_1.ok)(undefined);
|
|
531
|
+
}
|
|
532
|
+
destinationPluginManifestPath =
|
|
533
|
+
await CopilotGptManifestUtils_1.copilotGptManifestUtils.getDefaultNextAvailablePluginManifestPath(appPackageFolder, undefined);
|
|
534
|
+
const pluginManifest = {
|
|
535
|
+
$schema: "https://developer.microsoft.com/json-schemas/copilot/plugin/v2.4/schema.json",
|
|
536
|
+
schema_version: "v2.4",
|
|
537
|
+
name_for_human: "MCP Action",
|
|
538
|
+
description_for_human: "Action powered by MCP server",
|
|
539
|
+
contact_email: "publisher-email@example.com",
|
|
540
|
+
namespace: "mcpAction",
|
|
541
|
+
functions: [],
|
|
542
|
+
runtimes: [],
|
|
543
|
+
};
|
|
544
|
+
if (mcpTools && mcpTools.length > 0 && mcpToolsSelected.length > 0) {
|
|
545
|
+
const selectedTools = mcpTools.filter((tool) => mcpToolsSelected.includes(tool.name));
|
|
546
|
+
pluginManifest.functions = selectedTools.map((tool) => ({
|
|
547
|
+
name: tool.name,
|
|
548
|
+
description: tool.description || "",
|
|
549
|
+
}));
|
|
550
|
+
// Write mcp-tools file with full tool definitions (no field filtering)
|
|
551
|
+
const mcpToolsFile = `mcp-tools-${suffix}.json`;
|
|
552
|
+
const mcpToolsOutputPath = path.join(appPackageFolder, mcpToolsFile);
|
|
553
|
+
await fs_extra_1.default.writeJSON(mcpToolsOutputPath, { tools: selectedTools }, { spaces: 4 });
|
|
554
|
+
pluginManifest.runtimes = [
|
|
555
|
+
{
|
|
556
|
+
type: "RemoteMCPServer",
|
|
557
|
+
spec: {
|
|
558
|
+
url: mcpServerUrl,
|
|
559
|
+
mcp_tool_description: {
|
|
560
|
+
file: mcpToolsFile,
|
|
561
|
+
},
|
|
562
|
+
},
|
|
563
|
+
run_for_functions: pluginManifest.functions.map((f) => f.name),
|
|
564
|
+
},
|
|
565
|
+
];
|
|
566
|
+
// Auth handling
|
|
567
|
+
const mcpAuth = inputs[constants_2.QuestionNames.MCPForDAAuth];
|
|
568
|
+
if (mcpAuth === "OAuthPluginVault") {
|
|
569
|
+
const authType = inputs[constants_2.QuestionNames.MCPForDAAuthType];
|
|
570
|
+
if (!authType) {
|
|
571
|
+
return (0, teamsfx_api_1.err)(new teamsfx_api_1.UserError(teamsfx_api_1.Stage.addPlugin, "MissingMCPAuthType", (0, localizeUtils_1.getLocalizedString)("core.MCPForDA.missingAuthType"), (0, localizeUtils_1.getLocalizedString)("core.MCPForDA.missingAuthType")));
|
|
572
|
+
}
|
|
573
|
+
const registrationId = `MCP_DA_AUTH_ID_${actionId.toUpperCase()}`;
|
|
574
|
+
const manifestOAuth = (0, mcpAuthScaffolder_1.deriveMCPManifestOAuth)(authType, registrationId);
|
|
575
|
+
if (manifestOAuth) {
|
|
576
|
+
pluginManifest.runtimes[0].auth = manifestOAuth;
|
|
577
|
+
}
|
|
578
|
+
// Resolve OAuth metadata and inject oauth/register into m365agents.yml
|
|
579
|
+
try {
|
|
580
|
+
const endpoints = await (0, mcpAuthScaffolder_1.resolveMCPAuthEndpoints)(authType, inputs);
|
|
581
|
+
const ymlPath = pathUtils_1.pathUtils.getYmlFilePath(inputs.projectPath);
|
|
582
|
+
if (ymlPath) {
|
|
583
|
+
await (0, mcpAuthScaffolder_1.injectMCPAuthActionToYml)({
|
|
584
|
+
ymlPath,
|
|
585
|
+
authType,
|
|
586
|
+
authName: actionId,
|
|
587
|
+
registrationId,
|
|
588
|
+
mcpServerUrl,
|
|
589
|
+
endpoints,
|
|
590
|
+
});
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
catch (error) {
|
|
594
|
+
mcpWarnings.push({
|
|
595
|
+
type: "mcpAuthMetadataError",
|
|
596
|
+
content: (0, localizeUtils_1.getLocalizedString)("core.MCPForDA.mcpAuthMetadataMissingError", error.message),
|
|
597
|
+
});
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
await fs_extra_1.default.ensureFile(destinationPluginManifestPath);
|
|
602
|
+
await fs_extra_1.default.writeJSON(destinationPluginManifestPath, pluginManifest, { spaces: 4 });
|
|
603
|
+
const addActionRes = await CopilotGptManifestUtils_1.copilotGptManifestUtils.addAction(declarativeCopilotManifestPath, actionId, (0, utils_1.normalizePath)(path.relative(appPackageFolder, destinationPluginManifestPath), true));
|
|
604
|
+
if (addActionRes.isErr()) {
|
|
605
|
+
return (0, teamsfx_api_1.err)(addActionRes.error);
|
|
606
|
+
}
|
|
607
|
+
// Surface warnings for CLI
|
|
608
|
+
if (mcpWarnings.length > 0) {
|
|
609
|
+
for (const warning of mcpWarnings) {
|
|
610
|
+
context.logProvider.warning(warning.content);
|
|
611
|
+
}
|
|
500
612
|
}
|
|
501
613
|
}
|
|
502
614
|
}
|
|
503
615
|
else {
|
|
504
|
-
const addPluginRes = await
|
|
616
|
+
const addPluginRes = await exports.fxCoreDeclarativeAgentDeps.addExistingPlugin(declarativeCopilotManifestPath, inputs[constants_2.QuestionNames.PluginManifestFilePath].trim(), inputs[constants_2.QuestionNames.PluginOpenApiSpecFilePath].trim(), actionId, context, teamsfx_api_1.Stage.addPlugin);
|
|
505
617
|
if (addPluginRes.isErr()) {
|
|
506
618
|
return (0, teamsfx_api_1.err)(addPluginRes.error);
|
|
507
619
|
}
|
|
@@ -541,7 +653,7 @@ class FxCoreDeclarativeAgentPart {
|
|
|
541
653
|
}
|
|
542
654
|
// Derive a server entry name from the URL host using the same logic as the
|
|
543
655
|
// "DA with MCP" scaffolding template variable `ServerName`.
|
|
544
|
-
const serverName =
|
|
656
|
+
const serverName = exports.fxCoreDeclarativeAgentDeps.deriveMCPServerNameFromUrl(mcpServerUrl);
|
|
545
657
|
const mcpConfigDir = path.join(projectPath, ".vscode");
|
|
546
658
|
const mcpConfigPath = path.join(mcpConfigDir, "mcp.json");
|
|
547
659
|
let mcpConfig = { servers: {} };
|