@salesforce/afv-skills 1.55.0 → 1.57.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 (274) hide show
  1. package/package.json +1 -1
  2. package/skills/agentforce-generate/SKILL.md +8 -0
  3. package/skills/agentforce-generate/references/actions-reference.md +2 -2
  4. package/skills/agentforce-generate/references/voice-modality-reference.md +51 -15
  5. package/skills/agentforce-generate/references/voice-telephony-cli.md +193 -0
  6. package/skills/agentforce-observe/SKILL.md +13 -9
  7. package/skills/agentforce-observe/references/ahm-alerts.md +193 -14
  8. package/skills/automation-sandbox-post-copy-config-generate/SKILL.md +24 -15
  9. package/skills/automation-sandbox-post-copy-config-generate/assets/config_template.json +11 -0
  10. package/skills/automation-sandbox-post-copy-config-generate/assets/json_schema.json +33 -1
  11. package/skills/automation-sandbox-post-copy-config-generate/references/configuration_catalog.md +32 -1
  12. package/skills/automation-sandbox-post-copy-configure/SKILL.md +75 -71
  13. package/skills/automation-sandbox-post-copy-configure/assets/scheduled_apex_template.apex +13 -0
  14. package/skills/automation-sandbox-post-copy-configure/examples/sample_scheduled_apex_config.json +13 -0
  15. package/skills/automation-sandbox-post-copy-configure/references/scheduled_apex_path.md +155 -0
  16. package/skills/automation-sandbox-post-copy-configure/scripts/build-scheduled-apex.mjs +62 -0
  17. package/skills/automation-sandbox-post-copy-configure/scripts/soql-escape-job-name.mjs +28 -0
  18. package/skills/commerce-b2b-open-code-components-integrate/SKILL.md +1 -1
  19. package/skills/commerce-b2b-open-code-components-replace/SKILL.md +16 -16
  20. package/skills/consumer-goods-accruals-datakit-deploy/SKILL.md +383 -0
  21. package/skills/consumer-goods-accruals-datakit-deploy/scripts/setup.js +324 -0
  22. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/00-check-prerequisites.js +63 -0
  23. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/01-download-static-resource.js +100 -0
  24. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/02-replace-org-id.js +46 -0
  25. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/03-deploy-metadata.js +46 -0
  26. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/04-deploy-engine.js +198 -0
  27. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/05-deploy-tpm-accruals.js +231 -0
  28. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/06-create-dataspace.js +82 -0
  29. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/07-deploy-accruals-reports.js +517 -0
  30. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/08-deploy-ui.js +416 -0
  31. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/09-completion.js +44 -0
  32. package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/utils.js +514 -0
  33. package/skills/consumer-goods-sync-management-configure/SKILL.md +137 -0
  34. package/skills/consumer-goods-sync-management-configure/examples/scenarios.md +294 -0
  35. package/skills/consumer-goods-sync-management-configure/references/act1-setup-sync.md +333 -0
  36. package/skills/consumer-goods-sync-management-configure/references/act2-assign-users.md +324 -0
  37. package/skills/consumer-goods-sync-management-configure/references/act3-plan-verify.md +113 -0
  38. package/skills/consumer-goods-sync-management-configure/references/readiness-and-enablement.md +164 -0
  39. package/skills/consumer-goods-sync-management-configure/references/sync-management-app-install-backbone.md +159 -0
  40. package/skills/consumer-goods-sync-management-configure/references/transports-and-namespace.md +220 -0
  41. package/skills/consumer-goods-sync-management-configure/references/verify-and-smoke.md +175 -0
  42. package/skills/dx-devops-project-manage/SKILL.md +1 -1
  43. package/skills/dx-org-analyze/SKILL.md +0 -1
  44. package/skills/dx-org-analyze/scripts/collect_org_data.py +2 -2
  45. package/skills/dx-org-analyze/scripts/compute_diff.py +2 -4
  46. package/skills/dx-org-analyze/scripts/introspect_org.py +4 -40
  47. package/skills/dx-org-manage/SKILL.md +6 -50
  48. package/skills/dx-org-manage/examples/README.md +10 -16
  49. package/skills/dx-org-manage/references/scratch-org-create.md +1 -1
  50. package/skills/dx-org-manage/references/scratch-org-operations.md +1 -1
  51. package/skills/dx-org-shape-manage/SKILL.md +4 -3
  52. package/skills/education-cloud-domain-configure/references/gotchas-extended.md +1 -0
  53. package/skills/experience-accessibility-validate/SKILL.md +8 -5
  54. package/skills/experience-accessibility-validate/references/reviewers/sc-1-1-1-non-text-content.md +1 -4
  55. package/skills/experience-accessibility-validate/references/reviewers/sc-1-3-1-i-lists.md +0 -4
  56. package/skills/experience-accessibility-validate/references/reviewers/sc-1-3-1-ii-tables.md +20 -85
  57. package/skills/experience-accessibility-validate/references/reviewers/sc-1-3-1-iii-form-labels.md +4 -4
  58. package/skills/experience-accessibility-validate/references/reviewers/sc-1-3-1-iv-regions.md +0 -4
  59. package/skills/experience-accessibility-validate/references/reviewers/sc-1-3-1-v-groups.md +2 -4
  60. package/skills/experience-accessibility-validate/references/reviewers/sc-1-3-5-identify-input.md +0 -4
  61. package/skills/experience-accessibility-validate/references/reviewers/sc-1-4-3-contrast.md +4 -14
  62. package/skills/experience-accessibility-validate/references/reviewers/sc-2-1-1-keyboard.md +9 -5
  63. package/skills/experience-accessibility-validate/references/reviewers/sc-2-4-4-link-purpose.md +1 -4
  64. package/skills/experience-accessibility-validate/references/reviewers/sc-2-4-6-headings-labels.md +0 -4
  65. package/skills/experience-accessibility-validate/references/reviewers/sc-2-5-1-pointer-gestures.md +0 -4
  66. package/skills/experience-accessibility-validate/references/reviewers/sc-2-5-2-pointer-cancellation.md +0 -4
  67. package/skills/experience-accessibility-validate/references/reviewers/sc-2-5-3-label-in-name.md +0 -4
  68. package/skills/experience-accessibility-validate/references/reviewers/sc-2-5-7-dragging-movement.md +0 -4
  69. package/skills/experience-accessibility-validate/references/reviewers/sc-3-2-1-on-focus.md +0 -4
  70. package/skills/experience-accessibility-validate/references/reviewers/sc-3-2-2-on-input.md +1 -4
  71. package/skills/experience-accessibility-validate/references/reviewers/sc-3-3-1-error-identification.md +1 -4
  72. package/skills/experience-accessibility-validate/references/reviewers/sc-3-3-2-labels-instructions.md +1 -4
  73. package/skills/experience-accessibility-validate/references/reviewers/sc-3-3-3-error-suggestion.md +1 -4
  74. package/skills/experience-accessibility-validate/references/reviewers/sc-4-1-2-i-name.md +4 -5
  75. package/skills/experience-accessibility-validate/references/reviewers/sc-4-1-2-ii-role.md +1 -4
  76. package/skills/experience-accessibility-validate/references/reviewers/sc-4-1-2-iii-value.md +0 -4
  77. package/skills/experience-cms-content-generate/SKILL.md +1 -1
  78. package/skills/experience-cms-content-render/SKILL.md +3 -3
  79. package/skills/experience-cms-content-render/assets/angular/MediaRenderer.component.ts +35 -7
  80. package/skills/experience-cms-content-render/assets/angular/cms-item.service.ts +13 -4
  81. package/skills/experience-cms-content-render/assets/react/MediaRenderer.tsx +30 -8
  82. package/skills/experience-cms-content-render/assets/react/useCmsItem.ts +14 -4
  83. package/skills/experience-cms-content-render/assets/shared/cmsCore.types.ts +11 -1
  84. package/skills/experience-cms-content-render/assets/shared/externalRefs.ts +1 -1
  85. package/skills/experience-cms-content-render/assets/shared/mediaLabels.ts +62 -0
  86. package/skills/experience-cms-content-render/references/init-scaffold.md +13 -6
  87. package/skills/experience-content-media-stock-image-search/SKILL.md +0 -1
  88. package/skills/experience-lwc-accessibility-jest-run/SKILL.md +104 -25
  89. package/skills/experience-lwc-accessibility-jest-run/assets/jest.config.js +4 -0
  90. package/skills/experience-lwc-accessibility-jest-run/assets/sa11y-jest-setup.js +5 -0
  91. package/skills/experience-lwc-design-generate/SKILL.md +1 -1
  92. package/skills/experience-lwc-legacy-migrate/SKILL.md +212 -0
  93. package/skills/experience-lwc-legacy-migrate/assets/lo20-host-page-template.html +192 -0
  94. package/skills/experience-lwc-legacy-migrate/references/aura-to-lwc-completeness-checklist.md +188 -0
  95. package/skills/experience-lwc-legacy-migrate/references/lightning-out-2-system-reference.md +495 -0
  96. package/skills/experience-lwc-legacy-migrate/references/lightning-out-beta-to-2-migration.md +824 -0
  97. package/skills/experience-lwc-legacy-migrate/scripts/convert-lo-names.py +94 -0
  98. package/skills/experience-lwc-legacy-migrate/scripts/validate-lo20-page.py +133 -0
  99. package/skills/experience-ui-bundle-app-coordinate/SKILL.md +5 -5
  100. package/skills/experience-ui-bundle-features-generate/SKILL.md +65 -36
  101. package/skills/experience-ui-bundle-features-generate/references/angular/features.md +74 -0
  102. package/skills/experience-ui-bundle-features-generate/references/react/features.md +59 -0
  103. package/skills/experience-ui-bundle-features-generate/scripts/detect-framework.sh +73 -0
  104. package/skills/experience-ui-bundle-frontend-generate/SKILL.md +2 -2
  105. package/skills/experience-ui-bundle-metadata-generate/SKILL.md +26 -14
  106. package/skills/experience-ui-bundle-metadata-generate/references/angular-metadata-generate.md +37 -0
  107. package/skills/experience-ui-bundle-metadata-generate/references/react-metadata-generate.md +32 -0
  108. package/skills/experience-ui-bundle-metadata-generate/scripts/detect-framework.sh +73 -0
  109. package/skills/experience-ui-bundle-metadata-generate/scripts/verify-bundle-location.sh +30 -8
  110. package/skills/experience-ui-bundle-project-generate/SKILL.md +1 -1
  111. package/skills/field-service-data-capture-migrate/SKILL.md +391 -0
  112. package/skills/field-service-data-capture-migrate/assets/sample-legacy-flow.flow-meta.xml +163 -0
  113. package/skills/field-service-data-capture-migrate/references/architecture-notes.md +40 -0
  114. package/skills/field-service-data-capture-migrate/references/component-mapping.md +278 -0
  115. package/skills/field-service-data-capture-migrate/references/converter-builder-contract.md +183 -0
  116. package/skills/field-service-data-capture-migrate/references/dc-platform-rules.md +130 -0
  117. package/skills/field-service-data-capture-migrate/references/fsm-dc-capability-catalog.md +215 -0
  118. package/skills/field-service-data-capture-migrate/references/known-deploy-errors.md +36 -0
  119. package/skills/field-service-data-capture-migrate/references/migration-checklist.md +121 -0
  120. package/skills/field-service-data-capture-migrate/references/transformer-rules.md +132 -0
  121. package/skills/field-service-data-capture-migrate/scripts/analyze_flow.py +277 -0
  122. package/skills/field-service-data-capture-migrate/scripts/convert_to_dc_spec.py +1311 -0
  123. package/skills/field-service-data-capture-migrate/scripts/cud_analysis.py +402 -0
  124. package/skills/field-service-data-capture-migrate/scripts/deploy_flow.sh +230 -0
  125. package/skills/field-service-data-capture-migrate/scripts/discover_subflow_tree.py +230 -0
  126. package/skills/field-service-data-capture-migrate/scripts/flow_input.py +186 -0
  127. package/skills/field-service-data-capture-migrate/scripts/flow_xml_utils.py +39 -0
  128. package/skills/field-service-data-capture-migrate/scripts/fsm_dc_catalog.py +413 -0
  129. package/skills/field-service-data-capture-migrate/scripts/generate_summary.py +199 -0
  130. package/skills/field-service-data-capture-migrate/scripts/json_to_flow_xml.py +146 -0
  131. package/skills/field-service-data-capture-migrate/scripts/manual_review_flags.py +42 -0
  132. package/skills/field-service-data-capture-migrate/scripts/retrieve_flow_rest.sh +155 -0
  133. package/skills/field-service-data-capture-migrate/scripts/subflow_names.py +49 -0
  134. package/skills/field-service-data-capture-migrate/scripts/transform_flow.py +1661 -0
  135. package/skills/field-service-data-capture-migrate/scripts/validate_flow.sh +147 -0
  136. package/skills/field-service-data-capture-migrate/scripts/vendor/build_flow.py +1258 -0
  137. package/skills/integration-connectivity-connected-app-configure/SKILL.md +5 -5
  138. package/skills/integration-connectivity-generate/SKILL.md +10 -10
  139. package/skills/integration-connectivity-generate/scripts/configure-named-credential.sh +2 -2
  140. package/skills/life-sciences-fieldsalesrep-coordinate/SKILL.md +1 -1
  141. package/skills/life-sciences-fieldsalesrep-coordinate/references/orchestration-flow.md +1 -1
  142. package/skills/life-sciences-kam-coordinate/references/stage-5-data-and-plan-templates-overview.md +14 -1
  143. package/skills/mobile-apps-create/SKILL.md +1 -1
  144. package/skills/{platform-agentsetup-categories-fetch → platform-agenticsetup-categories-get}/SKILL.md +7 -7
  145. package/skills/platform-apex-test-generate/SKILL.md +1 -1
  146. package/skills/platform-apex-test-run/SKILL.md +1 -1
  147. package/skills/platform-custom-field-generate/SKILL.md +1 -1
  148. package/skills/platform-custom-lightning-type-generate/SKILL.md +1 -1
  149. package/skills/platform-custom-metadata-type-generate/SKILL.md +1 -1
  150. package/skills/platform-custom-object-generate/SKILL.md +1 -1
  151. package/skills/platform-custom-report-type-generate/SKILL.md +1 -1
  152. package/skills/platform-custom-setting-generate/SKILL.md +1 -1
  153. package/skills/platform-data-and-tooling-api-context-get/SKILL.md +1 -1
  154. package/skills/platform-data-manage/SKILL.md +10 -10
  155. package/skills/platform-flexipage-generate/SKILL.md +1 -1
  156. package/skills/platform-lightning-app-coordinate/SKILL.md +1 -1
  157. package/skills/platform-metadata-api-context-get/SKILL.md +1 -1
  158. package/skills/platform-metadata-retrieve/SKILL.md +1 -1
  159. package/skills/platform-permission-set-generate/SKILL.md +1 -1
  160. package/skills/platform-report-generate/SKILL.md +1 -1
  161. package/skills/platform-salesforce-connect-adapter-generate/SKILL.md +4 -4
  162. package/skills/platform-sandbox-configure/SKILL.md +108 -133
  163. package/skills/platform-sandbox-configure/references/api-response-shapes.md +39 -0
  164. package/skills/platform-sandbox-configure/references/definition-file-approach.md +73 -0
  165. package/skills/platform-sharing-owd-configure/SKILL.md +1 -1
  166. package/skills/platform-sharing-rules-generate/SKILL.md +1 -1
  167. package/skills/platform-soql-query/SKILL.md +1 -1
  168. package/skills/platform-value-set-generate/SKILL.md +1 -1
  169. package/skills/platform-widget-generate/SKILL.md +26 -18
  170. package/skills/platform-widget-generate/examples/formulas.json +191 -0
  171. package/skills/platform-widget-generate/references/widget-formulas.md +123 -0
  172. package/skills/platform-widget-generate/references/widget-meta-directives.md +4 -4
  173. package/skills/sales-call-scoring-configure/SKILL.md +318 -0
  174. package/skills/sales-call-scoring-configure/assets/best-practice-competencies.json +67 -0
  175. package/skills/sales-call-scoring-configure/assets/ootb-competencies.json +58 -0
  176. package/skills/sales-call-scoring-configure/references/admin-communication.md +79 -0
  177. package/skills/sales-call-scoring-configure/references/competency-crud.md +130 -0
  178. package/skills/sales-call-scoring-configure/scripts/create-competency.sh +166 -0
  179. package/skills/sales-call-scoring-configure/scripts/create-custom-competency.sh +166 -0
  180. package/skills/sales-call-scoring-configure/scripts/edit-competency.sh +185 -0
  181. package/skills/sales-call-scoring-configure/scripts/edit-custom-competency.sh +190 -0
  182. package/skills/sales-call-scoring-configure/scripts/enable-call-scoring.sh +436 -0
  183. package/skills/sales-call-scoring-configure/scripts/get-competency.sh +72 -0
  184. package/skills/sales-call-scoring-configure/scripts/get-custom-competency.sh +78 -0
  185. package/skills/sales-call-scoring-configure/scripts/install-best-practice-competencies.sh +223 -0
  186. package/skills/sales-call-scoring-configure/scripts/install-ootb-competencies.sh +237 -0
  187. package/skills/sales-call-scoring-configure/scripts/list-competencies.sh +99 -0
  188. package/skills/sales-call-scoring-configure/scripts/shared/auth.sh +116 -0
  189. package/skills/sales-call-scoring-configure/scripts/shared/cap.sh +86 -0
  190. package/skills/sales-call-scoring-configure/scripts/shared/soap.sh +267 -0
  191. package/skills/sales-call-scoring-configure/scripts/shared/soql.sh +25 -0
  192. package/skills/sales-call-scoring-configure/scripts/toggle-competency.sh +112 -0
  193. package/skills/sales-call-scoring-configure/scripts/toggle-custom-competency.sh +125 -0
  194. package/skills/sales-call-scoring-configure/scripts/verify-ootb-competencies.sh +116 -0
  195. package/skills/service-agentforce-human-escalation-configure/SKILL.md +4 -0
  196. package/skills/service-agentforce-human-escalation-configure/scripts/tests/_bootstrap.py +26 -6
  197. package/skills/service-agentforce-human-escalation-configure/scripts/tests/test_escalation_contracts.py +5 -4
  198. package/skills/service-concierge-portal-generate/references/portal-deploy-runbook.md +1 -0
  199. package/skills/service-de-channel-activate/SKILL.md +6 -5
  200. package/skills/service-de-channel-create/SKILL.md +3 -3
  201. package/skills/service-de-channel-routing-configure/SKILL.md +3 -3
  202. package/skills/service-de-channel-settings-configure/SKILL.md +195 -0
  203. package/skills/service-de-channel-settings-configure/references/channel-settings-facets.md +152 -0
  204. package/skills/{service-de-channel-consent-configure → service-de-channel-settings-configure}/references/gotchas.md +3 -3
  205. package/skills/{service-de-channel-consent-configure → service-de-channel-settings-configure}/references/language-keywords.md +4 -4
  206. package/skills/{service-de-channel-consent-configure → service-de-channel-settings-configure}/references/worked-examples.md +14 -14
  207. package/skills/service-de-headless-channel-configure/SKILL.md +6 -6
  208. package/skills/service-de-headless-channel-configure/references/worked-examples.md +1 -1
  209. package/skills/service-de-waba-integrate/SKILL.md +2 -1
  210. package/skills/service-digital-engagement-deployment-configure/SKILL.md +2 -0
  211. package/skills/service-digital-engagement-deployment-configure/scripts/check-api-version.sh +29 -0
  212. package/skills/service-email-to-case-configure/SKILL.md +1 -1
  213. package/skills/service-helpagent-coordinate/SKILL.md +3 -2
  214. package/skills/service-helpagent-coordinate/references/channel-voice.md +15 -4
  215. package/skills/service-itsm-agentic-setup-agentforce-coordinate/SKILL.md +49 -31
  216. package/skills/service-itsm-agentic-setup-agentforce-coordinate/examples/output-templates.md +71 -6
  217. package/skills/service-itsm-agentic-setup-agentforce-coordinate/scripts/verify-child-verdict.mjs +26 -4
  218. package/skills/service-itsm-agentic-setup-cmdb-access-assign/SKILL.md +35 -10
  219. package/skills/service-itsm-agentic-setup-cmdb-access-assign/references/mcp-invocation.md +25 -5
  220. package/skills/service-itsm-agentic-setup-cmdb-bundle-deploy/SKILL.md +1 -1
  221. package/skills/service-itsm-agentic-setup-cmdb-configure/SKILL.md +5 -5
  222. package/skills/service-itsm-agentic-setup-cmdb-configure/references/mcp-invocation.md +1 -1
  223. package/skills/service-itsm-agentic-setup-cmdb-coordinate/SKILL.md +2 -2
  224. package/skills/service-itsm-agentic-setup-cmdb-coordinate/examples/output-templates.md +1 -1
  225. package/skills/service-itsm-agentic-setup-cmdb-discovery-configure/SKILL.md +25 -15
  226. package/skills/service-itsm-agentic-setup-employee-agent-configure/SKILL.md +8 -5
  227. package/skills/service-itsm-agentic-setup-employee-agent-configure/references/report-format.md +4 -2
  228. package/skills/service-itsm-agentic-setup-employee-agent-configure/references/workflow-detail.md +1 -1
  229. package/skills/service-itsm-agentic-setup-employee-agent-configure/scripts/render-report.mjs +29 -16
  230. package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/SKILL.md +8 -5
  231. package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/references/report-format.md +4 -2
  232. package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/references/workflow-detail.md +1 -1
  233. package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/scripts/render-report.mjs +29 -16
  234. package/skills/service-itsm-agentic-setup-incident-management/SKILL.md +138 -68
  235. package/skills/service-itsm-agentic-setup-incident-management/examples/output-templates.md +31 -15
  236. package/skills/service-itsm-agentic-setup-incident-management/references/incident-persona-psg.md +156 -0
  237. package/skills/service-itsm-agentic-setup-incident-management/references/incident-preferences.md +148 -0
  238. package/skills/service-itsm-agentic-setup-incident-management/references/major-incident-management.md +162 -0
  239. package/skills/service-itsm-agentic-setup-incident-management/references/service-mgmt-privilege.md +149 -0
  240. package/skills/service-itsm-agentic-setup-incident-sla-configure/SKILL.md +103 -89
  241. package/skills/service-itsm-agentic-setup-incident-sla-configure/assets/attach-milestone.json +2 -2
  242. package/skills/service-itsm-agentic-setup-incident-sla-configure/assets/predefined-incident-policy.json +21 -39
  243. package/skills/service-itsm-agentic-setup-incident-sla-configure/examples/milestone-patterns.md +3 -3
  244. package/skills/service-itsm-agentic-setup-incident-sla-configure/examples/output-templates.md +18 -1
  245. package/skills/service-itsm-agentic-setup-incident-sla-configure/references/mcp-invocation.md +63 -37
  246. package/skills/service-omni-attribute-routing-configure/SKILL.md +53 -0
  247. package/skills/service-omni-attribute-routing-configure/references/api-notes.md +7 -0
  248. package/skills/service-omni-attribute-routing-configure/scripts/configure-and-report.sh +224 -0
  249. package/skills/service-omni-attribute-routing-configure/scripts/tests/test_attribute_routing_contracts.py +137 -0
  250. package/skills/service-omni-channel-inventory-analyze/SKILL.md +96 -0
  251. package/skills/service-omni-channel-inventory-analyze/references/api-notes.md +52 -0
  252. package/skills/service-omni-channel-inventory-analyze/scripts/analyze.sh +185 -0
  253. package/skills/service-omni-channel-inventory-analyze/scripts/tests/_bootstrap.py +84 -0
  254. package/skills/service-omni-channel-inventory-analyze/scripts/tests/test_inventory_analyze_contracts.py +141 -0
  255. package/skills/service-omni-channel-limits-analyze/SKILL.md +70 -0
  256. package/skills/service-omni-channel-limits-analyze/references/api-notes.md +22 -0
  257. package/skills/service-omni-channel-limits-analyze/scripts/analyze.sh +159 -0
  258. package/skills/service-omni-channel-limits-analyze/scripts/tests/_bootstrap.py +87 -0
  259. package/skills/service-omni-channel-limits-analyze/scripts/tests/test_limits_analyze_contracts.py +99 -0
  260. package/skills/service-omni-channel-setup-coordinate/SKILL.md +12 -20
  261. package/skills/service-omni-channel-setup-coordinate/scripts/integration-driver.sh +55 -5
  262. package/skills/service-omni-channel-setup-coordinate/scripts/tests/test_omni_contracts.py +38 -0
  263. package/skills/service-omni-command-center-analyze/SKILL.md +2 -2
  264. package/skills/service-omni-command-center-analyze/scripts/analyze.sh +3 -3
  265. package/skills/dx-org-manage/examples/snapshots/error_output.json +0 -9
  266. package/skills/dx-org-manage/examples/snapshots/success_output.json +0 -15
  267. package/skills/dx-org-manage/references/cli_flags.md +0 -67
  268. package/skills/dx-org-manage/references/creating-snapshot.md +0 -103
  269. package/skills/dx-org-manage/references/snapshot_usage.md +0 -74
  270. package/skills/experience-accessibility-validate/scripts/contrast-ratio.py +0 -153
  271. package/skills/experience-lwc-accessibility-jest-run/references/running-sa11y-jest-tests.md +0 -205
  272. package/skills/experience-ui-bundle-features-generate/scripts/verify-react-bundle.sh +0 -14
  273. /package/skills/experience-ui-bundle-features-generate/references/{conflict-resolution-schema.json → common/conflict-resolution-schema.json} +0 -0
  274. /package/skills/{platform-agentsetup-categories-fetch → platform-agenticsetup-categories-get}/references/api-response-schema.md +0 -0
@@ -0,0 +1,416 @@
1
+ const { execFileSync } = require('child_process');
2
+ const fs = require('fs');
3
+ const os = require('os');
4
+ const path = require('path');
5
+
6
+ const { exec, execDeployJson, execSfJson, getSfBin } = require('./utils');
7
+
8
+
9
+
10
+ /**
11
+
12
+ * Step 8: Deploy UI components (TPMAccrualTacticSummary) with Data Space replacements
13
+
14
+ * @param {string} orgAlias - The Salesforce org alias
15
+
16
+ * @param {string} setupDir - The setup directory path
17
+
18
+ * @param {boolean} skipDataSpace - Whether to skip data space configuration
19
+
20
+ * @param {string} configuredDataSpaceName - The data space name from config
21
+
22
+ * @param {string} configuredDataSpacePrefix - The data space prefix from config
23
+
24
+ * @param {string} salesOrg - The sales org identifier
25
+
26
+ * @param {string} namespace - Org namespace prefix WITH trailing "__" (e.g. "cgcloud_dev__"), or '' for unmanaged
27
+
28
+ * @param {boolean} dryRun - If true, skip deployment but keep temp files
29
+
30
+ */
31
+
32
+ async function deployUI(orgAlias, setupDir, skipDataSpace, configuredDataSpaceName, configuredDataSpacePrefix, salesOrg = '0001', namespace = '', dryRun = false) {
33
+
34
+ console.log('\n=== Step 8: Deploying UI Components ===');
35
+
36
+
37
+
38
+ // Use "default" and empty prefix if skipping data space, otherwise use configured values
39
+
40
+ const dataSpaceName = skipDataSpace ? 'default' : configuredDataSpaceName;
41
+
42
+ const dataSpacePrefix = skipDataSpace ? '' : configuredDataSpacePrefix;
43
+
44
+
45
+
46
+ console.log(`Data Space Name: ${dataSpaceName}`);
47
+
48
+ console.log(`Data Space Prefix: ${dataSpacePrefix || '(empty)'}`);
49
+
50
+ console.log(`Sales Org: ${salesOrg}`);
51
+
52
+ console.log(`Namespace: ${namespace || '(none)'}`);
53
+
54
+
55
+
56
+ // setupDir is already the CGCloudAddons extraction dir (e.g. <tmp>/CGCloudAddons)
57
+ const sourceDir = path.join(setupDir, 'TPM', 'Accruals', 'UI');
58
+
59
+ const tempDir = path.join(setupDir, 'temp-ui');
60
+
61
+
62
+
63
+ // Clean up temp directory if it exists
64
+
65
+ if (fs.existsSync(tempDir)) {
66
+
67
+ console.log('Cleaning up existing temp directory...');
68
+
69
+ fs.rmSync(tempDir, { recursive: true });
70
+
71
+ }
72
+
73
+
74
+
75
+ console.log('Copying UI components to temp directory...');
76
+
77
+ copyDirectory(sourceDir, tempDir);
78
+
79
+
80
+
81
+ console.log('Replacing Data Space placeholders, namespace, and sales org in file names and contents...');
82
+
83
+ replaceDataSpacePlaceholders(tempDir, dataSpaceName, dataSpacePrefix, salesOrg, namespace);
84
+
85
+
86
+
87
+ const deployPath = path.join(tempDir, 'force-app');
88
+
89
+
90
+
91
+ if (dryRun) {
92
+
93
+ console.log('[DRY RUN] Skipping deployment - files prepared at:');
94
+
95
+ console.log(` ${tempDir}`);
96
+
97
+ console.log('[DRY RUN] Temp directory preserved for inspection');
98
+
99
+ console.log('[OK] Step 8 completed (dry run)\n');
100
+
101
+ return;
102
+
103
+ }
104
+
105
+
106
+
107
+ // Convert to MDAPI format to bypass source-tracking "NothingToDeploy" on non-scratch orgs.
108
+ const mdapiOut = path.join(os.tmpdir(), `tpm_accruals_ui_mdapi_${Date.now()}`);
109
+ console.log('Converting UI source to MDAPI format...');
110
+ const convertResult = execSfJson(['project', 'convert', 'source', '--output-dir', mdapiOut, '--json'], { cwd: tempDir });
111
+ if (convertResult.status !== 0) {
112
+ console.warn(`[WARN] UI source conversion failed: ${convertResult.message || JSON.stringify(convertResult)}`);
113
+ console.warn('[WARN] Skipping UI deployment — source conversion error.');
114
+ return;
115
+ }
116
+
117
+ console.log('Deploying UI components metadata...');
118
+ try {
119
+ execDeployJson(['project', 'deploy', 'start', '--metadata-dir', mdapiOut, '--target-org', orgAlias]);
120
+ } catch (err) {
121
+ console.warn(`[WARN] UI deployment failed: ${err.message}`);
122
+ console.warn('[WARN] Skipping UI deployment — see warning above.');
123
+ return;
124
+ } finally {
125
+ try { fs.rmSync(mdapiOut, { recursive: true }); } catch (_) {}
126
+ }
127
+
128
+ // Clean up temp directory
129
+
130
+ console.log('Cleaning up temp directory...');
131
+
132
+ try { fs.rmSync(tempDir, { recursive: true }); } catch (_) {}
133
+
134
+
135
+
136
+ console.log('[OK] UI Components deployed successfully\n');
137
+
138
+
139
+
140
+ // Show manual step instructions
141
+
142
+ console.log('+============================================================================+');
143
+
144
+ console.log('| MANUAL STEP REQUIRED |');
145
+
146
+ console.log('+============================================================================+');
147
+
148
+ console.log('');
149
+
150
+ console.log(' Please manually add the TPMAccrualTacticSummary component to the');
151
+
152
+ console.log(' Promotion page in your Salesforce org.');
153
+
154
+ console.log('');
155
+
156
+ console.log(' Steps:');
157
+
158
+ console.log(' 1. Navigate to the Promotion page layout editor');
159
+
160
+ console.log(' 2. Add the TPMAccrualTacticSummary Lightning component to the page');
161
+
162
+ console.log(' 3. Save and activate the page');
163
+
164
+ console.log('');
165
+
166
+ console.log('============================================================================');
167
+
168
+ console.log('');
169
+
170
+ }
171
+
172
+
173
+
174
+ /**
175
+
176
+ * Recursively copy a directory
177
+
178
+ */
179
+
180
+ function copyDirectory(src, dest) {
181
+
182
+ if (!fs.existsSync(dest)) {
183
+
184
+ fs.mkdirSync(dest, { recursive: true });
185
+
186
+ }
187
+
188
+
189
+
190
+ const entries = fs.readdirSync(src, { withFileTypes: true });
191
+
192
+
193
+
194
+ for (const entry of entries) {
195
+
196
+ const srcPath = path.join(src, entry.name);
197
+
198
+ const destPath = path.join(dest, entry.name);
199
+
200
+
201
+
202
+ if (entry.isDirectory()) {
203
+
204
+ copyDirectory(srcPath, destPath);
205
+
206
+ } else {
207
+
208
+ fs.copyFileSync(srcPath, destPath);
209
+
210
+ }
211
+
212
+ }
213
+
214
+ }
215
+
216
+
217
+
218
+ /**
219
+
220
+ * Replace placeholders in a name (file or directory)
221
+
222
+ * Handles double underscore pattern to avoid DS2__ becoming DS2___
223
+
224
+ */
225
+
226
+ function replaceNamePlaceholders(name, dataSpaceName, dataSpacePrefix) {
227
+
228
+ let newName = name;
229
+
230
+ if (dataSpacePrefix === '') {
231
+
232
+ newName = newName.replace(/_DATASPACE_PREFIX__/g, '');
233
+
234
+ } else {
235
+
236
+ newName = newName.replace(/_DATASPACE_PREFIX__/g, dataSpacePrefix);
237
+
238
+ }
239
+
240
+ newName = newName
241
+
242
+ .replace(/_DATASPACE_PREFIX_/g, dataSpacePrefix)
243
+
244
+ .replace(/_DATASPACE_NAME_/g, dataSpaceName);
245
+
246
+ return newName;
247
+
248
+ }
249
+
250
+
251
+
252
+ /**
253
+
254
+ * Replace Data Space placeholders in both file names and file contents
255
+
256
+ */
257
+
258
+ function replaceDataSpacePlaceholders(dir, dataSpaceName, dataSpacePrefix, salesOrg, namespace) {
259
+
260
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
261
+
262
+
263
+
264
+ for (const entry of entries) {
265
+
266
+ const oldPath = path.join(dir, entry.name);
267
+
268
+
269
+
270
+ if (entry.isDirectory()) {
271
+
272
+ // Recursively process subdirectories first
273
+
274
+ replaceDataSpacePlaceholders(oldPath, dataSpaceName, dataSpacePrefix, salesOrg, namespace);
275
+
276
+
277
+
278
+ // Rename directory if it contains placeholders
279
+
280
+ if (entry.name.includes('_DATASPACE_PREFIX_') || entry.name.includes('_DATASPACE_NAME_')) {
281
+
282
+ const newName = replaceNamePlaceholders(entry.name, dataSpaceName, dataSpacePrefix);
283
+
284
+ const newPath = path.join(dir, newName);
285
+
286
+ fs.renameSync(oldPath, newPath);
287
+
288
+ }
289
+
290
+ } else {
291
+
292
+ // Process file contents
293
+
294
+ replaceInFile(oldPath, dataSpaceName, dataSpacePrefix, salesOrg, namespace);
295
+
296
+
297
+
298
+ // Rename file if it contains placeholders
299
+
300
+ if (entry.name.includes('_DATASPACE_PREFIX_') || entry.name.includes('_DATASPACE_NAME_')) {
301
+
302
+ const newName = replaceNamePlaceholders(entry.name, dataSpaceName, dataSpacePrefix);
303
+
304
+ const newPath = path.join(dir, newName);
305
+
306
+ fs.renameSync(oldPath, newPath);
307
+
308
+ }
309
+
310
+ }
311
+
312
+ }
313
+
314
+ }
315
+
316
+
317
+
318
+ /**
319
+
320
+ * Replace placeholders in file contents
321
+
322
+ */
323
+
324
+ function replaceInFile(filePath, dataSpaceName, dataSpacePrefix, salesOrg, namespace) {
325
+
326
+ try {
327
+
328
+ let content = fs.readFileSync(filePath, 'utf8');
329
+
330
+
331
+
332
+ // Check if file contains placeholders or hardcoded sales org
333
+
334
+ const hasPlaceholders = content.includes('_DATASPACE_PREFIX_') || content.includes('_DATASPACE_NAME_') || content.includes('_ORG_NS_');
335
+
336
+ const hasSalesOrgKey = content.includes("'0001':") && filePath.endsWith('Controller.js');
337
+
338
+
339
+
340
+ if (hasPlaceholders || hasSalesOrgKey) {
341
+
342
+ if (dataSpacePrefix === '') {
343
+
344
+ // If dataspace prefix is empty, remove double underscore pattern entirely
345
+
346
+ content = content.replace(/_DATASPACE_PREFIX__/g, '');
347
+
348
+ } else {
349
+
350
+ // Replace double underscore pattern first to avoid double underscores in output
351
+
352
+ // _DATASPACE_PREFIX__ with DS2_ results in DS2_ (not DS2__)
353
+
354
+ content = content.replace(/_DATASPACE_PREFIX__/g, dataSpacePrefix);
355
+
356
+ }
357
+
358
+
359
+
360
+ content = content
361
+
362
+ .replace(/_DATASPACE_PREFIX_/g, dataSpacePrefix)
363
+
364
+ .replace(/_DATASPACE_NAME_/g, dataSpaceName)
365
+
366
+ .replace(/_ORG_NS_/g, namespace || '');
367
+
368
+
369
+
370
+ // Replace the hardcoded '0001' sales org key in the CONFIGURATION_BY_SALESORG map
371
+
372
+ if (hasSalesOrgKey) {
373
+
374
+ // Belt-and-suspenders: salesOrg must be validated before splicing into JS source
375
+
376
+ if (!/^[A-Za-z0-9]{4}$/.test(salesOrg)) {
377
+
378
+ throw new Error(
379
+
380
+ `Error: Invalid sales org. Expected a 4-character alphanumeric identifier.`
381
+
382
+ );
383
+
384
+ }
385
+
386
+ content = content.replace(/'0001':/g, `'${salesOrg}':`);
387
+
388
+ }
389
+
390
+
391
+
392
+ fs.writeFileSync(filePath, content, 'utf8');
393
+
394
+ }
395
+
396
+ } catch (error) {
397
+
398
+ if (error.code === 'EISDIR') {
399
+
400
+ // Directory entry -- skip silently, expected when walking mixed trees
401
+
402
+ return;
403
+
404
+ }
405
+
406
+ // Unexpected I/O failure (missing file, permission error, write error)
407
+
408
+ throw new Error(`Failed to process UI template file ${filePath}: ${error.message}`, { cause: error });
409
+
410
+ }
411
+
412
+ }
413
+
414
+
415
+
416
+ module.exports = deployUI;
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Step 9: Completion and Scheduling Instructions
3
+ * Informs the user about successful deployment and next steps for scheduling accrual calculations
4
+ * @param {boolean} dryRun - If true, show dry run completion message
5
+ */
6
+ async function completion(dryRun = false) {
7
+ console.log('\n=== Step 9: Setup Complete ===');
8
+
9
+ if (dryRun) {
10
+ console.log('\n+============================================================================+');
11
+ console.log('| DRY RUN COMPLETED |');
12
+ console.log('+============================================================================+');
13
+ console.log('\nThe following directories contain the prepared files for inspection:');
14
+ console.log(' • CGCloudAddons/ - Downloaded and modified static resource');
15
+ console.log(' • temp-accruals-reports/ - Accruals Reports with placeholders replaced');
16
+ console.log(' • temp-ui/ - UI components with placeholders replaced');
17
+ console.log('\nTo execute the actual deployment, run the same command without --dry-run');
18
+ console.log('\n');
19
+ return;
20
+ }
21
+
22
+ console.log('\n[OK] The Accruals solution has been successfully deployed to your Salesforce org!');
23
+
24
+ console.log('\n=== Next Steps: Scheduling Accrual Calculations ===');
25
+ console.log('\nTo calculate accruals, you need to schedule two processes in the following order:');
26
+
27
+ console.log('\n1. Schedule Data Cloud Connector Export');
28
+ console.log(' - Use the DataCloudExportScheduler class');
29
+ console.log(' - Schedule exports for the following tables:');
30
+ console.log(' • promotionmeasures');
31
+ console.log(' • paymenttacticmeasures');
32
+ console.log(' • dailymeasurereal');
33
+ console.log(' - Documentation: https://developer.salesforce.com/docs/atlas.en-us.retail_api.meta/retail_api/cg_tpm_apex_datacloudexportscheduler.htm');
34
+ console.log(' - This class can be executed ad-hoc or scheduled to run at a specific interval');
35
+
36
+ console.log('\n2. Schedule Accrual Calculation Chain');
37
+ console.log(' - Use the ScheduleTPMAccrualProcessChain class');
38
+ console.log(' - Documentation: https://developer.salesforce.com/docs/atlas.en-us.retail_api.meta/retail_api/global_tpm_accrual_process.htm');
39
+ console.log(' - This class can be executed ad-hoc or scheduled to run at a specific interval');
40
+
41
+ console.log('\n');
42
+ }
43
+
44
+ module.exports = completion;