@microsoft/teamsfx-core 2.0.8-alpha.e17ffd4d1.0 → 2.0.8-alpha.e1b11d5b2.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/common/constants.d.ts +6 -19
- package/build/common/constants.d.ts.map +1 -1
- package/build/common/constants.js +6 -20
- 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 +70 -7
- package/build/common/featureFlags.d.ts.map +1 -1
- package/build/common/featureFlags.js +66 -42
- 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 +3 -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 +18 -39
- package/build/common/m365/packageService.js.map +1 -1
- package/build/common/projectSettingsHelper.d.ts +7 -2
- package/build/common/projectSettingsHelper.d.ts.map +1 -1
- package/build/common/projectSettingsHelper.js +25 -7
- package/build/common/projectSettingsHelper.js.map +1 -1
- package/build/common/projectTypeChecker.d.ts +2 -0
- package/build/common/projectTypeChecker.d.ts.map +1 -1
- package/build/common/projectTypeChecker.js +16 -0
- package/build/common/projectTypeChecker.js.map +1 -1
- package/build/common/samples.d.ts +1 -2
- package/build/common/samples.d.ts.map +1 -1
- package/build/common/samples.js +37 -83
- package/build/common/samples.js.map +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 +20 -2
- package/build/common/telemetry.d.ts.map +1 -1
- package/build/common/telemetry.js +43 -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/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 +133 -199
- 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 +97 -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 +3 -15
- 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 +156 -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 +16 -2
- package/build/component/generator/officeAddin/generator.d.ts.map +1 -1
- package/build/component/generator/officeAddin/generator.js +96 -44
- 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 +6 -2
- package/build/component/generator/officeXMLAddin/generator.d.ts.map +1 -1
- package/build/component/generator/officeXMLAddin/generator.js +39 -19
- package/build/component/generator/officeXMLAddin/generator.js.map +1 -1
- package/build/component/generator/officeXMLAddin/projectConfig.d.ts +21 -33
- package/build/component/generator/officeXMLAddin/projectConfig.d.ts.map +1 -1
- package/build/component/generator/officeXMLAddin/projectConfig.js +85 -86
- 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 -5
- package/build/core/FxCore.d.ts.map +1 -1
- package/build/core/FxCore.js +287 -26
- package/build/core/FxCore.js.map +1 -1
- package/build/error/common.js +1 -1
- 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 +24 -9
- package/build/question/create.d.ts.map +1 -1
- package/build/question/create.js +410 -240
- 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 +9 -7
- 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 +41 -13
- 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 +169 -8
- package/build/question/other.js.map +1 -1
- package/build/question/questionNames.d.ts +6 -2
- package/build/question/questionNames.d.ts.map +1 -1
- package/build/question/questionNames.js +5 -1
- package/build/question/questionNames.js.map +1 -1
- package/package.json +16 -11
- package/resource/package.nls.json +138 -79
- 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/component/generator/officeAddin/config/projectsJsonData.d.ts +0 -26
- package/build/component/generator/officeAddin/config/projectsJsonData.d.ts.map +0 -1
- package/build/component/generator/officeAddin/config/projectsJsonData.js +0 -165
- package/build/component/generator/officeAddin/config/projectsJsonData.js.map +0 -1
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,9 @@ 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");
|
|
64
69
|
class FxCore {
|
|
65
70
|
constructor(tools) {
|
|
66
71
|
globalVars_1.setTools(tools);
|
|
@@ -74,6 +79,9 @@ class FxCore {
|
|
|
74
79
|
}
|
|
75
80
|
async createProject(inputs) {
|
|
76
81
|
const context = utils_2.createContextV3();
|
|
82
|
+
if (inputs[questionNames_1.QuestionNames.ProjectType] === question_1.ProjectTypeOptions.startWithGithubCopilot().id) {
|
|
83
|
+
return teamsfx_api_1.ok({ projectPath: "", shouldInvokeTeamsAgent: true });
|
|
84
|
+
}
|
|
77
85
|
inputs[questionNames_1.QuestionNames.Scratch] = create_1.ScratchOptions.yes().id;
|
|
78
86
|
if (inputs.teamsAppFromTdp) {
|
|
79
87
|
// should never happen as we do same check on Developer Portal.
|
|
@@ -91,6 +99,39 @@ class FxCore {
|
|
|
91
99
|
inputs.projectPath = context.projectPath;
|
|
92
100
|
return res;
|
|
93
101
|
}
|
|
102
|
+
async createProjectByCustomizedGenerator(inputs, generator) {
|
|
103
|
+
//1. input validation
|
|
104
|
+
let folder = inputs["folder"];
|
|
105
|
+
if (!folder) {
|
|
106
|
+
return teamsfx_api_1.err(new common_2.MissingRequiredInputError("folder"));
|
|
107
|
+
}
|
|
108
|
+
folder = path.resolve(folder);
|
|
109
|
+
const appName = inputs["app-name"];
|
|
110
|
+
if (undefined === appName)
|
|
111
|
+
return teamsfx_api_1.err(new common_2.MissingRequiredInputError(questionNames_1.QuestionNames.AppName));
|
|
112
|
+
const validateResult = jsonschema.validate(appName, {
|
|
113
|
+
pattern: question_1.AppNamePattern,
|
|
114
|
+
});
|
|
115
|
+
if (validateResult.errors && validateResult.errors.length > 0) {
|
|
116
|
+
return teamsfx_api_1.err(new common_2.InputValidationError(questionNames_1.QuestionNames.AppName, validateResult.errors[0].message));
|
|
117
|
+
}
|
|
118
|
+
const projectPath = path.join(folder, appName);
|
|
119
|
+
//2. run generator
|
|
120
|
+
const context = utils_2.createContextV3();
|
|
121
|
+
const genRes = await generator.run(context, inputs, projectPath);
|
|
122
|
+
if (genRes.isErr())
|
|
123
|
+
return teamsfx_api_1.err(genRes.error);
|
|
124
|
+
//3. ensure unique projectId in teamsapp.yaml (optional)
|
|
125
|
+
const ymlPath = path.join(projectPath, versionMetadata_1.MetadataV3.configFile);
|
|
126
|
+
const result = { projectPath: projectPath };
|
|
127
|
+
if (await fs_extra_1.default.pathExists(ymlPath)) {
|
|
128
|
+
const ensureRes = await coordinator_1.coordinator.ensureTrackingId(projectPath, inputs.projectId);
|
|
129
|
+
if (ensureRes.isErr())
|
|
130
|
+
return teamsfx_api_1.err(ensureRes.error);
|
|
131
|
+
result.projectId = ensureRes.value;
|
|
132
|
+
}
|
|
133
|
+
return teamsfx_api_1.ok(result);
|
|
134
|
+
}
|
|
94
135
|
/**
|
|
95
136
|
* lifecycle command: create new sample project
|
|
96
137
|
*/
|
|
@@ -414,7 +455,7 @@ class FxCore {
|
|
|
414
455
|
const teamsAppId = manifestRes.value.id;
|
|
415
456
|
const properties = teamsfx_api_1.ManifestUtil.parseCommonProperties(manifestRes.value);
|
|
416
457
|
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
|
|
458
|
+
const result = await launchHelper.getLaunchUrl(hub, teamsAppId, properties.capabilities, true);
|
|
418
459
|
return result;
|
|
419
460
|
}
|
|
420
461
|
/**
|
|
@@ -639,6 +680,9 @@ class FxCore {
|
|
|
639
680
|
if (match[1].startsWith("TEAMSFX_ENV=")) {
|
|
640
681
|
writeStream.write(`TEAMSFX_ENV=${targetEnvName}${os.EOL}`);
|
|
641
682
|
}
|
|
683
|
+
else if (match[1].startsWith("APP_NAME_SUFFIX=")) {
|
|
684
|
+
writeStream.write(`APP_NAME_SUFFIX=${targetEnvName}${os.EOL}`);
|
|
685
|
+
}
|
|
642
686
|
else {
|
|
643
687
|
writeStream.write(`${match[1]}${os.EOL}`);
|
|
644
688
|
}
|
|
@@ -803,6 +847,7 @@ class FxCore {
|
|
|
803
847
|
if (item.get("uses") === "teamsApp/create") {
|
|
804
848
|
const teamsAppId = (_a = item.get("writeToEnvironmentFile")) === null || _a === void 0 ? void 0 : _a.get("teamsAppId");
|
|
805
849
|
if (teamsAppId) {
|
|
850
|
+
const envName = m365_spec_parser_1.Utils.getSafeRegistrationIdEnvName(`${authName}_REGISTRATION_ID`);
|
|
806
851
|
provisionNode.items.splice(i + 1, 0, {
|
|
807
852
|
uses: "apiKey/register",
|
|
808
853
|
with: {
|
|
@@ -811,7 +856,7 @@ class FxCore {
|
|
|
811
856
|
apiSpecPath: specRelativePath,
|
|
812
857
|
},
|
|
813
858
|
writeToEnvironmentFile: {
|
|
814
|
-
registrationId:
|
|
859
|
+
registrationId: envName,
|
|
815
860
|
},
|
|
816
861
|
});
|
|
817
862
|
added = true;
|
|
@@ -835,27 +880,36 @@ class FxCore {
|
|
|
835
880
|
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;
|
|
836
881
|
const manifestPath = inputs[questionNames_1.QuestionNames.ManifestPath];
|
|
837
882
|
const isPlugin = inputs[questionNames_1.QuestionNames.Capabilities] === constants_3.copilotPluginApiSpecOptionId;
|
|
883
|
+
const context = utils_2.createContextV3();
|
|
838
884
|
// Get API spec file path from manifest
|
|
839
885
|
const manifestRes = await ManifestUtils_1.manifestUtils._readAppManifest(manifestPath);
|
|
840
886
|
if (manifestRes.isErr()) {
|
|
841
887
|
return teamsfx_api_1.err(manifestRes.error);
|
|
842
888
|
}
|
|
889
|
+
const confirmRes = await context.userInteraction.showMessage("warn", localizeUtils_1.getLocalizedString("core.addApi.confirm", teamsfx_api_1.AppPackageFolderName), true, localizeUtils_1.getLocalizedString("core.addApi.continue"));
|
|
890
|
+
if (confirmRes.isErr()) {
|
|
891
|
+
return teamsfx_api_1.err(confirmRes.error);
|
|
892
|
+
}
|
|
893
|
+
else if (confirmRes.value !== localizeUtils_1.getLocalizedString("core.addApi.continue")) {
|
|
894
|
+
return teamsfx_api_1.err(new common_2.UserCancelError());
|
|
895
|
+
}
|
|
843
896
|
// Merge existing operations in manifest.json
|
|
844
897
|
const specParser = new m365_spec_parser_1.SpecParser(url, isPlugin
|
|
845
898
|
? helper_1.copilotPluginParserOptions
|
|
846
899
|
: {
|
|
847
|
-
|
|
848
|
-
allowMultipleParameters:
|
|
900
|
+
allowBearerTokenAuth: true,
|
|
901
|
+
allowMultipleParameters: true,
|
|
849
902
|
});
|
|
850
|
-
const
|
|
903
|
+
const listResult = await specParser.list();
|
|
904
|
+
const apiResultList = listResult.APIs.filter((value) => value.isValid);
|
|
851
905
|
let existingOperations;
|
|
852
|
-
let
|
|
906
|
+
let outputApiSpecPath;
|
|
853
907
|
if (isPlugin) {
|
|
854
|
-
existingOperations = await helper_1.listPluginExistingOperations(manifestRes.value, manifestPath, inputs[questionNames_1.QuestionNames.DestinationApiSpecFilePath]);
|
|
855
908
|
if (!inputs[questionNames_1.QuestionNames.DestinationApiSpecFilePath]) {
|
|
856
909
|
return teamsfx_api_1.err(new common_2.MissingRequiredInputError(questionNames_1.QuestionNames.DestinationApiSpecFilePath));
|
|
857
910
|
}
|
|
858
|
-
|
|
911
|
+
outputApiSpecPath = inputs[questionNames_1.QuestionNames.DestinationApiSpecFilePath];
|
|
912
|
+
existingOperations = await helper_1.listPluginExistingOperations(manifestRes.value, manifestPath, inputs[questionNames_1.QuestionNames.DestinationApiSpecFilePath]);
|
|
859
913
|
}
|
|
860
914
|
else {
|
|
861
915
|
const existingOperationIds = ManifestUtils_1.manifestUtils.getOperationIds(manifestRes.value);
|
|
@@ -863,22 +917,23 @@ class FxCore {
|
|
|
863
917
|
.filter((operation) => existingOperationIds.includes(operation.operationId))
|
|
864
918
|
.map((operation) => operation.api);
|
|
865
919
|
const apiSpecificationFile = manifestRes.value.composeExtensions[0].apiSpecificationFile;
|
|
866
|
-
|
|
920
|
+
outputApiSpecPath = path.join(path.dirname(manifestPath), apiSpecificationFile);
|
|
867
921
|
}
|
|
868
922
|
const operations = [...existingOperations, ...newOperations];
|
|
869
923
|
const adaptiveCardFolder = path.join(inputs.projectPath, teamsfx_api_1.AppPackageFolderName, teamsfx_api_1.ResponseTemplatesFolderName);
|
|
870
|
-
const context = utils_2.createContextV3();
|
|
871
924
|
try {
|
|
872
|
-
|
|
925
|
+
// TODO: type b will support auth
|
|
926
|
+
if (!isPlugin) {
|
|
873
927
|
const authNames = new Set();
|
|
874
928
|
const serverUrls = new Set();
|
|
875
929
|
for (const api of operations) {
|
|
876
930
|
const operation = apiResultList.find((op) => op.api === api);
|
|
877
|
-
if (operation
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
931
|
+
if (operation &&
|
|
932
|
+
operation.auth &&
|
|
933
|
+
(m365_spec_parser_1.Utils.isBearerTokenAuth(operation.auth.authScheme) ||
|
|
934
|
+
m365_spec_parser_1.Utils.isOAuthWithAuthCodeFlow(operation.auth.authScheme))) {
|
|
935
|
+
authNames.add(operation.auth.name);
|
|
936
|
+
serverUrls.add(operation.server);
|
|
882
937
|
}
|
|
883
938
|
}
|
|
884
939
|
if (authNames.size > 1) {
|
|
@@ -891,14 +946,24 @@ class FxCore {
|
|
|
891
946
|
const ymlPath = path.join(inputs.projectPath, versionMetadata_1.MetadataV3.configFile);
|
|
892
947
|
const localYamlPath = path.join(inputs.projectPath, versionMetadata_1.MetadataV3.localConfigFile);
|
|
893
948
|
const authName = [...authNames][0];
|
|
894
|
-
const relativeSpecPath = "./" + path.relative(inputs.projectPath,
|
|
949
|
+
const relativeSpecPath = "./" + path.relative(inputs.projectPath, outputApiSpecPath).replace(/\\/g, "/");
|
|
895
950
|
await this.injectCreateAPIKeyAction(ymlPath, authName, relativeSpecPath);
|
|
896
951
|
if (await fs_extra_1.default.pathExists(localYamlPath)) {
|
|
897
952
|
await this.injectCreateAPIKeyAction(localYamlPath, authName, relativeSpecPath);
|
|
898
953
|
}
|
|
899
954
|
}
|
|
900
955
|
}
|
|
901
|
-
|
|
956
|
+
let generateResult;
|
|
957
|
+
if (!isPlugin) {
|
|
958
|
+
generateResult = await specParser.generate(manifestPath, operations, outputApiSpecPath, adaptiveCardFolder);
|
|
959
|
+
}
|
|
960
|
+
else {
|
|
961
|
+
const pluginPathRes = await ManifestUtils_1.manifestUtils.getPluginFilePath(manifestRes.value, manifestPath);
|
|
962
|
+
if (pluginPathRes.isErr()) {
|
|
963
|
+
return teamsfx_api_1.err(pluginPathRes.error);
|
|
964
|
+
}
|
|
965
|
+
generateResult = await specParser.generateForCopilot(manifestPath, operations, outputApiSpecPath, pluginPathRes.value);
|
|
966
|
+
}
|
|
902
967
|
// Send SpecParser.generate() warnings
|
|
903
968
|
context.telemetryReporter.sendTelemetryEvent(helper_1.specParserGenerateResultTelemetryEvent, {
|
|
904
969
|
[helper_1.specParserGenerateResultAllSuccessTelemetryProperty]: generateResult.allSuccess.toString(),
|
|
@@ -908,7 +973,7 @@ class FxCore {
|
|
|
908
973
|
[telemetry_2.CoreTelemetryProperty.Component]: telemetry_2.CoreTelemetryComponentName,
|
|
909
974
|
});
|
|
910
975
|
if (generateResult.warnings && generateResult.warnings.length > 0) {
|
|
911
|
-
const warnSummary = helper_1.generateScaffoldingSummary(generateResult.warnings, manifestRes.value, inputs.projectPath);
|
|
976
|
+
const warnSummary = helper_1.generateScaffoldingSummary(generateResult.warnings, manifestRes.value, path.relative(inputs.projectPath, outputApiSpecPath));
|
|
912
977
|
context.logProvider.info(warnSummary);
|
|
913
978
|
}
|
|
914
979
|
}
|
|
@@ -923,8 +988,29 @@ class FxCore {
|
|
|
923
988
|
return teamsfx_api_1.err(error);
|
|
924
989
|
}
|
|
925
990
|
const message = localizeUtils_1.getLocalizedString("core.copilot.addAPI.success", newOperations, inputs.projectPath);
|
|
926
|
-
|
|
927
|
-
|
|
991
|
+
if (inputs.platform !== teamsfx_api_1.Platform.VS) {
|
|
992
|
+
void context.userInteraction.showMessage("info", message, false);
|
|
993
|
+
}
|
|
994
|
+
return teamsfx_api_1.ok(message);
|
|
995
|
+
}
|
|
996
|
+
async listPluginApiSpecs(inputs) {
|
|
997
|
+
try {
|
|
998
|
+
const manifestPath = inputs[questionNames_1.QuestionNames.ManifestPath];
|
|
999
|
+
const manifestRes = await ManifestUtils_1.manifestUtils._readAppManifest(manifestPath);
|
|
1000
|
+
if (manifestRes.isErr()) {
|
|
1001
|
+
return teamsfx_api_1.err(manifestRes.error);
|
|
1002
|
+
}
|
|
1003
|
+
const res = await PluginManifestUtils_1.pluginManifestUtils.getApiSpecFilePathFromTeamsManifest(manifestRes.value, manifestPath);
|
|
1004
|
+
if (res.isOk()) {
|
|
1005
|
+
return teamsfx_api_1.ok(res.value);
|
|
1006
|
+
}
|
|
1007
|
+
else {
|
|
1008
|
+
return teamsfx_api_1.err(res.error);
|
|
1009
|
+
}
|
|
1010
|
+
}
|
|
1011
|
+
catch (error) {
|
|
1012
|
+
return teamsfx_api_1.err(error);
|
|
1013
|
+
}
|
|
928
1014
|
}
|
|
929
1015
|
async copilotPluginLoadOpenAIManifest(inputs) {
|
|
930
1016
|
try {
|
|
@@ -935,7 +1021,14 @@ class FxCore {
|
|
|
935
1021
|
}
|
|
936
1022
|
}
|
|
937
1023
|
async copilotPluginListOperations(inputs) {
|
|
938
|
-
|
|
1024
|
+
const res = await helper_1.listOperations(utils_2.createContextV3(), inputs.manifest, inputs.apiSpecUrl, inputs, inputs.includeExistingAPIs, inputs.shouldLogWarning);
|
|
1025
|
+
if (res.isErr()) {
|
|
1026
|
+
const msg = res.error.map((e) => e.content).join("\n");
|
|
1027
|
+
return teamsfx_api_1.err(new teamsfx_api_1.UserError("FxCore", "ListOpenAPISpecOperationsError", msg, msg));
|
|
1028
|
+
}
|
|
1029
|
+
else {
|
|
1030
|
+
return teamsfx_api_1.ok(res.value);
|
|
1031
|
+
}
|
|
939
1032
|
}
|
|
940
1033
|
/**
|
|
941
1034
|
* check project type info
|
|
@@ -948,6 +1041,141 @@ class FxCore {
|
|
|
948
1041
|
(_a = globalVars_1.TOOLS.telemetryReporter) === null || _a === void 0 ? void 0 : _a.sendTelemetryEvent(telemetry_1.TelemetryEvent.ProjectType, props);
|
|
949
1042
|
return teamsfx_api_1.ok(projectTypeRes);
|
|
950
1043
|
}
|
|
1044
|
+
/**
|
|
1045
|
+
* Add plugin
|
|
1046
|
+
*/
|
|
1047
|
+
async addPlugin(inputs) {
|
|
1048
|
+
var _a, _b;
|
|
1049
|
+
if (!inputs.projectPath) {
|
|
1050
|
+
throw new Error("projectPath is undefined"); // should never happen
|
|
1051
|
+
}
|
|
1052
|
+
const operations = inputs[questionNames_1.QuestionNames.ApiOperation];
|
|
1053
|
+
const url = inputs[questionNames_1.QuestionNames.ApiSpecLocation];
|
|
1054
|
+
const manifestPath = inputs[questionNames_1.QuestionNames.ManifestPath];
|
|
1055
|
+
const appPackageFolder = path.dirname(manifestPath);
|
|
1056
|
+
const apiSpecFolder = path.join(appPackageFolder, helper_1.defaultApiSpecFolderName);
|
|
1057
|
+
const needAddAction = inputs[questionNames_1.QuestionNames.PluginAvailability] === other_1.PluginAvailabilityOptions.action().id ||
|
|
1058
|
+
inputs[questionNames_1.QuestionNames.PluginAvailability] ===
|
|
1059
|
+
other_1.PluginAvailabilityOptions.copilotPluginAndAction().id;
|
|
1060
|
+
const needAddCopilotPlugin = inputs[questionNames_1.QuestionNames.PluginAvailability] === other_1.PluginAvailabilityOptions.copilotPlugin().id ||
|
|
1061
|
+
inputs[questionNames_1.QuestionNames.PluginAvailability] ===
|
|
1062
|
+
other_1.PluginAvailabilityOptions.copilotPluginAndAction().id;
|
|
1063
|
+
// validate the project is valid for adding plugin
|
|
1064
|
+
const manifestRes = await ManifestUtils_1.manifestUtils._readAppManifest(manifestPath);
|
|
1065
|
+
if (manifestRes.isErr()) {
|
|
1066
|
+
return teamsfx_api_1.err(manifestRes.error);
|
|
1067
|
+
}
|
|
1068
|
+
const teamsManifest = manifestRes.value;
|
|
1069
|
+
if (!((_a = teamsManifest.copilotGpts) === null || _a === void 0 ? void 0 : _a[0].file)) {
|
|
1070
|
+
return teamsfx_api_1.err(results_1.AppStudioResultFactory.UserError(errors_1.AppStudioError.TeamsAppRequiredPropertyMissingError.name, errors_1.AppStudioError.TeamsAppRequiredPropertyMissingError.message("copilotGpts", manifestPath)));
|
|
1071
|
+
}
|
|
1072
|
+
const gptManifestFilePath = path.join(appPackageFolder, teamsManifest.copilotGpts[0].file);
|
|
1073
|
+
const gptManifestRes = await CopilotGptManifestUtils_1.copilotGptManifestUtils.readCopilotGptManifestFile(gptManifestFilePath);
|
|
1074
|
+
if (gptManifestRes.isErr()) {
|
|
1075
|
+
return teamsfx_api_1.err(gptManifestRes.error);
|
|
1076
|
+
}
|
|
1077
|
+
const gptManifest = gptManifestRes.value;
|
|
1078
|
+
const context = utils_2.createContextV3();
|
|
1079
|
+
// confirm
|
|
1080
|
+
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"));
|
|
1081
|
+
if (confirmRes.isErr()) {
|
|
1082
|
+
return teamsfx_api_1.err(confirmRes.error);
|
|
1083
|
+
}
|
|
1084
|
+
else if (confirmRes.value !== localizeUtils_1.getLocalizedString("core.addApi.continue")) {
|
|
1085
|
+
return teamsfx_api_1.err(new common_2.UserCancelError());
|
|
1086
|
+
}
|
|
1087
|
+
// generate file path
|
|
1088
|
+
let isYaml;
|
|
1089
|
+
try {
|
|
1090
|
+
isYaml = await helper_1.isYamlSpecFile(url);
|
|
1091
|
+
}
|
|
1092
|
+
catch (e) {
|
|
1093
|
+
isYaml = false;
|
|
1094
|
+
}
|
|
1095
|
+
await fs_extra_1.default.ensureDir(apiSpecFolder);
|
|
1096
|
+
let openApiSpecFileName = isYaml ? helper_1.defaultApiSpecYamlFileName : helper_1.defaultApiSpecJsonFileName;
|
|
1097
|
+
const openApiSpecFileNamePrefix = openApiSpecFileName.split(".")[0];
|
|
1098
|
+
const openApiSpecFileType = openApiSpecFileName.split(".")[1];
|
|
1099
|
+
let apiSpecFileNameSuffix = 1;
|
|
1100
|
+
while (await fs_extra_1.default.pathExists(path.join(apiSpecFolder, openApiSpecFileName))) {
|
|
1101
|
+
openApiSpecFileName = `${openApiSpecFileNamePrefix}_${apiSpecFileNameSuffix++}.${openApiSpecFileType}`;
|
|
1102
|
+
}
|
|
1103
|
+
const openApiSpecFilePath = path.join(apiSpecFolder, openApiSpecFileName);
|
|
1104
|
+
let pluginManifestName = helper_1.defaultPluginManifestFileName;
|
|
1105
|
+
const pluginManifestNamePrefix = helper_1.defaultPluginManifestFileName.split(".")[0];
|
|
1106
|
+
let pluginFileNameSuffix = 1;
|
|
1107
|
+
while (await fs_extra_1.default.pathExists(path.join(appPackageFolder, pluginManifestName))) {
|
|
1108
|
+
pluginManifestName = `${pluginManifestNamePrefix}_${pluginFileNameSuffix++}.json`;
|
|
1109
|
+
}
|
|
1110
|
+
const pluginManifestFilePath = path.join(appPackageFolder, pluginManifestName);
|
|
1111
|
+
// generate plugin related files
|
|
1112
|
+
const specParser = new m365_spec_parser_1.SpecParser(url, Object.assign(Object.assign({}, helper_1.copilotPluginParserOptions), { isGptPlugin: true }));
|
|
1113
|
+
try {
|
|
1114
|
+
const generateResult = await specParser.generateForCopilot(manifestPath, operations, openApiSpecFilePath, pluginManifestFilePath);
|
|
1115
|
+
// Send SpecParser.generate() warnings
|
|
1116
|
+
context.telemetryReporter.sendTelemetryEvent(helper_1.specParserGenerateResultTelemetryEvent, {
|
|
1117
|
+
[helper_1.specParserGenerateResultAllSuccessTelemetryProperty]: generateResult.allSuccess.toString(),
|
|
1118
|
+
[helper_1.specParserGenerateResultWarningsTelemetryProperty]: generateResult.warnings
|
|
1119
|
+
.map((w) => w.type.toString() + ": " + w.content)
|
|
1120
|
+
.join(";"),
|
|
1121
|
+
[telemetry_2.CoreTelemetryProperty.Component]: telemetry_2.CoreTelemetryComponentName,
|
|
1122
|
+
});
|
|
1123
|
+
if (generateResult.warnings && generateResult.warnings.length > 0) {
|
|
1124
|
+
const warnSummary = helper_1.generateScaffoldingSummary(generateResult.warnings, manifestRes.value, path.relative(inputs.projectPath, openApiSpecFilePath));
|
|
1125
|
+
context.logProvider.info(warnSummary);
|
|
1126
|
+
}
|
|
1127
|
+
}
|
|
1128
|
+
catch (e) {
|
|
1129
|
+
let error;
|
|
1130
|
+
if (e instanceof m365_spec_parser_1.SpecParserError) {
|
|
1131
|
+
error = helper_1.convertSpecParserErrorToFxError(e);
|
|
1132
|
+
}
|
|
1133
|
+
else {
|
|
1134
|
+
error = common_2.assembleError(e);
|
|
1135
|
+
}
|
|
1136
|
+
return teamsfx_api_1.err(error);
|
|
1137
|
+
}
|
|
1138
|
+
// update Teams manifest
|
|
1139
|
+
if (needAddCopilotPlugin) {
|
|
1140
|
+
teamsManifest.plugins = teamsManifest.plugins || [];
|
|
1141
|
+
teamsManifest.plugins.push({
|
|
1142
|
+
id: "plugin_1",
|
|
1143
|
+
file: pluginManifestName,
|
|
1144
|
+
});
|
|
1145
|
+
const updateManifestRes = await ManifestUtils_1.manifestUtils._writeAppManifest(teamsManifest, manifestPath);
|
|
1146
|
+
if (updateManifestRes.isErr()) {
|
|
1147
|
+
return teamsfx_api_1.err(updateManifestRes.error);
|
|
1148
|
+
}
|
|
1149
|
+
}
|
|
1150
|
+
// update GPT manifest
|
|
1151
|
+
let actionId = "";
|
|
1152
|
+
if (needAddAction) {
|
|
1153
|
+
let suffix = 1;
|
|
1154
|
+
actionId = `action_${suffix}`;
|
|
1155
|
+
const existingActionIds = (_b = gptManifest.actions) === null || _b === void 0 ? void 0 : _b.map((action) => action.id);
|
|
1156
|
+
while (existingActionIds === null || existingActionIds === void 0 ? void 0 : existingActionIds.includes(actionId)) {
|
|
1157
|
+
suffix += 1;
|
|
1158
|
+
actionId = `action_${suffix}`;
|
|
1159
|
+
}
|
|
1160
|
+
const addActionRes = await CopilotGptManifestUtils_1.copilotGptManifestUtils.addAction(gptManifestFilePath, actionId, pluginManifestName);
|
|
1161
|
+
if (addActionRes.isErr()) {
|
|
1162
|
+
return teamsfx_api_1.err(addActionRes.error);
|
|
1163
|
+
}
|
|
1164
|
+
}
|
|
1165
|
+
// TODO: localize string below.
|
|
1166
|
+
let successMessage = "";
|
|
1167
|
+
if (needAddAction && needAddCopilotPlugin) {
|
|
1168
|
+
successMessage = `Action \"${actionId}\" and plugin "plugin_1" have been successfully added to the project.`;
|
|
1169
|
+
}
|
|
1170
|
+
else if (needAddAction) {
|
|
1171
|
+
successMessage = `Action \"${actionId}\" has been successfully added to the project.`;
|
|
1172
|
+
}
|
|
1173
|
+
else if (needAddCopilotPlugin) {
|
|
1174
|
+
successMessage = `Plugin \"plugin_1\" has been successfully added to the project.`;
|
|
1175
|
+
}
|
|
1176
|
+
void context.userInteraction.showMessage("info", successMessage, false);
|
|
1177
|
+
return teamsfx_api_1.ok(undefined);
|
|
1178
|
+
}
|
|
951
1179
|
}
|
|
952
1180
|
tslib_1.__decorate([
|
|
953
1181
|
hooks_1.hooks([
|
|
@@ -959,6 +1187,19 @@ tslib_1.__decorate([
|
|
|
959
1187
|
tslib_1.__metadata("design:paramtypes", [Object]),
|
|
960
1188
|
tslib_1.__metadata("design:returntype", Promise)
|
|
961
1189
|
], FxCore.prototype, "createProject", null);
|
|
1190
|
+
tslib_1.__decorate([
|
|
1191
|
+
hooks_1.hooks([
|
|
1192
|
+
globalVars_1.ErrorContextMW({
|
|
1193
|
+
component: "FxCore",
|
|
1194
|
+
stage: "createProjectByCustomizedGenerator",
|
|
1195
|
+
reset: true,
|
|
1196
|
+
}),
|
|
1197
|
+
errorHandler_1.ErrorHandlerMW,
|
|
1198
|
+
]),
|
|
1199
|
+
tslib_1.__metadata("design:type", Function),
|
|
1200
|
+
tslib_1.__metadata("design:paramtypes", [Object, Object]),
|
|
1201
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
1202
|
+
], FxCore.prototype, "createProjectByCustomizedGenerator", null);
|
|
962
1203
|
tslib_1.__decorate([
|
|
963
1204
|
hooks_1.hooks([
|
|
964
1205
|
globalVars_1.ErrorContextMW({ component: "FxCore", stage: "createSampleProject", reset: true }),
|
|
@@ -1371,6 +1612,15 @@ tslib_1.__decorate([
|
|
|
1371
1612
|
tslib_1.__metadata("design:paramtypes", [Object]),
|
|
1372
1613
|
tslib_1.__metadata("design:returntype", Promise)
|
|
1373
1614
|
], FxCore.prototype, "copilotPluginAddAPI", null);
|
|
1615
|
+
tslib_1.__decorate([
|
|
1616
|
+
hooks_1.hooks([
|
|
1617
|
+
globalVars_1.ErrorContextMW({ component: "FxCore", stage: "copilotPluginListApiSpecs" }),
|
|
1618
|
+
errorHandler_1.ErrorHandlerMW,
|
|
1619
|
+
]),
|
|
1620
|
+
tslib_1.__metadata("design:type", Function),
|
|
1621
|
+
tslib_1.__metadata("design:paramtypes", [Object]),
|
|
1622
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
1623
|
+
], FxCore.prototype, "listPluginApiSpecs", null);
|
|
1374
1624
|
tslib_1.__decorate([
|
|
1375
1625
|
hooks_1.hooks([
|
|
1376
1626
|
globalVars_1.ErrorContextMW({ component: "FxCore", stage: "copilotPluginLoadOpenAIManifest" }),
|
|
@@ -1395,5 +1645,16 @@ tslib_1.__decorate([
|
|
|
1395
1645
|
tslib_1.__metadata("design:paramtypes", [String]),
|
|
1396
1646
|
tslib_1.__metadata("design:returntype", Promise)
|
|
1397
1647
|
], FxCore.prototype, "checkProjectType", null);
|
|
1648
|
+
tslib_1.__decorate([
|
|
1649
|
+
hooks_1.hooks([
|
|
1650
|
+
globalVars_1.ErrorContextMW({ component: "FxCore", stage: "addPlugin" }),
|
|
1651
|
+
errorHandler_1.ErrorHandlerMW,
|
|
1652
|
+
questionMW_1.QuestionMW("addPlugin"),
|
|
1653
|
+
concurrentLocker_1.ConcurrentLockerMW,
|
|
1654
|
+
]),
|
|
1655
|
+
tslib_1.__metadata("design:type", Function),
|
|
1656
|
+
tslib_1.__metadata("design:paramtypes", [Object]),
|
|
1657
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
1658
|
+
], FxCore.prototype, "addPlugin", null);
|
|
1398
1659
|
exports.FxCore = FxCore;
|
|
1399
1660
|
//# sourceMappingURL=FxCore.js.map
|