@salesforce/b2c-tooling-sdk 1.24.2 → 2.1.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 (482) hide show
  1. package/data/content-schemas/componenttype.json +0 -30
  2. package/data/scapi-snippets/campaign-promotions.js +40 -0
  3. package/data/scapi-snippets/code-version-inspect.js +31 -0
  4. package/data/scapi-snippets/create-product.js +108 -0
  5. package/data/scapi-snippets/failed-job-triage.js +37 -0
  6. package/data/scapi-snippets/job-execution-inspect.js +52 -0
  7. package/data/scapi-snippets/job-execution-review.js +46 -0
  8. package/data/scapi-snippets/manifest.json +220 -0
  9. package/data/scapi-snippets/site-cartridge-inspect.js +27 -0
  10. package/data/tooling/index.json +83 -119
  11. package/dist/esm/auth/index.d.ts +2 -2
  12. package/dist/esm/auth/index.js +1 -1
  13. package/dist/esm/auth/index.js.map +1 -1
  14. package/dist/esm/auth/oauth-implicit.d.ts +1 -0
  15. package/dist/esm/auth/oauth-implicit.js +1 -0
  16. package/dist/esm/auth/oauth-implicit.js.map +1 -1
  17. package/dist/esm/auth/oauth-jwt.d.ts +18 -4
  18. package/dist/esm/auth/oauth-jwt.js +67 -17
  19. package/dist/esm/auth/oauth-jwt.js.map +1 -1
  20. package/dist/esm/auth/oauth-pkce-fallback.d.ts +1 -0
  21. package/dist/esm/auth/oauth-pkce-fallback.js +1 -0
  22. package/dist/esm/auth/oauth-pkce-fallback.js.map +1 -1
  23. package/dist/esm/auth/oauth-pkce.d.ts +1 -0
  24. package/dist/esm/auth/oauth-pkce.js +1 -0
  25. package/dist/esm/auth/oauth-pkce.js.map +1 -1
  26. package/dist/esm/auth/oauth.d.ts +55 -6
  27. package/dist/esm/auth/oauth.js +139 -21
  28. package/dist/esm/auth/oauth.js.map +1 -1
  29. package/dist/esm/auth/resolve.d.ts +37 -0
  30. package/dist/esm/auth/resolve.js +48 -0
  31. package/dist/esm/auth/resolve.js.map +1 -1
  32. package/dist/esm/auth/types.d.ts +44 -0
  33. package/dist/esm/auth/types.js.map +1 -1
  34. package/dist/esm/cli/base-command.d.ts +9 -0
  35. package/dist/esm/cli/base-command.js +31 -0
  36. package/dist/esm/cli/base-command.js.map +1 -1
  37. package/dist/esm/cli/bm-command.d.ts +15 -0
  38. package/dist/esm/cli/bm-command.js +25 -0
  39. package/dist/esm/cli/bm-command.js.map +1 -0
  40. package/dist/esm/cli/code-command.d.ts +14 -0
  41. package/dist/esm/cli/code-command.js +22 -0
  42. package/dist/esm/cli/code-command.js.map +1 -0
  43. package/dist/esm/cli/config.js +10 -1
  44. package/dist/esm/cli/config.js.map +1 -1
  45. package/dist/esm/cli/index.d.ts +5 -1
  46. package/dist/esm/cli/index.js +7 -1
  47. package/dist/esm/cli/index.js.map +1 -1
  48. package/dist/esm/cli/instance-command.d.ts +45 -0
  49. package/dist/esm/cli/instance-command.js +66 -1
  50. package/dist/esm/cli/instance-command.js.map +1 -1
  51. package/dist/esm/cli/job-command.d.ts +37 -16
  52. package/dist/esm/cli/job-command.js +73 -23
  53. package/dist/esm/cli/job-command.js.map +1 -1
  54. package/dist/esm/cli/mrt-command.d.ts +154 -9
  55. package/dist/esm/cli/mrt-command.js +299 -16
  56. package/dist/esm/cli/mrt-command.js.map +1 -1
  57. package/dist/esm/cli/oauth-command.d.ts +1 -1
  58. package/dist/esm/cli/oauth-command.js +2 -0
  59. package/dist/esm/cli/oauth-command.js.map +1 -1
  60. package/dist/esm/cli/webdav-command.d.ts +2 -0
  61. package/dist/esm/cli/webdav-command.js +1 -0
  62. package/dist/esm/cli/webdav-command.js.map +1 -1
  63. package/dist/esm/clients/cdn-zones.js +2 -5
  64. package/dist/esm/clients/cdn-zones.js.map +1 -1
  65. package/dist/esm/clients/cip.d.ts +12 -3
  66. package/dist/esm/clients/cip.js +85 -30
  67. package/dist/esm/clients/cip.js.map +1 -1
  68. package/dist/esm/clients/custom-apis.js +2 -5
  69. package/dist/esm/clients/custom-apis.js.map +1 -1
  70. package/dist/esm/clients/dual-backend-factory.d.ts +70 -0
  71. package/dist/esm/clients/dual-backend-factory.js +48 -0
  72. package/dist/esm/clients/dual-backend-factory.js.map +1 -0
  73. package/dist/esm/clients/error-utils.d.ts +62 -0
  74. package/dist/esm/clients/error-utils.js +98 -0
  75. package/dist/esm/clients/error-utils.js.map +1 -1
  76. package/dist/esm/clients/granular-replications.js +2 -5
  77. package/dist/esm/clients/granular-replications.js.map +1 -1
  78. package/dist/esm/clients/index.d.ts +30 -3
  79. package/dist/esm/clients/index.js +25 -2
  80. package/dist/esm/clients/index.js.map +1 -1
  81. package/dist/esm/clients/metrics.js +2 -5
  82. package/dist/esm/clients/metrics.js.map +1 -1
  83. package/dist/esm/clients/middleware-registry.d.ts +4 -2
  84. package/dist/esm/clients/middleware-registry.js +3 -1
  85. package/dist/esm/clients/middleware-registry.js.map +1 -1
  86. package/dist/esm/clients/middleware.d.ts +39 -0
  87. package/dist/esm/clients/middleware.js +126 -25
  88. package/dist/esm/clients/middleware.js.map +1 -1
  89. package/dist/esm/clients/mrt-b2c.js +3 -0
  90. package/dist/esm/clients/mrt-b2c.js.map +1 -1
  91. package/dist/esm/clients/mrt.d.ts +27 -10
  92. package/dist/esm/clients/mrt.generated.d.ts +77 -0
  93. package/dist/esm/clients/mrt.js +68 -0
  94. package/dist/esm/clients/mrt.js.map +1 -1
  95. package/dist/esm/clients/preferences.js +2 -5
  96. package/dist/esm/clients/preferences.js.map +1 -1
  97. package/dist/esm/clients/scapi-backend-utils.d.ts +163 -0
  98. package/dist/esm/clients/scapi-backend-utils.js +180 -0
  99. package/dist/esm/clients/scapi-backend-utils.js.map +1 -0
  100. package/dist/esm/clients/scapi-catalogs.d.ts +12 -0
  101. package/dist/esm/clients/scapi-catalogs.generated.d.ts +104 -0
  102. package/dist/esm/clients/scapi-catalogs.generated.js +6 -0
  103. package/dist/esm/clients/scapi-catalogs.generated.js.map +1 -0
  104. package/dist/esm/clients/scapi-catalogs.js +14 -0
  105. package/dist/esm/clients/scapi-catalogs.js.map +1 -0
  106. package/dist/esm/clients/scapi-client-factory.d.ts +81 -0
  107. package/dist/esm/clients/scapi-client-factory.js +84 -0
  108. package/dist/esm/clients/scapi-client-factory.js.map +1 -0
  109. package/dist/esm/clients/scapi-fallback-backend.d.ts +34 -0
  110. package/dist/esm/clients/scapi-fallback-backend.js +132 -0
  111. package/dist/esm/clients/scapi-fallback-backend.js.map +1 -0
  112. package/dist/esm/clients/scapi-jobs.d.ts +32 -0
  113. package/dist/esm/clients/scapi-jobs.generated.d.ts +535 -0
  114. package/dist/esm/clients/scapi-jobs.generated.js +6 -0
  115. package/dist/esm/clients/scapi-jobs.generated.js.map +1 -0
  116. package/dist/esm/clients/scapi-jobs.js +24 -0
  117. package/dist/esm/clients/scapi-jobs.js.map +1 -0
  118. package/dist/esm/clients/scapi-merchant-roles.d.ts +19 -0
  119. package/dist/esm/clients/scapi-merchant-roles.generated.d.ts +726 -0
  120. package/dist/esm/clients/scapi-merchant-roles.generated.js +6 -0
  121. package/dist/esm/clients/scapi-merchant-roles.generated.js.map +1 -0
  122. package/dist/esm/clients/scapi-merchant-roles.js +12 -0
  123. package/dist/esm/clients/scapi-merchant-roles.js.map +1 -0
  124. package/dist/esm/clients/scapi-merchant-users.d.ts +19 -0
  125. package/dist/esm/clients/scapi-merchant-users.generated.d.ts +300 -0
  126. package/dist/esm/clients/scapi-merchant-users.generated.js +6 -0
  127. package/dist/esm/clients/scapi-merchant-users.generated.js.map +1 -0
  128. package/dist/esm/clients/scapi-merchant-users.js +12 -0
  129. package/dist/esm/clients/scapi-merchant-users.js.map +1 -0
  130. package/dist/esm/clients/scapi-schemas.js +2 -5
  131. package/dist/esm/clients/scapi-schemas.js.map +1 -1
  132. package/dist/esm/clients/scapi-scope-tier.d.ts +78 -0
  133. package/dist/esm/clients/scapi-scope-tier.js +113 -0
  134. package/dist/esm/clients/scapi-scope-tier.js.map +1 -0
  135. package/dist/esm/clients/scapi-scripts.d.ts +17 -0
  136. package/dist/esm/clients/scapi-scripts.generated.d.ts +392 -0
  137. package/dist/esm/clients/scapi-scripts.generated.js +6 -0
  138. package/dist/esm/clients/scapi-scripts.generated.js.map +1 -0
  139. package/dist/esm/clients/scapi-scripts.js +12 -0
  140. package/dist/esm/clients/scapi-scripts.js.map +1 -0
  141. package/dist/esm/clients/scapi-sites.d.ts +26 -0
  142. package/dist/esm/clients/scapi-sites.generated.d.ts +500 -0
  143. package/dist/esm/clients/scapi-sites.generated.js +6 -0
  144. package/dist/esm/clients/scapi-sites.generated.js.map +1 -0
  145. package/dist/esm/clients/scapi-sites.js +25 -0
  146. package/dist/esm/clients/scapi-sites.js.map +1 -0
  147. package/dist/esm/clients/slas-shopper.d.ts +19 -0
  148. package/dist/esm/clients/slas-shopper.generated.d.ts +165 -0
  149. package/dist/esm/clients/slas-shopper.generated.js +6 -0
  150. package/dist/esm/clients/slas-shopper.generated.js.map +1 -0
  151. package/dist/esm/clients/slas-shopper.js +35 -0
  152. package/dist/esm/clients/slas-shopper.js.map +1 -0
  153. package/dist/esm/clients/storefront-deployments.d.ts +57 -0
  154. package/dist/esm/clients/storefront-deployments.generated.d.ts +558 -0
  155. package/dist/esm/clients/storefront-deployments.generated.js +6 -0
  156. package/dist/esm/clients/storefront-deployments.generated.js.map +1 -0
  157. package/dist/esm/clients/storefront-deployments.js +24 -0
  158. package/dist/esm/clients/storefront-deployments.js.map +1 -0
  159. package/dist/esm/clients/storefront-environments.d.ts +56 -0
  160. package/dist/esm/clients/storefront-environments.generated.d.ts +208 -0
  161. package/dist/esm/clients/storefront-environments.generated.js +6 -0
  162. package/dist/esm/clients/storefront-environments.generated.js.map +1 -0
  163. package/dist/esm/clients/storefront-environments.js +24 -0
  164. package/dist/esm/clients/storefront-environments.js.map +1 -0
  165. package/dist/esm/clients/webdav.js +4 -1
  166. package/dist/esm/clients/webdav.js.map +1 -1
  167. package/dist/esm/compat/dispatcher.d.ts +49 -0
  168. package/dist/esm/compat/dispatcher.js +124 -0
  169. package/dist/esm/compat/dispatcher.js.map +1 -0
  170. package/dist/esm/compat/index.d.ts +10 -0
  171. package/dist/esm/compat/index.js +15 -0
  172. package/dist/esm/compat/index.js.map +1 -0
  173. package/dist/esm/compat/jobs-backend.d.ts +31 -0
  174. package/dist/esm/compat/jobs-backend.js +76 -0
  175. package/dist/esm/compat/jobs-backend.js.map +1 -0
  176. package/dist/esm/config/dw-json.d.ts +4 -0
  177. package/dist/esm/config/dw-json.js.map +1 -1
  178. package/dist/esm/config/index.d.ts +1 -1
  179. package/dist/esm/config/index.js.map +1 -1
  180. package/dist/esm/config/mapping.d.ts +2 -5
  181. package/dist/esm/config/mapping.js +25 -1
  182. package/dist/esm/config/mapping.js.map +1 -1
  183. package/dist/esm/config/resolved-config.d.ts +2 -2
  184. package/dist/esm/config/resolved-config.js.map +1 -1
  185. package/dist/esm/config/resolver.js +12 -0
  186. package/dist/esm/config/resolver.js.map +1 -1
  187. package/dist/esm/config/sources/env-source.d.ts +10 -1
  188. package/dist/esm/config/sources/env-source.js +46 -1
  189. package/dist/esm/config/sources/env-source.js.map +1 -1
  190. package/dist/esm/config/types.d.ts +22 -3
  191. package/dist/esm/docs/search.js +2 -25
  192. package/dist/esm/docs/search.js.map +1 -1
  193. package/dist/esm/guidance/catalog.d.ts +37 -0
  194. package/dist/esm/guidance/catalog.js +282 -0
  195. package/dist/esm/guidance/catalog.js.map +1 -0
  196. package/dist/esm/guidance/index.d.ts +8 -0
  197. package/dist/esm/guidance/index.js +14 -0
  198. package/dist/esm/guidance/index.js.map +1 -0
  199. package/dist/esm/guidance/markdown.d.ts +10 -0
  200. package/dist/esm/guidance/markdown.js +52 -0
  201. package/dist/esm/guidance/markdown.js.map +1 -0
  202. package/dist/esm/guidance/types.d.ts +96 -0
  203. package/dist/esm/guidance/types.js +17 -0
  204. package/dist/esm/guidance/types.js.map +1 -0
  205. package/dist/esm/index.d.ts +14 -5
  206. package/dist/esm/index.js +14 -2
  207. package/dist/esm/index.js.map +1 -1
  208. package/dist/esm/instance/index.d.ts +96 -2
  209. package/dist/esm/instance/index.js +98 -5
  210. package/dist/esm/instance/index.js.map +1 -1
  211. package/dist/esm/operations/bm-roles/backend.d.ts +4 -0
  212. package/dist/esm/operations/bm-roles/backend.js +11 -0
  213. package/dist/esm/operations/bm-roles/backend.js.map +1 -0
  214. package/dist/esm/operations/bm-roles/index.d.ts +6 -0
  215. package/dist/esm/operations/bm-roles/index.js +4 -0
  216. package/dist/esm/operations/bm-roles/index.js.map +1 -1
  217. package/dist/esm/operations/bm-roles/ocapi-backend.d.ts +17 -0
  218. package/dist/esm/operations/bm-roles/ocapi-backend.js +151 -0
  219. package/dist/esm/operations/bm-roles/ocapi-backend.js.map +1 -0
  220. package/dist/esm/operations/bm-roles/roles.js +13 -17
  221. package/dist/esm/operations/bm-roles/roles.js.map +1 -1
  222. package/dist/esm/operations/bm-roles/scapi-backend.d.ts +27 -0
  223. package/dist/esm/operations/bm-roles/scapi-backend.js +138 -0
  224. package/dist/esm/operations/bm-roles/scapi-backend.js.map +1 -0
  225. package/dist/esm/operations/bm-roles/types.d.ts +49 -0
  226. package/dist/esm/operations/bm-roles/types.js +2 -0
  227. package/dist/esm/operations/bm-roles/types.js.map +1 -0
  228. package/dist/esm/operations/bm-users/backend.d.ts +4 -0
  229. package/dist/esm/operations/bm-users/backend.js +11 -0
  230. package/dist/esm/operations/bm-users/backend.js.map +1 -0
  231. package/dist/esm/operations/bm-users/index.d.ts +11 -3
  232. package/dist/esm/operations/bm-users/index.js +9 -3
  233. package/dist/esm/operations/bm-users/index.js.map +1 -1
  234. package/dist/esm/operations/bm-users/ocapi-backend.d.ts +13 -0
  235. package/dist/esm/operations/bm-users/ocapi-backend.js +92 -0
  236. package/dist/esm/operations/bm-users/ocapi-backend.js.map +1 -0
  237. package/dist/esm/operations/bm-users/scapi-backend.d.ts +23 -0
  238. package/dist/esm/operations/bm-users/scapi-backend.js +199 -0
  239. package/dist/esm/operations/bm-users/scapi-backend.js.map +1 -0
  240. package/dist/esm/operations/bm-users/types.d.ts +99 -0
  241. package/dist/esm/operations/bm-users/types.js +2 -0
  242. package/dist/esm/operations/bm-users/types.js.map +1 -0
  243. package/dist/esm/operations/bm-users/users.d.ts +4 -3
  244. package/dist/esm/operations/bm-users/users.js +23 -19
  245. package/dist/esm/operations/bm-users/users.js.map +1 -1
  246. package/dist/esm/operations/cap/install.js +23 -45
  247. package/dist/esm/operations/cap/install.js.map +1 -1
  248. package/dist/esm/operations/cap/list.js +4 -8
  249. package/dist/esm/operations/cap/list.js.map +1 -1
  250. package/dist/esm/operations/cap/uninstall.js +17 -37
  251. package/dist/esm/operations/cap/uninstall.js.map +1 -1
  252. package/dist/esm/operations/catalogs/catalogs-backend.d.ts +4 -0
  253. package/dist/esm/operations/catalogs/catalogs-backend.js +16 -0
  254. package/dist/esm/operations/catalogs/catalogs-backend.js.map +1 -0
  255. package/dist/esm/operations/catalogs/catalogs-types.d.ts +14 -0
  256. package/dist/esm/operations/catalogs/catalogs-types.js +2 -0
  257. package/dist/esm/operations/catalogs/catalogs-types.js.map +1 -0
  258. package/dist/esm/operations/catalogs/index.d.ts +7 -0
  259. package/dist/esm/operations/catalogs/index.js +10 -0
  260. package/dist/esm/operations/catalogs/index.js.map +1 -0
  261. package/dist/esm/operations/catalogs/ocapi-catalogs-backend.d.ts +8 -0
  262. package/dist/esm/operations/catalogs/ocapi-catalogs-backend.js +36 -0
  263. package/dist/esm/operations/catalogs/ocapi-catalogs-backend.js.map +1 -0
  264. package/dist/esm/operations/catalogs/scapi-catalogs-backend.d.ts +15 -0
  265. package/dist/esm/operations/catalogs/scapi-catalogs-backend.js +42 -0
  266. package/dist/esm/operations/catalogs/scapi-catalogs-backend.js.map +1 -0
  267. package/dist/esm/operations/cip/index.js +10 -2
  268. package/dist/esm/operations/cip/index.js.map +1 -1
  269. package/dist/esm/operations/cip/reports.js +19 -3
  270. package/dist/esm/operations/cip/reports.js.map +1 -1
  271. package/dist/esm/operations/cip/types.d.ts +8 -4
  272. package/dist/esm/operations/code/deploy.d.ts +3 -0
  273. package/dist/esm/operations/code/deploy.js +9 -3
  274. package/dist/esm/operations/code/deploy.js.map +1 -1
  275. package/dist/esm/operations/code/download.d.ts +3 -0
  276. package/dist/esm/operations/code/download.js +5 -5
  277. package/dist/esm/operations/code/download.js.map +1 -1
  278. package/dist/esm/operations/code/index.d.ts +7 -1
  279. package/dist/esm/operations/code/index.js +5 -1
  280. package/dist/esm/operations/code/index.js.map +1 -1
  281. package/dist/esm/operations/code/ocapi-scripts-backend.d.ts +12 -0
  282. package/dist/esm/operations/code/ocapi-scripts-backend.js +40 -0
  283. package/dist/esm/operations/code/ocapi-scripts-backend.js.map +1 -0
  284. package/dist/esm/operations/code/scapi-scripts-backend.d.ts +22 -0
  285. package/dist/esm/operations/code/scapi-scripts-backend.js +94 -0
  286. package/dist/esm/operations/code/scapi-scripts-backend.js.map +1 -0
  287. package/dist/esm/operations/code/scripts-backend.d.ts +17 -0
  288. package/dist/esm/operations/code/scripts-backend.js +40 -0
  289. package/dist/esm/operations/code/scripts-backend.js.map +1 -0
  290. package/dist/esm/operations/code/scripts-types.d.ts +43 -0
  291. package/dist/esm/operations/code/scripts-types.js +2 -0
  292. package/dist/esm/operations/code/scripts-types.js.map +1 -0
  293. package/dist/esm/operations/code/upload-files.d.ts +6 -0
  294. package/dist/esm/operations/code/upload-files.js +58 -7
  295. package/dist/esm/operations/code/upload-files.js.map +1 -1
  296. package/dist/esm/operations/code/versions.d.ts +0 -20
  297. package/dist/esm/operations/code/versions.js +16 -51
  298. package/dist/esm/operations/code/versions.js.map +1 -1
  299. package/dist/esm/operations/code/watch.d.ts +3 -0
  300. package/dist/esm/operations/code/watch.js +3 -2
  301. package/dist/esm/operations/code/watch.js.map +1 -1
  302. package/dist/esm/operations/jobs/discover.d.ts +1 -1
  303. package/dist/esm/operations/jobs/discover.js +51 -21
  304. package/dist/esm/operations/jobs/discover.js.map +1 -1
  305. package/dist/esm/operations/jobs/index.d.ts +14 -57
  306. package/dist/esm/operations/jobs/index.js +15 -59
  307. package/dist/esm/operations/jobs/index.js.map +1 -1
  308. package/dist/esm/operations/jobs/ocapi-mapping.d.ts +34 -0
  309. package/dist/esm/operations/jobs/ocapi-mapping.js +100 -0
  310. package/dist/esm/operations/jobs/ocapi-mapping.js.map +1 -0
  311. package/dist/esm/operations/jobs/run-system-job.d.ts +81 -0
  312. package/dist/esm/operations/jobs/run-system-job.js +137 -0
  313. package/dist/esm/operations/jobs/run-system-job.js.map +1 -0
  314. package/dist/esm/operations/jobs/run.js +16 -4
  315. package/dist/esm/operations/jobs/run.js.map +1 -1
  316. package/dist/esm/operations/jobs/scapi-ops.d.ts +61 -0
  317. package/dist/esm/operations/jobs/scapi-ops.js +214 -0
  318. package/dist/esm/operations/jobs/scapi-ops.js.map +1 -0
  319. package/dist/esm/operations/jobs/site-archive.d.ts +7 -0
  320. package/dist/esm/operations/jobs/site-archive.js +28 -66
  321. package/dist/esm/operations/jobs/site-archive.js.map +1 -1
  322. package/dist/esm/operations/jobs/types.d.ts +46 -0
  323. package/dist/esm/operations/jobs/types.js +2 -0
  324. package/dist/esm/operations/jobs/types.js.map +1 -0
  325. package/dist/esm/operations/jobs/wait-canonical.d.ts +28 -0
  326. package/dist/esm/operations/jobs/wait-canonical.js +48 -0
  327. package/dist/esm/operations/jobs/wait-canonical.js.map +1 -0
  328. package/dist/esm/operations/mrt/bundle.d.ts +164 -2
  329. package/dist/esm/operations/mrt/bundle.js +315 -9
  330. package/dist/esm/operations/mrt/bundle.js.map +1 -1
  331. package/dist/esm/operations/mrt/deployment.d.ts +248 -0
  332. package/dist/esm/operations/mrt/deployment.js +252 -0
  333. package/dist/esm/operations/mrt/deployment.js.map +1 -1
  334. package/dist/esm/operations/mrt/env-var.d.ts +135 -0
  335. package/dist/esm/operations/mrt/env-var.js +203 -0
  336. package/dist/esm/operations/mrt/env-var.js.map +1 -1
  337. package/dist/esm/operations/mrt/index.d.ts +10 -8
  338. package/dist/esm/operations/mrt/index.js +6 -4
  339. package/dist/esm/operations/mrt/index.js.map +1 -1
  340. package/dist/esm/operations/mrt/mrt-backend.d.ts +117 -0
  341. package/dist/esm/operations/mrt/mrt-backend.js +84 -0
  342. package/dist/esm/operations/mrt/mrt-backend.js.map +1 -0
  343. package/dist/esm/operations/mrt/push.d.ts +285 -1
  344. package/dist/esm/operations/mrt/push.js +382 -1
  345. package/dist/esm/operations/mrt/push.js.map +1 -1
  346. package/dist/esm/operations/sites/cartridges.d.ts +10 -8
  347. package/dist/esm/operations/sites/cartridges.js +35 -67
  348. package/dist/esm/operations/sites/cartridges.js.map +1 -1
  349. package/dist/esm/operations/sites/index.d.ts +10 -6
  350. package/dist/esm/operations/sites/index.js +9 -6
  351. package/dist/esm/operations/sites/index.js.map +1 -1
  352. package/dist/esm/operations/sites/ocapi-sites-backend.d.ts +20 -0
  353. package/dist/esm/operations/sites/ocapi-sites-backend.js +98 -0
  354. package/dist/esm/operations/sites/ocapi-sites-backend.js.map +1 -0
  355. package/dist/esm/operations/sites/scapi-sites-backend.d.ts +33 -0
  356. package/dist/esm/operations/sites/scapi-sites-backend.js +166 -0
  357. package/dist/esm/operations/sites/scapi-sites-backend.js.map +1 -0
  358. package/dist/esm/operations/sites/sites-backend.d.ts +9 -0
  359. package/dist/esm/operations/sites/sites-backend.js +16 -0
  360. package/dist/esm/operations/sites/sites-backend.js.map +1 -0
  361. package/dist/esm/operations/sites/sites-scopes.d.ts +2 -0
  362. package/dist/esm/operations/sites/sites-scopes.js +16 -0
  363. package/dist/esm/operations/sites/sites-scopes.js.map +1 -0
  364. package/dist/esm/operations/sites/sites-types.d.ts +50 -0
  365. package/dist/esm/operations/sites/sites-types.js +2 -0
  366. package/dist/esm/operations/sites/sites-types.js.map +1 -0
  367. package/dist/esm/safety/safety-guard.d.ts +1 -0
  368. package/dist/esm/safety/safety-guard.js +2 -1
  369. package/dist/esm/safety/safety-guard.js.map +1 -1
  370. package/dist/esm/safety/safety-middleware.d.ts +7 -3
  371. package/dist/esm/safety/safety-middleware.js +13 -9
  372. package/dist/esm/safety/safety-middleware.js.map +1 -1
  373. package/dist/esm/safety/types.d.ts +2 -2
  374. package/dist/esm/scaffold/sources.js +6 -9
  375. package/dist/esm/scaffold/sources.js.map +1 -1
  376. package/dist/esm/scapi/auth-primitives.d.ts +3 -0
  377. package/dist/esm/scapi/auth-primitives.js +104 -0
  378. package/dist/esm/scapi/auth-primitives.js.map +1 -0
  379. package/dist/esm/scapi/authentication.d.ts +30 -0
  380. package/dist/esm/scapi/authentication.js +136 -0
  381. package/dist/esm/scapi/authentication.js.map +1 -0
  382. package/dist/esm/scapi/catalog.d.ts +29 -0
  383. package/dist/esm/scapi/catalog.js +81 -0
  384. package/dist/esm/scapi/catalog.js.map +1 -0
  385. package/dist/esm/scapi/index.d.ts +12 -0
  386. package/dist/esm/scapi/index.js +13 -0
  387. package/dist/esm/scapi/index.js.map +1 -0
  388. package/dist/esm/scapi/request.d.ts +28 -0
  389. package/dist/esm/scapi/request.js +273 -0
  390. package/dist/esm/scapi/request.js.map +1 -0
  391. package/dist/esm/scapi/runtime.d.ts +27 -0
  392. package/dist/esm/scapi/runtime.js +161 -0
  393. package/dist/esm/scapi/runtime.js.map +1 -0
  394. package/dist/esm/scapi/snippets.d.ts +22 -0
  395. package/dist/esm/scapi/snippets.js +140 -0
  396. package/dist/esm/scapi/snippets.js.map +1 -0
  397. package/dist/esm/scapi/worker-source.d.ts +2 -0
  398. package/dist/esm/scapi/worker-source.js +101 -0
  399. package/dist/esm/scapi/worker-source.js.map +1 -0
  400. package/dist/esm/search/ranking.d.ts +12 -0
  401. package/dist/esm/search/ranking.js +28 -0
  402. package/dist/esm/search/ranking.js.map +1 -0
  403. package/dist/esm/skills/sources.d.ts +2 -2
  404. package/dist/esm/skills/sources.js +18 -2
  405. package/dist/esm/skills/sources.js.map +1 -1
  406. package/dist/esm/skills/types.d.ts +1 -1
  407. package/dist/esm/slas/token.js +33 -94
  408. package/dist/esm/slas/token.js.map +1 -1
  409. package/dist/esm/slas/types.d.ts +5 -0
  410. package/dist/esm/test-utils/config-isolation.js +2 -2
  411. package/dist/esm/test-utils/config-isolation.js.map +1 -1
  412. package/node_modules/@salesforce/b2c-api-schemas/README.md +23 -0
  413. package/node_modules/@salesforce/b2c-api-schemas/manifest.json +576 -0
  414. package/node_modules/@salesforce/b2c-api-schemas/package.json +15 -0
  415. package/node_modules/@salesforce/b2c-api-schemas/scapi/cdn/zones/v1.json +11490 -0
  416. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/orders/v1.json +3589 -0
  417. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-baskets/v1.json +6544 -0
  418. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-baskets/v2.json +7148 -0
  419. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-orders/v1.json +4411 -0
  420. package/node_modules/@salesforce/b2c-api-schemas/scapi/checkout/shopper-payments/v1.json +643 -0
  421. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/cors/v1.json +295 -0
  422. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/preferences/v1.json +2036 -0
  423. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/shopper-configurations/v1.json +327 -0
  424. package/node_modules/@salesforce/b2c-api-schemas/scapi/configuration/timeouts/v1.json +234 -0
  425. package/node_modules/@salesforce/b2c-api-schemas/scapi/custom-object/custom-objects/v1.json +1542 -0
  426. package/node_modules/@salesforce/b2c-api-schemas/scapi/custom-object/shopper-custom-objects/v1.json +405 -0
  427. package/node_modules/@salesforce/b2c-api-schemas/scapi/customer/customers/v1.json +2531 -0
  428. package/node_modules/@salesforce/b2c-api-schemas/scapi/customer/shopper-customers/v1.json +7944 -0
  429. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/custom-apis/v1.json +292 -0
  430. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/object-definitions/v1.json +2537 -0
  431. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/scapi-schemas/v1.json +517 -0
  432. package/node_modules/@salesforce/b2c-api-schemas/scapi/dx/scripts/v1.json +589 -0
  433. package/node_modules/@salesforce/b2c-api-schemas/scapi/experience/experiences/v1.json +3600 -0
  434. package/node_modules/@salesforce/b2c-api-schemas/scapi/experience/shopper-experience/v1.json +2319 -0
  435. package/node_modules/@salesforce/b2c-api-schemas/scapi/intelligence/analytics/v1.json +658 -0
  436. package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/availability/v1.json +2649 -0
  437. package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/impex/v1.json +6615 -0
  438. package/node_modules/@salesforce/b2c-api-schemas/scapi/inventory/reservation/v1.json +2103 -0
  439. package/node_modules/@salesforce/b2c-api-schemas/scapi/merchant/roles/v1.json +1760 -0
  440. package/node_modules/@salesforce/b2c-api-schemas/scapi/merchant/users/v1.json +640 -0
  441. package/node_modules/@salesforce/b2c-api-schemas/scapi/observability/metrics/v1.json +1263 -0
  442. package/node_modules/@salesforce/b2c-api-schemas/scapi/operation/jobs/v1.json +1259 -0
  443. package/node_modules/@salesforce/b2c-api-schemas/scapi/operation/replications/v1.json +760 -0
  444. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/assignments/v1.json +1047 -0
  445. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/campaigns/v1.json +1929 -0
  446. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/coupons/v1.json +1542 -0
  447. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/gift-certificates/v1.json +1093 -0
  448. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/promotions/v1.json +1324 -0
  449. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/shopper-gift-certificates/v1.json +325 -0
  450. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/shopper-promotions/v1.json +631 -0
  451. package/node_modules/@salesforce/b2c-api-schemas/scapi/pricing/source-code-groups/v1.json +1036 -0
  452. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/catalogs/v1.json +5175 -0
  453. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/inventory-lists/v1.json +866 -0
  454. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/price-books/v1.json +747 -0
  455. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/products/v1.json +5076 -0
  456. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/shopper-availability/v1.json +509 -0
  457. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/shopper-delivery-estimates/v1.json +517 -0
  458. package/node_modules/@salesforce/b2c-api-schemas/scapi/product/shopper-products/v1.json +2961 -0
  459. package/node_modules/@salesforce/b2c-api-schemas/scapi/search/shopper-search/v1.json +1889 -0
  460. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/auth/v1.json +7014 -0
  461. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/auth-admin/v1.json +1898 -0
  462. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/consents/v1.json +622 -0
  463. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/shopper-agents/v1.json +192 -0
  464. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/shopper-consents/v1.json +913 -0
  465. package/node_modules/@salesforce/b2c-api-schemas/scapi/shopper/shopper-context/v1.json +630 -0
  466. package/node_modules/@salesforce/b2c-api-schemas/scapi/site/seo/v1.json +223 -0
  467. package/node_modules/@salesforce/b2c-api-schemas/scapi/site/shopper-seo/v1.json +423 -0
  468. package/node_modules/@salesforce/b2c-api-schemas/scapi/site/sites/v1.json +1088 -0
  469. package/node_modules/@salesforce/b2c-api-schemas/scapi/store/shopper-stores/v1.json +798 -0
  470. package/node_modules/@salesforce/b2c-api-schemas/scapi/store/store-redirect-mappings/v1.json +607 -0
  471. package/node_modules/@salesforce/b2c-api-schemas/scapi/store/stores/v1.json +1418 -0
  472. package/package.json +24 -3
  473. package/specs/dx-scripts-v1.yaml +409 -0
  474. package/specs/merchant-roles-v1.yaml +1085 -0
  475. package/specs/merchant-users-v1.yaml +398 -0
  476. package/specs/mrt-api-v1.json +105 -0
  477. package/specs/operations-jobs-v1.yaml +793 -0
  478. package/specs/product-catalogs-v1.yaml +111 -0
  479. package/specs/site-sites-v1.yaml +667 -0
  480. package/specs/slas-shopper-v1.yaml +83 -0
  481. package/specs/storefront-deployments-v1.yaml +630 -0
  482. package/specs/storefront-environments-v1.yaml +272 -0
@@ -0,0 +1,27 @@
1
+ import type { ScapiSchemaDocument } from './catalog.js';
2
+ import { type ScapiAuthType } from './authentication.js';
3
+ import { type ScapiSnippet } from './snippets.js';
4
+ /** Host-only controls for an execution retained while awaiting user input. */
5
+ export interface ScapiRuntimeControl {
6
+ pauseTimeout(): void;
7
+ resumeTimeout(): void;
8
+ }
9
+ export interface ScapiCodeOptions {
10
+ code: string;
11
+ input?: unknown;
12
+ snippets?: ScapiSnippet[];
13
+ documents?: ScapiSchemaDocument[];
14
+ authType?: ScapiAuthType;
15
+ request?: (options: unknown, signal: AbortSignal) => Promise<unknown>;
16
+ auth?: (operation: string, options: unknown, signal: AbortSignal) => Promise<unknown>;
17
+ organizationId?: string;
18
+ siteId?: string;
19
+ cwd?: string;
20
+ signal?: AbortSignal;
21
+ timeoutMs?: number;
22
+ maxOutputBytes?: number;
23
+ /** The host owns cancellation and cleanup while paused; approval may wait indefinitely. Never exposed to the child. */
24
+ onControl?: (control: ScapiRuntimeControl) => void;
25
+ }
26
+ /** Execute one JavaScript async function in a disposable Node process. */
27
+ export declare function runScapiCode(options: ScapiCodeOptions): Promise<unknown>;
@@ -0,0 +1,161 @@
1
+ /*
2
+ * Copyright (c) 2025, Salesforce, Inc.
3
+ * SPDX-License-Identifier: Apache-2
4
+ * For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
5
+ */
6
+ import { spawn } from 'node:child_process';
7
+ import { getLogger } from '../logging/logger.js';
8
+ import { SCAPI_WORKER_SOURCE } from './worker-source.js';
9
+ import { describeScapiSchemas } from './authentication.js';
10
+ import { createScapiSnippetResolver, loadBuiltinScapiSnippets } from './snippets.js';
11
+ /** Execute one JavaScript async function in a disposable Node process. */
12
+ export async function runScapiCode(options) {
13
+ const timeoutMs = Math.min(options.timeoutMs ?? 30_000, 60_000);
14
+ if (!options.code.trim() || Buffer.byteLength(options.code) > 32_768)
15
+ throw new Error('Code must contain 1-32768 bytes.');
16
+ if (options.signal?.aborted)
17
+ throw new Error('SCAPI_EXECUTION_CANCELLED');
18
+ const documents = describeScapiSchemas(options.documents ?? [], options.authType);
19
+ const resolveSnippet = createScapiSnippetResolver(options.snippets ?? loadBuiltinScapiSnippets());
20
+ if (options.authType && !documents.length)
21
+ throw new Error(`No ${options.authType} operations match this search. Omit authType to inspect all authentication requirements.`);
22
+ return new Promise((resolve, reject) => {
23
+ const controller = new AbortController();
24
+ const child = spawn(process.execPath, ['--permission', '--max-old-space-size=128', '--input-type=commonjs', '--eval', SCAPI_WORKER_SOURCE], {
25
+ cwd: options.cwd,
26
+ // Credentials stay in the parent; explicit token helpers return only tokens and metadata.
27
+ env: { PATH: process.env.PATH, SYSTEMROOT: process.env.SYSTEMROOT, TEMP: process.env.TEMP },
28
+ stdio: ['ignore', 'pipe', 'pipe', 'ipc'],
29
+ windowsHide: true,
30
+ });
31
+ let settled = false;
32
+ let outputBytes = 0;
33
+ let calls = 0;
34
+ let active = 0;
35
+ let snippetCalls = 0;
36
+ let outcome;
37
+ const finish = (value, error) => {
38
+ if (settled)
39
+ return;
40
+ settled = true;
41
+ outcome = { value, error };
42
+ clearTimeout(timer);
43
+ options.signal?.removeEventListener('abort', cancel);
44
+ controller.abort();
45
+ child.kill('SIGKILL');
46
+ };
47
+ const cancel = () => finish(undefined, new Error('SCAPI_EXECUTION_CANCELLED: check any in-flight write before retrying.'));
48
+ let remainingMs = timeoutMs;
49
+ let startedAt = performance.now();
50
+ const timedOut = () => finish(undefined, new Error('SCAPI_EXECUTION_TIMEOUT: check any in-flight write before retrying.'));
51
+ let timer = setTimeout(timedOut, remainingMs);
52
+ const control = {
53
+ pauseTimeout() {
54
+ if (settled || !timer)
55
+ return;
56
+ remainingMs = Math.max(0, remainingMs - (performance.now() - startedAt));
57
+ clearTimeout(timer);
58
+ timer = undefined;
59
+ },
60
+ resumeTimeout() {
61
+ if (settled || timer)
62
+ return;
63
+ startedAt = performance.now();
64
+ timer = setTimeout(timedOut, remainingMs);
65
+ },
66
+ };
67
+ options.signal?.addEventListener('abort', cancel, { once: true });
68
+ const drain = (chunk) => {
69
+ outputBytes += chunk.length;
70
+ if (outputBytes > 65_536)
71
+ finish(undefined, new Error('SCAPI_CONSOLE_LIMIT: return results instead of logging.'));
72
+ };
73
+ child.stdout?.on('data', drain);
74
+ child.stderr?.on('data', drain);
75
+ child.on('spawn', () => getLogger().debug({ workerPid: child.pid }, 'SCAPI code worker started'));
76
+ child.on('error', (error) => finish(undefined, error));
77
+ child.on('close', (code) => {
78
+ clearTimeout(timer);
79
+ options.signal?.removeEventListener('abort', cancel);
80
+ controller.abort();
81
+ if (outcome?.error)
82
+ reject(outcome.error);
83
+ else if (outcome)
84
+ resolve(outcome.value);
85
+ else
86
+ reject(new Error(`SCAPI_EXECUTION_EXITED: ${code}. Check writes before retrying.`));
87
+ });
88
+ child.on('message', async (raw) => {
89
+ if (settled || !raw || typeof raw !== 'object')
90
+ return;
91
+ const message = raw;
92
+ if (message.type === 'result')
93
+ return finish(message.value);
94
+ if (message.type === 'error')
95
+ return finish(undefined, new Error(message.error));
96
+ const reply = (value, error) => {
97
+ if (!settled && child.connected)
98
+ child.send({ type: 'reply', id: message.id, value, error }, () => { });
99
+ };
100
+ if (message.type === 'snippet') {
101
+ try {
102
+ if (++snippetCalls > 100)
103
+ throw new Error('SCAPI_SNIPPET_LIMIT: at most 100 snippet operations per execution.');
104
+ if (message.operation === 'run' && !options.request)
105
+ throw new Error('Use scapi_execute to run snippets.');
106
+ reply(resolveSnippet(message.operation ?? '', message.name ?? '', message.input));
107
+ }
108
+ catch (error) {
109
+ reply(undefined, error instanceof Error ? error.message : String(error));
110
+ }
111
+ return;
112
+ }
113
+ if (message.type !== 'request' && message.type !== 'auth')
114
+ return;
115
+ if (message.type === 'auth' ? !options.auth : !options.request)
116
+ return reply(undefined, 'Schema search cannot make SCAPI or authentication requests. Use scapi_execute.');
117
+ if (++calls > 20)
118
+ return reply(undefined, 'SCAPI_CALL_LIMIT: at most 20 requests per execution.');
119
+ if (active >= 4)
120
+ return reply(undefined, 'SCAPI_CONCURRENCY_LIMIT: at most four concurrent requests.');
121
+ active++;
122
+ try {
123
+ reply(message.type === 'auth'
124
+ ? await options.auth(message.operation ?? '', message.options, controller.signal)
125
+ : await options.request(message.options, controller.signal));
126
+ }
127
+ catch (error) {
128
+ reply(undefined, error instanceof Error ? error.message : String(error));
129
+ }
130
+ finally {
131
+ active--;
132
+ }
133
+ });
134
+ try {
135
+ options.onControl?.(control);
136
+ }
137
+ catch (error) {
138
+ finish(undefined, error instanceof Error ? error : new Error(String(error)));
139
+ return;
140
+ }
141
+ if (options.signal?.aborted) {
142
+ cancel();
143
+ return;
144
+ }
145
+ child.send({
146
+ type: 'run',
147
+ ...options,
148
+ documents,
149
+ request: undefined,
150
+ auth: undefined,
151
+ snippets: undefined,
152
+ signal: undefined,
153
+ onControl: undefined,
154
+ maxOutputBytes: Math.min(options.maxOutputBytes ?? 24_000, 65_536),
155
+ }, (error) => {
156
+ if (error)
157
+ finish(undefined, error);
158
+ });
159
+ });
160
+ }
161
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/scapi/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { type Schema } from 'jsonschema';
2
+ /** A parameterized program, discoverable without loading its source. */
3
+ export interface ScapiSnippet {
4
+ name: string;
5
+ description: string;
6
+ effect: 'read' | 'write' | 'destructive';
7
+ code: string;
8
+ inputSchema: Schema;
9
+ savedAt?: string;
10
+ }
11
+ /** Use the host's resolved oclif data directory; standalone SDK uses the shared B2C directory. */
12
+ export declare function initializeScapiSnippetStore(dataDir: string): void;
13
+ /** Durable user library location, shared by CLI and MCP. */
14
+ export declare function getScapiSnippetDirectory(): string;
15
+ /** Load the release's read-only catalog. Sources ship as ordinary JavaScript files. */
16
+ export declare function loadBuiltinScapiSnippets(): ScapiSnippet[];
17
+ /** Load shipped and user snippets; a malformed user file is reported, never silently substituted. */
18
+ export declare function loadScapiSnippets(directory?: string): ScapiSnippet[];
19
+ /** Save a new user snippet without replacing an existing workflow. */
20
+ export declare function saveScapiSnippet(snippet: ScapiSnippet, directory?: string): void;
21
+ /** Build the runtime's search/describe/run resolver using the shared documentation ranking. */
22
+ export declare function createScapiSnippetResolver(snippets: ScapiSnippet[]): (operation: string, name: string, input?: unknown) => unknown;
@@ -0,0 +1,140 @@
1
+ /*
2
+ * Copyright (c) 2025, Salesforce, Inc.
3
+ * SPDX-License-Identifier: Apache-2
4
+ * For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
5
+ */
6
+ import { readFileSync, readdirSync, mkdirSync, writeFileSync, linkSync, unlinkSync } from 'node:fs';
7
+ import { randomUUID } from 'node:crypto';
8
+ import { createRequire } from 'node:module';
9
+ import { join, dirname } from 'node:path';
10
+ import { Validator } from 'jsonschema';
11
+ import { resolveOclifDataDir } from '../plugins/discovery.js';
12
+ import { createRankedIndex } from '../search/ranking.js';
13
+ let injectedDataDir;
14
+ /** Use the host's resolved oclif data directory; standalone SDK uses the shared B2C directory. */
15
+ export function initializeScapiSnippetStore(dataDir) {
16
+ injectedDataDir = dataDir;
17
+ }
18
+ /** Durable user library location, shared by CLI and MCP. */
19
+ export function getScapiSnippetDirectory() {
20
+ return join(injectedDataDir ?? resolveOclifDataDir(), 'scapi', 'snippets');
21
+ }
22
+ function validateSnippet(snippet) {
23
+ if (!snippet ||
24
+ !/^(builtin|user)\/[a-z0-9][a-z0-9-]{0,79}$/.test(snippet.name) ||
25
+ typeof snippet.description !== 'string' ||
26
+ !snippet.description.trim() ||
27
+ snippet.description.length > 500 ||
28
+ !['read', 'write', 'destructive'].includes(snippet.effect) ||
29
+ typeof snippet.code !== 'string' ||
30
+ !snippet.code.trim() ||
31
+ Buffer.byteLength(snippet.code) > 32_768 ||
32
+ !snippet.inputSchema ||
33
+ typeof snippet.inputSchema !== 'object' ||
34
+ Array.isArray(snippet.inputSchema))
35
+ throw new Error('SCAPI_SNIPPET_INVALID: invalid name, description, effect, code, or input schema.');
36
+ // Native syntax validation only; execution and input validation happen at invocation.
37
+ new Function('return (' + snippet.code + ');');
38
+ }
39
+ /** Load the release's read-only catalog. Sources ship as ordinary JavaScript files. */
40
+ export function loadBuiltinScapiSnippets() {
41
+ const root = join(dirname(createRequire(import.meta.url).resolve('@salesforce/b2c-tooling-sdk/package.json')), 'data/scapi-snippets');
42
+ const manifest = JSON.parse(readFileSync(join(root, 'manifest.json'), 'utf8'));
43
+ if (manifest.version !== 1)
44
+ throw new Error('Unsupported snippet manifest.');
45
+ return manifest.snippets.map(({ file, ...entry }) => {
46
+ if (!/^[a-z0-9-]+\.js$/.test(file))
47
+ throw new Error('Invalid snippet source path.');
48
+ const snippet = { ...entry, code: readFileSync(join(root, file), 'utf8') };
49
+ validateSnippet(snippet);
50
+ if (!snippet.name.startsWith('builtin/'))
51
+ throw new Error('Invalid built-in snippet name.');
52
+ return snippet;
53
+ });
54
+ }
55
+ /** Load shipped and user snippets; a malformed user file is reported, never silently substituted. */
56
+ export function loadScapiSnippets(directory = getScapiSnippetDirectory()) {
57
+ const snippets = loadBuiltinScapiSnippets();
58
+ let files;
59
+ try {
60
+ files = readdirSync(directory);
61
+ }
62
+ catch (error) {
63
+ if (error.code === 'ENOENT')
64
+ return snippets;
65
+ throw error;
66
+ }
67
+ for (const file of files.filter((name) => name.endsWith('.json')).sort()) {
68
+ try {
69
+ const content = readFileSync(join(directory, file), 'utf8');
70
+ if (Buffer.byteLength(content) > 65_536)
71
+ throw new Error('File exceeds 64 KiB.');
72
+ const snippet = JSON.parse(content);
73
+ validateSnippet(snippet);
74
+ if (snippet.name !== `user/${file.slice(0, -5)}`)
75
+ throw new Error('File must match the user snippet name.');
76
+ snippets.push(snippet);
77
+ }
78
+ catch (error) {
79
+ throw new Error(`SCAPI_SNIPPET_INVALID: repair or remove ${join(directory, file)}: ${String(error)}`);
80
+ }
81
+ }
82
+ return snippets;
83
+ }
84
+ /** Save a new user snippet without replacing an existing workflow. */
85
+ export function saveScapiSnippet(snippet, directory = getScapiSnippetDirectory()) {
86
+ validateSnippet(snippet);
87
+ if (!snippet.name.startsWith('user/'))
88
+ throw new Error('SCAPI_SNIPPET_NAME: saved snippets require user/ prefix.');
89
+ const content = JSON.stringify({ ...snippet, savedAt: new Date().toISOString() }, null, 2) + '\n';
90
+ if (Buffer.byteLength(content) > 65_536)
91
+ throw new Error('SCAPI_SNIPPET_INVALID: snippet exceeds 64 KiB.');
92
+ mkdirSync(directory, { recursive: true, mode: 0o700 });
93
+ const path = join(directory, snippet.name.slice(5) + '.json');
94
+ const temporary = join(directory, randomUUID() + '.tmp');
95
+ writeFileSync(temporary, content, { flag: 'wx', mode: 0o600 });
96
+ try {
97
+ // Publish the complete file atomically without replacing an existing name.
98
+ linkSync(temporary, path);
99
+ }
100
+ catch (error) {
101
+ if (error.code === 'EEXIST')
102
+ throw new Error('SCAPI_SNIPPET_EXISTS: choose a new user/ name; existing snippets are not overwritten.');
103
+ throw error;
104
+ }
105
+ finally {
106
+ unlinkSync(temporary);
107
+ }
108
+ }
109
+ /** Build the runtime's search/describe/run resolver using the shared documentation ranking. */
110
+ export function createScapiSnippetResolver(snippets) {
111
+ const byName = new Map(snippets.map((snippet) => [snippet.name, snippet]));
112
+ const index = createRankedIndex(snippets.map((s) => ({ id: s.name, title: s.name, summary: s.description })));
113
+ const validator = new Validator();
114
+ return (operation, name, input) => {
115
+ if (operation === 'search') {
116
+ const names = name.trim() ? index.search(name).map((result) => result.id) : [...byName.keys()];
117
+ return {
118
+ total: names.length,
119
+ results: names.slice(0, 10).map((id) => {
120
+ const s = byName.get(id);
121
+ return { kind: 'snippet', name: s.name, description: s.description, effect: s.effect };
122
+ }),
123
+ };
124
+ }
125
+ const snippet = byName.get(name);
126
+ if (!snippet)
127
+ throw new Error(`SCAPI_SNIPPET_NOT_FOUND: ${name}. Use codemode.search to find available snippets.`);
128
+ if (operation === 'describe')
129
+ return snippet;
130
+ if (operation !== 'run')
131
+ throw new Error('Unknown snippet operation.');
132
+ const result = validator.validate(input, snippet.inputSchema, {
133
+ required: Boolean(snippet.inputSchema.type || snippet.inputSchema.required),
134
+ });
135
+ if (!result.valid)
136
+ throw new Error(`SCAPI_SNIPPET_INPUT: ${name}: ${result.errors.map((e) => e.stack).join('; ')}`);
137
+ return snippet.code;
138
+ };
139
+ }
140
+ //# sourceMappingURL=snippets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snippets.js","sourceRoot":"","sources":["../../../src/scapi/snippets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ /** Plain Node JavaScript, packaged with the SDK. This is local execution, not a security sandbox. */
2
+ export declare const SCAPI_WORKER_SOURCE: string;
@@ -0,0 +1,101 @@
1
+ /*
2
+ * Copyright (c) 2025, Salesforce, Inc.
3
+ * SPDX-License-Identifier: Apache-2
4
+ * For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
5
+ */
6
+ /** Plain Node JavaScript, packaged with the SDK. This is local execution, not a security sandbox. */
7
+ export const SCAPI_WORKER_SOURCE = String.raw `
8
+ const send = process.send.bind(process);
9
+ const pending = new Map();
10
+ let sequence = 0;
11
+ function directNetwork() {
12
+ throw new Error('SCAPI_DIRECT_NETWORK_DISABLED: Use scapi.request() in code mode. For direct HTTP calls, export a token and use a client outside code mode; SDK safety does not govern those calls.');
13
+ }
14
+ // Prevent accidental use of ambient networking; this is not a hostile-code sandbox.
15
+ for (const name of ['fetch', 'WebSocket']) {
16
+ Object.defineProperty(globalThis, name, {value: directNetwork, writable: false, configurable: false});
17
+ }
18
+ process.on('disconnect', () => process.exit(0));
19
+ process.on('message', async message => {
20
+ if (message.type === 'reply') {
21
+ const waiter = pending.get(message.id);
22
+ if (!waiter) return;
23
+ pending.delete(message.id);
24
+ if (message.error) waiter.reject(new Error(message.error));
25
+ else waiter.resolve(message.value);
26
+ return;
27
+ }
28
+ if (message.type !== 'run') return;
29
+ const documents = message.documents || [];
30
+ const byId = new Map(documents.map(d => [d.entry.id, d.schema]));
31
+ function resolve(value, api, seen = new Set(), depth = 0) {
32
+ if (depth > 20) return value;
33
+ if (!value || typeof value !== 'object') return value;
34
+ if (Array.isArray(value)) return value.map(v => resolve(v, api, seen, depth + 1));
35
+ if (typeof value.$ref === 'string') {
36
+ if (!value.$ref.startsWith('#/') || seen.has(value.$ref)) return value;
37
+ const next = new Set(seen); next.add(value.$ref);
38
+ const target = value.$ref.slice(2).split('/').reduce((obj, key) => obj?.[key.replaceAll('~1','/').replaceAll('~0','~')], byId.get(api));
39
+ if (!target) throw new Error('Unresolved schema reference: ' + value.$ref);
40
+ return resolve(target, api, next, depth + 1);
41
+ }
42
+ return Object.fromEntries(Object.entries(value).map(([key, v]) => [key, resolve(v, api, seen, depth + 1)]));
43
+ }
44
+ const spec = {apis: documents.map(d => d.entry), paths: {}, resolve};
45
+ for (const {entry, schema} of documents) {
46
+ for (const [path, item] of Object.entries(schema.paths || {})) {
47
+ const methods = {};
48
+ for (const method of ['get','head','post','put','patch','delete','options']) {
49
+ if (item[method]) methods[method] = resolve({...item[method], api: entry.id,
50
+ parameters: [...(item.parameters || []), ...(item[method].parameters || [])],
51
+ security: item[method].security ?? schema.security ?? []}, entry.id);
52
+ }
53
+ spec.paths['/' + entry.id + path] = methods;
54
+ }
55
+ }
56
+ const scapi = {request: options => new Promise((resolve, reject) => {
57
+ const id = ++sequence;
58
+ pending.set(id, {resolve, reject});
59
+ send({type:'request', id, options});
60
+ })};
61
+ const authCall = (operation, options = {}) => new Promise((resolve, reject) => {
62
+ const id = ++sequence;
63
+ pending.set(id, {resolve, reject});
64
+ send({type:'auth', id, operation, options});
65
+ });
66
+ const auth = {accountManager: options => authCall('accountManager', options), slas: options => authCall('slas', options)};
67
+ const snippetCall = (operation, name, input) => new Promise((resolve, reject) => {
68
+ const id = ++sequence;
69
+ pending.set(id, {resolve, reject});
70
+ send({type:'snippet', id, operation, name, input});
71
+ });
72
+ let runningSnippets = 0;
73
+ const evaluate = (code, input) => new Function('spec', 'scapi', 'codemode', 'auth', 'organizationId', 'siteId', 'input',
74
+ 'return (' + code + ')(input);')(spec, scapi, codemode, auth, message.organizationId, message.siteId, input);
75
+ const codemode = {
76
+ search: (query = '') => snippetCall('search', String(query)),
77
+ describe: name => snippetCall('describe', String(name)),
78
+ run: async (name, input) => {
79
+ if (runningSnippets >= 16) throw new Error('SCAPI_SNIPPET_LIMIT: at most 16 active snippet calls.');
80
+ runningSnippets++;
81
+ try {
82
+ const code = await snippetCall('run', String(name), input);
83
+ return await evaluate(code, input);
84
+ } finally { runningSnippets--; }
85
+ }
86
+ };
87
+ try {
88
+ const value = await evaluate(message.code, message.input);
89
+ if (pending.size || runningSnippets) throw new Error('Await every scapi.request, auth, and codemode call before returning. Requests may already have taken effect.');
90
+ const json = JSON.stringify(value === undefined ? null : value);
91
+ if (Buffer.byteLength(json) > message.maxOutputBytes) throw new Error('SCAPI_RESULT_TOO_LARGE: return fewer fields or a smaller page.');
92
+ send({type:'result', value: JSON.parse(json)});
93
+ } catch (error) {
94
+ const message = error.code === 'ERR_ACCESS_DENIED'
95
+ ? 'SCAPI_RUNTIME_RESTRICTED: Code mode supports API discovery, managed requests, and result processing. Use terminal or file tools outside code mode for filesystem access, subprocesses, or other local development work.'
96
+ : String(error.message || error);
97
+ send({type:'error', error: message.slice(0, 4000)});
98
+ }
99
+ });
100
+ `;
101
+ //# sourceMappingURL=worker-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-source.js","sourceRoot":"","sources":["../../../src/scapi/worker-source.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,qGAAqG;AACrG,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6F5C,CAAC"}
@@ -0,0 +1,12 @@
1
+ import MiniSearch from 'minisearch';
2
+ /** Shared ranking fields; each corpus owns its index and query-time filters. */
3
+ export interface RankedDocument {
4
+ id: string;
5
+ title: string;
6
+ category?: string;
7
+ headings?: string;
8
+ summary?: string;
9
+ keywords?: string[];
10
+ }
11
+ /** Build an independent index using the established documentation ranking. */
12
+ export declare function createRankedIndex(entries: readonly RankedDocument[]): MiniSearch;
@@ -0,0 +1,28 @@
1
+ /*
2
+ * Copyright (c) 2025, Salesforce, Inc.
3
+ * SPDX-License-Identifier: Apache-2
4
+ * For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
5
+ */
6
+ import MiniSearch from 'minisearch';
7
+ /** Build an independent index using the established documentation ranking. */
8
+ export function createRankedIndex(entries) {
9
+ const index = new MiniSearch({
10
+ idField: 'id',
11
+ fields: ['title', 'id', 'headings', 'keywords', 'summary'],
12
+ storeFields: ['category'],
13
+ searchOptions: {
14
+ boost: { title: 3, id: 2.5, keywords: 2, headings: 2, summary: 1.5 },
15
+ fuzzy: 0.2,
16
+ prefix: true,
17
+ },
18
+ });
19
+ index.addAll(entries.map((entry) => ({
20
+ ...entry,
21
+ category: entry.category ?? '',
22
+ headings: entry.headings ?? '',
23
+ summary: entry.summary ?? '',
24
+ keywords: entry.keywords?.join(' ') ?? '',
25
+ })));
26
+ return index;
27
+ }
28
+ //# sourceMappingURL=ranking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ranking.js","sourceRoot":"","sources":["../../../src/search/ranking.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,UAAU,MAAM,YAAY,CAAC;AAYpC,8EAA8E;AAC9E,MAAM,UAAU,iBAAiB,CAAC,OAAkC;IAClE,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC;QAC3B,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC;QAC1D,WAAW,EAAE,CAAC,UAAU,CAAC;QACzB,aAAa,EAAE;YACb,KAAK,EAAE,EAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAC;YAClE,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,IAAI;SACb;KACF,CAAC,CAAC;IACH,KAAK,CAAC,MAAM,CACV,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACtB,GAAG,KAAK;QACR,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;QAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;QAC9B,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;QAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;KAC1C,CAAC,CAAC,CACJ,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -2,7 +2,7 @@ import type { SkillSet, SkillSourceConfig } from './types.js';
2
2
  /**
3
3
  * Registry mapping skill sets to their source configurations.
4
4
  *
5
- * Each skill set (b2c, b2c-cli, storefront-next, storefront-next-figma, cap-dev)
5
+ * Each registered skill set
6
6
  * maps to its respective GitHub repository and download configuration for
7
7
  * artifact retrieval.
8
8
  */
@@ -10,7 +10,7 @@ export declare const SKILL_SOURCES: Record<SkillSet, SkillSourceConfig>;
10
10
  /**
11
11
  * Get the source configuration for a specific skill set.
12
12
  *
13
- * @param skillSet - The skill set identifier ('b2c', 'b2c-cli', 'storefront-next', 'storefront-next-figma', or 'cap-dev')
13
+ * @param skillSet - A registered skill set identifier
14
14
  * @returns The source configuration for the skill set
15
15
  * @throws Error if the skill set is not recognized
16
16
  */
@@ -10,7 +10,7 @@ function pluginsTag(version) {
10
10
  /**
11
11
  * Registry mapping skill sets to their source configurations.
12
12
  *
13
- * Each skill set (b2c, b2c-cli, storefront-next, storefront-next-figma, cap-dev)
13
+ * Each registered skill set
14
14
  * maps to its respective GitHub repository and download configuration for
15
15
  * artifact retrieval.
16
16
  */
@@ -31,6 +31,22 @@ export const SKILL_SOURCES = {
31
31
  assetName: 'b2c-cli-skills.zip',
32
32
  tagPattern: pluginsTag,
33
33
  },
34
+ 'b2c-ops': {
35
+ id: 'b2c-ops',
36
+ displayName: 'B2C Commerce operator and administrator runbooks',
37
+ type: 'release-artifact',
38
+ repo: 'SalesforceCommerceCloud/b2c-developer-tooling',
39
+ assetName: 'b2c-ops-skills.zip',
40
+ tagPattern: pluginsTag,
41
+ },
42
+ 'b2c-python-sdk': {
43
+ id: 'b2c-python-sdk',
44
+ displayName: 'B2C Python tooling SDK usage (salesforce-b2c-tooling-sdk)',
45
+ type: 'release-artifact',
46
+ repo: 'SalesforceCommerceCloud/b2c-developer-tooling',
47
+ assetName: 'b2c-python-sdk-skills.zip',
48
+ tagPattern: pluginsTag,
49
+ },
34
50
  'storefront-next': {
35
51
  id: 'storefront-next',
36
52
  displayName: 'Storefront Next development skills',
@@ -59,7 +75,7 @@ export const SKILL_SOURCES = {
59
75
  /**
60
76
  * Get the source configuration for a specific skill set.
61
77
  *
62
- * @param skillSet - The skill set identifier ('b2c', 'b2c-cli', 'storefront-next', 'storefront-next-figma', or 'cap-dev')
78
+ * @param skillSet - A registered skill set identifier
63
79
  * @returns The source configuration for the skill set
64
80
  * @throws Error if the skill set is not recognized
65
81
  */
@@ -1 +1 @@
1
- {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../../src/skills/sources.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,SAAS,UAAU,CAAC,OAAe;IACjC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvC,OAAO,qBAAqB,IAAI,EAAE,CAAC;AACrC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAwC;IAChE,GAAG,EAAE;QACH,EAAE,EAAE,KAAK;QACT,WAAW,EAAE,mCAAmC;QAChD,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,+CAA+C;QACrD,SAAS,EAAE,gBAAgB;QAC3B,UAAU,EAAE,UAAU;KACvB;IACD,SAAS,EAAE;QACT,EAAE,EAAE,SAAS;QACb,WAAW,EAAE,iCAAiC;QAC9C,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,+CAA+C;QACrD,SAAS,EAAE,oBAAoB;QAC/B,UAAU,EAAE,UAAU;KACvB;IACD,iBAAiB,EAAE;QACjB,EAAE,EAAE,iBAAiB;QACrB,WAAW,EAAE,oCAAoC;QACjD,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,+CAA+C;QACrD,SAAS,EAAE,4BAA4B;QACvC,UAAU,EAAE,UAAU;KACvB;IACD,uBAAuB,EAAE;QACvB,EAAE,EAAE,uBAAuB;QAC3B,WAAW,EAAE,yEAAyE;QACtF,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,+CAA+C;QACrD,SAAS,EAAE,kCAAkC;QAC7C,UAAU,EAAE,UAAU;KACvB;IACD,SAAS,EAAE;QACT,EAAE,EAAE,SAAS;QACb,WAAW,EAAE,kCAAkC;QAC/C,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,uCAAuC;QAC7C,GAAG,EAAE,MAAM;QACX,UAAU,EAAE,gBAAgB;KAC7B;CACF,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,QAAkB;IAC/C,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAe,MAAM,CAAC,IAAI,CAAC,aAAa,CAAe,CAAC"}
1
+ {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../../src/skills/sources.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,SAAS,UAAU,CAAC,OAAe;IACjC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvC,OAAO,qBAAqB,IAAI,EAAE,CAAC;AACrC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAwC;IAChE,GAAG,EAAE;QACH,EAAE,EAAE,KAAK;QACT,WAAW,EAAE,mCAAmC;QAChD,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,+CAA+C;QACrD,SAAS,EAAE,gBAAgB;QAC3B,UAAU,EAAE,UAAU;KACvB;IACD,SAAS,EAAE;QACT,EAAE,EAAE,SAAS;QACb,WAAW,EAAE,iCAAiC;QAC9C,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,+CAA+C;QACrD,SAAS,EAAE,oBAAoB;QAC/B,UAAU,EAAE,UAAU;KACvB;IACD,SAAS,EAAE;QACT,EAAE,EAAE,SAAS;QACb,WAAW,EAAE,kDAAkD;QAC/D,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,+CAA+C;QACrD,SAAS,EAAE,oBAAoB;QAC/B,UAAU,EAAE,UAAU;KACvB;IACD,gBAAgB,EAAE;QAChB,EAAE,EAAE,gBAAgB;QACpB,WAAW,EAAE,2DAA2D;QACxE,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,+CAA+C;QACrD,SAAS,EAAE,2BAA2B;QACtC,UAAU,EAAE,UAAU;KACvB;IACD,iBAAiB,EAAE;QACjB,EAAE,EAAE,iBAAiB;QACrB,WAAW,EAAE,oCAAoC;QACjD,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,+CAA+C;QACrD,SAAS,EAAE,4BAA4B;QACvC,UAAU,EAAE,UAAU;KACvB;IACD,uBAAuB,EAAE;QACvB,EAAE,EAAE,uBAAuB;QAC3B,WAAW,EAAE,yEAAyE;QACtF,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,+CAA+C;QACrD,SAAS,EAAE,kCAAkC;QAC7C,UAAU,EAAE,UAAU;KACvB;IACD,SAAS,EAAE;QACT,EAAE,EAAE,SAAS;QACb,WAAW,EAAE,kCAAkC;QAC/C,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,uCAAuC;QAC7C,GAAG,EAAE,MAAM;QACX,UAAU,EAAE,gBAAgB;KAC7B;CACF,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,QAAkB;IAC/C,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAe,MAAM,CAAC,IAAI,CAAC,aAAa,CAAe,CAAC"}
@@ -5,7 +5,7 @@ export type IdeType = 'claude-code' | 'cursor' | 'windsurf' | 'vscode' | 'codex'
5
5
  /**
6
6
  * Skill set categories matching the plugins directory structure.
7
7
  */
8
- export type SkillSet = 'b2c' | 'b2c-cli' | 'cap-dev' | 'storefront-next' | 'storefront-next-figma';
8
+ export type SkillSet = 'b2c' | 'b2c-cli' | 'b2c-ops' | 'b2c-python-sdk' | 'cap-dev' | 'storefront-next' | 'storefront-next-figma';
9
9
  /**
10
10
  * Configuration for a skill source — defines how to fetch skills from a particular repository.
11
11
  */