@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.
- package/package.json +1 -1
- package/skills/agentforce-generate/SKILL.md +8 -0
- package/skills/agentforce-generate/references/actions-reference.md +2 -2
- package/skills/agentforce-generate/references/voice-modality-reference.md +51 -15
- package/skills/agentforce-generate/references/voice-telephony-cli.md +193 -0
- package/skills/agentforce-observe/SKILL.md +13 -9
- package/skills/agentforce-observe/references/ahm-alerts.md +193 -14
- package/skills/automation-sandbox-post-copy-config-generate/SKILL.md +24 -15
- package/skills/automation-sandbox-post-copy-config-generate/assets/config_template.json +11 -0
- package/skills/automation-sandbox-post-copy-config-generate/assets/json_schema.json +33 -1
- package/skills/automation-sandbox-post-copy-config-generate/references/configuration_catalog.md +32 -1
- package/skills/automation-sandbox-post-copy-configure/SKILL.md +75 -71
- package/skills/automation-sandbox-post-copy-configure/assets/scheduled_apex_template.apex +13 -0
- package/skills/automation-sandbox-post-copy-configure/examples/sample_scheduled_apex_config.json +13 -0
- package/skills/automation-sandbox-post-copy-configure/references/scheduled_apex_path.md +155 -0
- package/skills/automation-sandbox-post-copy-configure/scripts/build-scheduled-apex.mjs +62 -0
- package/skills/automation-sandbox-post-copy-configure/scripts/soql-escape-job-name.mjs +28 -0
- package/skills/commerce-b2b-open-code-components-integrate/SKILL.md +1 -1
- package/skills/commerce-b2b-open-code-components-replace/SKILL.md +16 -16
- package/skills/consumer-goods-accruals-datakit-deploy/SKILL.md +383 -0
- package/skills/consumer-goods-accruals-datakit-deploy/scripts/setup.js +324 -0
- package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/00-check-prerequisites.js +63 -0
- package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/01-download-static-resource.js +100 -0
- package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/02-replace-org-id.js +46 -0
- package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/03-deploy-metadata.js +46 -0
- package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/04-deploy-engine.js +198 -0
- package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/05-deploy-tpm-accruals.js +231 -0
- package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/06-create-dataspace.js +82 -0
- package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/07-deploy-accruals-reports.js +517 -0
- package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/08-deploy-ui.js +416 -0
- package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/09-completion.js +44 -0
- package/skills/consumer-goods-accruals-datakit-deploy/scripts/steps/utils.js +514 -0
- package/skills/consumer-goods-sync-management-configure/SKILL.md +137 -0
- package/skills/consumer-goods-sync-management-configure/examples/scenarios.md +294 -0
- package/skills/consumer-goods-sync-management-configure/references/act1-setup-sync.md +333 -0
- package/skills/consumer-goods-sync-management-configure/references/act2-assign-users.md +324 -0
- package/skills/consumer-goods-sync-management-configure/references/act3-plan-verify.md +113 -0
- package/skills/consumer-goods-sync-management-configure/references/readiness-and-enablement.md +164 -0
- package/skills/consumer-goods-sync-management-configure/references/sync-management-app-install-backbone.md +159 -0
- package/skills/consumer-goods-sync-management-configure/references/transports-and-namespace.md +220 -0
- package/skills/consumer-goods-sync-management-configure/references/verify-and-smoke.md +175 -0
- package/skills/dx-devops-project-manage/SKILL.md +1 -1
- package/skills/dx-org-analyze/SKILL.md +0 -1
- package/skills/dx-org-analyze/scripts/collect_org_data.py +2 -2
- package/skills/dx-org-analyze/scripts/compute_diff.py +2 -4
- package/skills/dx-org-analyze/scripts/introspect_org.py +4 -40
- package/skills/dx-org-manage/SKILL.md +6 -50
- package/skills/dx-org-manage/examples/README.md +10 -16
- package/skills/dx-org-manage/references/scratch-org-create.md +1 -1
- package/skills/dx-org-manage/references/scratch-org-operations.md +1 -1
- package/skills/dx-org-shape-manage/SKILL.md +4 -3
- package/skills/education-cloud-domain-configure/references/gotchas-extended.md +1 -0
- package/skills/experience-accessibility-validate/SKILL.md +8 -5
- package/skills/experience-accessibility-validate/references/reviewers/sc-1-1-1-non-text-content.md +1 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-1-3-1-i-lists.md +0 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-1-3-1-ii-tables.md +20 -85
- package/skills/experience-accessibility-validate/references/reviewers/sc-1-3-1-iii-form-labels.md +4 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-1-3-1-iv-regions.md +0 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-1-3-1-v-groups.md +2 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-1-3-5-identify-input.md +0 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-1-4-3-contrast.md +4 -14
- package/skills/experience-accessibility-validate/references/reviewers/sc-2-1-1-keyboard.md +9 -5
- package/skills/experience-accessibility-validate/references/reviewers/sc-2-4-4-link-purpose.md +1 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-2-4-6-headings-labels.md +0 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-2-5-1-pointer-gestures.md +0 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-2-5-2-pointer-cancellation.md +0 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-2-5-3-label-in-name.md +0 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-2-5-7-dragging-movement.md +0 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-3-2-1-on-focus.md +0 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-3-2-2-on-input.md +1 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-3-3-1-error-identification.md +1 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-3-3-2-labels-instructions.md +1 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-3-3-3-error-suggestion.md +1 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-4-1-2-i-name.md +4 -5
- package/skills/experience-accessibility-validate/references/reviewers/sc-4-1-2-ii-role.md +1 -4
- package/skills/experience-accessibility-validate/references/reviewers/sc-4-1-2-iii-value.md +0 -4
- package/skills/experience-cms-content-generate/SKILL.md +1 -1
- package/skills/experience-cms-content-render/SKILL.md +3 -3
- package/skills/experience-cms-content-render/assets/angular/MediaRenderer.component.ts +35 -7
- package/skills/experience-cms-content-render/assets/angular/cms-item.service.ts +13 -4
- package/skills/experience-cms-content-render/assets/react/MediaRenderer.tsx +30 -8
- package/skills/experience-cms-content-render/assets/react/useCmsItem.ts +14 -4
- package/skills/experience-cms-content-render/assets/shared/cmsCore.types.ts +11 -1
- package/skills/experience-cms-content-render/assets/shared/externalRefs.ts +1 -1
- package/skills/experience-cms-content-render/assets/shared/mediaLabels.ts +62 -0
- package/skills/experience-cms-content-render/references/init-scaffold.md +13 -6
- package/skills/experience-content-media-stock-image-search/SKILL.md +0 -1
- package/skills/experience-lwc-accessibility-jest-run/SKILL.md +104 -25
- package/skills/experience-lwc-accessibility-jest-run/assets/jest.config.js +4 -0
- package/skills/experience-lwc-accessibility-jest-run/assets/sa11y-jest-setup.js +5 -0
- package/skills/experience-lwc-design-generate/SKILL.md +1 -1
- package/skills/experience-lwc-legacy-migrate/SKILL.md +212 -0
- package/skills/experience-lwc-legacy-migrate/assets/lo20-host-page-template.html +192 -0
- package/skills/experience-lwc-legacy-migrate/references/aura-to-lwc-completeness-checklist.md +188 -0
- package/skills/experience-lwc-legacy-migrate/references/lightning-out-2-system-reference.md +495 -0
- package/skills/experience-lwc-legacy-migrate/references/lightning-out-beta-to-2-migration.md +824 -0
- package/skills/experience-lwc-legacy-migrate/scripts/convert-lo-names.py +94 -0
- package/skills/experience-lwc-legacy-migrate/scripts/validate-lo20-page.py +133 -0
- package/skills/experience-ui-bundle-app-coordinate/SKILL.md +5 -5
- package/skills/experience-ui-bundle-features-generate/SKILL.md +65 -36
- package/skills/experience-ui-bundle-features-generate/references/angular/features.md +74 -0
- package/skills/experience-ui-bundle-features-generate/references/react/features.md +59 -0
- package/skills/experience-ui-bundle-features-generate/scripts/detect-framework.sh +73 -0
- package/skills/experience-ui-bundle-frontend-generate/SKILL.md +2 -2
- package/skills/experience-ui-bundle-metadata-generate/SKILL.md +26 -14
- package/skills/experience-ui-bundle-metadata-generate/references/angular-metadata-generate.md +37 -0
- package/skills/experience-ui-bundle-metadata-generate/references/react-metadata-generate.md +32 -0
- package/skills/experience-ui-bundle-metadata-generate/scripts/detect-framework.sh +73 -0
- package/skills/experience-ui-bundle-metadata-generate/scripts/verify-bundle-location.sh +30 -8
- package/skills/experience-ui-bundle-project-generate/SKILL.md +1 -1
- package/skills/field-service-data-capture-migrate/SKILL.md +391 -0
- package/skills/field-service-data-capture-migrate/assets/sample-legacy-flow.flow-meta.xml +163 -0
- package/skills/field-service-data-capture-migrate/references/architecture-notes.md +40 -0
- package/skills/field-service-data-capture-migrate/references/component-mapping.md +278 -0
- package/skills/field-service-data-capture-migrate/references/converter-builder-contract.md +183 -0
- package/skills/field-service-data-capture-migrate/references/dc-platform-rules.md +130 -0
- package/skills/field-service-data-capture-migrate/references/fsm-dc-capability-catalog.md +215 -0
- package/skills/field-service-data-capture-migrate/references/known-deploy-errors.md +36 -0
- package/skills/field-service-data-capture-migrate/references/migration-checklist.md +121 -0
- package/skills/field-service-data-capture-migrate/references/transformer-rules.md +132 -0
- package/skills/field-service-data-capture-migrate/scripts/analyze_flow.py +277 -0
- package/skills/field-service-data-capture-migrate/scripts/convert_to_dc_spec.py +1311 -0
- package/skills/field-service-data-capture-migrate/scripts/cud_analysis.py +402 -0
- package/skills/field-service-data-capture-migrate/scripts/deploy_flow.sh +230 -0
- package/skills/field-service-data-capture-migrate/scripts/discover_subflow_tree.py +230 -0
- package/skills/field-service-data-capture-migrate/scripts/flow_input.py +186 -0
- package/skills/field-service-data-capture-migrate/scripts/flow_xml_utils.py +39 -0
- package/skills/field-service-data-capture-migrate/scripts/fsm_dc_catalog.py +413 -0
- package/skills/field-service-data-capture-migrate/scripts/generate_summary.py +199 -0
- package/skills/field-service-data-capture-migrate/scripts/json_to_flow_xml.py +146 -0
- package/skills/field-service-data-capture-migrate/scripts/manual_review_flags.py +42 -0
- package/skills/field-service-data-capture-migrate/scripts/retrieve_flow_rest.sh +155 -0
- package/skills/field-service-data-capture-migrate/scripts/subflow_names.py +49 -0
- package/skills/field-service-data-capture-migrate/scripts/transform_flow.py +1661 -0
- package/skills/field-service-data-capture-migrate/scripts/validate_flow.sh +147 -0
- package/skills/field-service-data-capture-migrate/scripts/vendor/build_flow.py +1258 -0
- package/skills/integration-connectivity-connected-app-configure/SKILL.md +5 -5
- package/skills/integration-connectivity-generate/SKILL.md +10 -10
- package/skills/integration-connectivity-generate/scripts/configure-named-credential.sh +2 -2
- package/skills/life-sciences-fieldsalesrep-coordinate/SKILL.md +1 -1
- package/skills/life-sciences-fieldsalesrep-coordinate/references/orchestration-flow.md +1 -1
- package/skills/life-sciences-kam-coordinate/references/stage-5-data-and-plan-templates-overview.md +14 -1
- package/skills/mobile-apps-create/SKILL.md +1 -1
- package/skills/{platform-agentsetup-categories-fetch → platform-agenticsetup-categories-get}/SKILL.md +7 -7
- package/skills/platform-apex-test-generate/SKILL.md +1 -1
- package/skills/platform-apex-test-run/SKILL.md +1 -1
- package/skills/platform-custom-field-generate/SKILL.md +1 -1
- package/skills/platform-custom-lightning-type-generate/SKILL.md +1 -1
- package/skills/platform-custom-metadata-type-generate/SKILL.md +1 -1
- package/skills/platform-custom-object-generate/SKILL.md +1 -1
- package/skills/platform-custom-report-type-generate/SKILL.md +1 -1
- package/skills/platform-custom-setting-generate/SKILL.md +1 -1
- package/skills/platform-data-and-tooling-api-context-get/SKILL.md +1 -1
- package/skills/platform-data-manage/SKILL.md +10 -10
- package/skills/platform-flexipage-generate/SKILL.md +1 -1
- package/skills/platform-lightning-app-coordinate/SKILL.md +1 -1
- package/skills/platform-metadata-api-context-get/SKILL.md +1 -1
- package/skills/platform-metadata-retrieve/SKILL.md +1 -1
- package/skills/platform-permission-set-generate/SKILL.md +1 -1
- package/skills/platform-report-generate/SKILL.md +1 -1
- package/skills/platform-salesforce-connect-adapter-generate/SKILL.md +4 -4
- package/skills/platform-sandbox-configure/SKILL.md +108 -133
- package/skills/platform-sandbox-configure/references/api-response-shapes.md +39 -0
- package/skills/platform-sandbox-configure/references/definition-file-approach.md +73 -0
- package/skills/platform-sharing-owd-configure/SKILL.md +1 -1
- package/skills/platform-sharing-rules-generate/SKILL.md +1 -1
- package/skills/platform-soql-query/SKILL.md +1 -1
- package/skills/platform-value-set-generate/SKILL.md +1 -1
- package/skills/platform-widget-generate/SKILL.md +26 -18
- package/skills/platform-widget-generate/examples/formulas.json +191 -0
- package/skills/platform-widget-generate/references/widget-formulas.md +123 -0
- package/skills/platform-widget-generate/references/widget-meta-directives.md +4 -4
- package/skills/sales-call-scoring-configure/SKILL.md +318 -0
- package/skills/sales-call-scoring-configure/assets/best-practice-competencies.json +67 -0
- package/skills/sales-call-scoring-configure/assets/ootb-competencies.json +58 -0
- package/skills/sales-call-scoring-configure/references/admin-communication.md +79 -0
- package/skills/sales-call-scoring-configure/references/competency-crud.md +130 -0
- package/skills/sales-call-scoring-configure/scripts/create-competency.sh +166 -0
- package/skills/sales-call-scoring-configure/scripts/create-custom-competency.sh +166 -0
- package/skills/sales-call-scoring-configure/scripts/edit-competency.sh +185 -0
- package/skills/sales-call-scoring-configure/scripts/edit-custom-competency.sh +190 -0
- package/skills/sales-call-scoring-configure/scripts/enable-call-scoring.sh +436 -0
- package/skills/sales-call-scoring-configure/scripts/get-competency.sh +72 -0
- package/skills/sales-call-scoring-configure/scripts/get-custom-competency.sh +78 -0
- package/skills/sales-call-scoring-configure/scripts/install-best-practice-competencies.sh +223 -0
- package/skills/sales-call-scoring-configure/scripts/install-ootb-competencies.sh +237 -0
- package/skills/sales-call-scoring-configure/scripts/list-competencies.sh +99 -0
- package/skills/sales-call-scoring-configure/scripts/shared/auth.sh +116 -0
- package/skills/sales-call-scoring-configure/scripts/shared/cap.sh +86 -0
- package/skills/sales-call-scoring-configure/scripts/shared/soap.sh +267 -0
- package/skills/sales-call-scoring-configure/scripts/shared/soql.sh +25 -0
- package/skills/sales-call-scoring-configure/scripts/toggle-competency.sh +112 -0
- package/skills/sales-call-scoring-configure/scripts/toggle-custom-competency.sh +125 -0
- package/skills/sales-call-scoring-configure/scripts/verify-ootb-competencies.sh +116 -0
- package/skills/service-agentforce-human-escalation-configure/SKILL.md +4 -0
- package/skills/service-agentforce-human-escalation-configure/scripts/tests/_bootstrap.py +26 -6
- package/skills/service-agentforce-human-escalation-configure/scripts/tests/test_escalation_contracts.py +5 -4
- package/skills/service-concierge-portal-generate/references/portal-deploy-runbook.md +1 -0
- package/skills/service-de-channel-activate/SKILL.md +6 -5
- package/skills/service-de-channel-create/SKILL.md +3 -3
- package/skills/service-de-channel-routing-configure/SKILL.md +3 -3
- package/skills/service-de-channel-settings-configure/SKILL.md +195 -0
- package/skills/service-de-channel-settings-configure/references/channel-settings-facets.md +152 -0
- package/skills/{service-de-channel-consent-configure → service-de-channel-settings-configure}/references/gotchas.md +3 -3
- package/skills/{service-de-channel-consent-configure → service-de-channel-settings-configure}/references/language-keywords.md +4 -4
- package/skills/{service-de-channel-consent-configure → service-de-channel-settings-configure}/references/worked-examples.md +14 -14
- package/skills/service-de-headless-channel-configure/SKILL.md +6 -6
- package/skills/service-de-headless-channel-configure/references/worked-examples.md +1 -1
- package/skills/service-de-waba-integrate/SKILL.md +2 -1
- package/skills/service-digital-engagement-deployment-configure/SKILL.md +2 -0
- package/skills/service-digital-engagement-deployment-configure/scripts/check-api-version.sh +29 -0
- package/skills/service-email-to-case-configure/SKILL.md +1 -1
- package/skills/service-helpagent-coordinate/SKILL.md +3 -2
- package/skills/service-helpagent-coordinate/references/channel-voice.md +15 -4
- package/skills/service-itsm-agentic-setup-agentforce-coordinate/SKILL.md +49 -31
- package/skills/service-itsm-agentic-setup-agentforce-coordinate/examples/output-templates.md +71 -6
- package/skills/service-itsm-agentic-setup-agentforce-coordinate/scripts/verify-child-verdict.mjs +26 -4
- package/skills/service-itsm-agentic-setup-cmdb-access-assign/SKILL.md +35 -10
- package/skills/service-itsm-agentic-setup-cmdb-access-assign/references/mcp-invocation.md +25 -5
- package/skills/service-itsm-agentic-setup-cmdb-bundle-deploy/SKILL.md +1 -1
- package/skills/service-itsm-agentic-setup-cmdb-configure/SKILL.md +5 -5
- package/skills/service-itsm-agentic-setup-cmdb-configure/references/mcp-invocation.md +1 -1
- package/skills/service-itsm-agentic-setup-cmdb-coordinate/SKILL.md +2 -2
- package/skills/service-itsm-agentic-setup-cmdb-coordinate/examples/output-templates.md +1 -1
- package/skills/service-itsm-agentic-setup-cmdb-discovery-configure/SKILL.md +25 -15
- package/skills/service-itsm-agentic-setup-employee-agent-configure/SKILL.md +8 -5
- package/skills/service-itsm-agentic-setup-employee-agent-configure/references/report-format.md +4 -2
- package/skills/service-itsm-agentic-setup-employee-agent-configure/references/workflow-detail.md +1 -1
- package/skills/service-itsm-agentic-setup-employee-agent-configure/scripts/render-report.mjs +29 -16
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/SKILL.md +8 -5
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/references/report-format.md +4 -2
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/references/workflow-detail.md +1 -1
- package/skills/service-itsm-agentic-setup-fulfiller-agent-configure/scripts/render-report.mjs +29 -16
- package/skills/service-itsm-agentic-setup-incident-management/SKILL.md +138 -68
- package/skills/service-itsm-agentic-setup-incident-management/examples/output-templates.md +31 -15
- package/skills/service-itsm-agentic-setup-incident-management/references/incident-persona-psg.md +156 -0
- package/skills/service-itsm-agentic-setup-incident-management/references/incident-preferences.md +148 -0
- package/skills/service-itsm-agentic-setup-incident-management/references/major-incident-management.md +162 -0
- package/skills/service-itsm-agentic-setup-incident-management/references/service-mgmt-privilege.md +149 -0
- package/skills/service-itsm-agentic-setup-incident-sla-configure/SKILL.md +103 -89
- package/skills/service-itsm-agentic-setup-incident-sla-configure/assets/attach-milestone.json +2 -2
- package/skills/service-itsm-agentic-setup-incident-sla-configure/assets/predefined-incident-policy.json +21 -39
- package/skills/service-itsm-agentic-setup-incident-sla-configure/examples/milestone-patterns.md +3 -3
- package/skills/service-itsm-agentic-setup-incident-sla-configure/examples/output-templates.md +18 -1
- package/skills/service-itsm-agentic-setup-incident-sla-configure/references/mcp-invocation.md +63 -37
- package/skills/service-omni-attribute-routing-configure/SKILL.md +53 -0
- package/skills/service-omni-attribute-routing-configure/references/api-notes.md +7 -0
- package/skills/service-omni-attribute-routing-configure/scripts/configure-and-report.sh +224 -0
- package/skills/service-omni-attribute-routing-configure/scripts/tests/test_attribute_routing_contracts.py +137 -0
- package/skills/service-omni-channel-inventory-analyze/SKILL.md +96 -0
- package/skills/service-omni-channel-inventory-analyze/references/api-notes.md +52 -0
- package/skills/service-omni-channel-inventory-analyze/scripts/analyze.sh +185 -0
- package/skills/service-omni-channel-inventory-analyze/scripts/tests/_bootstrap.py +84 -0
- package/skills/service-omni-channel-inventory-analyze/scripts/tests/test_inventory_analyze_contracts.py +141 -0
- package/skills/service-omni-channel-limits-analyze/SKILL.md +70 -0
- package/skills/service-omni-channel-limits-analyze/references/api-notes.md +22 -0
- package/skills/service-omni-channel-limits-analyze/scripts/analyze.sh +159 -0
- package/skills/service-omni-channel-limits-analyze/scripts/tests/_bootstrap.py +87 -0
- package/skills/service-omni-channel-limits-analyze/scripts/tests/test_limits_analyze_contracts.py +99 -0
- package/skills/service-omni-channel-setup-coordinate/SKILL.md +12 -20
- package/skills/service-omni-channel-setup-coordinate/scripts/integration-driver.sh +55 -5
- package/skills/service-omni-channel-setup-coordinate/scripts/tests/test_omni_contracts.py +38 -0
- package/skills/service-omni-command-center-analyze/SKILL.md +2 -2
- package/skills/service-omni-command-center-analyze/scripts/analyze.sh +3 -3
- package/skills/dx-org-manage/examples/snapshots/error_output.json +0 -9
- package/skills/dx-org-manage/examples/snapshots/success_output.json +0 -15
- package/skills/dx-org-manage/references/cli_flags.md +0 -67
- package/skills/dx-org-manage/references/creating-snapshot.md +0 -103
- package/skills/dx-org-manage/references/snapshot_usage.md +0 -74
- package/skills/experience-accessibility-validate/scripts/contrast-ratio.py +0 -153
- package/skills/experience-lwc-accessibility-jest-run/references/running-sa11y-jest-tests.md +0 -205
- package/skills/experience-ui-bundle-features-generate/scripts/verify-react-bundle.sh +0 -14
- /package/skills/experience-ui-bundle-features-generate/references/{conflict-resolution-schema.json → common/conflict-resolution-schema.json} +0 -0
- /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;
|