@microsoft/teamsfx-core 2.0.8-rc-hotfix.0 → 2.0.8-rc-hotfix.2
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/common/constants.d.ts +5 -17
- package/build/common/constants.d.ts.map +1 -1
- package/build/common/constants.js +5 -18
- package/build/common/constants.js.map +1 -1
- package/build/common/deps-checker/constant/message.d.ts +1 -1
- package/build/common/deps-checker/constant/message.d.ts.map +1 -1
- package/build/common/deps-checker/constant/message.js +1 -1
- package/build/common/deps-checker/constant/message.js.map +1 -1
- package/build/common/deps-checker/util/fileHelper.js +1 -1
- package/build/common/deps-checker/util/fileHelper.js.map +1 -1
- package/build/common/featureFlags.d.ts +69 -6
- package/build/common/featureFlags.d.ts.map +1 -1
- package/build/common/featureFlags.js +65 -88
- package/build/common/featureFlags.js.map +1 -1
- package/build/common/m365/launchHelper.d.ts +1 -1
- package/build/common/m365/launchHelper.d.ts.map +1 -1
- package/build/common/m365/launchHelper.js +5 -6
- package/build/common/m365/launchHelper.js.map +1 -1
- package/build/common/m365/packageService.d.ts +1 -1
- package/build/common/m365/packageService.d.ts.map +1 -1
- package/build/common/m365/packageService.js +22 -40
- package/build/common/m365/packageService.js.map +1 -1
- package/build/common/projectTypeChecker.d.ts.map +1 -1
- package/build/common/projectTypeChecker.js +8 -0
- package/build/common/projectTypeChecker.js.map +1 -1
- package/build/common/samples.d.ts +1 -1
- package/build/common/samples.js +1 -1
- package/build/common/stringUtils.d.ts +10 -0
- package/build/common/stringUtils.d.ts.map +1 -0
- package/build/common/stringUtils.js +121 -0
- package/build/common/stringUtils.js.map +1 -0
- package/build/common/telemetry.d.ts +18 -1
- package/build/common/telemetry.d.ts.map +1 -1
- package/build/common/telemetry.js +41 -6
- package/build/common/telemetry.js.map +1 -1
- package/build/common/templates-config.json +1 -1
- package/build/common/wrappedAxiosClient.d.ts.map +1 -1
- package/build/common/wrappedAxiosClient.js +7 -5
- package/build/common/wrappedAxiosClient.js.map +1 -1
- package/build/component/configManager/actionInjector.d.ts +8 -0
- package/build/component/configManager/actionInjector.d.ts.map +1 -0
- package/build/component/configManager/actionInjector.js +102 -0
- package/build/component/configManager/actionInjector.js.map +1 -0
- package/build/component/configManager/constant.d.ts +2 -1
- package/build/component/configManager/constant.d.ts.map +1 -1
- package/build/component/configManager/constant.js +1 -0
- package/build/component/configManager/constant.js.map +1 -1
- package/build/component/configManager/validator.js +1 -1
- package/build/component/configManager/validator.js.map +1 -1
- package/build/component/constants.js +2 -2
- package/build/component/constants.js.map +1 -1
- package/build/component/coordinator/index.d.ts +0 -38
- package/build/component/coordinator/index.d.ts.map +1 -1
- package/build/component/coordinator/index.js +126 -178
- package/build/component/coordinator/index.js.map +1 -1
- package/build/component/driver/aad/create.d.ts +1 -0
- package/build/component/driver/aad/create.d.ts.map +1 -1
- package/build/component/driver/aad/create.js +22 -11
- package/build/component/driver/aad/create.js.map +1 -1
- package/build/component/driver/aad/error/aadManifestError.d.ts +6 -0
- package/build/component/driver/aad/error/aadManifestError.d.ts.map +1 -1
- package/build/component/driver/aad/error/aadManifestError.js +25 -1
- package/build/component/driver/aad/error/aadManifestError.js.map +1 -1
- package/build/component/driver/aad/error/clientSecretNotAllowedError.d.ts +5 -0
- package/build/component/driver/aad/error/clientSecretNotAllowedError.d.ts.map +1 -0
- package/build/component/driver/aad/error/clientSecretNotAllowedError.js +23 -0
- package/build/component/driver/aad/error/clientSecretNotAllowedError.js.map +1 -0
- package/build/component/driver/aad/error/credentialInvalidLifetimeError.d.ts +5 -0
- package/build/component/driver/aad/error/credentialInvalidLifetimeError.d.ts.map +1 -0
- package/build/component/driver/aad/error/credentialInvalidLifetimeError.js +23 -0
- package/build/component/driver/aad/error/credentialInvalidLifetimeError.js.map +1 -0
- package/build/component/driver/aad/interface/IAADDefinition.d.ts +1 -0
- package/build/component/driver/aad/interface/IAADDefinition.d.ts.map +1 -1
- package/build/component/driver/aad/interface/createAadAppArgs.d.ts +3 -0
- package/build/component/driver/aad/interface/createAadAppArgs.d.ts.map +1 -1
- package/build/component/driver/aad/permissions/index.d.ts.map +1 -1
- package/build/component/driver/aad/permissions/index.js +9 -0
- package/build/component/driver/aad/permissions/index.js.map +1 -1
- package/build/component/driver/aad/utility/aadAppClient.d.ts +3 -2
- package/build/component/driver/aad/utility/aadAppClient.d.ts.map +1 -1
- package/build/component/driver/aad/utility/aadAppClient.js +35 -17
- package/build/component/driver/aad/utility/aadAppClient.js.map +1 -1
- package/build/component/driver/aad/utility/aadManifestHelper.d.ts.map +1 -1
- package/build/component/driver/aad/utility/aadManifestHelper.js +9 -1
- package/build/component/driver/aad/utility/aadManifestHelper.js.map +1 -1
- package/build/component/driver/aad/utility/constants.d.ts +6 -0
- package/build/component/driver/aad/utility/constants.d.ts.map +1 -1
- package/build/component/driver/aad/utility/constants.js +8 -2
- package/build/component/driver/aad/utility/constants.js.map +1 -1
- package/build/component/driver/apiKey/create.d.ts +0 -3
- package/build/component/driver/apiKey/create.d.ts.map +1 -1
- package/build/component/driver/apiKey/create.js +23 -48
- package/build/component/driver/apiKey/create.js.map +1 -1
- package/build/component/driver/apiKey/interface/createApiKeyArgs.d.ts +2 -0
- package/build/component/driver/apiKey/interface/createApiKeyArgs.d.ts.map +1 -1
- package/build/component/driver/apiKey/interface/updateApiKeyArgs.d.ts +9 -0
- package/build/component/driver/apiKey/interface/updateApiKeyArgs.d.ts.map +1 -0
- package/build/component/driver/apiKey/interface/updateApiKeyArgs.js +5 -0
- package/build/component/driver/apiKey/interface/updateApiKeyArgs.js.map +1 -0
- package/build/component/driver/apiKey/update.d.ts +13 -0
- package/build/component/driver/apiKey/update.d.ts.map +1 -0
- package/build/component/driver/apiKey/update.js +182 -0
- package/build/component/driver/apiKey/update.js.map +1 -0
- package/build/component/driver/apiKey/utility/constants.d.ts +2 -0
- package/build/component/driver/apiKey/utility/constants.d.ts.map +1 -1
- package/build/component/driver/apiKey/utility/constants.js +2 -0
- package/build/component/driver/apiKey/utility/constants.js.map +1 -1
- package/build/component/driver/apiKey/utility/utility.d.ts +7 -0
- package/build/component/driver/apiKey/utility/utility.d.ts.map +1 -0
- package/build/component/driver/apiKey/utility/utility.js +55 -0
- package/build/component/driver/apiKey/utility/utility.js.map +1 -0
- package/build/component/driver/deploy/spfx/utility/spoClient.d.ts.map +1 -1
- package/build/component/driver/deploy/spfx/utility/spoClient.js +3 -1
- package/build/component/driver/deploy/spfx/utility/spoClient.js.map +1 -1
- package/build/component/driver/index.d.ts +3 -0
- package/build/component/driver/index.d.ts.map +1 -1
- package/build/component/driver/index.js +3 -0
- package/build/component/driver/index.js.map +1 -1
- package/build/component/driver/middleware/addSWADeployTelemetry.js +2 -2
- package/build/component/driver/middleware/addSWADeployTelemetry.js.map +1 -1
- package/build/component/driver/oauth/create.d.ts +12 -0
- package/build/component/driver/oauth/create.d.ts.map +1 -0
- package/build/component/driver/oauth/create.js +193 -0
- package/build/component/driver/oauth/create.js.map +1 -0
- package/build/component/driver/oauth/error/oauthAuthInfoInvalid.d.ts +5 -0
- package/build/component/driver/oauth/error/oauthAuthInfoInvalid.d.ts.map +1 -0
- package/build/component/driver/oauth/error/oauthAuthInfoInvalid.js +21 -0
- package/build/component/driver/oauth/error/oauthAuthInfoInvalid.js.map +1 -0
- package/build/component/driver/oauth/error/oauthDomainInvalid.d.ts +5 -0
- package/build/component/driver/oauth/error/oauthDomainInvalid.d.ts.map +1 -0
- package/build/component/driver/oauth/error/oauthDomainInvalid.js +22 -0
- package/build/component/driver/oauth/error/oauthDomainInvalid.js.map +1 -0
- package/build/component/driver/oauth/error/oauthFailedToGetDomain.d.ts +5 -0
- package/build/component/driver/oauth/error/oauthFailedToGetDomain.d.ts.map +1 -0
- package/build/component/driver/oauth/error/oauthFailedToGetDomain.js +21 -0
- package/build/component/driver/oauth/error/oauthFailedToGetDomain.js.map +1 -0
- package/build/component/driver/oauth/error/oauthNameTooLong.d.ts +5 -0
- package/build/component/driver/oauth/error/oauthNameTooLong.d.ts.map +1 -0
- package/build/component/driver/oauth/error/oauthNameTooLong.js +21 -0
- package/build/component/driver/oauth/error/oauthNameTooLong.js.map +1 -0
- package/build/component/driver/oauth/interface/createOauthArgs.d.ts +12 -0
- package/build/component/driver/oauth/interface/createOauthArgs.d.ts.map +1 -0
- package/build/component/driver/oauth/interface/createOauthArgs.js +5 -0
- package/build/component/driver/oauth/interface/createOauthArgs.js.map +1 -0
- package/build/component/driver/oauth/interface/createOauthOutputs.d.ts +7 -0
- package/build/component/driver/oauth/interface/createOauthOutputs.d.ts.map +1 -0
- package/build/component/driver/oauth/interface/createOauthOutputs.js +10 -0
- package/build/component/driver/oauth/interface/createOauthOutputs.js.map +1 -0
- package/build/component/driver/oauth/interface/updateOauthArgs.d.ts +9 -0
- package/build/component/driver/oauth/interface/updateOauthArgs.d.ts.map +1 -0
- package/build/component/driver/oauth/interface/updateOauthArgs.js +5 -0
- package/build/component/driver/oauth/interface/updateOauthArgs.js.map +1 -0
- package/build/component/driver/oauth/update.d.ts +13 -0
- package/build/component/driver/oauth/update.d.ts.map +1 -0
- package/build/component/driver/oauth/update.js +181 -0
- package/build/component/driver/oauth/update.js.map +1 -0
- package/build/component/driver/oauth/utility/constants.d.ts +13 -0
- package/build/component/driver/oauth/utility/constants.d.ts.map +1 -0
- package/build/component/driver/oauth/utility/constants.js +18 -0
- package/build/component/driver/oauth/utility/constants.js.map +1 -0
- package/build/component/driver/oauth/utility/utility.d.ts +12 -0
- package/build/component/driver/oauth/utility/utility.d.ts.map +1 -0
- package/build/component/driver/oauth/utility/utility.js +90 -0
- package/build/component/driver/oauth/utility/utility.js.map +1 -0
- package/build/component/driver/script/scriptDriver.d.ts.map +1 -1
- package/build/component/driver/script/scriptDriver.js +8 -8
- package/build/component/driver/script/scriptDriver.js.map +1 -1
- package/build/component/driver/teamsApp/clients/appStudioClient.d.ts +11 -3
- package/build/component/driver/teamsApp/clients/appStudioClient.d.ts.map +1 -1
- package/build/component/driver/teamsApp/clients/appStudioClient.js +54 -2
- package/build/component/driver/teamsApp/clients/appStudioClient.js.map +1 -1
- package/build/component/driver/teamsApp/constants.d.ts +4 -0
- package/build/component/driver/teamsApp/constants.d.ts.map +1 -1
- package/build/component/driver/teamsApp/constants.js +4 -0
- package/build/component/driver/teamsApp/constants.js.map +1 -1
- package/build/component/driver/teamsApp/createAppPackage.d.ts +19 -1
- package/build/component/driver/teamsApp/createAppPackage.d.ts.map +1 -1
- package/build/component/driver/teamsApp/createAppPackage.js +100 -26
- package/build/component/driver/teamsApp/createAppPackage.js.map +1 -1
- package/build/component/driver/teamsApp/interfaces/ApiSecretRegistration.d.ts +20 -0
- package/build/component/driver/teamsApp/interfaces/ApiSecretRegistration.d.ts.map +1 -1
- package/build/component/driver/teamsApp/interfaces/ApiSecretRegistration.js.map +1 -1
- package/build/component/driver/teamsApp/interfaces/OauthConfigurationId.d.ts +7 -0
- package/build/component/driver/teamsApp/interfaces/OauthConfigurationId.d.ts.map +1 -0
- package/build/component/driver/teamsApp/interfaces/OauthConfigurationId.js +5 -0
- package/build/component/driver/teamsApp/interfaces/OauthConfigurationId.js.map +1 -0
- package/build/component/driver/teamsApp/interfaces/OauthRegistration.d.ts +44 -0
- package/build/component/driver/teamsApp/interfaces/OauthRegistration.d.ts.map +1 -0
- package/build/component/driver/teamsApp/interfaces/OauthRegistration.js +21 -0
- package/build/component/driver/teamsApp/interfaces/OauthRegistration.js.map +1 -0
- package/build/component/driver/teamsApp/teamsappMgr.d.ts.map +1 -1
- package/build/component/driver/teamsApp/teamsappMgr.js +22 -8
- package/build/component/driver/teamsApp/teamsappMgr.js.map +1 -1
- package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.d.ts +8 -0
- package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.d.ts.map +1 -0
- package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.js +65 -0
- package/build/component/driver/teamsApp/utils/CopilotGptManifestUtils.js.map +1 -0
- package/build/component/driver/teamsApp/utils/ManifestUtils.d.ts.map +1 -1
- package/build/component/driver/teamsApp/utils/ManifestUtils.js +4 -16
- package/build/component/driver/teamsApp/utils/ManifestUtils.js.map +1 -1
- package/build/component/driver/teamsApp/utils/telemetry.d.ts +2 -0
- package/build/component/driver/teamsApp/utils/telemetry.d.ts.map +1 -1
- package/build/component/driver/teamsApp/utils/telemetry.js +2 -0
- package/build/component/driver/teamsApp/utils/telemetry.js.map +1 -1
- package/build/component/driver/teamsApp/utils/utils.d.ts +1 -0
- package/build/component/driver/teamsApp/utils/utils.d.ts.map +1 -1
- package/build/component/driver/teamsApp/utils/utils.js +5 -1
- package/build/component/driver/teamsApp/utils/utils.js.map +1 -1
- package/build/component/driver/teamsApp/validateTestCases.d.ts +18 -0
- package/build/component/driver/teamsApp/validateTestCases.d.ts.map +1 -1
- package/build/component/driver/teamsApp/validateTestCases.js +132 -50
- package/build/component/driver/teamsApp/validateTestCases.js.map +1 -1
- package/build/component/generator/copilotPlugin/generator.d.ts.map +1 -1
- package/build/component/generator/copilotPlugin/generator.js +20 -26
- package/build/component/generator/copilotPlugin/generator.js.map +1 -1
- package/build/component/generator/copilotPlugin/helper.d.ts +7 -2
- package/build/component/generator/copilotPlugin/helper.d.ts.map +1 -1
- package/build/component/generator/copilotPlugin/helper.js +159 -51
- package/build/component/generator/copilotPlugin/helper.js.map +1 -1
- package/build/component/generator/generator.d.ts +4 -2
- package/build/component/generator/generator.d.ts.map +1 -1
- package/build/component/generator/generator.js +11 -7
- package/build/component/generator/generator.js.map +1 -1
- package/build/component/generator/generatorProvider.d.ts +3 -0
- package/build/component/generator/generatorProvider.d.ts.map +1 -0
- package/build/component/generator/generatorProvider.js +18 -0
- package/build/component/generator/generatorProvider.js.map +1 -0
- 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 +63 -14
- package/build/component/generator/officeAddin/generator.js.map +1 -1
- package/build/component/generator/officeAddin/helperMethods.d.ts +0 -3
- package/build/component/generator/officeAddin/helperMethods.d.ts.map +1 -1
- package/build/component/generator/officeAddin/helperMethods.js +1 -67
- package/build/component/generator/officeAddin/helperMethods.js.map +1 -1
- package/build/component/generator/officeXMLAddin/generator.d.ts.map +1 -1
- package/build/component/generator/officeXMLAddin/generator.js +5 -2
- package/build/component/generator/officeXMLAddin/generator.js.map +1 -1
- package/build/component/generator/officeXMLAddin/projectConfig.d.ts.map +1 -1
- package/build/component/generator/officeXMLAddin/projectConfig.js +12 -0
- package/build/component/generator/officeXMLAddin/projectConfig.js.map +1 -1
- package/build/component/generator/spfx/spfxGenerator.d.ts +18 -5
- package/build/component/generator/spfx/spfxGenerator.d.ts.map +1 -1
- package/build/component/generator/spfx/spfxGenerator.js +123 -20
- package/build/component/generator/spfx/spfxGenerator.js.map +1 -1
- package/build/component/generator/templates/ssrTabGenerator.d.ts +12 -0
- package/build/component/generator/templates/ssrTabGenerator.d.ts.map +1 -0
- package/build/component/generator/templates/ssrTabGenerator.js +36 -0
- package/build/component/generator/templates/ssrTabGenerator.js.map +1 -0
- package/build/component/generator/templates/templateGenerator.d.ts +12 -0
- package/build/component/generator/templates/templateGenerator.d.ts.map +1 -0
- package/build/component/generator/templates/templateGenerator.js +99 -0
- package/build/component/generator/templates/templateGenerator.js.map +1 -0
- package/build/component/generator/templates/templateInfo.d.ts +10 -0
- package/build/component/generator/templates/templateInfo.d.ts.map +1 -0
- package/build/component/generator/templates/templateInfo.js +3 -0
- package/build/component/generator/templates/templateInfo.js.map +1 -0
- package/build/component/generator/templates/templateNames.d.ts +52 -0
- package/build/component/generator/templates/templateNames.d.ts.map +1 -0
- package/build/component/generator/templates/templateNames.js +304 -0
- package/build/component/generator/templates/templateNames.js.map +1 -0
- package/build/component/generator/templates/templateReplaceMap.d.ts +5 -0
- package/build/component/generator/templates/templateReplaceMap.d.ts.map +1 -0
- package/build/component/generator/templates/templateReplaceMap.js +39 -0
- package/build/component/generator/templates/templateReplaceMap.js.map +1 -0
- package/build/component/generator/utils.d.ts +1 -0
- package/build/component/generator/utils.d.ts.map +1 -1
- package/build/component/generator/utils.js +2 -1
- package/build/component/generator/utils.js.map +1 -1
- package/build/component/middleware/actionExecutionMW.d.ts.map +1 -1
- package/build/component/middleware/actionExecutionMW.js +5 -4
- package/build/component/middleware/actionExecutionMW.js.map +1 -1
- package/build/component/middleware/questionMW.d.ts.map +1 -1
- package/build/component/middleware/questionMW.js +9 -1
- package/build/component/middleware/questionMW.js.map +1 -1
- package/build/component/utils/envUtil.d.ts +0 -1
- package/build/component/utils/envUtil.d.ts.map +1 -1
- package/build/component/utils/envUtil.js +1 -13
- package/build/component/utils/envUtil.js.map +1 -1
- package/build/component/utils/metadataGraphPermssion.d.ts +8 -6
- package/build/component/utils/metadataGraphPermssion.d.ts.map +1 -1
- package/build/component/utils/metadataGraphPermssion.js +10 -2
- package/build/component/utils/metadataGraphPermssion.js.map +1 -1
- package/build/component/utils/metadataRscPermission.d.ts +17 -0
- package/build/component/utils/metadataRscPermission.d.ts.map +1 -0
- package/build/component/utils/metadataRscPermission.js +81 -0
- package/build/component/utils/metadataRscPermission.js.map +1 -0
- package/build/component/utils/metadataUtil.d.ts.map +1 -1
- package/build/component/utils/metadataUtil.js +2 -0
- package/build/component/utils/metadataUtil.js.map +1 -1
- package/build/component/utils.d.ts +2 -1
- package/build/component/utils.d.ts.map +1 -1
- package/build/component/utils.js +43 -1
- package/build/component/utils.js.map +1 -1
- package/build/core/FxCore.d.ts +10 -6
- package/build/core/FxCore.d.ts.map +1 -1
- package/build/core/FxCore.js +307 -82
- package/build/core/FxCore.js.map +1 -1
- package/build/error/common.d.ts +3 -0
- package/build/error/common.d.ts.map +1 -1
- package/build/error/common.js +13 -2
- package/build/error/common.js.map +1 -1
- package/build/error/index.d.ts +1 -0
- package/build/error/index.d.ts.map +1 -1
- package/build/error/index.js +1 -0
- package/build/error/index.js.map +1 -1
- package/build/error/script.d.ts +2 -2
- package/build/error/script.d.ts.map +1 -1
- package/build/error/script.js +6 -6
- package/build/error/script.js.map +1 -1
- package/build/index.d.ts +4 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +7 -1
- package/build/index.js.map +1 -1
- package/build/question/constants.d.ts.map +1 -1
- package/build/question/constants.js +6 -1
- package/build/question/constants.js.map +1 -1
- package/build/question/create.d.ts +12 -2
- package/build/question/create.d.ts.map +1 -1
- package/build/question/create.js +211 -74
- package/build/question/create.js.map +1 -1
- package/build/question/generator.js +2 -0
- package/build/question/generator.js.map +1 -1
- package/build/question/index.d.ts +2 -0
- package/build/question/index.d.ts.map +1 -1
- package/build/question/index.js +6 -0
- package/build/question/index.js.map +1 -1
- package/build/question/inputs/AddPluginInputs.d.ts +18 -0
- package/build/question/inputs/AddPluginInputs.d.ts.map +1 -0
- package/build/question/inputs/AddPluginInputs.js +5 -0
- package/build/question/inputs/AddPluginInputs.js.map +1 -0
- package/build/question/inputs/CreateProjectInputs.d.ts +7 -3
- package/build/question/inputs/CreateProjectInputs.d.ts.map +1 -1
- package/build/question/inputs/PermissionGrantInputs.d.ts +1 -1
- package/build/question/inputs/PermissionListInputs.d.ts +1 -1
- package/build/question/inputs/PreviewTeamsAppInputs.d.ts +1 -1
- package/build/question/inputs/SPFxAddWebpartInputs.d.ts +1 -1
- package/build/question/inputs/SelectTeamsManifestInputs.d.ts +1 -1
- package/build/question/inputs/ValidateTeamsAppInputs.d.ts +2 -2
- package/build/question/inputs/index.d.ts +1 -0
- package/build/question/inputs/index.d.ts.map +1 -1
- package/build/question/inputs/index.js +1 -0
- package/build/question/inputs/index.js.map +1 -1
- package/build/question/options/AddPluginOptions.d.ts +10 -0
- package/build/question/options/AddPluginOptions.d.ts.map +1 -0
- package/build/question/options/AddPluginOptions.js +39 -0
- package/build/question/options/AddPluginOptions.js.map +1 -0
- package/build/question/options/CreateProjectOptions.d.ts.map +1 -1
- package/build/question/options/CreateProjectOptions.js +23 -3
- package/build/question/options/CreateProjectOptions.js.map +1 -1
- package/build/question/options/PermissionGrantOptions.js +1 -1
- package/build/question/options/PermissionGrantOptions.js.map +1 -1
- package/build/question/options/PermissionListOptions.js +1 -1
- package/build/question/options/PermissionListOptions.js.map +1 -1
- package/build/question/options/PreviewTeamsAppOptions.js +1 -1
- package/build/question/options/PreviewTeamsAppOptions.js.map +1 -1
- package/build/question/options/SPFxAddWebpartOptions.js +1 -1
- package/build/question/options/SPFxAddWebpartOptions.js.map +1 -1
- package/build/question/options/SelectTeamsManifestOptions.js +1 -1
- package/build/question/options/SelectTeamsManifestOptions.js.map +1 -1
- package/build/question/options/ValidateTeamsAppOptions.js +1 -1
- package/build/question/options/ValidateTeamsAppOptions.js.map +1 -1
- package/build/question/options/index.d.ts +1 -0
- package/build/question/options/index.d.ts.map +1 -1
- package/build/question/options/index.js +1 -0
- package/build/question/options/index.js.map +1 -1
- package/build/question/other.d.ts +9 -0
- package/build/question/other.d.ts.map +1 -1
- package/build/question/other.js +168 -8
- package/build/question/other.js.map +1 -1
- package/build/question/questionNames.d.ts +6 -1
- package/build/question/questionNames.d.ts.map +1 -1
- package/build/question/questionNames.js +5 -0
- package/build/question/questionNames.js.map +1 -1
- package/package.json +15 -11
- package/resource/package.nls.json +146 -71
- package/resource/yaml-schema/v1.5/yaml.schema.json +1784 -0
- package/resource/yaml-schema/yaml.schema.json +198 -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/build/core/FxCore.js
CHANGED
|
@@ -5,8 +5,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
5
5
|
exports.FxCore = void 0;
|
|
6
6
|
const tslib_1 = require("tslib");
|
|
7
7
|
const hooks_1 = require("@feathersjs/hooks");
|
|
8
|
+
const m365_spec_parser_1 = require("@microsoft/m365-spec-parser");
|
|
8
9
|
const teamsfx_api_1 = require("@microsoft/teamsfx-api");
|
|
9
10
|
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
|
|
11
|
+
const jsonschema = tslib_1.__importStar(require("jsonschema"));
|
|
10
12
|
const os = tslib_1.__importStar(require("os"));
|
|
11
13
|
const path = tslib_1.__importStar(require("path"));
|
|
12
14
|
require("reflect-metadata");
|
|
@@ -14,12 +16,10 @@ const typedi_1 = require("typedi");
|
|
|
14
16
|
const url_1 = require("url");
|
|
15
17
|
const yaml_1 = require("yaml");
|
|
16
18
|
const constants_1 = require("../common/constants");
|
|
17
|
-
const featureFlags_1 = require("../common/featureFlags");
|
|
18
19
|
const localizeUtils_1 = require("../common/localizeUtils");
|
|
19
20
|
const launchHelper_1 = require("../common/m365/launchHelper");
|
|
20
21
|
const projectSettingsHelper_1 = require("../common/projectSettingsHelper");
|
|
21
22
|
const projectTypeChecker_1 = require("../common/projectTypeChecker");
|
|
22
|
-
const m365_spec_parser_1 = require("@microsoft/m365-spec-parser");
|
|
23
23
|
const telemetry_1 = require("../common/telemetry");
|
|
24
24
|
const versionMetadata_1 = require("../common/versionMetadata");
|
|
25
25
|
const parser_1 = require("../component/configManager/parser");
|
|
@@ -31,7 +31,9 @@ require("../component/driver/script/scriptDriver");
|
|
|
31
31
|
const appStudio_1 = require("../component/driver/teamsApp/appStudio");
|
|
32
32
|
const teamsappMgr_1 = require("../component/driver/teamsApp/teamsappMgr");
|
|
33
33
|
const ManifestUtils_1 = require("../component/driver/teamsApp/utils/ManifestUtils");
|
|
34
|
+
const PluginManifestUtils_1 = require("../component/driver/teamsApp/utils/PluginManifestUtils");
|
|
34
35
|
const utils_1 = require("../component/driver/teamsApp/utils/utils");
|
|
36
|
+
require("../component/feature/sso");
|
|
35
37
|
const helper_1 = require("../component/generator/copilotPlugin/helper");
|
|
36
38
|
const envMW_1 = require("../component/middleware/envMW");
|
|
37
39
|
const questionMW_1 = require("../component/middleware/questionMW");
|
|
@@ -44,10 +46,11 @@ const settingsUtil_1 = require("../component/utils/settingsUtil");
|
|
|
44
46
|
const common_2 = require("../error/common");
|
|
45
47
|
const upgrade_1 = require("../error/upgrade");
|
|
46
48
|
const yml_1 = require("../error/yml");
|
|
49
|
+
const question_1 = require("../question");
|
|
50
|
+
const constants_3 = require("../question/constants");
|
|
47
51
|
const create_1 = require("../question/create");
|
|
48
52
|
const other_1 = require("../question/other");
|
|
49
53
|
const questionNames_1 = require("../question/questionNames");
|
|
50
|
-
const constants_3 = require("../question/constants");
|
|
51
54
|
const callback_1 = require("./callback");
|
|
52
55
|
const collaborator_1 = require("./collaborator");
|
|
53
56
|
const crypto_1 = require("./crypto");
|
|
@@ -60,7 +63,10 @@ const errorHandler_1 = require("./middleware/errorHandler");
|
|
|
60
63
|
const projectMigratorV3_1 = require("./middleware/projectMigratorV3");
|
|
61
64
|
const v3MigrationUtils_1 = require("./middleware/utils/v3MigrationUtils");
|
|
62
65
|
const telemetry_2 = require("./telemetry");
|
|
63
|
-
require("../component/
|
|
66
|
+
const results_1 = require("../component/driver/teamsApp/results");
|
|
67
|
+
const errors_1 = require("../component/driver/teamsApp/errors");
|
|
68
|
+
const CopilotGptManifestUtils_1 = require("../component/driver/teamsApp/utils/CopilotGptManifestUtils");
|
|
69
|
+
const actionInjector_1 = require("../component/configManager/actionInjector");
|
|
64
70
|
class FxCore {
|
|
65
71
|
constructor(tools) {
|
|
66
72
|
globalVars_1.setTools(tools);
|
|
@@ -74,6 +80,9 @@ class FxCore {
|
|
|
74
80
|
}
|
|
75
81
|
async createProject(inputs) {
|
|
76
82
|
const context = utils_2.createContextV3();
|
|
83
|
+
if (inputs[questionNames_1.QuestionNames.ProjectType] === question_1.ProjectTypeOptions.startWithGithubCopilot().id) {
|
|
84
|
+
return teamsfx_api_1.ok({ projectPath: "", shouldInvokeTeamsAgent: true });
|
|
85
|
+
}
|
|
77
86
|
inputs[questionNames_1.QuestionNames.Scratch] = create_1.ScratchOptions.yes().id;
|
|
78
87
|
if (inputs.teamsAppFromTdp) {
|
|
79
88
|
// should never happen as we do same check on Developer Portal.
|
|
@@ -91,6 +100,39 @@ class FxCore {
|
|
|
91
100
|
inputs.projectPath = context.projectPath;
|
|
92
101
|
return res;
|
|
93
102
|
}
|
|
103
|
+
async createProjectByCustomizedGenerator(inputs, generator) {
|
|
104
|
+
//1. input validation
|
|
105
|
+
let folder = inputs["folder"];
|
|
106
|
+
if (!folder) {
|
|
107
|
+
return teamsfx_api_1.err(new common_2.MissingRequiredInputError("folder"));
|
|
108
|
+
}
|
|
109
|
+
folder = path.resolve(folder);
|
|
110
|
+
const appName = inputs["app-name"];
|
|
111
|
+
if (undefined === appName)
|
|
112
|
+
return teamsfx_api_1.err(new common_2.MissingRequiredInputError(questionNames_1.QuestionNames.AppName));
|
|
113
|
+
const validateResult = jsonschema.validate(appName, {
|
|
114
|
+
pattern: question_1.AppNamePattern,
|
|
115
|
+
});
|
|
116
|
+
if (validateResult.errors && validateResult.errors.length > 0) {
|
|
117
|
+
return teamsfx_api_1.err(new common_2.InputValidationError(questionNames_1.QuestionNames.AppName, validateResult.errors[0].message));
|
|
118
|
+
}
|
|
119
|
+
const projectPath = path.join(folder, appName);
|
|
120
|
+
//2. run generator
|
|
121
|
+
const context = utils_2.createContextV3();
|
|
122
|
+
const genRes = await generator.run(context, inputs, projectPath);
|
|
123
|
+
if (genRes.isErr())
|
|
124
|
+
return teamsfx_api_1.err(genRes.error);
|
|
125
|
+
//3. ensure unique projectId in teamsapp.yaml (optional)
|
|
126
|
+
const ymlPath = path.join(projectPath, versionMetadata_1.MetadataV3.configFile);
|
|
127
|
+
const result = { projectPath: projectPath };
|
|
128
|
+
if (await fs_extra_1.default.pathExists(ymlPath)) {
|
|
129
|
+
const ensureRes = await coordinator_1.coordinator.ensureTrackingId(projectPath, inputs.projectId);
|
|
130
|
+
if (ensureRes.isErr())
|
|
131
|
+
return teamsfx_api_1.err(ensureRes.error);
|
|
132
|
+
result.projectId = ensureRes.value;
|
|
133
|
+
}
|
|
134
|
+
return teamsfx_api_1.ok(result);
|
|
135
|
+
}
|
|
94
136
|
/**
|
|
95
137
|
* lifecycle command: create new sample project
|
|
96
138
|
*/
|
|
@@ -414,7 +456,7 @@ class FxCore {
|
|
|
414
456
|
const teamsAppId = manifestRes.value.id;
|
|
415
457
|
const properties = teamsfx_api_1.ManifestUtil.parseCommonProperties(manifestRes.value);
|
|
416
458
|
const launchHelper = new launchHelper_1.LaunchHelper(globalVars_1.TOOLS.tokenProvider.m365TokenProvider, globalVars_1.TOOLS.logProvider);
|
|
417
|
-
const result = await launchHelper.getLaunchUrl(hub, teamsAppId, properties.capabilities, true
|
|
459
|
+
const result = await launchHelper.getLaunchUrl(hub, teamsAppId, properties.capabilities, true);
|
|
418
460
|
return result;
|
|
419
461
|
}
|
|
420
462
|
/**
|
|
@@ -791,74 +833,42 @@ class FxCore {
|
|
|
791
833
|
const context = utils_2.createContextV3();
|
|
792
834
|
return await coordinator_1.coordinator.publishInDeveloperPortal(context, inputs);
|
|
793
835
|
}
|
|
794
|
-
async injectCreateAPIKeyAction(ymlPath, authName, specRelativePath) {
|
|
795
|
-
var _a;
|
|
796
|
-
const ymlContent = await fs_extra_1.default.readFile(ymlPath, "utf-8");
|
|
797
|
-
const document = yaml_1.parseDocument(ymlContent);
|
|
798
|
-
const provisionNode = document.get("provision");
|
|
799
|
-
if (provisionNode) {
|
|
800
|
-
const hasApiKeyAction = provisionNode.items.some((item) => { var _a; return item.get("uses") === "apiKey/register" && ((_a = item.get("with")) === null || _a === void 0 ? void 0 : _a.get("name")) === authName; });
|
|
801
|
-
if (!hasApiKeyAction) {
|
|
802
|
-
provisionNode.items = provisionNode.items.filter((item) => item.get("uses") !== "apiKey/register");
|
|
803
|
-
let added = false;
|
|
804
|
-
for (let i = 0; i < provisionNode.items.length; i++) {
|
|
805
|
-
const item = provisionNode.items[i];
|
|
806
|
-
if (item.get("uses") === "teamsApp/create") {
|
|
807
|
-
const teamsAppId = (_a = item.get("writeToEnvironmentFile")) === null || _a === void 0 ? void 0 : _a.get("teamsAppId");
|
|
808
|
-
if (teamsAppId) {
|
|
809
|
-
provisionNode.items.splice(i + 1, 0, {
|
|
810
|
-
uses: "apiKey/register",
|
|
811
|
-
with: {
|
|
812
|
-
name: `${authName}`,
|
|
813
|
-
appId: `\${{${teamsAppId}}}`,
|
|
814
|
-
apiSpecPath: specRelativePath,
|
|
815
|
-
},
|
|
816
|
-
writeToEnvironmentFile: {
|
|
817
|
-
registrationId: `${authName.toUpperCase()}_REGISTRATION_ID`,
|
|
818
|
-
},
|
|
819
|
-
});
|
|
820
|
-
added = true;
|
|
821
|
-
break;
|
|
822
|
-
}
|
|
823
|
-
}
|
|
824
|
-
}
|
|
825
|
-
if (!added) {
|
|
826
|
-
throw new common_2.InjectAPIKeyActionFailedError();
|
|
827
|
-
}
|
|
828
|
-
await fs_extra_1.default.writeFile(ymlPath, document.toString(), "utf8");
|
|
829
|
-
}
|
|
830
|
-
}
|
|
831
|
-
else {
|
|
832
|
-
throw new common_2.InjectAPIKeyActionFailedError();
|
|
833
|
-
}
|
|
834
|
-
}
|
|
835
836
|
async copilotPluginAddAPI(inputs) {
|
|
836
837
|
var _a, _b;
|
|
837
838
|
const newOperations = inputs[questionNames_1.QuestionNames.ApiOperation];
|
|
838
839
|
const url = (_a = inputs[questionNames_1.QuestionNames.ApiSpecLocation]) !== null && _a !== void 0 ? _a : (_b = inputs.openAIPluginManifest) === null || _b === void 0 ? void 0 : _b.api.url;
|
|
839
840
|
const manifestPath = inputs[questionNames_1.QuestionNames.ManifestPath];
|
|
840
841
|
const isPlugin = inputs[questionNames_1.QuestionNames.Capabilities] === constants_3.copilotPluginApiSpecOptionId;
|
|
842
|
+
const context = utils_2.createContextV3();
|
|
841
843
|
// Get API spec file path from manifest
|
|
842
844
|
const manifestRes = await ManifestUtils_1.manifestUtils._readAppManifest(manifestPath);
|
|
843
845
|
if (manifestRes.isErr()) {
|
|
844
846
|
return teamsfx_api_1.err(manifestRes.error);
|
|
845
847
|
}
|
|
848
|
+
const confirmRes = await context.userInteraction.showMessage("warn", localizeUtils_1.getLocalizedString("core.addApi.confirm", teamsfx_api_1.AppPackageFolderName), true, localizeUtils_1.getLocalizedString("core.addApi.continue"));
|
|
849
|
+
if (confirmRes.isErr()) {
|
|
850
|
+
return teamsfx_api_1.err(confirmRes.error);
|
|
851
|
+
}
|
|
852
|
+
else if (confirmRes.value !== localizeUtils_1.getLocalizedString("core.addApi.continue")) {
|
|
853
|
+
return teamsfx_api_1.err(new common_2.UserCancelError());
|
|
854
|
+
}
|
|
846
855
|
// Merge existing operations in manifest.json
|
|
847
856
|
const specParser = new m365_spec_parser_1.SpecParser(url, isPlugin
|
|
848
857
|
? helper_1.copilotPluginParserOptions
|
|
849
858
|
: {
|
|
850
|
-
|
|
851
|
-
allowMultipleParameters:
|
|
859
|
+
allowBearerTokenAuth: true,
|
|
860
|
+
allowMultipleParameters: true,
|
|
852
861
|
});
|
|
853
|
-
const
|
|
862
|
+
const listResult = await specParser.list();
|
|
863
|
+
const apiResultList = listResult.APIs.filter((value) => value.isValid);
|
|
854
864
|
let existingOperations;
|
|
855
|
-
let
|
|
865
|
+
let outputApiSpecPath;
|
|
856
866
|
if (isPlugin) {
|
|
857
|
-
existingOperations = await helper_1.listPluginExistingOperations(manifestRes.value, manifestPath, inputs[questionNames_1.QuestionNames.DestinationApiSpecFilePath]);
|
|
858
867
|
if (!inputs[questionNames_1.QuestionNames.DestinationApiSpecFilePath]) {
|
|
859
868
|
return teamsfx_api_1.err(new common_2.MissingRequiredInputError(questionNames_1.QuestionNames.DestinationApiSpecFilePath));
|
|
860
869
|
}
|
|
861
|
-
|
|
870
|
+
outputApiSpecPath = inputs[questionNames_1.QuestionNames.DestinationApiSpecFilePath];
|
|
871
|
+
existingOperations = await helper_1.listPluginExistingOperations(manifestRes.value, manifestPath, inputs[questionNames_1.QuestionNames.DestinationApiSpecFilePath]);
|
|
862
872
|
}
|
|
863
873
|
else {
|
|
864
874
|
const existingOperationIds = ManifestUtils_1.manifestUtils.getOperationIds(manifestRes.value);
|
|
@@ -866,42 +876,60 @@ class FxCore {
|
|
|
866
876
|
.filter((operation) => existingOperationIds.includes(operation.operationId))
|
|
867
877
|
.map((operation) => operation.api);
|
|
868
878
|
const apiSpecificationFile = manifestRes.value.composeExtensions[0].apiSpecificationFile;
|
|
869
|
-
|
|
879
|
+
outputApiSpecPath = path.join(path.dirname(manifestPath), apiSpecificationFile);
|
|
870
880
|
}
|
|
871
881
|
const operations = [...existingOperations, ...newOperations];
|
|
872
882
|
const adaptiveCardFolder = path.join(inputs.projectPath, teamsfx_api_1.AppPackageFolderName, teamsfx_api_1.ResponseTemplatesFolderName);
|
|
873
|
-
const context = utils_2.createContextV3();
|
|
874
883
|
try {
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
if (authNames.size > 1) {
|
|
888
|
-
throw new common_2.MultipleAuthError(authNames);
|
|
884
|
+
const authNames = new Set();
|
|
885
|
+
const serverUrls = new Set();
|
|
886
|
+
let authScheme = undefined;
|
|
887
|
+
for (const api of operations) {
|
|
888
|
+
const operation = apiResultList.find((op) => op.api === api);
|
|
889
|
+
if (operation &&
|
|
890
|
+
operation.auth &&
|
|
891
|
+
(m365_spec_parser_1.Utils.isBearerTokenAuth(operation.auth.authScheme) ||
|
|
892
|
+
m365_spec_parser_1.Utils.isOAuthWithAuthCodeFlow(operation.auth.authScheme))) {
|
|
893
|
+
authNames.add(operation.auth.name);
|
|
894
|
+
serverUrls.add(operation.server);
|
|
895
|
+
authScheme = operation.auth.authScheme;
|
|
889
896
|
}
|
|
890
|
-
|
|
891
|
-
|
|
897
|
+
}
|
|
898
|
+
if (authNames.size > 1) {
|
|
899
|
+
throw new common_2.MultipleAuthError(authNames);
|
|
900
|
+
}
|
|
901
|
+
if (serverUrls.size > 1) {
|
|
902
|
+
throw new common_2.MultipleServerError(serverUrls);
|
|
903
|
+
}
|
|
904
|
+
if (authNames.size === 1 && authScheme) {
|
|
905
|
+
const ymlPath = path.join(inputs.projectPath, versionMetadata_1.MetadataV3.configFile);
|
|
906
|
+
const localYamlPath = path.join(inputs.projectPath, versionMetadata_1.MetadataV3.localConfigFile);
|
|
907
|
+
const authName = [...authNames][0];
|
|
908
|
+
const relativeSpecPath = "./" + path.relative(inputs.projectPath, outputApiSpecPath).replace(/\\/g, "/");
|
|
909
|
+
if (m365_spec_parser_1.Utils.isBearerTokenAuth(authScheme)) {
|
|
910
|
+
await actionInjector_1.ActionInjector.injectCreateAPIKeyAction(ymlPath, authName, relativeSpecPath);
|
|
911
|
+
if (await fs_extra_1.default.pathExists(localYamlPath)) {
|
|
912
|
+
await actionInjector_1.ActionInjector.injectCreateAPIKeyAction(localYamlPath, authName, relativeSpecPath);
|
|
913
|
+
}
|
|
892
914
|
}
|
|
893
|
-
if (
|
|
894
|
-
|
|
895
|
-
const localYamlPath = path.join(inputs.projectPath, versionMetadata_1.MetadataV3.localConfigFile);
|
|
896
|
-
const authName = [...authNames][0];
|
|
897
|
-
const relativeSpecPath = "./" + path.relative(inputs.projectPath, outputAPISpecPath).replace(/\\/g, "/");
|
|
898
|
-
await this.injectCreateAPIKeyAction(ymlPath, authName, relativeSpecPath);
|
|
915
|
+
else if (m365_spec_parser_1.Utils.isOAuthWithAuthCodeFlow(authScheme)) {
|
|
916
|
+
await actionInjector_1.ActionInjector.injectCreateOAuthAction(ymlPath, authName, relativeSpecPath);
|
|
899
917
|
if (await fs_extra_1.default.pathExists(localYamlPath)) {
|
|
900
|
-
await
|
|
918
|
+
await actionInjector_1.ActionInjector.injectCreateOAuthAction(localYamlPath, authName, relativeSpecPath);
|
|
901
919
|
}
|
|
902
920
|
}
|
|
903
921
|
}
|
|
904
|
-
|
|
922
|
+
let generateResult;
|
|
923
|
+
if (!isPlugin) {
|
|
924
|
+
generateResult = await specParser.generate(manifestPath, operations, outputApiSpecPath, adaptiveCardFolder);
|
|
925
|
+
}
|
|
926
|
+
else {
|
|
927
|
+
const pluginPathRes = await ManifestUtils_1.manifestUtils.getPluginFilePath(manifestRes.value, manifestPath);
|
|
928
|
+
if (pluginPathRes.isErr()) {
|
|
929
|
+
return teamsfx_api_1.err(pluginPathRes.error);
|
|
930
|
+
}
|
|
931
|
+
generateResult = await specParser.generateForCopilot(manifestPath, operations, outputApiSpecPath, pluginPathRes.value);
|
|
932
|
+
}
|
|
905
933
|
// Send SpecParser.generate() warnings
|
|
906
934
|
context.telemetryReporter.sendTelemetryEvent(helper_1.specParserGenerateResultTelemetryEvent, {
|
|
907
935
|
[helper_1.specParserGenerateResultAllSuccessTelemetryProperty]: generateResult.allSuccess.toString(),
|
|
@@ -911,7 +939,7 @@ class FxCore {
|
|
|
911
939
|
[telemetry_2.CoreTelemetryProperty.Component]: telemetry_2.CoreTelemetryComponentName,
|
|
912
940
|
});
|
|
913
941
|
if (generateResult.warnings && generateResult.warnings.length > 0) {
|
|
914
|
-
const warnSummary = helper_1.generateScaffoldingSummary(generateResult.warnings, manifestRes.value, inputs.projectPath);
|
|
942
|
+
const warnSummary = helper_1.generateScaffoldingSummary(generateResult.warnings, manifestRes.value, path.relative(inputs.projectPath, outputApiSpecPath));
|
|
915
943
|
context.logProvider.info(warnSummary);
|
|
916
944
|
}
|
|
917
945
|
}
|
|
@@ -926,8 +954,29 @@ class FxCore {
|
|
|
926
954
|
return teamsfx_api_1.err(error);
|
|
927
955
|
}
|
|
928
956
|
const message = localizeUtils_1.getLocalizedString("core.copilot.addAPI.success", newOperations, inputs.projectPath);
|
|
929
|
-
|
|
930
|
-
|
|
957
|
+
if (inputs.platform !== teamsfx_api_1.Platform.VS) {
|
|
958
|
+
void context.userInteraction.showMessage("info", message, false);
|
|
959
|
+
}
|
|
960
|
+
return teamsfx_api_1.ok(message);
|
|
961
|
+
}
|
|
962
|
+
async listPluginApiSpecs(inputs) {
|
|
963
|
+
try {
|
|
964
|
+
const manifestPath = inputs[questionNames_1.QuestionNames.ManifestPath];
|
|
965
|
+
const manifestRes = await ManifestUtils_1.manifestUtils._readAppManifest(manifestPath);
|
|
966
|
+
if (manifestRes.isErr()) {
|
|
967
|
+
return teamsfx_api_1.err(manifestRes.error);
|
|
968
|
+
}
|
|
969
|
+
const res = await PluginManifestUtils_1.pluginManifestUtils.getApiSpecFilePathFromTeamsManifest(manifestRes.value, manifestPath);
|
|
970
|
+
if (res.isOk()) {
|
|
971
|
+
return teamsfx_api_1.ok(res.value);
|
|
972
|
+
}
|
|
973
|
+
else {
|
|
974
|
+
return teamsfx_api_1.err(res.error);
|
|
975
|
+
}
|
|
976
|
+
}
|
|
977
|
+
catch (error) {
|
|
978
|
+
return teamsfx_api_1.err(error);
|
|
979
|
+
}
|
|
931
980
|
}
|
|
932
981
|
async copilotPluginLoadOpenAIManifest(inputs) {
|
|
933
982
|
try {
|
|
@@ -938,7 +987,14 @@ class FxCore {
|
|
|
938
987
|
}
|
|
939
988
|
}
|
|
940
989
|
async copilotPluginListOperations(inputs) {
|
|
941
|
-
|
|
990
|
+
const res = await helper_1.listOperations(utils_2.createContextV3(), inputs.manifest, inputs.apiSpecUrl, inputs, inputs.includeExistingAPIs, inputs.shouldLogWarning);
|
|
991
|
+
if (res.isErr()) {
|
|
992
|
+
const msg = res.error.map((e) => e.content).join("\n");
|
|
993
|
+
return teamsfx_api_1.err(new teamsfx_api_1.UserError("FxCore", "ListOpenAPISpecOperationsError", msg, msg));
|
|
994
|
+
}
|
|
995
|
+
else {
|
|
996
|
+
return teamsfx_api_1.ok(res.value);
|
|
997
|
+
}
|
|
942
998
|
}
|
|
943
999
|
/**
|
|
944
1000
|
* check project type info
|
|
@@ -951,6 +1007,142 @@ class FxCore {
|
|
|
951
1007
|
(_a = globalVars_1.TOOLS.telemetryReporter) === null || _a === void 0 ? void 0 : _a.sendTelemetryEvent(telemetry_1.TelemetryEvent.ProjectType, props);
|
|
952
1008
|
return teamsfx_api_1.ok(projectTypeRes);
|
|
953
1009
|
}
|
|
1010
|
+
/**
|
|
1011
|
+
* Add plugin
|
|
1012
|
+
*/
|
|
1013
|
+
async addPlugin(inputs) {
|
|
1014
|
+
var _a, _b, _c, _d;
|
|
1015
|
+
if (!inputs.projectPath) {
|
|
1016
|
+
throw new Error("projectPath is undefined"); // should never happen
|
|
1017
|
+
}
|
|
1018
|
+
const operations = inputs[questionNames_1.QuestionNames.ApiOperation];
|
|
1019
|
+
const url = inputs[questionNames_1.QuestionNames.ApiSpecLocation];
|
|
1020
|
+
const manifestPath = inputs[questionNames_1.QuestionNames.ManifestPath];
|
|
1021
|
+
const appPackageFolder = path.dirname(manifestPath);
|
|
1022
|
+
const apiSpecFolder = path.join(appPackageFolder, helper_1.defaultApiSpecFolderName);
|
|
1023
|
+
const needAddAction = inputs[questionNames_1.QuestionNames.PluginAvailability] === other_1.PluginAvailabilityOptions.action().id ||
|
|
1024
|
+
inputs[questionNames_1.QuestionNames.PluginAvailability] ===
|
|
1025
|
+
other_1.PluginAvailabilityOptions.copilotPluginAndAction().id;
|
|
1026
|
+
const needAddCopilotPlugin = inputs[questionNames_1.QuestionNames.PluginAvailability] === other_1.PluginAvailabilityOptions.copilotPlugin().id ||
|
|
1027
|
+
inputs[questionNames_1.QuestionNames.PluginAvailability] ===
|
|
1028
|
+
other_1.PluginAvailabilityOptions.copilotPluginAndAction().id;
|
|
1029
|
+
// validate the project is valid for adding plugin
|
|
1030
|
+
const manifestRes = await ManifestUtils_1.manifestUtils._readAppManifest(manifestPath);
|
|
1031
|
+
if (manifestRes.isErr()) {
|
|
1032
|
+
return teamsfx_api_1.err(manifestRes.error);
|
|
1033
|
+
}
|
|
1034
|
+
const teamsManifest = manifestRes.value;
|
|
1035
|
+
const declarativeGpt = (_b = (_a = teamsManifest.copilotExtensions) === null || _a === void 0 ? void 0 : _a.declarativeCopilots) === null || _b === void 0 ? void 0 : _b[0];
|
|
1036
|
+
if (!(declarativeGpt === null || declarativeGpt === void 0 ? void 0 : declarativeGpt.file)) {
|
|
1037
|
+
return teamsfx_api_1.err(results_1.AppStudioResultFactory.UserError(errors_1.AppStudioError.TeamsAppRequiredPropertyMissingError.name, errors_1.AppStudioError.TeamsAppRequiredPropertyMissingError.message("declarativeCopilots", manifestPath)));
|
|
1038
|
+
}
|
|
1039
|
+
const gptManifestFilePath = path.join(appPackageFolder, declarativeGpt.file);
|
|
1040
|
+
const gptManifestRes = await CopilotGptManifestUtils_1.copilotGptManifestUtils.readCopilotGptManifestFile(gptManifestFilePath);
|
|
1041
|
+
if (gptManifestRes.isErr()) {
|
|
1042
|
+
return teamsfx_api_1.err(gptManifestRes.error);
|
|
1043
|
+
}
|
|
1044
|
+
const gptManifest = gptManifestRes.value;
|
|
1045
|
+
const context = utils_2.createContextV3();
|
|
1046
|
+
// confirm
|
|
1047
|
+
const confirmRes = await context.userInteraction.showMessage("warn", localizeUtils_1.getLocalizedString("core.addApi.confirm", path.relative(inputs.projectPath, appPackageFolder)), true, localizeUtils_1.getLocalizedString("core.addApi.continue"));
|
|
1048
|
+
if (confirmRes.isErr()) {
|
|
1049
|
+
return teamsfx_api_1.err(confirmRes.error);
|
|
1050
|
+
}
|
|
1051
|
+
else if (confirmRes.value !== localizeUtils_1.getLocalizedString("core.addApi.continue")) {
|
|
1052
|
+
return teamsfx_api_1.err(new common_2.UserCancelError());
|
|
1053
|
+
}
|
|
1054
|
+
// generate file path
|
|
1055
|
+
let isYaml;
|
|
1056
|
+
try {
|
|
1057
|
+
isYaml = await helper_1.isYamlSpecFile(url);
|
|
1058
|
+
}
|
|
1059
|
+
catch (e) {
|
|
1060
|
+
isYaml = false;
|
|
1061
|
+
}
|
|
1062
|
+
await fs_extra_1.default.ensureDir(apiSpecFolder);
|
|
1063
|
+
let openApiSpecFileName = isYaml ? helper_1.defaultApiSpecYamlFileName : helper_1.defaultApiSpecJsonFileName;
|
|
1064
|
+
const openApiSpecFileNamePrefix = openApiSpecFileName.split(".")[0];
|
|
1065
|
+
const openApiSpecFileType = openApiSpecFileName.split(".")[1];
|
|
1066
|
+
let apiSpecFileNameSuffix = 1;
|
|
1067
|
+
while (await fs_extra_1.default.pathExists(path.join(apiSpecFolder, openApiSpecFileName))) {
|
|
1068
|
+
openApiSpecFileName = `${openApiSpecFileNamePrefix}_${apiSpecFileNameSuffix++}.${openApiSpecFileType}`;
|
|
1069
|
+
}
|
|
1070
|
+
const openApiSpecFilePath = path.join(apiSpecFolder, openApiSpecFileName);
|
|
1071
|
+
let pluginManifestName = helper_1.defaultPluginManifestFileName;
|
|
1072
|
+
const pluginManifestNamePrefix = helper_1.defaultPluginManifestFileName.split(".")[0];
|
|
1073
|
+
let pluginFileNameSuffix = 1;
|
|
1074
|
+
while (await fs_extra_1.default.pathExists(path.join(appPackageFolder, pluginManifestName))) {
|
|
1075
|
+
pluginManifestName = `${pluginManifestNamePrefix}_${pluginFileNameSuffix++}.json`;
|
|
1076
|
+
}
|
|
1077
|
+
const pluginManifestFilePath = path.join(appPackageFolder, pluginManifestName);
|
|
1078
|
+
// generate plugin related files
|
|
1079
|
+
const specParser = new m365_spec_parser_1.SpecParser(url, Object.assign(Object.assign({}, helper_1.copilotPluginParserOptions), { isGptPlugin: true }));
|
|
1080
|
+
try {
|
|
1081
|
+
const generateResult = await specParser.generateForCopilot(manifestPath, operations, openApiSpecFilePath, pluginManifestFilePath);
|
|
1082
|
+
// Send SpecParser.generate() warnings
|
|
1083
|
+
context.telemetryReporter.sendTelemetryEvent(helper_1.specParserGenerateResultTelemetryEvent, {
|
|
1084
|
+
[helper_1.specParserGenerateResultAllSuccessTelemetryProperty]: generateResult.allSuccess.toString(),
|
|
1085
|
+
[helper_1.specParserGenerateResultWarningsTelemetryProperty]: generateResult.warnings
|
|
1086
|
+
.map((w) => w.type.toString() + ": " + w.content)
|
|
1087
|
+
.join(";"),
|
|
1088
|
+
[telemetry_2.CoreTelemetryProperty.Component]: telemetry_2.CoreTelemetryComponentName,
|
|
1089
|
+
});
|
|
1090
|
+
if (generateResult.warnings && generateResult.warnings.length > 0) {
|
|
1091
|
+
const warnSummary = helper_1.generateScaffoldingSummary(generateResult.warnings, manifestRes.value, path.relative(inputs.projectPath, openApiSpecFilePath));
|
|
1092
|
+
context.logProvider.info(warnSummary);
|
|
1093
|
+
}
|
|
1094
|
+
}
|
|
1095
|
+
catch (e) {
|
|
1096
|
+
let error;
|
|
1097
|
+
if (e instanceof m365_spec_parser_1.SpecParserError) {
|
|
1098
|
+
error = helper_1.convertSpecParserErrorToFxError(e);
|
|
1099
|
+
}
|
|
1100
|
+
else {
|
|
1101
|
+
error = common_2.assembleError(e);
|
|
1102
|
+
}
|
|
1103
|
+
return teamsfx_api_1.err(error);
|
|
1104
|
+
}
|
|
1105
|
+
// update Teams manifest
|
|
1106
|
+
if (needAddCopilotPlugin) {
|
|
1107
|
+
const plugins = ((_c = teamsManifest.copilotExtensions) === null || _c === void 0 ? void 0 : _c.plugins) || [];
|
|
1108
|
+
plugins.push({
|
|
1109
|
+
id: "plugin_1",
|
|
1110
|
+
file: pluginManifestName,
|
|
1111
|
+
});
|
|
1112
|
+
teamsManifest.copilotExtensions = Object.assign(Object.assign({}, teamsManifest.copilotExtensions), { plugins });
|
|
1113
|
+
const updateManifestRes = await ManifestUtils_1.manifestUtils._writeAppManifest(teamsManifest, manifestPath);
|
|
1114
|
+
if (updateManifestRes.isErr()) {
|
|
1115
|
+
return teamsfx_api_1.err(updateManifestRes.error);
|
|
1116
|
+
}
|
|
1117
|
+
}
|
|
1118
|
+
// update GPT manifest
|
|
1119
|
+
let actionId = "";
|
|
1120
|
+
if (needAddAction) {
|
|
1121
|
+
let suffix = 1;
|
|
1122
|
+
actionId = `action_${suffix}`;
|
|
1123
|
+
const existingActionIds = (_d = gptManifest.actions) === null || _d === void 0 ? void 0 : _d.map((action) => action.id);
|
|
1124
|
+
while (existingActionIds === null || existingActionIds === void 0 ? void 0 : existingActionIds.includes(actionId)) {
|
|
1125
|
+
suffix += 1;
|
|
1126
|
+
actionId = `action_${suffix}`;
|
|
1127
|
+
}
|
|
1128
|
+
const addActionRes = await CopilotGptManifestUtils_1.copilotGptManifestUtils.addAction(gptManifestFilePath, actionId, pluginManifestName);
|
|
1129
|
+
if (addActionRes.isErr()) {
|
|
1130
|
+
return teamsfx_api_1.err(addActionRes.error);
|
|
1131
|
+
}
|
|
1132
|
+
}
|
|
1133
|
+
let successMessage = "";
|
|
1134
|
+
if (needAddAction && needAddCopilotPlugin) {
|
|
1135
|
+
successMessage = localizeUtils_1.getLocalizedString("core.addActionAndPlugin.success", actionId, "plugin_1");
|
|
1136
|
+
}
|
|
1137
|
+
else if (needAddAction) {
|
|
1138
|
+
successMessage = localizeUtils_1.getLocalizedString("core.addAction.success", actionId);
|
|
1139
|
+
}
|
|
1140
|
+
else if (needAddCopilotPlugin) {
|
|
1141
|
+
successMessage = localizeUtils_1.getLocalizedString("core.addPlugin.success", "plugin_1");
|
|
1142
|
+
}
|
|
1143
|
+
void context.userInteraction.showMessage("info", successMessage, false);
|
|
1144
|
+
return teamsfx_api_1.ok(undefined);
|
|
1145
|
+
}
|
|
954
1146
|
}
|
|
955
1147
|
tslib_1.__decorate([
|
|
956
1148
|
hooks_1.hooks([
|
|
@@ -962,6 +1154,19 @@ tslib_1.__decorate([
|
|
|
962
1154
|
tslib_1.__metadata("design:paramtypes", [Object]),
|
|
963
1155
|
tslib_1.__metadata("design:returntype", Promise)
|
|
964
1156
|
], FxCore.prototype, "createProject", null);
|
|
1157
|
+
tslib_1.__decorate([
|
|
1158
|
+
hooks_1.hooks([
|
|
1159
|
+
globalVars_1.ErrorContextMW({
|
|
1160
|
+
component: "FxCore",
|
|
1161
|
+
stage: "createProjectByCustomizedGenerator",
|
|
1162
|
+
reset: true,
|
|
1163
|
+
}),
|
|
1164
|
+
errorHandler_1.ErrorHandlerMW,
|
|
1165
|
+
]),
|
|
1166
|
+
tslib_1.__metadata("design:type", Function),
|
|
1167
|
+
tslib_1.__metadata("design:paramtypes", [Object, Object]),
|
|
1168
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
1169
|
+
], FxCore.prototype, "createProjectByCustomizedGenerator", null);
|
|
965
1170
|
tslib_1.__decorate([
|
|
966
1171
|
hooks_1.hooks([
|
|
967
1172
|
globalVars_1.ErrorContextMW({ component: "FxCore", stage: "createSampleProject", reset: true }),
|
|
@@ -1374,6 +1579,15 @@ tslib_1.__decorate([
|
|
|
1374
1579
|
tslib_1.__metadata("design:paramtypes", [Object]),
|
|
1375
1580
|
tslib_1.__metadata("design:returntype", Promise)
|
|
1376
1581
|
], FxCore.prototype, "copilotPluginAddAPI", null);
|
|
1582
|
+
tslib_1.__decorate([
|
|
1583
|
+
hooks_1.hooks([
|
|
1584
|
+
globalVars_1.ErrorContextMW({ component: "FxCore", stage: "copilotPluginListApiSpecs" }),
|
|
1585
|
+
errorHandler_1.ErrorHandlerMW,
|
|
1586
|
+
]),
|
|
1587
|
+
tslib_1.__metadata("design:type", Function),
|
|
1588
|
+
tslib_1.__metadata("design:paramtypes", [Object]),
|
|
1589
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
1590
|
+
], FxCore.prototype, "listPluginApiSpecs", null);
|
|
1377
1591
|
tslib_1.__decorate([
|
|
1378
1592
|
hooks_1.hooks([
|
|
1379
1593
|
globalVars_1.ErrorContextMW({ component: "FxCore", stage: "copilotPluginLoadOpenAIManifest" }),
|
|
@@ -1398,5 +1612,16 @@ tslib_1.__decorate([
|
|
|
1398
1612
|
tslib_1.__metadata("design:paramtypes", [String]),
|
|
1399
1613
|
tslib_1.__metadata("design:returntype", Promise)
|
|
1400
1614
|
], FxCore.prototype, "checkProjectType", null);
|
|
1615
|
+
tslib_1.__decorate([
|
|
1616
|
+
hooks_1.hooks([
|
|
1617
|
+
globalVars_1.ErrorContextMW({ component: "FxCore", stage: "addPlugin" }),
|
|
1618
|
+
errorHandler_1.ErrorHandlerMW,
|
|
1619
|
+
questionMW_1.QuestionMW("addPlugin"),
|
|
1620
|
+
concurrentLocker_1.ConcurrentLockerMW,
|
|
1621
|
+
]),
|
|
1622
|
+
tslib_1.__metadata("design:type", Function),
|
|
1623
|
+
tslib_1.__metadata("design:paramtypes", [Object]),
|
|
1624
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
1625
|
+
], FxCore.prototype, "addPlugin", null);
|
|
1401
1626
|
exports.FxCore = FxCore;
|
|
1402
1627
|
//# sourceMappingURL=FxCore.js.map
|