@microsoft/teamsfx-core 3.1.4 → 3.1.5-alpha.3256bba3fe.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.
Files changed (238) hide show
  1. package/README.md +4 -0
  2. package/build/common/featureFlags.d.ts +5 -0
  3. package/build/common/featureFlags.d.ts.map +1 -1
  4. package/build/common/featureFlags.js +5 -0
  5. package/build/common/featureFlags.js.map +1 -1
  6. package/build/common/telemetry.d.ts +2 -1
  7. package/build/common/telemetry.d.ts.map +1 -1
  8. package/build/common/telemetry.js +1 -0
  9. package/build/common/telemetry.js.map +1 -1
  10. package/build/common/templates-config.json +2 -2
  11. package/build/common/wrappedAxiosClient.d.ts +5 -0
  12. package/build/common/wrappedAxiosClient.d.ts.map +1 -1
  13. package/build/common/wrappedAxiosClient.js +95 -4
  14. package/build/common/wrappedAxiosClient.js.map +1 -1
  15. package/build/component/configManager/actionInjector.d.ts +1 -1
  16. package/build/component/configManager/actionInjector.d.ts.map +1 -1
  17. package/build/component/configManager/actionInjector.js +2 -2
  18. package/build/component/configManager/actionInjector.js.map +1 -1
  19. package/build/component/driver/copilotAgent/publish.d.ts.map +1 -1
  20. package/build/component/driver/copilotAgent/publish.js +1 -1
  21. package/build/component/driver/copilotAgent/publish.js.map +1 -1
  22. package/build/component/driver/dcr/create.d.ts.map +1 -1
  23. package/build/component/driver/dcr/create.js +47 -14
  24. package/build/component/driver/dcr/create.js.map +1 -1
  25. package/build/component/driver/dcr/interface/createDcrArgs.d.ts +4 -1
  26. package/build/component/driver/dcr/interface/createDcrArgs.d.ts.map +1 -1
  27. package/build/component/driver/index.d.ts +0 -1
  28. package/build/component/driver/index.d.ts.map +1 -1
  29. package/build/component/driver/index.js +0 -1
  30. package/build/component/driver/index.js.map +1 -1
  31. package/build/component/driver/m365/acquire.d.ts.map +1 -1
  32. package/build/component/driver/m365/acquire.js +2 -2
  33. package/build/component/driver/m365/acquire.js.map +1 -1
  34. package/build/component/driver/oauth/create.d.ts.map +1 -1
  35. package/build/component/driver/oauth/create.js +16 -2
  36. package/build/component/driver/oauth/create.js.map +1 -1
  37. package/build/component/driver/oauth/error/oauthSupportedAccountTypesUnsupportedCloud.d.ts +5 -0
  38. package/build/component/driver/oauth/error/oauthSupportedAccountTypesUnsupportedCloud.d.ts.map +1 -0
  39. package/build/component/driver/oauth/error/oauthSupportedAccountTypesUnsupportedCloud.js +13 -0
  40. package/build/component/driver/oauth/error/oauthSupportedAccountTypesUnsupportedCloud.js.map +1 -0
  41. package/build/component/driver/oauth/interface/createOauthArgs.d.ts +1 -0
  42. package/build/component/driver/oauth/interface/createOauthArgs.d.ts.map +1 -1
  43. package/build/component/driver/oauth/interface/updateOauthArgs.d.ts +1 -0
  44. package/build/component/driver/oauth/interface/updateOauthArgs.d.ts.map +1 -1
  45. package/build/component/driver/oauth/update.d.ts.map +1 -1
  46. package/build/component/driver/oauth/update.js +26 -4
  47. package/build/component/driver/oauth/update.js.map +1 -1
  48. package/build/component/driver/oauth/utility/supportedAccountTypes.d.ts +6 -0
  49. package/build/component/driver/oauth/utility/supportedAccountTypes.d.ts.map +1 -0
  50. package/build/component/driver/oauth/utility/supportedAccountTypes.js +31 -0
  51. package/build/component/driver/oauth/utility/supportedAccountTypes.js.map +1 -0
  52. package/build/component/driver/teamsApp/constants.d.ts +5 -0
  53. package/build/component/driver/teamsApp/constants.d.ts.map +1 -1
  54. package/build/component/driver/teamsApp/constants.js +5 -0
  55. package/build/component/driver/teamsApp/constants.js.map +1 -1
  56. package/build/component/driver/teamsApp/interfaces/DcrRegistration.d.ts +5 -2
  57. package/build/component/driver/teamsApp/interfaces/DcrRegistration.d.ts.map +1 -1
  58. package/build/component/driver/teamsApp/interfaces/OauthRegistration.d.ts +6 -0
  59. package/build/component/driver/teamsApp/interfaces/OauthRegistration.d.ts.map +1 -1
  60. package/build/component/driver/teamsApp/interfaces/OauthRegistration.js +5 -1
  61. package/build/component/driver/teamsApp/interfaces/OauthRegistration.js.map +1 -1
  62. package/build/component/generator/generatorProvider.d.ts.map +1 -1
  63. package/build/component/generator/generatorProvider.js +0 -3
  64. package/build/component/generator/generatorProvider.js.map +1 -1
  65. package/build/component/generator/templates/templateNames.d.ts +1 -1
  66. package/build/component/generator/templates/templateNames.d.ts.map +1 -1
  67. package/build/component/m365/packageService.d.ts +4 -3
  68. package/build/component/m365/packageService.d.ts.map +1 -1
  69. package/build/component/m365/packageService.js +34 -30
  70. package/build/component/m365/packageService.js.map +1 -1
  71. package/build/component/m365/serviceConstant.d.ts.map +1 -1
  72. package/build/component/m365/serviceConstant.js +5 -0
  73. package/build/component/m365/serviceConstant.js.map +1 -1
  74. package/build/component/m365/skills/graphSkillFileStore.d.ts +14 -0
  75. package/build/component/m365/skills/graphSkillFileStore.d.ts.map +1 -0
  76. package/build/component/m365/skills/graphSkillFileStore.js +164 -0
  77. package/build/component/m365/skills/graphSkillFileStore.js.map +1 -0
  78. package/build/component/m365/skills/incrementalSkillUpload.d.ts +6 -0
  79. package/build/component/m365/skills/incrementalSkillUpload.d.ts.map +1 -0
  80. package/build/component/m365/skills/incrementalSkillUpload.js +70 -0
  81. package/build/component/m365/skills/incrementalSkillUpload.js.map +1 -0
  82. package/build/component/m365/skills/skillDirectoryClient.d.ts +12 -0
  83. package/build/component/m365/skills/skillDirectoryClient.d.ts.map +1 -0
  84. package/build/component/m365/skills/skillDirectoryClient.js +150 -0
  85. package/build/component/m365/skills/skillDirectoryClient.js.map +1 -0
  86. package/build/component/m365/skills/skillFileSync.d.ts +35 -0
  87. package/build/component/m365/skills/skillFileSync.d.ts.map +1 -0
  88. package/build/component/m365/skills/skillFileSync.js +256 -0
  89. package/build/component/m365/skills/skillFileSync.js.map +1 -0
  90. package/build/component/m365/skills/skillPackage.d.ts +40 -0
  91. package/build/component/m365/skills/skillPackage.d.ts.map +1 -0
  92. package/build/component/m365/skills/skillPackage.js +471 -0
  93. package/build/component/m365/skills/skillPackage.js.map +1 -0
  94. package/build/component/m365/skills/skillRequest.d.ts +7 -0
  95. package/build/component/m365/skills/skillRequest.d.ts.map +1 -0
  96. package/build/component/m365/skills/skillRequest.js +91 -0
  97. package/build/component/m365/skills/skillRequest.js.map +1 -0
  98. package/build/component/utils/mcpAuthScaffolder.d.ts +5 -20
  99. package/build/component/utils/mcpAuthScaffolder.d.ts.map +1 -1
  100. package/build/component/utils/mcpAuthScaffolder.js +9 -24
  101. package/build/component/utils/mcpAuthScaffolder.js.map +1 -1
  102. package/build/core/FxCore.d.ts +2 -4
  103. package/build/core/FxCore.d.ts.map +1 -1
  104. package/build/core/FxCore.js +7 -22
  105. package/build/core/FxCore.js.map +1 -1
  106. package/build/question/create.d.ts +0 -6
  107. package/build/question/create.d.ts.map +1 -1
  108. package/build/question/create.js +119 -281
  109. package/build/question/create.js.map +1 -1
  110. package/build/question/generator.js +0 -2
  111. package/build/question/generator.js.map +1 -1
  112. package/build/question/index.d.ts +0 -1
  113. package/build/question/index.d.ts.map +1 -1
  114. package/build/question/index.js +0 -3
  115. package/build/question/index.js.map +1 -1
  116. package/build/question/inputs/index.d.ts +0 -1
  117. package/build/question/inputs/index.d.ts.map +1 -1
  118. package/build/question/inputs/index.js +0 -1
  119. package/build/question/inputs/index.js.map +1 -1
  120. package/build/question/options/CreateProjectOptions.d.ts.map +1 -1
  121. package/build/question/options/CreateProjectOptions.js +0 -1
  122. package/build/question/options/CreateProjectOptions.js.map +1 -1
  123. package/build/question/options/index.d.ts +0 -1
  124. package/build/question/options/index.d.ts.map +1 -1
  125. package/build/question/options/index.js +0 -1
  126. package/build/question/options/index.js.map +1 -1
  127. package/build/question/other.d.ts +0 -1
  128. package/build/question/other.d.ts.map +1 -1
  129. package/build/question/other.js +158 -214
  130. package/build/question/other.js.map +1 -1
  131. package/build/question/scaffold/vsc/CapabilityOptions.d.ts +0 -1
  132. package/build/question/scaffold/vsc/CapabilityOptions.d.ts.map +1 -1
  133. package/build/question/scaffold/vsc/CapabilityOptions.js +0 -9
  134. package/build/question/scaffold/vsc/CapabilityOptions.js.map +1 -1
  135. package/build/question/scaffold/vsc/teamsProjectTypeNode.d.ts.map +1 -1
  136. package/build/question/scaffold/vsc/teamsProjectTypeNode.js +0 -24
  137. package/build/question/scaffold/vsc/teamsProjectTypeNode.js.map +1 -1
  138. package/build/v4/mcp/mcpAuthAction.d.ts +0 -1
  139. package/build/v4/mcp/mcpAuthAction.d.ts.map +1 -1
  140. package/build/v4/mcp/mcpAuthAction.js +5 -7
  141. package/build/v4/mcp/mcpAuthAction.js.map +1 -1
  142. package/build/v4/mcp/mcpAuthScaffold.d.ts.map +1 -1
  143. package/build/v4/mcp/mcpAuthScaffold.js +4 -12
  144. package/build/v4/mcp/mcpAuthScaffold.js.map +1 -1
  145. package/package.json +11 -8
  146. package/resource/package.nls.cs.json +72 -68
  147. package/resource/package.nls.de.json +72 -68
  148. package/resource/package.nls.es.json +72 -68
  149. package/resource/package.nls.fr.json +72 -68
  150. package/resource/package.nls.it.json +72 -68
  151. package/resource/package.nls.ja.json +72 -68
  152. package/resource/package.nls.json +15 -58
  153. package/resource/package.nls.ko.json +72 -68
  154. package/resource/package.nls.pl.json +72 -68
  155. package/resource/package.nls.pt-BR.json +72 -68
  156. package/resource/package.nls.ru.json +72 -68
  157. package/resource/package.nls.tr.json +72 -68
  158. package/resource/package.nls.zh-Hans.json +72 -68
  159. package/resource/package.nls.zh-Hant.json +72 -68
  160. package/resource/yaml-schema/v1.13/yaml.schema.json +71 -33
  161. package/resource/yaml-schema/yaml.schema.json +71 -33
  162. package/templates/fallback/common.zip +0 -0
  163. package/templates/fallback/csharp.zip +0 -0
  164. package/templates/fallback/js.zip +0 -0
  165. package/templates/fallback/python.zip +0 -0
  166. package/templates/fallback/ts.zip +0 -0
  167. package/templates/metadata.zip +0 -0
  168. package/templates/v4/floor.json +1 -1
  169. package/templates/v4/templates-metadata.zip +0 -0
  170. package/templates/v4/templates.zip +0 -0
  171. package/build/common/treatmentVariables.d.ts +0 -5
  172. package/build/common/treatmentVariables.d.ts.map +0 -1
  173. package/build/common/treatmentVariables.js +0 -10
  174. package/build/common/treatmentVariables.js.map +0 -1
  175. package/build/component/driver/add/addWebPart.d.ts +0 -12
  176. package/build/component/driver/add/addWebPart.d.ts.map +0 -1
  177. package/build/component/driver/add/addWebPart.js +0 -109
  178. package/build/component/driver/add/addWebPart.js.map +0 -1
  179. package/build/component/driver/add/error/noConfigurationError.d.ts +0 -5
  180. package/build/component/driver/add/error/noConfigurationError.d.ts.map +0 -1
  181. package/build/component/driver/add/error/noConfigurationError.js +0 -22
  182. package/build/component/driver/add/error/noConfigurationError.js.map +0 -1
  183. package/build/component/driver/add/interface/AddWebPartArgs.d.ts +0 -27
  184. package/build/component/driver/add/interface/AddWebPartArgs.d.ts.map +0 -1
  185. package/build/component/driver/add/interface/AddWebPartArgs.js +0 -5
  186. package/build/component/driver/add/interface/AddWebPartArgs.js.map +0 -1
  187. package/build/component/driver/add/utility/constants.d.ts +0 -8
  188. package/build/component/driver/add/utility/constants.d.ts.map +0 -1
  189. package/build/component/driver/add/utility/constants.js +0 -14
  190. package/build/component/driver/add/utility/constants.js.map +0 -1
  191. package/build/component/generator/spfx/depsChecker/dependencyChecker.d.ts +0 -4
  192. package/build/component/generator/spfx/depsChecker/dependencyChecker.d.ts.map +0 -1
  193. package/build/component/generator/spfx/depsChecker/dependencyChecker.js +0 -5
  194. package/build/component/generator/spfx/depsChecker/dependencyChecker.js.map +0 -1
  195. package/build/component/generator/spfx/depsChecker/generatorChecker.d.ts +0 -20
  196. package/build/component/generator/spfx/depsChecker/generatorChecker.d.ts.map +0 -1
  197. package/build/component/generator/spfx/depsChecker/generatorChecker.js +0 -129
  198. package/build/component/generator/spfx/depsChecker/generatorChecker.js.map +0 -1
  199. package/build/component/generator/spfx/depsChecker/yoChecker.d.ts +0 -20
  200. package/build/component/generator/spfx/depsChecker/yoChecker.d.ts.map +0 -1
  201. package/build/component/generator/spfx/depsChecker/yoChecker.js +0 -143
  202. package/build/component/generator/spfx/depsChecker/yoChecker.js.map +0 -1
  203. package/build/component/generator/spfx/error.d.ts +0 -15
  204. package/build/component/generator/spfx/error.d.ts.map +0 -1
  205. package/build/component/generator/spfx/error.js +0 -124
  206. package/build/component/generator/spfx/error.js.map +0 -1
  207. package/build/component/generator/spfx/spfxGenerator.d.ts +0 -30
  208. package/build/component/generator/spfx/spfxGenerator.d.ts.map +0 -1
  209. package/build/component/generator/spfx/spfxGenerator.js +0 -684
  210. package/build/component/generator/spfx/spfxGenerator.js.map +0 -1
  211. package/build/component/generator/spfx/utils/constants.d.ts +0 -45
  212. package/build/component/generator/spfx/utils/constants.d.ts.map +0 -1
  213. package/build/component/generator/spfx/utils/constants.js +0 -56
  214. package/build/component/generator/spfx/utils/constants.js.map +0 -1
  215. package/build/component/generator/spfx/utils/progress-helper.d.ts +0 -9
  216. package/build/component/generator/spfx/utils/progress-helper.d.ts.map +0 -1
  217. package/build/component/generator/spfx/utils/progress-helper.js +0 -22
  218. package/build/component/generator/spfx/utils/progress-helper.js.map +0 -1
  219. package/build/component/generator/spfx/utils/telemetry-helper.d.ts +0 -14
  220. package/build/component/generator/spfx/utils/telemetry-helper.d.ts.map +0 -1
  221. package/build/component/generator/spfx/utils/telemetry-helper.js +0 -31
  222. package/build/component/generator/spfx/utils/telemetry-helper.js.map +0 -1
  223. package/build/component/generator/spfx/utils/telemetryEvents.d.ts +0 -20
  224. package/build/component/generator/spfx/utils/telemetryEvents.d.ts.map +0 -1
  225. package/build/component/generator/spfx/utils/telemetryEvents.js +0 -27
  226. package/build/component/generator/spfx/utils/telemetryEvents.js.map +0 -1
  227. package/build/component/generator/spfx/utils/utils.d.ts +0 -19
  228. package/build/component/generator/spfx/utils/utils.d.ts.map +0 -1
  229. package/build/component/generator/spfx/utils/utils.js +0 -184
  230. package/build/component/generator/spfx/utils/utils.js.map +0 -1
  231. package/build/question/inputs/SPFxAddWebpartInputs.d.ts +0 -20
  232. package/build/question/inputs/SPFxAddWebpartInputs.d.ts.map +0 -1
  233. package/build/question/inputs/SPFxAddWebpartInputs.js +0 -5
  234. package/build/question/inputs/SPFxAddWebpartInputs.js.map +0 -1
  235. package/build/question/options/SPFxAddWebpartOptions.d.ts +0 -10
  236. package/build/question/options/SPFxAddWebpartOptions.d.ts.map +0 -1
  237. package/build/question/options/SPFxAddWebpartOptions.js +0 -50
  238. 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"}