@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.
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 +59 -68
  147. package/resource/package.nls.de.json +59 -68
  148. package/resource/package.nls.es.json +59 -68
  149. package/resource/package.nls.fr.json +59 -68
  150. package/resource/package.nls.it.json +59 -68
  151. package/resource/package.nls.ja.json +59 -68
  152. package/resource/package.nls.json +15 -58
  153. package/resource/package.nls.ko.json +59 -68
  154. package/resource/package.nls.pl.json +59 -68
  155. package/resource/package.nls.pt-BR.json +59 -68
  156. package/resource/package.nls.ru.json +59 -68
  157. package/resource/package.nls.tr.json +59 -68
  158. package/resource/package.nls.zh-Hans.json +59 -68
  159. package/resource/package.nls.zh-Hant.json +59 -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
@@ -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"}