@microsoft/teamsfx-core 3.1.4 → 3.1.5-alpha.003386e0ae.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/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 +7 -7
- 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
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT license.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.synchronizeSkillFiles = synchronizeSkillFiles;
|
|
6
|
+
const teamsfx_api_1 = require("@microsoft/teamsfx-api");
|
|
7
|
+
const crypto_1 = require("crypto");
|
|
8
|
+
const localizeUtils_1 = require("../../../common/localizeUtils");
|
|
9
|
+
function invalidInventory() {
|
|
10
|
+
return new teamsfx_api_1.UserError({
|
|
11
|
+
source: "M365",
|
|
12
|
+
name: "InvalidSkillInventory",
|
|
13
|
+
message: (0, localizeUtils_1.getDefaultString)("error.m365.skills.invalidInventory"),
|
|
14
|
+
displayMessage: (0, localizeUtils_1.getLocalizedString)("error.m365.skills.invalidInventory"),
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
function validName(name) {
|
|
18
|
+
return (typeof name === "string" &&
|
|
19
|
+
name.length > 0 &&
|
|
20
|
+
name !== "." &&
|
|
21
|
+
name !== ".." &&
|
|
22
|
+
name.trim() === name &&
|
|
23
|
+
!name.endsWith(".") &&
|
|
24
|
+
!/[<>:"/\\|?*\u0000-\u001f\u007f]/.test(name));
|
|
25
|
+
}
|
|
26
|
+
function validId(id) {
|
|
27
|
+
return typeof id === "string" && id.trim().length > 0;
|
|
28
|
+
}
|
|
29
|
+
function validItem(item) {
|
|
30
|
+
return (item !== null &&
|
|
31
|
+
typeof item === "object" &&
|
|
32
|
+
validId(item.id) &&
|
|
33
|
+
validName(item.name) &&
|
|
34
|
+
(item.kind === "file" || item.kind === "folder") &&
|
|
35
|
+
validId(item.eTag) &&
|
|
36
|
+
(item.size === undefined || (Number.isSafeInteger(item.size) && item.size >= 0)));
|
|
37
|
+
}
|
|
38
|
+
function collisionKey(path) {
|
|
39
|
+
return path.normalize("NFC").toLowerCase();
|
|
40
|
+
}
|
|
41
|
+
function localInventory(files) {
|
|
42
|
+
const entries = new Map();
|
|
43
|
+
const paths = new Map();
|
|
44
|
+
for (const file of files) {
|
|
45
|
+
if (!file || typeof file.path !== "string" || !Buffer.isBuffer(file.content)) {
|
|
46
|
+
return (0, teamsfx_api_1.err)(invalidInventory());
|
|
47
|
+
}
|
|
48
|
+
const parts = file.path.split("/");
|
|
49
|
+
if (!parts.every(validName))
|
|
50
|
+
return (0, teamsfx_api_1.err)(invalidInventory());
|
|
51
|
+
let path = "";
|
|
52
|
+
for (let i = 0; i < parts.length; i++) {
|
|
53
|
+
path = path ? `${path}/${parts[i]}` : parts[i];
|
|
54
|
+
const kind = i === parts.length - 1 ? "file" : "folder";
|
|
55
|
+
const existingPath = paths.get(collisionKey(path));
|
|
56
|
+
if (existingPath !== undefined) {
|
|
57
|
+
if (existingPath !== path || kind === "file" || entries.get(path)?.kind !== "folder") {
|
|
58
|
+
return (0, teamsfx_api_1.err)(invalidInventory());
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
paths.set(collisionKey(path), path);
|
|
63
|
+
entries.set(path, kind === "file" ? { kind, content: file.content } : { kind });
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return (0, teamsfx_api_1.ok)(entries);
|
|
68
|
+
}
|
|
69
|
+
async function remoteInventory(store, rootId) {
|
|
70
|
+
const entries = new Map();
|
|
71
|
+
const ids = new Set([rootId]);
|
|
72
|
+
const paths = new Set();
|
|
73
|
+
const folders = [{ id: rootId, path: "" }];
|
|
74
|
+
// Iterative traversal bounds the call stack even for deeply nested drafts.
|
|
75
|
+
for (let index = 0; index < folders.length; index++) {
|
|
76
|
+
const parent = folders[index];
|
|
77
|
+
const children = await store.listChildren(parent.id);
|
|
78
|
+
if (children.isErr())
|
|
79
|
+
return (0, teamsfx_api_1.err)(children.error);
|
|
80
|
+
if (!Array.isArray(children.value))
|
|
81
|
+
return (0, teamsfx_api_1.err)(invalidInventory());
|
|
82
|
+
for (const item of children.value) {
|
|
83
|
+
if (!validItem(item) || ids.has(item.id))
|
|
84
|
+
return (0, teamsfx_api_1.err)(invalidInventory());
|
|
85
|
+
const path = parent.path ? `${parent.path}/${item.name}` : item.name;
|
|
86
|
+
const key = collisionKey(path);
|
|
87
|
+
if (paths.has(key))
|
|
88
|
+
return (0, teamsfx_api_1.err)(invalidInventory());
|
|
89
|
+
paths.add(key);
|
|
90
|
+
ids.add(item.id);
|
|
91
|
+
entries.set(path, item);
|
|
92
|
+
if (item.kind === "folder")
|
|
93
|
+
folders.push({ id: item.id, path });
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return (0, teamsfx_api_1.ok)(entries);
|
|
97
|
+
}
|
|
98
|
+
function quickXorHash(content) {
|
|
99
|
+
// Matches Microsoft's C# reference: circular 160-bit XOR, 11-bit stride,
|
|
100
|
+
// followed by little-endian length XOR into bytes 12..19.
|
|
101
|
+
// https://learn.microsoft.com/onedrive/developer/code-snippets/quickxorhash
|
|
102
|
+
const hash = Buffer.alloc(20);
|
|
103
|
+
for (let i = 0; i < Math.min(content.length, 160); i++) {
|
|
104
|
+
let byte = 0;
|
|
105
|
+
for (let j = i; j < content.length; j += 160)
|
|
106
|
+
byte ^= content[j];
|
|
107
|
+
const shift = (i * 11) % 160;
|
|
108
|
+
const index = Math.floor(shift / 8);
|
|
109
|
+
const offset = shift % 8;
|
|
110
|
+
hash[index] ^= byte << offset;
|
|
111
|
+
hash[(index + 1) % hash.length] ^= byte >>> (8 - offset);
|
|
112
|
+
}
|
|
113
|
+
const length = Buffer.alloc(8);
|
|
114
|
+
length.writeBigUInt64LE(BigInt(content.length));
|
|
115
|
+
for (let i = 0; i < length.length; i++)
|
|
116
|
+
hash[12 + i] ^= length[i];
|
|
117
|
+
return hash.toString("base64");
|
|
118
|
+
}
|
|
119
|
+
function sameContent(item, content) {
|
|
120
|
+
if (item.size !== content.length)
|
|
121
|
+
return false;
|
|
122
|
+
// These are change detectors, never credential/security primitives. Prefer
|
|
123
|
+
// SHA-1 when usable; a mismatch must not be overridden by a weaker hash.
|
|
124
|
+
const sha1 = item.hashes?.sha1Hash;
|
|
125
|
+
if (typeof sha1 === "string" && /^[a-fA-F0-9]{40}$/.test(sha1)) {
|
|
126
|
+
return (0, crypto_1.createHash)("sha1").update(content).digest("hex") === sha1.toLowerCase();
|
|
127
|
+
}
|
|
128
|
+
const quickXor = item.hashes?.quickXorHash;
|
|
129
|
+
if (typeof quickXor !== "string" ||
|
|
130
|
+
!/^[A-Za-z0-9+/]{27}=$/.test(quickXor) ||
|
|
131
|
+
Buffer.from(quickXor, "base64").toString("base64") !== quickXor) {
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
return quickXorHash(content) === quickXor;
|
|
135
|
+
}
|
|
136
|
+
async function refreshEmptyFolder(store, rootId, path, item, entries) {
|
|
137
|
+
const parentPath = path.substring(0, Math.max(0, path.lastIndexOf("/")));
|
|
138
|
+
const parentId = parentPath ? entries.get(parentPath)?.id : rootId;
|
|
139
|
+
if (!parentId)
|
|
140
|
+
return (0, teamsfx_api_1.err)(invalidInventory());
|
|
141
|
+
const siblings = await store.listChildren(parentId);
|
|
142
|
+
if (siblings.isErr())
|
|
143
|
+
return (0, teamsfx_api_1.err)(siblings.error);
|
|
144
|
+
if (!Array.isArray(siblings.value))
|
|
145
|
+
return (0, teamsfx_api_1.err)(invalidInventory());
|
|
146
|
+
const expected = new Map(Array.from(entries).filter(([entryPath]) => entryPath.substring(0, Math.max(0, entryPath.lastIndexOf("/"))) === parentPath));
|
|
147
|
+
if (siblings.value.length !== expected.size)
|
|
148
|
+
return (0, teamsfx_api_1.err)(invalidInventory());
|
|
149
|
+
const seen = new Set();
|
|
150
|
+
let refreshed;
|
|
151
|
+
for (const sibling of siblings.value) {
|
|
152
|
+
if (!validItem(sibling) || seen.has(sibling.id))
|
|
153
|
+
return (0, teamsfx_api_1.err)(invalidInventory());
|
|
154
|
+
seen.add(sibling.id);
|
|
155
|
+
const siblingPath = parentPath ? `${parentPath}/${sibling.name}` : sibling.name;
|
|
156
|
+
const original = expected.get(siblingPath);
|
|
157
|
+
if (original?.id !== sibling.id || original.kind !== sibling.kind) {
|
|
158
|
+
return (0, teamsfx_api_1.err)(invalidInventory());
|
|
159
|
+
}
|
|
160
|
+
if (sibling.id === item.id)
|
|
161
|
+
refreshed = sibling;
|
|
162
|
+
}
|
|
163
|
+
if (!refreshed)
|
|
164
|
+
return (0, teamsfx_api_1.err)(invalidInventory());
|
|
165
|
+
// Capture the new version BEFORE checking emptiness. A child added before the
|
|
166
|
+
// check is detected here; a later change must fail the port's If-Match delete.
|
|
167
|
+
const children = await store.listChildren(item.id);
|
|
168
|
+
if (children.isErr())
|
|
169
|
+
return (0, teamsfx_api_1.err)(children.error);
|
|
170
|
+
if (!Array.isArray(children.value) || children.value.length !== 0) {
|
|
171
|
+
return (0, teamsfx_api_1.err)(invalidInventory());
|
|
172
|
+
}
|
|
173
|
+
return (0, teamsfx_api_1.ok)(refreshed);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Reconciles only descendants enumerated from the caller's draft root. Every
|
|
177
|
+
* inventory read completes before mutation; errors retain partial progress for
|
|
178
|
+
* a subsequent invocation to reconcile against fresh metadata. Deleted counts
|
|
179
|
+
* include files and folders; uploaded and skipped counts include only files.
|
|
180
|
+
*/
|
|
181
|
+
async function synchronizeSkillFiles(store, rootId, files) {
|
|
182
|
+
if (!validId(rootId) || !Array.isArray(files))
|
|
183
|
+
return (0, teamsfx_api_1.err)(invalidInventory());
|
|
184
|
+
const local = localInventory(files);
|
|
185
|
+
if (local.isErr())
|
|
186
|
+
return (0, teamsfx_api_1.err)(local.error);
|
|
187
|
+
const remote = await remoteInventory(store, rootId);
|
|
188
|
+
if (remote.isErr())
|
|
189
|
+
return (0, teamsfx_api_1.err)(remote.error);
|
|
190
|
+
const counts = { uploaded: 0, skipped: 0, deleted: 0 };
|
|
191
|
+
const entries = remote.value;
|
|
192
|
+
const ids = new Set([rootId, ...Array.from(entries.values(), (item) => item.id)]);
|
|
193
|
+
// Removing stale children first also makes file/folder and case replacements
|
|
194
|
+
// possible without recursive deletes or a name-conflict overwrite.
|
|
195
|
+
const stale = Array.from(entries).filter(([path, item]) => local.value.get(path)?.kind !== item.kind);
|
|
196
|
+
stale.sort(([a], [b]) => b.split("/").length - a.split("/").length);
|
|
197
|
+
for (const [path, item] of stale) {
|
|
198
|
+
let versionedItem = item;
|
|
199
|
+
if (item.kind === "folder") {
|
|
200
|
+
const refreshed = await refreshEmptyFolder(store, rootId, path, item, entries);
|
|
201
|
+
if (refreshed.isErr())
|
|
202
|
+
return (0, teamsfx_api_1.err)(refreshed.error);
|
|
203
|
+
versionedItem = refreshed.value;
|
|
204
|
+
}
|
|
205
|
+
const deleted = await store.deleteItem(versionedItem);
|
|
206
|
+
if (deleted.isErr())
|
|
207
|
+
return (0, teamsfx_api_1.err)(deleted.error);
|
|
208
|
+
entries.delete(path);
|
|
209
|
+
counts.deleted++;
|
|
210
|
+
}
|
|
211
|
+
// Local inventory inserts each parent before its children.
|
|
212
|
+
for (const [path, entry] of local.value) {
|
|
213
|
+
const separator = path.lastIndexOf("/");
|
|
214
|
+
const parentPath = separator < 0 ? "" : path.substring(0, separator);
|
|
215
|
+
const parentId = parentPath ? entries.get(parentPath)?.id : rootId;
|
|
216
|
+
if (!parentId)
|
|
217
|
+
return (0, teamsfx_api_1.err)(invalidInventory());
|
|
218
|
+
const name = path.substring(separator + 1);
|
|
219
|
+
const existing = entries.get(path);
|
|
220
|
+
if (entry.kind === "folder") {
|
|
221
|
+
if (existing)
|
|
222
|
+
continue;
|
|
223
|
+
const created = await store.createFolder(parentId, name);
|
|
224
|
+
if (created.isErr())
|
|
225
|
+
return (0, teamsfx_api_1.err)(created.error);
|
|
226
|
+
if (!validItem(created.value) ||
|
|
227
|
+
created.value.kind !== "folder" ||
|
|
228
|
+
created.value.name !== name ||
|
|
229
|
+
ids.has(created.value.id)) {
|
|
230
|
+
return (0, teamsfx_api_1.err)(invalidInventory());
|
|
231
|
+
}
|
|
232
|
+
ids.add(created.value.id);
|
|
233
|
+
entries.set(path, created.value);
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
if (existing && sameContent(existing, entry.content)) {
|
|
237
|
+
counts.skipped++;
|
|
238
|
+
continue;
|
|
239
|
+
}
|
|
240
|
+
const uploaded = await store.uploadFile(parentId, name, entry.content, existing);
|
|
241
|
+
if (uploaded.isErr())
|
|
242
|
+
return (0, teamsfx_api_1.err)(uploaded.error);
|
|
243
|
+
if (!validItem(uploaded.value) ||
|
|
244
|
+
uploaded.value.kind !== "file" ||
|
|
245
|
+
uploaded.value.name !== name ||
|
|
246
|
+
(existing ? uploaded.value.id !== existing.id : ids.has(uploaded.value.id))) {
|
|
247
|
+
return (0, teamsfx_api_1.err)(invalidInventory());
|
|
248
|
+
}
|
|
249
|
+
ids.add(uploaded.value.id);
|
|
250
|
+
entries.set(path, uploaded.value);
|
|
251
|
+
counts.uploaded++;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
return (0, teamsfx_api_1.ok)(counts);
|
|
255
|
+
}
|
|
256
|
+
//# sourceMappingURL=skillFileSync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillFileSync.js","sourceRoot":"","sources":["../../../../src/component/m365/skills/skillFileSync.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { FxError, Result } from "@microsoft/teamsfx-api";
|
|
2
|
+
export interface SkillPackageFile {
|
|
3
|
+
/** Confined, slash-separated path relative to the skill folder. */
|
|
4
|
+
path: string;
|
|
5
|
+
content: Buffer;
|
|
6
|
+
}
|
|
7
|
+
export interface LocalSkill {
|
|
8
|
+
folder: string;
|
|
9
|
+
name: string;
|
|
10
|
+
description: string;
|
|
11
|
+
files: SkillPackageFile[];
|
|
12
|
+
}
|
|
13
|
+
export interface SkillReference {
|
|
14
|
+
manifestPath: string;
|
|
15
|
+
property: "agentSkills" | "agent_skills" | "x-agent_skills";
|
|
16
|
+
index: number;
|
|
17
|
+
folder: string;
|
|
18
|
+
}
|
|
19
|
+
export interface SkillAgentManifest {
|
|
20
|
+
path: string;
|
|
21
|
+
/** Original parsed fields, including extensions and exposure metadata. */
|
|
22
|
+
manifest: Record<string, unknown>;
|
|
23
|
+
}
|
|
24
|
+
/** Validated inventory from readSkillPackage; consumers must not mutate its source data. */
|
|
25
|
+
export interface SkillPackage {
|
|
26
|
+
/** Unmodified source ZIP, retained for a separately defined transport transformation. */
|
|
27
|
+
data: Buffer;
|
|
28
|
+
agentId: string;
|
|
29
|
+
manifest: Record<string, unknown>;
|
|
30
|
+
declarativeAgents: SkillAgentManifest[];
|
|
31
|
+
references: SkillReference[];
|
|
32
|
+
skills: LocalSkill[];
|
|
33
|
+
}
|
|
34
|
+
/** Build the verified MOS reference package without changing the portable source package. */
|
|
35
|
+
export declare function buildSkillTransportPackage(source: SkillPackage, folders: ReadonlyMap<string, string>): Result<Buffer, FxError>;
|
|
36
|
+
/** Validate before remote mutations; remote-GUID associations require the final builder mapping. */
|
|
37
|
+
export declare function validateSkillTransportPackage(source: SkillPackage): Result<void, FxError>;
|
|
38
|
+
/** Inventory and validate only; this function never extracts files or performs remote I/O. */
|
|
39
|
+
export declare function readSkillPackage(data: Buffer): Result<SkillPackage, FxError>;
|
|
40
|
+
//# sourceMappingURL=skillPackage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillPackage.d.ts","sourceRoot":"","sources":["../../../../src/component/m365/skills/skillPackage.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,OAAO,EAEP,MAAM,EAGP,MAAM,wBAAwB,CAAC;AAOhC,MAAM,WAAW,gBAAgB;IAC/B,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,aAAa,GAAG,cAAc,GAAG,gBAAgB,CAAC;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,4FAA4F;AAC5F,MAAM,WAAW,YAAY;IAC3B,yFAAyF;IACzF,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,iBAAiB,EAAE,kBAAkB,EAAE,CAAC;IACxC,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,MAAM,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,6FAA6F;AAC7F,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzB;AAED,oGAAoG;AACpG,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAEzF;AAqOD,8FAA8F;AAC9F,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAiC5E"}
|