@microsoft/teamsfx-core 3.1.4 → 3.1.5-alpha.36e30da2f6.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/README.md +4 -0
- package/build/common/featureFlags.d.ts +5 -0
- package/build/common/featureFlags.d.ts.map +1 -1
- package/build/common/featureFlags.js +5 -0
- package/build/common/featureFlags.js.map +1 -1
- package/build/common/telemetry.d.ts +2 -1
- package/build/common/telemetry.d.ts.map +1 -1
- package/build/common/telemetry.js +1 -0
- package/build/common/telemetry.js.map +1 -1
- package/build/common/templates-config.json +2 -2
- package/build/common/wrappedAxiosClient.d.ts +5 -0
- package/build/common/wrappedAxiosClient.d.ts.map +1 -1
- package/build/common/wrappedAxiosClient.js +95 -4
- package/build/common/wrappedAxiosClient.js.map +1 -1
- package/build/component/configManager/actionInjector.d.ts +1 -1
- package/build/component/configManager/actionInjector.d.ts.map +1 -1
- package/build/component/configManager/actionInjector.js +2 -2
- package/build/component/configManager/actionInjector.js.map +1 -1
- package/build/component/driver/copilotAgent/publish.d.ts.map +1 -1
- package/build/component/driver/copilotAgent/publish.js +1 -1
- package/build/component/driver/copilotAgent/publish.js.map +1 -1
- package/build/component/driver/dcr/create.d.ts.map +1 -1
- package/build/component/driver/dcr/create.js +47 -14
- package/build/component/driver/dcr/create.js.map +1 -1
- package/build/component/driver/dcr/interface/createDcrArgs.d.ts +4 -1
- package/build/component/driver/dcr/interface/createDcrArgs.d.ts.map +1 -1
- package/build/component/driver/index.d.ts +0 -1
- package/build/component/driver/index.d.ts.map +1 -1
- package/build/component/driver/index.js +0 -1
- package/build/component/driver/index.js.map +1 -1
- package/build/component/driver/m365/acquire.d.ts.map +1 -1
- package/build/component/driver/m365/acquire.js +2 -2
- package/build/component/driver/m365/acquire.js.map +1 -1
- package/build/component/driver/oauth/create.d.ts.map +1 -1
- package/build/component/driver/oauth/create.js +16 -2
- package/build/component/driver/oauth/create.js.map +1 -1
- package/build/component/driver/oauth/error/oauthSupportedAccountTypesUnsupportedCloud.d.ts +5 -0
- package/build/component/driver/oauth/error/oauthSupportedAccountTypesUnsupportedCloud.d.ts.map +1 -0
- package/build/component/driver/oauth/error/oauthSupportedAccountTypesUnsupportedCloud.js +13 -0
- package/build/component/driver/oauth/error/oauthSupportedAccountTypesUnsupportedCloud.js.map +1 -0
- package/build/component/driver/oauth/interface/createOauthArgs.d.ts +1 -0
- package/build/component/driver/oauth/interface/createOauthArgs.d.ts.map +1 -1
- package/build/component/driver/oauth/interface/updateOauthArgs.d.ts +1 -0
- package/build/component/driver/oauth/interface/updateOauthArgs.d.ts.map +1 -1
- package/build/component/driver/oauth/update.d.ts.map +1 -1
- package/build/component/driver/oauth/update.js +26 -4
- package/build/component/driver/oauth/update.js.map +1 -1
- package/build/component/driver/oauth/utility/supportedAccountTypes.d.ts +6 -0
- package/build/component/driver/oauth/utility/supportedAccountTypes.d.ts.map +1 -0
- package/build/component/driver/oauth/utility/supportedAccountTypes.js +31 -0
- package/build/component/driver/oauth/utility/supportedAccountTypes.js.map +1 -0
- package/build/component/driver/teamsApp/constants.d.ts +5 -0
- package/build/component/driver/teamsApp/constants.d.ts.map +1 -1
- package/build/component/driver/teamsApp/constants.js +5 -0
- package/build/component/driver/teamsApp/constants.js.map +1 -1
- package/build/component/driver/teamsApp/interfaces/DcrRegistration.d.ts +5 -2
- package/build/component/driver/teamsApp/interfaces/DcrRegistration.d.ts.map +1 -1
- package/build/component/driver/teamsApp/interfaces/OauthRegistration.d.ts +6 -0
- package/build/component/driver/teamsApp/interfaces/OauthRegistration.d.ts.map +1 -1
- package/build/component/driver/teamsApp/interfaces/OauthRegistration.js +5 -1
- package/build/component/driver/teamsApp/interfaces/OauthRegistration.js.map +1 -1
- package/build/component/generator/generatorProvider.d.ts.map +1 -1
- package/build/component/generator/generatorProvider.js +0 -3
- package/build/component/generator/generatorProvider.js.map +1 -1
- package/build/component/generator/templates/templateNames.d.ts +1 -1
- package/build/component/generator/templates/templateNames.d.ts.map +1 -1
- package/build/component/m365/packageService.d.ts +4 -3
- package/build/component/m365/packageService.d.ts.map +1 -1
- package/build/component/m365/packageService.js +34 -30
- package/build/component/m365/packageService.js.map +1 -1
- package/build/component/m365/serviceConstant.d.ts.map +1 -1
- package/build/component/m365/serviceConstant.js +5 -0
- package/build/component/m365/serviceConstant.js.map +1 -1
- package/build/component/m365/skills/graphSkillFileStore.d.ts +14 -0
- package/build/component/m365/skills/graphSkillFileStore.d.ts.map +1 -0
- package/build/component/m365/skills/graphSkillFileStore.js +164 -0
- package/build/component/m365/skills/graphSkillFileStore.js.map +1 -0
- package/build/component/m365/skills/incrementalSkillUpload.d.ts +6 -0
- package/build/component/m365/skills/incrementalSkillUpload.d.ts.map +1 -0
- package/build/component/m365/skills/incrementalSkillUpload.js +70 -0
- package/build/component/m365/skills/incrementalSkillUpload.js.map +1 -0
- package/build/component/m365/skills/skillDirectoryClient.d.ts +12 -0
- package/build/component/m365/skills/skillDirectoryClient.d.ts.map +1 -0
- package/build/component/m365/skills/skillDirectoryClient.js +150 -0
- package/build/component/m365/skills/skillDirectoryClient.js.map +1 -0
- package/build/component/m365/skills/skillFileSync.d.ts +35 -0
- package/build/component/m365/skills/skillFileSync.d.ts.map +1 -0
- package/build/component/m365/skills/skillFileSync.js +256 -0
- package/build/component/m365/skills/skillFileSync.js.map +1 -0
- package/build/component/m365/skills/skillPackage.d.ts +40 -0
- package/build/component/m365/skills/skillPackage.d.ts.map +1 -0
- package/build/component/m365/skills/skillPackage.js +471 -0
- package/build/component/m365/skills/skillPackage.js.map +1 -0
- package/build/component/m365/skills/skillRequest.d.ts +7 -0
- package/build/component/m365/skills/skillRequest.d.ts.map +1 -0
- package/build/component/m365/skills/skillRequest.js +91 -0
- package/build/component/m365/skills/skillRequest.js.map +1 -0
- package/build/component/utils/mcpAuthScaffolder.d.ts +5 -20
- package/build/component/utils/mcpAuthScaffolder.d.ts.map +1 -1
- package/build/component/utils/mcpAuthScaffolder.js +9 -24
- package/build/component/utils/mcpAuthScaffolder.js.map +1 -1
- package/build/core/FxCore.d.ts +2 -4
- package/build/core/FxCore.d.ts.map +1 -1
- package/build/core/FxCore.js +7 -22
- package/build/core/FxCore.js.map +1 -1
- package/build/question/create.d.ts +0 -6
- package/build/question/create.d.ts.map +1 -1
- package/build/question/create.js +119 -281
- package/build/question/create.js.map +1 -1
- package/build/question/generator.js +0 -2
- package/build/question/generator.js.map +1 -1
- package/build/question/index.d.ts +0 -1
- package/build/question/index.d.ts.map +1 -1
- package/build/question/index.js +0 -3
- package/build/question/index.js.map +1 -1
- package/build/question/inputs/index.d.ts +0 -1
- package/build/question/inputs/index.d.ts.map +1 -1
- package/build/question/inputs/index.js +0 -1
- package/build/question/inputs/index.js.map +1 -1
- package/build/question/options/CreateProjectOptions.d.ts.map +1 -1
- package/build/question/options/CreateProjectOptions.js +0 -1
- package/build/question/options/CreateProjectOptions.js.map +1 -1
- package/build/question/options/index.d.ts +0 -1
- package/build/question/options/index.d.ts.map +1 -1
- package/build/question/options/index.js +0 -1
- package/build/question/options/index.js.map +1 -1
- package/build/question/other.d.ts +0 -1
- package/build/question/other.d.ts.map +1 -1
- package/build/question/other.js +158 -214
- package/build/question/other.js.map +1 -1
- package/build/question/scaffold/vsc/CapabilityOptions.d.ts +0 -1
- package/build/question/scaffold/vsc/CapabilityOptions.d.ts.map +1 -1
- package/build/question/scaffold/vsc/CapabilityOptions.js +0 -9
- package/build/question/scaffold/vsc/CapabilityOptions.js.map +1 -1
- package/build/question/scaffold/vsc/teamsProjectTypeNode.d.ts.map +1 -1
- package/build/question/scaffold/vsc/teamsProjectTypeNode.js +0 -24
- package/build/question/scaffold/vsc/teamsProjectTypeNode.js.map +1 -1
- package/build/v4/mcp/mcpAuthAction.d.ts +0 -1
- package/build/v4/mcp/mcpAuthAction.d.ts.map +1 -1
- package/build/v4/mcp/mcpAuthAction.js +5 -7
- package/build/v4/mcp/mcpAuthAction.js.map +1 -1
- package/build/v4/mcp/mcpAuthScaffold.d.ts.map +1 -1
- package/build/v4/mcp/mcpAuthScaffold.js +4 -12
- package/build/v4/mcp/mcpAuthScaffold.js.map +1 -1
- package/package.json +11 -8
- package/resource/package.nls.cs.json +59 -68
- package/resource/package.nls.de.json +59 -68
- package/resource/package.nls.es.json +59 -68
- package/resource/package.nls.fr.json +59 -68
- package/resource/package.nls.it.json +59 -68
- package/resource/package.nls.ja.json +59 -68
- package/resource/package.nls.json +15 -58
- package/resource/package.nls.ko.json +59 -68
- package/resource/package.nls.pl.json +59 -68
- package/resource/package.nls.pt-BR.json +59 -68
- package/resource/package.nls.ru.json +59 -68
- package/resource/package.nls.tr.json +59 -68
- package/resource/package.nls.zh-Hans.json +59 -68
- package/resource/package.nls.zh-Hant.json +59 -68
- package/resource/yaml-schema/v1.13/yaml.schema.json +71 -33
- package/resource/yaml-schema/yaml.schema.json +71 -33
- package/templates/fallback/common.zip +0 -0
- package/templates/fallback/csharp.zip +0 -0
- package/templates/fallback/js.zip +0 -0
- package/templates/fallback/python.zip +0 -0
- package/templates/fallback/ts.zip +0 -0
- package/templates/metadata.zip +0 -0
- package/templates/v4/floor.json +1 -1
- package/templates/v4/templates-metadata.zip +0 -0
- package/templates/v4/templates.zip +0 -0
- package/build/common/treatmentVariables.d.ts +0 -5
- package/build/common/treatmentVariables.d.ts.map +0 -1
- package/build/common/treatmentVariables.js +0 -10
- package/build/common/treatmentVariables.js.map +0 -1
- package/build/component/driver/add/addWebPart.d.ts +0 -12
- package/build/component/driver/add/addWebPart.d.ts.map +0 -1
- package/build/component/driver/add/addWebPart.js +0 -109
- package/build/component/driver/add/addWebPart.js.map +0 -1
- package/build/component/driver/add/error/noConfigurationError.d.ts +0 -5
- package/build/component/driver/add/error/noConfigurationError.d.ts.map +0 -1
- package/build/component/driver/add/error/noConfigurationError.js +0 -22
- package/build/component/driver/add/error/noConfigurationError.js.map +0 -1
- package/build/component/driver/add/interface/AddWebPartArgs.d.ts +0 -27
- package/build/component/driver/add/interface/AddWebPartArgs.d.ts.map +0 -1
- package/build/component/driver/add/interface/AddWebPartArgs.js +0 -5
- package/build/component/driver/add/interface/AddWebPartArgs.js.map +0 -1
- package/build/component/driver/add/utility/constants.d.ts +0 -8
- package/build/component/driver/add/utility/constants.d.ts.map +0 -1
- package/build/component/driver/add/utility/constants.js +0 -14
- package/build/component/driver/add/utility/constants.js.map +0 -1
- package/build/component/generator/spfx/depsChecker/dependencyChecker.d.ts +0 -4
- package/build/component/generator/spfx/depsChecker/dependencyChecker.d.ts.map +0 -1
- package/build/component/generator/spfx/depsChecker/dependencyChecker.js +0 -5
- package/build/component/generator/spfx/depsChecker/dependencyChecker.js.map +0 -1
- package/build/component/generator/spfx/depsChecker/generatorChecker.d.ts +0 -20
- package/build/component/generator/spfx/depsChecker/generatorChecker.d.ts.map +0 -1
- package/build/component/generator/spfx/depsChecker/generatorChecker.js +0 -129
- package/build/component/generator/spfx/depsChecker/generatorChecker.js.map +0 -1
- package/build/component/generator/spfx/depsChecker/yoChecker.d.ts +0 -20
- package/build/component/generator/spfx/depsChecker/yoChecker.d.ts.map +0 -1
- package/build/component/generator/spfx/depsChecker/yoChecker.js +0 -143
- package/build/component/generator/spfx/depsChecker/yoChecker.js.map +0 -1
- package/build/component/generator/spfx/error.d.ts +0 -15
- package/build/component/generator/spfx/error.d.ts.map +0 -1
- package/build/component/generator/spfx/error.js +0 -124
- package/build/component/generator/spfx/error.js.map +0 -1
- package/build/component/generator/spfx/spfxGenerator.d.ts +0 -30
- package/build/component/generator/spfx/spfxGenerator.d.ts.map +0 -1
- package/build/component/generator/spfx/spfxGenerator.js +0 -684
- package/build/component/generator/spfx/spfxGenerator.js.map +0 -1
- package/build/component/generator/spfx/utils/constants.d.ts +0 -45
- package/build/component/generator/spfx/utils/constants.d.ts.map +0 -1
- package/build/component/generator/spfx/utils/constants.js +0 -56
- package/build/component/generator/spfx/utils/constants.js.map +0 -1
- package/build/component/generator/spfx/utils/progress-helper.d.ts +0 -9
- package/build/component/generator/spfx/utils/progress-helper.d.ts.map +0 -1
- package/build/component/generator/spfx/utils/progress-helper.js +0 -22
- package/build/component/generator/spfx/utils/progress-helper.js.map +0 -1
- package/build/component/generator/spfx/utils/telemetry-helper.d.ts +0 -14
- package/build/component/generator/spfx/utils/telemetry-helper.d.ts.map +0 -1
- package/build/component/generator/spfx/utils/telemetry-helper.js +0 -31
- package/build/component/generator/spfx/utils/telemetry-helper.js.map +0 -1
- package/build/component/generator/spfx/utils/telemetryEvents.d.ts +0 -20
- package/build/component/generator/spfx/utils/telemetryEvents.d.ts.map +0 -1
- package/build/component/generator/spfx/utils/telemetryEvents.js +0 -27
- package/build/component/generator/spfx/utils/telemetryEvents.js.map +0 -1
- package/build/component/generator/spfx/utils/utils.d.ts +0 -19
- package/build/component/generator/spfx/utils/utils.d.ts.map +0 -1
- package/build/component/generator/spfx/utils/utils.js +0 -184
- package/build/component/generator/spfx/utils/utils.js.map +0 -1
- package/build/question/inputs/SPFxAddWebpartInputs.d.ts +0 -20
- package/build/question/inputs/SPFxAddWebpartInputs.d.ts.map +0 -1
- package/build/question/inputs/SPFxAddWebpartInputs.js +0 -5
- package/build/question/inputs/SPFxAddWebpartInputs.js.map +0 -1
- package/build/question/options/SPFxAddWebpartOptions.d.ts +0 -10
- package/build/question/options/SPFxAddWebpartOptions.d.ts.map +0 -1
- package/build/question/options/SPFxAddWebpartOptions.js +0 -50
- package/build/question/options/SPFxAddWebpartOptions.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serviceConstant.js","sourceRoot":"","sources":["../../../src/component/m365/serviceConstant.ts"],"names":[],"mappings":";;;AAQa,QAAA,kBAAkB,GAAQ;IACrC,YAAY,EAAE;QACZ,GAAG,EAAE,gBAAgB;QACrB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,6BAA6B;KACpC;IACD,gBAAgB,EAAE;QAChB,GAAG,EAAE,oBAAoB;QACzB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,sCAAsC;KAC7C;IACD,YAAY,EAAE;QACZ,GAAG,EAAE,gBAAgB;QACrB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,6CAA6C;KACpD;IACD,kBAAkB,EAAE;QAClB,GAAG,EAAE,sBAAsB;QAC3B,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,uCAAuC;KAC9C;IACD,gBAAgB,EAAE;QAChB,GAAG,EAAE,oBAAoB;QACzB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,iDAAiD;KACxD;IACD,YAAY,EAAE;QACZ,GAAG,EAAE,gBAAgB;QACrB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,yDAAyD;KAChE;IACD,qBAAqB,EAAE;QACrB,GAAG,EAAE,0BAA0B;QAC/B,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,2CAA2C;KAClD;IACD,yBAAyB,EAAE;QACzB,GAAG,EAAE,6BAA6B;QAClC,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,6CAA6C;KACpD;IACD,oBAAoB,EAAE;QACpB,GAAG,EAAE,0BAA0B;QAC/B,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,mDAAmD;KAC1D;IACD,iBAAiB,EAAE;QACjB,GAAG,EAAE,sBAAsB;QAC3B,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,iCAAiC;KACxC;IACD,cAAc,EAAE;QACd,GAAG,EAAE,kBAAkB;QACvB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,+CAA+C;KACtD;IACD,0BAA0B,EAAE;QAC1B,GAAG,EAAE,+BAA+B;QACpC,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,oDAAoD;KAC3D;IACD,uBAAuB,EAAE;QACvB,GAAG,EAAE,gCAAgC;QACrC,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,wEAAwE;KAC/E;IACD,sBAAsB,EAAE;QACtB,GAAG,EAAE,2BAA2B;QAChC,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,gEAAgE;KACvE;IACD,yBAAyB,EAAE;QACzB,GAAG,EAAE,8BAA8B;QACnC,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,gEAAgE;KACvE;IACD,kBAAkB,EAAE;QAClB,GAAG,EAAE,sBAAsB;QAC3B,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,wCAAwC;KAC/C;CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"serviceConstant.js","sourceRoot":"","sources":["../../../src/component/m365/serviceConstant.ts"],"names":[],"mappings":";;;AAQa,QAAA,kBAAkB,GAAQ;IACrC,YAAY,EAAE;QACZ,GAAG,EAAE,gBAAgB;QACrB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,6BAA6B;KACpC;IACD,gBAAgB,EAAE;QAChB,GAAG,EAAE,oBAAoB;QACzB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,sCAAsC;KAC7C;IACD,YAAY,EAAE;QACZ,GAAG,EAAE,gBAAgB;QACrB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,6CAA6C;KACpD;IACD,kBAAkB,EAAE;QAClB,GAAG,EAAE,sBAAsB;QAC3B,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,uCAAuC;KAC9C;IACD,oBAAoB,EAAE;QACpB,GAAG,EAAE,wBAAwB;QAC7B,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,mCAAmC;KAC1C;IACD,gBAAgB,EAAE;QAChB,GAAG,EAAE,oBAAoB;QACzB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,iDAAiD;KACxD;IACD,YAAY,EAAE;QACZ,GAAG,EAAE,gBAAgB;QACrB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,yDAAyD;KAChE;IACD,qBAAqB,EAAE;QACrB,GAAG,EAAE,0BAA0B;QAC/B,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,2CAA2C;KAClD;IACD,yBAAyB,EAAE;QACzB,GAAG,EAAE,6BAA6B;QAClC,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,6CAA6C;KACpD;IACD,oBAAoB,EAAE;QACpB,GAAG,EAAE,0BAA0B;QAC/B,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,mDAAmD;KAC1D;IACD,iBAAiB,EAAE;QACjB,GAAG,EAAE,sBAAsB;QAC3B,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,iCAAiC;KACxC;IACD,cAAc,EAAE;QACd,GAAG,EAAE,kBAAkB;QACvB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,+CAA+C;KACtD;IACD,0BAA0B,EAAE;QAC1B,GAAG,EAAE,+BAA+B;QACpC,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,oDAAoD;KAC3D;IACD,uBAAuB,EAAE;QACvB,GAAG,EAAE,gCAAgC;QACrC,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,wEAAwE;KAC/E;IACD,sBAAsB,EAAE;QACtB,GAAG,EAAE,2BAA2B;QAChC,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,gEAAgE;KACvE;IACD,yBAAyB,EAAE;QACzB,GAAG,EAAE,8BAA8B;QACnC,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,gEAAgE;KACvE;IACD,kBAAkB,EAAE;QAClB,GAAG,EAAE,sBAAsB;QAC3B,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,wCAAwC;KAC/C;CACF,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { FxError, Result } from "@microsoft/teamsfx-api";
|
|
2
|
+
import type { RemoteSkillItem, SkillFileStore } from "./skillFileSync";
|
|
3
|
+
export declare class GraphSkillFileStore implements SkillFileStore {
|
|
4
|
+
private readonly client;
|
|
5
|
+
private readonly baseUrl;
|
|
6
|
+
private readonly drivePath;
|
|
7
|
+
constructor(graphEndpoint: string, token: string, driveId: string);
|
|
8
|
+
listChildren(folderId: string): Promise<Result<RemoteSkillItem[], FxError>>;
|
|
9
|
+
createFolder(parentId: string, name: string): Promise<Result<RemoteSkillItem, FxError>>;
|
|
10
|
+
uploadFile(parentId: string, name: string, content: Buffer, existing?: RemoteSkillItem): Promise<Result<RemoteSkillItem, FxError>>;
|
|
11
|
+
deleteItem(item: RemoteSkillItem): Promise<Result<void, FxError>>;
|
|
12
|
+
private itemPath;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=graphSkillFileStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphSkillFileStore.d.ts","sourceRoot":"","sources":["../../../../src/component/m365/skills/graphSkillFileStore.ts"],"names":[],"mappings":"AAGA,OAAO,EAAO,OAAO,EAAM,MAAM,EAAe,MAAM,wBAAwB,CAAC;AAI/E,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGvE,qBAAa,mBAAoB,YAAW,cAAc;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAW3D,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,CAAC;IAqD3E,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IAiBvF,UAAU,CACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,eAAe,GACzB,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IA0BtC,UAAU,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAYvE,OAAO,CAAC,QAAQ;CAGjB"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT license.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.GraphSkillFileStore = void 0;
|
|
6
|
+
const teamsfx_api_1 = require("@microsoft/teamsfx-api");
|
|
7
|
+
const localizeUtils_1 = require("../../../common/localizeUtils");
|
|
8
|
+
const wrappedAxiosClient_1 = require("../../../common/wrappedAxiosClient");
|
|
9
|
+
const skillRequest_1 = require("./skillRequest");
|
|
10
|
+
class GraphSkillFileStore {
|
|
11
|
+
client;
|
|
12
|
+
baseUrl;
|
|
13
|
+
drivePath;
|
|
14
|
+
constructor(graphEndpoint, token, driveId) {
|
|
15
|
+
this.baseUrl = `${graphEndpoint.replace(/\/$/, "")}/v1.0`;
|
|
16
|
+
this.drivePath = `/drives/${encodeURIComponent(driveId)}/items`;
|
|
17
|
+
this.client = wrappedAxiosClient_1.WrappedAxiosClient.create({
|
|
18
|
+
baseURL: this.baseUrl,
|
|
19
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
20
|
+
timeout: 30000,
|
|
21
|
+
maxRedirects: 0,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
async listChildren(folderId) {
|
|
25
|
+
const path = `${this.itemPath(folderId)}/children`;
|
|
26
|
+
let next = `${path}?$select=id,name,eTag,size,file,folder,remoteItem,parentReference`;
|
|
27
|
+
const visited = new Set();
|
|
28
|
+
const items = [];
|
|
29
|
+
while (next !== undefined) {
|
|
30
|
+
let absolute;
|
|
31
|
+
try {
|
|
32
|
+
absolute = new URL(next.startsWith("/") ? `${this.baseUrl}${next}` : next);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return (0, teamsfx_api_1.err)(invalidResponse());
|
|
36
|
+
}
|
|
37
|
+
const expected = new URL(`${this.baseUrl}${path}`);
|
|
38
|
+
if (absolute.origin !== expected.origin ||
|
|
39
|
+
absolute.pathname !== expected.pathname ||
|
|
40
|
+
absolute.username ||
|
|
41
|
+
absolute.password ||
|
|
42
|
+
absolute.hash ||
|
|
43
|
+
visited.has(absolute.href)) {
|
|
44
|
+
return (0, teamsfx_api_1.err)(invalidResponse());
|
|
45
|
+
}
|
|
46
|
+
visited.add(absolute.href);
|
|
47
|
+
const page = next;
|
|
48
|
+
const response = await (0, skillRequest_1.requestSkillOperation)(() => this.client.get(page));
|
|
49
|
+
if (response.isErr())
|
|
50
|
+
return (0, teamsfx_api_1.err)(response.error);
|
|
51
|
+
const data = response.value.data;
|
|
52
|
+
if (response.value.status !== 200 || !isRecord(data) || !Array.isArray(data.value)) {
|
|
53
|
+
return (0, teamsfx_api_1.err)(invalidResponse());
|
|
54
|
+
}
|
|
55
|
+
for (const value of data.value) {
|
|
56
|
+
const item = parseItem(value);
|
|
57
|
+
if (!item)
|
|
58
|
+
return (0, teamsfx_api_1.err)(invalidResponse());
|
|
59
|
+
if (isRecord(value) &&
|
|
60
|
+
isRecord(value.parentReference) &&
|
|
61
|
+
value.parentReference.id !== folderId) {
|
|
62
|
+
return (0, teamsfx_api_1.err)(invalidResponse());
|
|
63
|
+
}
|
|
64
|
+
items.push(item);
|
|
65
|
+
}
|
|
66
|
+
const link = data["@odata.nextLink"];
|
|
67
|
+
if (link !== undefined && (typeof link !== "string" || !link.startsWith("https://"))) {
|
|
68
|
+
return (0, teamsfx_api_1.err)(invalidResponse());
|
|
69
|
+
}
|
|
70
|
+
next = link;
|
|
71
|
+
}
|
|
72
|
+
return (0, teamsfx_api_1.ok)(items);
|
|
73
|
+
}
|
|
74
|
+
async createFolder(parentId, name) {
|
|
75
|
+
const response = await (0, skillRequest_1.requestSkillOperation)(() => this.client.post(`${this.itemPath(parentId)}/children`, {
|
|
76
|
+
name,
|
|
77
|
+
folder: {},
|
|
78
|
+
"@microsoft.graph.conflictBehavior": "fail",
|
|
79
|
+
}), false);
|
|
80
|
+
if (response.isErr())
|
|
81
|
+
return (0, teamsfx_api_1.err)(response.error);
|
|
82
|
+
const item = parseItem(response.value.data);
|
|
83
|
+
return response.value.status === 201 && item?.kind === "folder" && item.name === name
|
|
84
|
+
? (0, teamsfx_api_1.ok)(item)
|
|
85
|
+
: (0, teamsfx_api_1.err)(invalidResponse());
|
|
86
|
+
}
|
|
87
|
+
async uploadFile(parentId, name, content, existing) {
|
|
88
|
+
const path = existing
|
|
89
|
+
? `${this.itemPath(existing.id)}/content`
|
|
90
|
+
: `${this.itemPath(parentId)}:/${encodeURIComponent(name)}:/content`;
|
|
91
|
+
const response = await (0, skillRequest_1.requestSkillOperation)(() => this.client.put(path, content, {
|
|
92
|
+
headers: {
|
|
93
|
+
"Content-Type": "application/octet-stream",
|
|
94
|
+
...(existing ? { "If-Match": existing.eTag } : { "If-None-Match": "*" }),
|
|
95
|
+
},
|
|
96
|
+
params: { "@microsoft.graph.conflictBehavior": "fail" },
|
|
97
|
+
maxBodyLength: Infinity,
|
|
98
|
+
}), false);
|
|
99
|
+
if (response.isErr())
|
|
100
|
+
return (0, teamsfx_api_1.err)(response.error);
|
|
101
|
+
const item = parseItem(response.value.data);
|
|
102
|
+
return (response.value.status === 200 || response.value.status === 201) &&
|
|
103
|
+
item?.kind === "file" &&
|
|
104
|
+
item.name === name &&
|
|
105
|
+
(!existing || item.id === existing.id)
|
|
106
|
+
? (0, teamsfx_api_1.ok)(item)
|
|
107
|
+
: (0, teamsfx_api_1.err)(invalidResponse());
|
|
108
|
+
}
|
|
109
|
+
async deleteItem(item) {
|
|
110
|
+
const response = await (0, skillRequest_1.requestSkillOperation)(() => this.client.delete(this.itemPath(item.id), {
|
|
111
|
+
headers: { "If-Match": item.eTag },
|
|
112
|
+
}), false);
|
|
113
|
+
if (response.isErr())
|
|
114
|
+
return (0, teamsfx_api_1.err)(response.error);
|
|
115
|
+
return response.value.status === 204 ? (0, teamsfx_api_1.ok)(undefined) : (0, teamsfx_api_1.err)(invalidResponse());
|
|
116
|
+
}
|
|
117
|
+
itemPath(id) {
|
|
118
|
+
return `${this.drivePath}/${encodeURIComponent(id)}`;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
exports.GraphSkillFileStore = GraphSkillFileStore;
|
|
122
|
+
function isRecord(value) {
|
|
123
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
124
|
+
}
|
|
125
|
+
function parseItem(value) {
|
|
126
|
+
if (!isRecord(value) ||
|
|
127
|
+
typeof value.id !== "string" ||
|
|
128
|
+
!value.id ||
|
|
129
|
+
typeof value.name !== "string" ||
|
|
130
|
+
!value.name ||
|
|
131
|
+
typeof value.eTag !== "string" ||
|
|
132
|
+
!value.eTag ||
|
|
133
|
+
value.remoteItem !== undefined ||
|
|
134
|
+
isRecord(value.file) === isRecord(value.folder)) {
|
|
135
|
+
return undefined;
|
|
136
|
+
}
|
|
137
|
+
if (isRecord(value.folder)) {
|
|
138
|
+
return { id: value.id, name: value.name, eTag: value.eTag, kind: "folder" };
|
|
139
|
+
}
|
|
140
|
+
if (!isRecord(value.file) || !Number.isSafeInteger(value.size) || Number(value.size) < 0) {
|
|
141
|
+
return undefined;
|
|
142
|
+
}
|
|
143
|
+
const hashes = isRecord(value.file.hashes) ? value.file.hashes : {};
|
|
144
|
+
return {
|
|
145
|
+
id: value.id,
|
|
146
|
+
name: value.name,
|
|
147
|
+
eTag: value.eTag,
|
|
148
|
+
kind: "file",
|
|
149
|
+
size: Number(value.size),
|
|
150
|
+
hashes: {
|
|
151
|
+
...(typeof hashes.sha1Hash === "string" ? { sha1Hash: hashes.sha1Hash } : {}),
|
|
152
|
+
...(typeof hashes.quickXorHash === "string" ? { quickXorHash: hashes.quickXorHash } : {}),
|
|
153
|
+
},
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
function invalidResponse() {
|
|
157
|
+
return new teamsfx_api_1.SystemError({
|
|
158
|
+
source: "M365",
|
|
159
|
+
name: "InvalidSkillServiceResponse",
|
|
160
|
+
message: (0, localizeUtils_1.getDefaultString)("error.m365.skills.invalidResponse"),
|
|
161
|
+
displayMessage: (0, localizeUtils_1.getLocalizedString)("error.m365.skills.invalidResponse"),
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=graphSkillFileStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphSkillFileStore.js","sourceRoot":"","sources":["../../../../src/component/m365/skills/graphSkillFileStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { FxError, LogProvider, M365TokenProvider, Result } from "@microsoft/teamsfx-api";
|
|
2
|
+
export declare function prepareIncrementalSkillUpload(data: Buffer, serviceUrl: string, mosToken: string, tokenProvider?: M365TokenProvider, logger?: LogProvider): Promise<Result<{
|
|
3
|
+
data: Buffer;
|
|
4
|
+
hasSkills: boolean;
|
|
5
|
+
}, FxError>>;
|
|
6
|
+
//# sourceMappingURL=incrementalSkillUpload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"incrementalSkillUpload.d.ts","sourceRoot":"","sources":["../../../../src/component/m365/skills/incrementalSkillUpload.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,OAAO,EACP,WAAW,EACX,iBAAiB,EAEjB,MAAM,EAEP,MAAM,wBAAwB,CAAC;AAchC,wBAAsB,6BAA6B,CACjD,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,iBAAiB,EACjC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,EAAE,OAAO,CAAC,CAAC,CA0DhE"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT license.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.prepareIncrementalSkillUpload = prepareIncrementalSkillUpload;
|
|
6
|
+
const teamsfx_api_1 = require("@microsoft/teamsfx-api");
|
|
7
|
+
const constants_1 = require("../../../common/constants");
|
|
8
|
+
const localizeUtils_1 = require("../../../common/localizeUtils");
|
|
9
|
+
const telemetry_1 = require("../../../common/telemetry");
|
|
10
|
+
const graphSkillFileStore_1 = require("./graphSkillFileStore");
|
|
11
|
+
const skillDirectoryClient_1 = require("./skillDirectoryClient");
|
|
12
|
+
const skillFileSync_1 = require("./skillFileSync");
|
|
13
|
+
const skillPackage_1 = require("./skillPackage");
|
|
14
|
+
async function prepareIncrementalSkillUpload(data, serviceUrl, mosToken, tokenProvider, logger) {
|
|
15
|
+
const inventory = (0, skillPackage_1.readSkillPackage)(data);
|
|
16
|
+
if (inventory.isErr())
|
|
17
|
+
return (0, teamsfx_api_1.err)(inventory.error);
|
|
18
|
+
const source = inventory.value;
|
|
19
|
+
if (source.skills.length === 0)
|
|
20
|
+
return (0, teamsfx_api_1.ok)({ data, hasSkills: false });
|
|
21
|
+
const preflight = (0, skillPackage_1.validateSkillTransportPackage)(source);
|
|
22
|
+
if (preflight.isErr())
|
|
23
|
+
return (0, teamsfx_api_1.err)(preflight.error);
|
|
24
|
+
if (!tokenProvider) {
|
|
25
|
+
const key = "error.m365.skills.authorization";
|
|
26
|
+
return (0, teamsfx_api_1.err)(new teamsfx_api_1.UserError({
|
|
27
|
+
source: "M365",
|
|
28
|
+
name: "SkillUploadAuthorizationFailed",
|
|
29
|
+
message: (0, localizeUtils_1.getDefaultString)(key),
|
|
30
|
+
displayMessage: (0, localizeUtils_1.getLocalizedString)(key),
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
const graphEndpoint = (0, constants_1.getResourceServiceEndpoint)(constants_1.ResourceServiceType.Graph);
|
|
34
|
+
const graphToken = await tokenProvider.getAccessToken({
|
|
35
|
+
scopes: [`${graphEndpoint}/Files.ReadWrite`],
|
|
36
|
+
});
|
|
37
|
+
if (graphToken.isErr())
|
|
38
|
+
return (0, teamsfx_api_1.err)(graphToken.error);
|
|
39
|
+
logger?.warning((0, localizeUtils_1.getLocalizedString)("info.m365.skills.preview"));
|
|
40
|
+
const directories = new skillDirectoryClient_1.SkillDirectoryClient(serviceUrl, mosToken);
|
|
41
|
+
const folders = new Map();
|
|
42
|
+
const readySkills = [];
|
|
43
|
+
for (const [index, skill] of source.skills.entries()) {
|
|
44
|
+
logger?.info((0, localizeUtils_1.getLocalizedString)("info.m365.skills.preparing", index + 1, source.skills.length));
|
|
45
|
+
const directory = await directories.createReadyDirectory(source.agentId, skill.name);
|
|
46
|
+
if (directory.isErr())
|
|
47
|
+
return (0, teamsfx_api_1.err)(directory.error);
|
|
48
|
+
folders.set(skill.folder, directory.value.folder);
|
|
49
|
+
readySkills.push({ skill, directory: directory.value });
|
|
50
|
+
}
|
|
51
|
+
// Metadata may refer to existing remote GUIDs, which only MOS can resolve.
|
|
52
|
+
const transport = (0, skillPackage_1.buildSkillTransportPackage)(source, folders);
|
|
53
|
+
if (transport.isErr())
|
|
54
|
+
return (0, teamsfx_api_1.err)(transport.error);
|
|
55
|
+
const counts = { uploaded: 0, skipped: 0, deleted: 0 };
|
|
56
|
+
for (const [index, { skill, directory }] of readySkills.entries()) {
|
|
57
|
+
logger?.info((0, localizeUtils_1.getLocalizedString)("info.m365.skills.synchronizing", index + 1, source.skills.length));
|
|
58
|
+
const store = new graphSkillFileStore_1.GraphSkillFileStore(graphEndpoint, graphToken.value, directory.driveId);
|
|
59
|
+
const synchronized = await (0, skillFileSync_1.synchronizeSkillFiles)(store, directory.itemId, skill.files);
|
|
60
|
+
if (synchronized.isErr())
|
|
61
|
+
return (0, teamsfx_api_1.err)(synchronized.error);
|
|
62
|
+
counts.uploaded += synchronized.value.uploaded;
|
|
63
|
+
counts.skipped += synchronized.value.skipped;
|
|
64
|
+
counts.deleted += synchronized.value.deleted;
|
|
65
|
+
}
|
|
66
|
+
logger?.info((0, localizeUtils_1.getLocalizedString)("info.m365.skills.summary", counts.uploaded, counts.skipped, counts.deleted));
|
|
67
|
+
(0, telemetry_1.sendTelemetryEvent)(telemetry_1.Component.core, telemetry_1.TelemetryEvent.MosSkillSync, undefined, counts);
|
|
68
|
+
return (0, teamsfx_api_1.ok)({ data: transport.value, hasSkills: true });
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=incrementalSkillUpload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"incrementalSkillUpload.js","sourceRoot":"","sources":["../../../../src/component/m365/skills/incrementalSkillUpload.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { FxError, Result } from "@microsoft/teamsfx-api";
|
|
2
|
+
export interface ReadySkillDirectory {
|
|
3
|
+
folder: string;
|
|
4
|
+
driveId: string;
|
|
5
|
+
itemId: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class SkillDirectoryClient {
|
|
8
|
+
private readonly client;
|
|
9
|
+
constructor(mosEndpoint: string, mosToken: string);
|
|
10
|
+
createReadyDirectory(agentId: string, name: string): Promise<Result<ReadySkillDirectory, FxError>>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=skillDirectoryClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillDirectoryClient.d.ts","sourceRoot":"","sources":["../../../../src/component/m365/skills/skillDirectoryClient.ts"],"names":[],"mappings":"AAGA,OAAO,EAAO,OAAO,EAAM,MAAM,EAA0B,MAAM,wBAAwB,CAAC;AAM1F,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAWD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;gBAE3B,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAS3C,oBAAoB,CACxB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;CAoBjD"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT license.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.SkillDirectoryClient = void 0;
|
|
6
|
+
const teamsfx_api_1 = require("@microsoft/teamsfx-api");
|
|
7
|
+
const localizeUtils_1 = require("../../../common/localizeUtils");
|
|
8
|
+
const wrappedAxiosClient_1 = require("../../../common/wrappedAxiosClient");
|
|
9
|
+
const skillRequest_1 = require("./skillRequest");
|
|
10
|
+
const httpTimeoutMs = 30000;
|
|
11
|
+
const sharePointSuffixes = [
|
|
12
|
+
".sharepoint.com",
|
|
13
|
+
".sharepoint.us",
|
|
14
|
+
".sharepoint-mil.us",
|
|
15
|
+
".sharepoint.cn",
|
|
16
|
+
".sharepoint.de",
|
|
17
|
+
];
|
|
18
|
+
class SkillDirectoryClient {
|
|
19
|
+
client;
|
|
20
|
+
constructor(mosEndpoint, mosToken) {
|
|
21
|
+
this.client = wrappedAxiosClient_1.WrappedAxiosClient.create({
|
|
22
|
+
baseURL: mosEndpoint.replace(/\/$/, ""),
|
|
23
|
+
headers: { Authorization: `Bearer ${mosToken}` },
|
|
24
|
+
timeout: httpTimeoutMs,
|
|
25
|
+
maxRedirects: 0,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
async createReadyDirectory(agentId, name) {
|
|
29
|
+
const response = await (0, skillRequest_1.requestSkillOperation)(() => this.client.post("/builder/v1/directories", {
|
|
30
|
+
agentId,
|
|
31
|
+
directoryType: "skill",
|
|
32
|
+
name,
|
|
33
|
+
skipPublishedContentCopy: true,
|
|
34
|
+
}), "never");
|
|
35
|
+
if (response.isErr())
|
|
36
|
+
return (0, teamsfx_api_1.err)(response.error);
|
|
37
|
+
if (response.value.status !== 200)
|
|
38
|
+
return (0, teamsfx_api_1.err)(failure("directoryFailed"));
|
|
39
|
+
const parsed = parseDirectory(response.value.data);
|
|
40
|
+
if (!parsed)
|
|
41
|
+
return (0, teamsfx_api_1.err)(failure("invalidResponse"));
|
|
42
|
+
// Exclusive ATK skip-copy provenance is a prerequisite, not inferred from this response.
|
|
43
|
+
if (parsed.monitors.length > 0)
|
|
44
|
+
return (0, teamsfx_api_1.err)(failure("copyNotSupported"));
|
|
45
|
+
return (0, teamsfx_api_1.ok)(parsed.directory);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.SkillDirectoryClient = SkillDirectoryClient;
|
|
49
|
+
function parseDirectory(value) {
|
|
50
|
+
if (!isRecord(value) || !guidHex(value.folder) || !isRecord(value.sharePointIds)) {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
const ids = value.sharePointIds;
|
|
54
|
+
const site = guidHex(ids.siteId);
|
|
55
|
+
const web = guidHex(ids.webId);
|
|
56
|
+
const list = guidHex(ids.listId);
|
|
57
|
+
if (typeof value.folder !== "string" ||
|
|
58
|
+
!site ||
|
|
59
|
+
!web ||
|
|
60
|
+
!list ||
|
|
61
|
+
typeof ids.uniqueId !== "string" ||
|
|
62
|
+
!guidHex(ids.uniqueId) ||
|
|
63
|
+
typeof ids.siteUrl !== "string") {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
const siteUrl = safeUrl(ids.siteUrl);
|
|
67
|
+
if (!siteUrl ||
|
|
68
|
+
siteUrl.port ||
|
|
69
|
+
!sharePointSuffixes.some((suffix) => siteUrl.hostname.endsWith(suffix))) {
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
const monitors = [];
|
|
73
|
+
if (value.copyStatusUrls != null) {
|
|
74
|
+
if (!Array.isArray(value.copyStatusUrls))
|
|
75
|
+
return undefined;
|
|
76
|
+
for (const entry of value.copyStatusUrls) {
|
|
77
|
+
if (typeof entry !== "string")
|
|
78
|
+
return undefined;
|
|
79
|
+
const monitor = safeUrl(entry);
|
|
80
|
+
if (!monitor || monitor.origin !== siteUrl.origin)
|
|
81
|
+
return undefined;
|
|
82
|
+
monitors.push(entry);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
directory: {
|
|
87
|
+
folder: value.folder,
|
|
88
|
+
driveId: `b!${Buffer.concat([guidBytes(site), guidBytes(web), guidBytes(list)])
|
|
89
|
+
.toString("base64")
|
|
90
|
+
.replace(/\+/g, "-")
|
|
91
|
+
.replace(/\//g, "_")
|
|
92
|
+
.replace(/=+$/, "")}`,
|
|
93
|
+
itemId: ids.uniqueId,
|
|
94
|
+
},
|
|
95
|
+
monitors,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
function guidHex(value) {
|
|
99
|
+
if (typeof value !== "string")
|
|
100
|
+
return undefined;
|
|
101
|
+
const text = value.startsWith("{") && value.endsWith("}") ? value.slice(1, -1) : value;
|
|
102
|
+
return /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(text)
|
|
103
|
+
? text.replace(/-/g, "")
|
|
104
|
+
: undefined;
|
|
105
|
+
}
|
|
106
|
+
function guidBytes(hex) {
|
|
107
|
+
// .NET Guid.ToByteArray reverses the first 4/2/2-byte fields, not the final eight bytes.
|
|
108
|
+
const bytes = Buffer.from(hex, "hex");
|
|
109
|
+
bytes.subarray(0, 4).reverse();
|
|
110
|
+
bytes.subarray(4, 6).reverse();
|
|
111
|
+
bytes.subarray(6, 8).reverse();
|
|
112
|
+
return bytes;
|
|
113
|
+
}
|
|
114
|
+
function safeUrl(value) {
|
|
115
|
+
if (/[\s\\#]/.test(value) || /^https:\/\/[^/]*@/.test(value))
|
|
116
|
+
return undefined;
|
|
117
|
+
try {
|
|
118
|
+
const url = new URL(value);
|
|
119
|
+
return value.startsWith("https://") && !url.username && !url.password && !url.hash
|
|
120
|
+
? url
|
|
121
|
+
: undefined;
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
return undefined;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
function isRecord(value) {
|
|
128
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
129
|
+
}
|
|
130
|
+
function failure(kind) {
|
|
131
|
+
const names = {
|
|
132
|
+
directoryFailed: "SkillDirectoryFailed",
|
|
133
|
+
copyNotSupported: "SkillUploadCopyNotSupported",
|
|
134
|
+
invalidResponse: "SkillInvalidResponse",
|
|
135
|
+
};
|
|
136
|
+
const keys = {
|
|
137
|
+
directoryFailed: "error.m365.skills.directoryFailed",
|
|
138
|
+
copyNotSupported: "error.m365.skills.copyNotSupported",
|
|
139
|
+
invalidResponse: "error.m365.skills.invalidResponse",
|
|
140
|
+
};
|
|
141
|
+
const key = keys[kind];
|
|
142
|
+
const options = {
|
|
143
|
+
source: "M365",
|
|
144
|
+
name: names[kind],
|
|
145
|
+
message: (0, localizeUtils_1.getDefaultString)(key),
|
|
146
|
+
displayMessage: (0, localizeUtils_1.getLocalizedString)(key),
|
|
147
|
+
};
|
|
148
|
+
return kind === "copyNotSupported" ? new teamsfx_api_1.UserError(options) : new teamsfx_api_1.SystemError(options);
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=skillDirectoryClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillDirectoryClient.js","sourceRoot":"","sources":["../../../../src/component/m365/skills/skillDirectoryClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { FxError, Result } from "@microsoft/teamsfx-api";
|
|
2
|
+
export interface LocalSkillFile {
|
|
3
|
+
path: string;
|
|
4
|
+
content: Buffer;
|
|
5
|
+
}
|
|
6
|
+
export interface RemoteSkillItem {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
kind: "file" | "folder";
|
|
10
|
+
eTag: string;
|
|
11
|
+
size?: number;
|
|
12
|
+
hashes?: {
|
|
13
|
+
sha1Hash?: string;
|
|
14
|
+
quickXorHash?: string;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/** The port owns pagination, authentication, safe retries, and eTag preconditions. */
|
|
18
|
+
export interface SkillFileStore {
|
|
19
|
+
listChildren(folderId: string): Promise<Result<RemoteSkillItem[], FxError>>;
|
|
20
|
+
createFolder(parentId: string, name: string): Promise<Result<RemoteSkillItem, FxError>>;
|
|
21
|
+
uploadFile(parentId: string, name: string, content: Buffer, existing?: RemoteSkillItem): Promise<Result<RemoteSkillItem, FxError>>;
|
|
22
|
+
deleteItem(item: RemoteSkillItem): Promise<Result<void, FxError>>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Reconciles only descendants enumerated from the caller's draft root. Every
|
|
26
|
+
* inventory read completes before mutation; errors retain partial progress for
|
|
27
|
+
* a subsequent invocation to reconcile against fresh metadata. Deleted counts
|
|
28
|
+
* include files and folders; uploaded and skipped counts include only files.
|
|
29
|
+
*/
|
|
30
|
+
export declare function synchronizeSkillFiles(store: SkillFileStore, rootId: string, files: LocalSkillFile[]): Promise<Result<{
|
|
31
|
+
uploaded: number;
|
|
32
|
+
skipped: number;
|
|
33
|
+
deleted: number;
|
|
34
|
+
}, FxError>>;
|
|
35
|
+
//# sourceMappingURL=skillFileSync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillFileSync.d.ts","sourceRoot":"","sources":["../../../../src/component/m365/skills/skillFileSync.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAsB,MAAM,wBAAwB,CAAC;AAI7E,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACvD;AAED,sFAAsF;AACtF,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5E,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;IACxF,UAAU,CACR,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,eAAe,GACzB,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7C,UAAU,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;CACnE;AAsLD;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,cAAc,EAAE,GACtB,OAAO,CAAC,MAAM,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,OAAO,CAAC,CAAC,CAwElF"}
|