sfcc-dev-mcp 1.0.15 → 1.0.19
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/.github/ISSUE_TEMPLATE/bug_report.yml +3 -1
- package/.github/ISSUE_TEMPLATE/documentation.yml +2 -2
- package/.github/ISSUE_TEMPLATE/question.yml +1 -1
- package/.github/PULL_REQUEST_TEMPLATE/documentation.md +1 -1
- package/.github/PULL_REQUEST_TEMPLATE/new_tool.md +1 -1
- package/.github/agents/official-docs-researcher.agent.md +56 -0
- package/.github/instructions/mcp-node-tests.instructions.md +12 -916
- package/.github/instructions/mcp-yml-tests.instructions.md +14 -742
- package/.github/pull_request_template.md +1 -1
- package/.github/skills/agent-authoring/SKILL.md +66 -0
- package/.github/skills/mcp-log-debugging/SKILL.md +69 -0
- package/.github/skills/mcp-programmatic-testing/SKILL.md +142 -0
- package/.github/skills/mcp-yaml-testing/SKILL.md +136 -0
- package/.github/skills/salesforce-developer-site-scraper/SKILL.md +102 -0
- package/.github/skills/salesforce-developer-site-scraper/scripts/scrape-to-markdown.js +205 -0
- package/.github/skills/salesforce-help-site-scraper/SKILL.md +84 -0
- package/.github/skills/salesforce-help-site-scraper/scripts/scrape-help-to-markdown.js +212 -0
- package/.github/skills/skill-authoring/SKILL.md +228 -0
- package/.github/skills/skill-authoring/references/PATTERNS.md +384 -0
- package/.github/workflows/ci.yml +3 -3
- package/.github/workflows/deploy-pages.yml +9 -19
- package/.github/workflows/publish.yml +5 -2
- package/.github/workflows/update-docs.yml +1 -1
- package/AGENTS.md +140 -286
- package/CONTRIBUTING.md +10 -22
- package/README.md +48 -16
- package/ai-instructions/{github-copilot/copilot-instructions.md → AGENTS.md} +99 -127
- package/ai-instructions/skills/sfcc-caching/SKILL.md +89 -0
- package/{dist/docs/best-practices/cartridge_creation.md → ai-instructions/skills/sfcc-cartridge-development/SKILL.md} +31 -7
- package/ai-instructions/skills/sfcc-forms-development/SKILL.md +261 -0
- package/ai-instructions/skills/sfcc-forms-development/references/ARCHITECTURE-SGJC-SFRA.md +143 -0
- package/ai-instructions/skills/sfcc-forms-development/references/FORM-XML-CHEATSHEET.md +127 -0
- package/ai-instructions/skills/sfcc-fraud-prevention/SKILL.md +95 -0
- package/ai-instructions/skills/sfcc-hooks-registration/SKILL.md +39 -0
- package/ai-instructions/skills/sfcc-isml-development/SKILL.md +370 -0
- package/ai-instructions/skills/sfcc-isml-development/references/REMOTE-INCLUDES.md +116 -0
- package/ai-instructions/skills/sfcc-isml-development/references/SFRA-LAYOUTS.md +50 -0
- package/ai-instructions/skills/sfcc-isml-development/references/SFRA-PAGES-CART-ACCOUNT-AUTH.md +45 -0
- package/ai-instructions/skills/sfcc-isml-development/references/SFRA-PAGES-CATALOG.md +85 -0
- package/ai-instructions/skills/sfcc-isml-development/references/SFRA-STRUCTURE-COMPONENTS.md +63 -0
- package/ai-instructions/skills/sfcc-isml-development/references/UTILITIES-EXPRESSIONS.md +159 -0
- package/ai-instructions/skills/sfcc-isml-development/references/sfra-base-templates-architecture.md +13 -0
- package/ai-instructions/skills/sfcc-job-development/SKILL.md +334 -0
- package/ai-instructions/skills/sfcc-job-development/references/CHUNK-ORIENTED.md +393 -0
- package/ai-instructions/skills/sfcc-job-development/references/STEPTYPES-JSON.md +271 -0
- package/ai-instructions/skills/sfcc-job-development/references/TASK-ORIENTED.md +257 -0
- package/ai-instructions/skills/sfcc-localization/SKILL.md +92 -0
- package/ai-instructions/skills/sfcc-localization/references/CONTROLLERS.md +63 -0
- package/ai-instructions/skills/sfcc-localization/references/FORMATTING.md +29 -0
- package/ai-instructions/skills/sfcc-localization/references/FORMS-LOCALIZATION.md +33 -0
- package/ai-instructions/skills/sfcc-localization/references/JAVASCRIPT-LOCALIZATION.md +41 -0
- package/ai-instructions/skills/sfcc-localization/references/LOCALE-SWITCHING.md +35 -0
- package/ai-instructions/skills/sfcc-localization/references/PATTERNS.md +740 -0
- package/ai-instructions/skills/sfcc-localization/references/PROPERTIES-ENCODING.md +25 -0
- package/ai-instructions/skills/sfcc-localization/references/RESOURCE-BUNDLES.md +67 -0
- package/ai-instructions/skills/sfcc-localization/references/STATIC-FILES.md +23 -0
- package/ai-instructions/skills/sfcc-localization/references/TESTING.md +21 -0
- package/{docs/best-practices/localserviceregistry.md → ai-instructions/skills/sfcc-localserviceregistry/SKILL.md} +65 -31
- package/ai-instructions/skills/sfcc-logging/SKILL.md +352 -0
- package/ai-instructions/skills/sfcc-logging/references/LOG-FILES.md +282 -0
- package/{docs/best-practices/ocapi_hooks.md → ai-instructions/skills/sfcc-ocapi-hooks/SKILL.md} +51 -16
- package/ai-instructions/skills/sfcc-ocapi-scapi-slas/SKILL.md +108 -0
- package/ai-instructions/skills/sfcc-page-designer/SKILL.md +353 -0
- package/ai-instructions/skills/sfcc-page-designer/references/ATTRIBUTE-TYPES.md +436 -0
- package/ai-instructions/skills/sfcc-page-designer/references/META-DEFINITIONS.md +322 -0
- package/{dist/docs/best-practices/performance.md → ai-instructions/skills/sfcc-performance/SKILL.md} +35 -3
- package/ai-instructions/skills/sfcc-platform-limits/SKILL.md +89 -0
- package/ai-instructions/skills/sfcc-scapi-custom-endpoints/SKILL.md +237 -0
- package/ai-instructions/skills/sfcc-scapi-custom-endpoints/references/AUTHENTICATION.md +214 -0
- package/ai-instructions/skills/sfcc-scapi-custom-endpoints/references/URL-MAPPING.md +253 -0
- package/{docs/best-practices/scapi_hooks.md → ai-instructions/skills/sfcc-scapi-hooks/SKILL.md} +44 -17
- package/ai-instructions/skills/sfcc-script-evaluation/SKILL.md +380 -0
- package/{docs/best-practices/security.md → ai-instructions/skills/sfcc-security/SKILL.md} +12 -3
- package/ai-instructions/skills/sfcc-sfra-client-side-js/SKILL.md +270 -0
- package/ai-instructions/skills/sfcc-sfra-client-side-js/references/AJAX-CSRF-VALIDATION.md +285 -0
- package/ai-instructions/skills/sfcc-sfra-client-side-js/references/BASE-MODULE-INDEX.md +206 -0
- package/ai-instructions/skills/sfcc-sfra-client-side-js/references/EXTENSION-PATTERNS.md +165 -0
- package/ai-instructions/skills/sfcc-sfra-client-side-js/references/PLUGIN-PATTERNS.md +185 -0
- package/ai-instructions/skills/sfcc-sfra-controllers/SKILL.md +347 -0
- package/ai-instructions/skills/sfcc-sfra-controllers/references/MIDDLEWARE-REFERENCE.md +257 -0
- package/ai-instructions/skills/sfcc-sfra-controllers/references/REMOTE-INCLUDES.md +193 -0
- package/{dist/docs/best-practices/sfra_controllers.md → ai-instructions/skills/sfcc-sfra-controllers/references/standard-sfra-controllers.md} +0 -670
- package/ai-instructions/skills/sfcc-sfra-models/SKILL.md +322 -0
- package/ai-instructions/skills/sfcc-sfra-models/references/MODEL-PATTERNS.md +530 -0
- package/ai-instructions/skills/sfcc-sfra-models/references/MODEL-STRUCTURE.md +234 -0
- package/ai-instructions/skills/sfcc-sfra-models/references/TESTING-SECURITY.md +417 -0
- package/{dist/docs/best-practices/sfra_scss.md → ai-instructions/skills/sfcc-sfra-scss/SKILL.md} +5 -0
- package/ai-instructions/skills/sfcc-webdav-workflows/SKILL.md +111 -0
- package/dist/ai-instructions/AGENTS.md +628 -0
- package/dist/ai-instructions/skills/sfcc-caching/SKILL.md +89 -0
- package/{docs/best-practices/cartridge_creation.md → dist/ai-instructions/skills/sfcc-cartridge-development/SKILL.md} +31 -7
- package/dist/ai-instructions/skills/sfcc-forms-development/SKILL.md +261 -0
- package/dist/ai-instructions/skills/sfcc-forms-development/references/ARCHITECTURE-SGJC-SFRA.md +143 -0
- package/dist/ai-instructions/skills/sfcc-forms-development/references/FORM-XML-CHEATSHEET.md +127 -0
- package/dist/ai-instructions/skills/sfcc-fraud-prevention/SKILL.md +95 -0
- package/dist/ai-instructions/skills/sfcc-hooks-registration/SKILL.md +39 -0
- package/dist/ai-instructions/skills/sfcc-isml-development/SKILL.md +370 -0
- package/dist/ai-instructions/skills/sfcc-isml-development/references/REMOTE-INCLUDES.md +116 -0
- package/dist/ai-instructions/skills/sfcc-isml-development/references/SFRA-LAYOUTS.md +50 -0
- package/dist/ai-instructions/skills/sfcc-isml-development/references/SFRA-PAGES-CART-ACCOUNT-AUTH.md +45 -0
- package/dist/ai-instructions/skills/sfcc-isml-development/references/SFRA-PAGES-CATALOG.md +85 -0
- package/dist/ai-instructions/skills/sfcc-isml-development/references/SFRA-STRUCTURE-COMPONENTS.md +63 -0
- package/dist/ai-instructions/skills/sfcc-isml-development/references/UTILITIES-EXPRESSIONS.md +159 -0
- package/dist/ai-instructions/skills/sfcc-isml-development/references/sfra-base-templates-architecture.md +13 -0
- package/dist/ai-instructions/skills/sfcc-job-development/SKILL.md +334 -0
- package/dist/ai-instructions/skills/sfcc-job-development/references/CHUNK-ORIENTED.md +393 -0
- package/dist/ai-instructions/skills/sfcc-job-development/references/STEPTYPES-JSON.md +271 -0
- package/dist/ai-instructions/skills/sfcc-job-development/references/TASK-ORIENTED.md +257 -0
- package/dist/ai-instructions/skills/sfcc-localization/SKILL.md +92 -0
- package/dist/ai-instructions/skills/sfcc-localization/references/CONTROLLERS.md +63 -0
- package/dist/ai-instructions/skills/sfcc-localization/references/FORMATTING.md +29 -0
- package/dist/ai-instructions/skills/sfcc-localization/references/FORMS-LOCALIZATION.md +33 -0
- package/dist/ai-instructions/skills/sfcc-localization/references/JAVASCRIPT-LOCALIZATION.md +41 -0
- package/dist/ai-instructions/skills/sfcc-localization/references/LOCALE-SWITCHING.md +35 -0
- package/dist/ai-instructions/skills/sfcc-localization/references/PATTERNS.md +740 -0
- package/dist/ai-instructions/skills/sfcc-localization/references/PROPERTIES-ENCODING.md +25 -0
- package/dist/ai-instructions/skills/sfcc-localization/references/RESOURCE-BUNDLES.md +67 -0
- package/dist/ai-instructions/skills/sfcc-localization/references/STATIC-FILES.md +23 -0
- package/dist/ai-instructions/skills/sfcc-localization/references/TESTING.md +21 -0
- package/dist/{docs/best-practices/localserviceregistry.md → ai-instructions/skills/sfcc-localserviceregistry/SKILL.md} +65 -31
- package/dist/ai-instructions/skills/sfcc-logging/SKILL.md +352 -0
- package/dist/ai-instructions/skills/sfcc-logging/references/LOG-FILES.md +282 -0
- package/dist/{docs/best-practices/ocapi_hooks.md → ai-instructions/skills/sfcc-ocapi-hooks/SKILL.md} +51 -16
- package/dist/ai-instructions/skills/sfcc-ocapi-scapi-slas/SKILL.md +108 -0
- package/dist/ai-instructions/skills/sfcc-page-designer/SKILL.md +353 -0
- package/dist/ai-instructions/skills/sfcc-page-designer/references/ATTRIBUTE-TYPES.md +436 -0
- package/dist/ai-instructions/skills/sfcc-page-designer/references/META-DEFINITIONS.md +322 -0
- package/{docs/best-practices/performance.md → dist/ai-instructions/skills/sfcc-performance/SKILL.md} +35 -3
- package/dist/ai-instructions/skills/sfcc-platform-limits/SKILL.md +89 -0
- package/dist/ai-instructions/skills/sfcc-scapi-custom-endpoints/SKILL.md +237 -0
- package/dist/ai-instructions/skills/sfcc-scapi-custom-endpoints/references/AUTHENTICATION.md +214 -0
- package/dist/ai-instructions/skills/sfcc-scapi-custom-endpoints/references/URL-MAPPING.md +253 -0
- package/dist/{docs/best-practices/scapi_hooks.md → ai-instructions/skills/sfcc-scapi-hooks/SKILL.md} +44 -17
- package/dist/ai-instructions/skills/sfcc-script-evaluation/SKILL.md +380 -0
- package/dist/{docs/best-practices/security.md → ai-instructions/skills/sfcc-security/SKILL.md} +12 -3
- package/dist/ai-instructions/skills/sfcc-sfra-client-side-js/SKILL.md +270 -0
- package/dist/ai-instructions/skills/sfcc-sfra-client-side-js/references/AJAX-CSRF-VALIDATION.md +285 -0
- package/dist/ai-instructions/skills/sfcc-sfra-client-side-js/references/BASE-MODULE-INDEX.md +206 -0
- package/dist/ai-instructions/skills/sfcc-sfra-client-side-js/references/EXTENSION-PATTERNS.md +165 -0
- package/dist/ai-instructions/skills/sfcc-sfra-client-side-js/references/PLUGIN-PATTERNS.md +185 -0
- package/dist/ai-instructions/skills/sfcc-sfra-controllers/SKILL.md +347 -0
- package/dist/ai-instructions/skills/sfcc-sfra-controllers/references/MIDDLEWARE-REFERENCE.md +257 -0
- package/dist/ai-instructions/skills/sfcc-sfra-controllers/references/REMOTE-INCLUDES.md +193 -0
- package/{docs/best-practices/sfra_controllers.md → dist/ai-instructions/skills/sfcc-sfra-controllers/references/standard-sfra-controllers.md} +0 -670
- package/dist/ai-instructions/skills/sfcc-sfra-models/SKILL.md +322 -0
- package/dist/ai-instructions/skills/sfcc-sfra-models/references/MODEL-PATTERNS.md +530 -0
- package/dist/ai-instructions/skills/sfcc-sfra-models/references/MODEL-STRUCTURE.md +234 -0
- package/dist/ai-instructions/skills/sfcc-sfra-models/references/TESTING-SECURITY.md +417 -0
- package/{docs/best-practices/sfra_scss.md → dist/ai-instructions/skills/sfcc-sfra-scss/SKILL.md} +5 -0
- package/dist/ai-instructions/skills/sfcc-webdav-workflows/SKILL.md +111 -0
- package/dist/clients/agent-instructions-client.d.ts +66 -0
- package/dist/clients/agent-instructions-client.d.ts.map +1 -0
- package/dist/clients/agent-instructions-client.js +277 -0
- package/dist/clients/agent-instructions-client.js.map +1 -0
- package/dist/clients/base/abstract-documentation-client.d.ts +146 -0
- package/dist/clients/base/abstract-documentation-client.d.ts.map +1 -0
- package/dist/clients/base/abstract-documentation-client.js +265 -0
- package/dist/clients/base/abstract-documentation-client.js.map +1 -0
- package/dist/clients/base/oauth-token.d.ts +18 -0
- package/dist/clients/base/oauth-token.d.ts.map +1 -1
- package/dist/clients/base/oauth-token.js +45 -2
- package/dist/clients/base/oauth-token.js.map +1 -1
- package/dist/clients/cartridge/cartridge-generation-client.d.ts +59 -0
- package/dist/clients/cartridge/cartridge-generation-client.d.ts.map +1 -0
- package/dist/clients/cartridge/cartridge-generation-client.js +224 -0
- package/dist/clients/cartridge/cartridge-generation-client.js.map +1 -0
- package/dist/clients/cartridge/cartridge-structure.d.ts +17 -0
- package/dist/clients/cartridge/cartridge-structure.d.ts.map +1 -0
- package/dist/clients/cartridge/cartridge-structure.js +33 -0
- package/dist/clients/cartridge/cartridge-structure.js.map +1 -0
- package/dist/clients/cartridge/cartridge-templates.d.ts +22 -0
- package/dist/clients/cartridge/cartridge-templates.d.ts.map +1 -0
- package/dist/clients/cartridge/cartridge-templates.js +225 -0
- package/dist/clients/cartridge/cartridge-templates.js.map +1 -0
- package/dist/clients/cartridge/index.d.ts +7 -0
- package/dist/clients/cartridge/index.d.ts.map +1 -0
- package/dist/clients/cartridge/index.js +7 -0
- package/dist/clients/cartridge/index.js.map +1 -0
- package/dist/clients/docs/documentation-scanner.d.ts +5 -2
- package/dist/clients/docs/documentation-scanner.d.ts.map +1 -1
- package/dist/clients/docs/documentation-scanner.js +38 -23
- package/dist/clients/docs/documentation-scanner.js.map +1 -1
- package/dist/clients/docs-client.d.ts +13 -4
- package/dist/clients/docs-client.d.ts.map +1 -1
- package/dist/clients/docs-client.js +44 -11
- package/dist/clients/docs-client.js.map +1 -1
- package/dist/clients/isml-client.d.ts +71 -0
- package/dist/clients/isml-client.d.ts.map +1 -0
- package/dist/clients/isml-client.js +252 -0
- package/dist/clients/isml-client.js.map +1 -0
- package/dist/clients/ocapi/code-versions-client.d.ts.map +1 -1
- package/dist/clients/ocapi/code-versions-client.js +6 -1
- package/dist/clients/ocapi/code-versions-client.js.map +1 -1
- package/dist/clients/ocapi-client.d.ts +9 -101
- package/dist/clients/ocapi-client.d.ts.map +1 -1
- package/dist/clients/ocapi-client.js +11 -93
- package/dist/clients/ocapi-client.js.map +1 -1
- package/dist/clients/script-debugger/index.d.ts +5 -0
- package/dist/clients/script-debugger/index.d.ts.map +1 -0
- package/dist/clients/script-debugger/index.js +5 -0
- package/dist/clients/script-debugger/index.js.map +1 -0
- package/dist/clients/script-debugger/script-debugger-client.d.ts +147 -0
- package/dist/clients/script-debugger/script-debugger-client.d.ts.map +1 -0
- package/dist/clients/script-debugger/script-debugger-client.js +591 -0
- package/dist/clients/script-debugger/script-debugger-client.js.map +1 -0
- package/dist/clients/sfra-client.d.ts +13 -62
- package/dist/clients/sfra-client.d.ts.map +1 -1
- package/dist/clients/sfra-client.js +105 -326
- package/dist/clients/sfra-client.js.map +1 -1
- package/dist/config/configuration-factory.d.ts +1 -1
- package/dist/config/configuration-factory.d.ts.map +1 -1
- package/dist/config/configuration-factory.js +5 -1
- package/dist/config/configuration-factory.js.map +1 -1
- package/dist/config/dw-json-loader.d.ts +7 -0
- package/dist/config/dw-json-loader.d.ts.map +1 -1
- package/dist/config/dw-json-loader.js +92 -15
- package/dist/config/dw-json-loader.js.map +1 -1
- package/dist/config/workspace-roots.d.ts +143 -0
- package/dist/config/workspace-roots.d.ts.map +1 -0
- package/dist/config/workspace-roots.js +448 -0
- package/dist/config/workspace-roots.js.map +1 -0
- package/dist/constants/index.d.ts +1 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +3 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/core/handlers/abstract-client-handler.d.ts +52 -0
- package/dist/core/handlers/abstract-client-handler.d.ts.map +1 -0
- package/dist/core/handlers/abstract-client-handler.js +51 -0
- package/dist/core/handlers/abstract-client-handler.js.map +1 -0
- package/dist/core/handlers/agent-instructions-handler.d.ts +17 -0
- package/dist/core/handlers/agent-instructions-handler.d.ts.map +1 -0
- package/dist/core/handlers/agent-instructions-handler.js +38 -0
- package/dist/core/handlers/agent-instructions-handler.js.map +1 -0
- package/dist/core/handlers/base-handler.d.ts +3 -68
- package/dist/core/handlers/base-handler.d.ts.map +1 -1
- package/dist/core/handlers/base-handler.js +11 -84
- package/dist/core/handlers/base-handler.js.map +1 -1
- package/dist/core/handlers/cartridge-handler.d.ts +10 -11
- package/dist/core/handlers/cartridge-handler.d.ts.map +1 -1
- package/dist/core/handlers/cartridge-handler.js +10 -28
- package/dist/core/handlers/cartridge-handler.js.map +1 -1
- package/dist/core/handlers/client-factory.d.ts +12 -2
- package/dist/core/handlers/client-factory.d.ts.map +1 -1
- package/dist/core/handlers/client-factory.js +28 -1
- package/dist/core/handlers/client-factory.js.map +1 -1
- package/dist/core/handlers/code-version-handler.d.ts +11 -11
- package/dist/core/handlers/code-version-handler.d.ts.map +1 -1
- package/dist/core/handlers/code-version-handler.js +13 -27
- package/dist/core/handlers/code-version-handler.js.map +1 -1
- package/dist/core/handlers/docs-handler.d.ts +6 -12
- package/dist/core/handlers/docs-handler.d.ts.map +1 -1
- package/dist/core/handlers/docs-handler.js +11 -36
- package/dist/core/handlers/docs-handler.js.map +1 -1
- package/dist/core/handlers/isml-handler.d.ts +11 -0
- package/dist/core/handlers/isml-handler.d.ts.map +1 -0
- package/dist/core/handlers/isml-handler.js +18 -0
- package/dist/core/handlers/isml-handler.js.map +1 -0
- package/dist/core/handlers/job-log-handler.d.ts +8 -7
- package/dist/core/handlers/job-log-handler.d.ts.map +1 -1
- package/dist/core/handlers/job-log-handler.js +14 -5
- package/dist/core/handlers/job-log-handler.js.map +1 -1
- package/dist/core/handlers/log-handler.d.ts +8 -7
- package/dist/core/handlers/log-handler.d.ts.map +1 -1
- package/dist/core/handlers/log-handler.js +14 -5
- package/dist/core/handlers/log-handler.js.map +1 -1
- package/dist/core/handlers/script-debugger-handler.d.ts +18 -0
- package/dist/core/handlers/script-debugger-handler.d.ts.map +1 -0
- package/dist/core/handlers/script-debugger-handler.js +31 -0
- package/dist/core/handlers/script-debugger-handler.js.map +1 -0
- package/dist/core/handlers/sfra-handler.d.ts +6 -12
- package/dist/core/handlers/sfra-handler.d.ts.map +1 -1
- package/dist/core/handlers/sfra-handler.js +11 -36
- package/dist/core/handlers/sfra-handler.js.map +1 -1
- package/dist/core/handlers/simple-client-handler.d.ts +41 -0
- package/dist/core/handlers/simple-client-handler.d.ts.map +1 -0
- package/dist/core/handlers/simple-client-handler.js +49 -0
- package/dist/core/handlers/simple-client-handler.js.map +1 -0
- package/dist/core/handlers/system-object-handler.d.ts +11 -11
- package/dist/core/handlers/system-object-handler.d.ts.map +1 -1
- package/dist/core/handlers/system-object-handler.js +13 -27
- package/dist/core/handlers/system-object-handler.js.map +1 -1
- package/dist/core/handlers/validation-helpers.d.ts +22 -24
- package/dist/core/handlers/validation-helpers.d.ts.map +1 -1
- package/dist/core/handlers/validation-helpers.js +89 -39
- package/dist/core/handlers/validation-helpers.js.map +1 -1
- package/dist/core/instruction-advisor.d.ts +28 -0
- package/dist/core/instruction-advisor.d.ts.map +1 -0
- package/dist/core/instruction-advisor.js +114 -0
- package/dist/core/instruction-advisor.js.map +1 -0
- package/dist/core/server.d.ts +25 -0
- package/dist/core/server.d.ts.map +1 -1
- package/dist/core/server.js +151 -11
- package/dist/core/server.js.map +1 -1
- package/dist/core/tool-definitions.d.ts +6 -854
- package/dist/core/tool-definitions.d.ts.map +1 -1
- package/dist/core/tool-definitions.js +8 -1064
- package/dist/core/tool-definitions.js.map +1 -1
- package/dist/core/tool-schemas/agent-instruction-tools.d.ts +77 -0
- package/dist/core/tool-schemas/agent-instruction-tools.d.ts.map +1 -0
- package/dist/core/tool-schemas/agent-instruction-tools.js +72 -0
- package/dist/core/tool-schemas/agent-instruction-tools.js.map +1 -0
- package/dist/core/tool-schemas/cartridge-tools.d.ts +27 -0
- package/dist/core/tool-schemas/cartridge-tools.d.ts.map +1 -0
- package/dist/core/tool-schemas/cartridge-tools.js +29 -0
- package/dist/core/tool-schemas/cartridge-tools.js.map +1 -0
- package/dist/core/tool-schemas/code-version-tools.d.ts +28 -0
- package/dist/core/tool-schemas/code-version-tools.d.ts.map +1 -0
- package/dist/core/tool-schemas/code-version-tools.js +28 -0
- package/dist/core/tool-schemas/code-version-tools.js.map +1 -0
- package/dist/core/tool-schemas/documentation-tools.d.ts +139 -0
- package/dist/core/tool-schemas/documentation-tools.d.ts.map +1 -0
- package/dist/core/tool-schemas/documentation-tools.js +104 -0
- package/dist/core/tool-schemas/documentation-tools.js.map +1 -0
- package/dist/core/tool-schemas/index.d.ts +17 -0
- package/dist/core/tool-schemas/index.d.ts.map +1 -0
- package/dist/core/tool-schemas/index.js +19 -0
- package/dist/core/tool-schemas/index.js.map +1 -0
- package/dist/core/tool-schemas/isml-tools.d.ts +98 -0
- package/dist/core/tool-schemas/isml-tools.d.ts.map +1 -0
- package/dist/core/tool-schemas/isml-tools.js +89 -0
- package/dist/core/tool-schemas/isml-tools.js.map +1 -0
- package/dist/core/tool-schemas/log-tools.d.ts +221 -0
- package/dist/core/tool-schemas/log-tools.d.ts.map +1 -0
- package/dist/core/tool-schemas/log-tools.js +180 -0
- package/dist/core/tool-schemas/log-tools.js.map +1 -0
- package/dist/core/tool-schemas/script-debugger-tools.d.ts +44 -0
- package/dist/core/tool-schemas/script-debugger-tools.d.ts.map +1 -0
- package/dist/core/tool-schemas/script-debugger-tools.js +83 -0
- package/dist/core/tool-schemas/script-debugger-tools.js.map +1 -0
- package/dist/core/tool-schemas/sfra-tools.d.ts +63 -0
- package/dist/core/tool-schemas/sfra-tools.d.ts.map +1 -0
- package/dist/core/tool-schemas/sfra-tools.js +65 -0
- package/dist/core/tool-schemas/sfra-tools.js.map +1 -0
- package/dist/core/tool-schemas/shared-schemas.d.ts +350 -0
- package/dist/core/tool-schemas/shared-schemas.d.ts.map +1 -0
- package/dist/core/tool-schemas/shared-schemas.js +153 -0
- package/dist/core/tool-schemas/shared-schemas.js.map +1 -0
- package/dist/core/tool-schemas/system-object-tools.d.ts +511 -0
- package/dist/core/tool-schemas/system-object-tools.d.ts.map +1 -0
- package/dist/core/tool-schemas/system-object-tools.js +126 -0
- package/dist/core/tool-schemas/system-object-tools.js.map +1 -0
- package/dist/docs/dw_net/HTTPClient.md +46 -2
- package/dist/docs/dw_net/HTTPClientLoggingConfig.md +296 -0
- package/dist/docs/dw_order/Basket.md +7 -7
- package/dist/docs/dw_order/BasketMgr.md +22 -6
- package/dist/docs/dw_order.hooks/BasketMergeHooks.md +42 -0
- package/dist/docs/dw_svc/ServiceCallback.md +2 -2
- package/dist/docs/isml/isactivedatacontext.md +382 -0
- package/dist/docs/isml/isactivedatahead.md +566 -0
- package/dist/docs/isml/isanalyticsoff.md +537 -0
- package/dist/docs/isml/isapplepay.md +667 -0
- package/dist/docs/isml/isbreak.md +687 -0
- package/dist/docs/isml/isbuynow.md +682 -0
- package/dist/docs/isml/iscache.md +802 -0
- package/dist/docs/isml/iscomment.md +794 -0
- package/dist/docs/isml/iscomponent.md +797 -0
- package/dist/docs/isml/iscontent.md +594 -0
- package/dist/docs/isml/iscontinue.md +563 -0
- package/dist/docs/isml/iscookie.md +798 -0
- package/dist/docs/isml/isdecorate.md +818 -0
- package/dist/docs/isml/isif.md +737 -0
- package/dist/docs/isml/isinclude.md +874 -0
- package/dist/docs/isml/isloop.md +377 -0
- package/dist/docs/isml/ismodule.md +844 -0
- package/dist/docs/isml/isnext.md +672 -0
- package/dist/docs/isml/isobject.md +760 -0
- package/dist/docs/isml/ispayment.md +577 -0
- package/dist/docs/isml/ispaymentmessages.md +664 -0
- package/dist/docs/isml/isprint.md +875 -0
- package/dist/docs/isml/isredirect.md +716 -0
- package/dist/docs/isml/isremove.md +725 -0
- package/dist/docs/isml/isreplace.md +783 -0
- package/dist/docs/isml/isscript.md +859 -0
- package/dist/docs/isml/isselect.md +908 -0
- package/dist/docs/isml/isset.md +585 -0
- package/dist/docs/isml/isslot.md +824 -0
- package/dist/docs/isml/isstatus.md +711 -0
- package/dist/main.d.ts +16 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +60 -28
- package/dist/main.js.map +1 -1
- package/dist/services/index.d.ts +4 -2
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +2 -2
- package/dist/services/index.js.map +1 -1
- package/dist/tool-configs/agent-instructions-tool-config.d.ts +6 -0
- package/dist/tool-configs/agent-instructions-tool-config.d.ts.map +1 -0
- package/dist/tool-configs/agent-instructions-tool-config.js +74 -0
- package/dist/tool-configs/agent-instructions-tool-config.js.map +1 -0
- package/dist/tool-configs/code-version-tool-config.d.ts.map +1 -1
- package/dist/tool-configs/code-version-tool-config.js +0 -5
- package/dist/tool-configs/code-version-tool-config.js.map +1 -1
- package/dist/tool-configs/docs-tool-config.d.ts.map +1 -1
- package/dist/tool-configs/docs-tool-config.js +0 -7
- package/dist/tool-configs/docs-tool-config.js.map +1 -1
- package/dist/tool-configs/isml-tool-config.d.ts +11 -0
- package/dist/tool-configs/isml-tool-config.d.ts.map +1 -0
- package/dist/tool-configs/isml-tool-config.js +77 -0
- package/dist/tool-configs/isml-tool-config.js.map +1 -0
- package/dist/tool-configs/job-log-tool-config.d.ts +1 -2
- package/dist/tool-configs/job-log-tool-config.d.ts.map +1 -1
- package/dist/tool-configs/job-log-tool-config.js +11 -15
- package/dist/tool-configs/job-log-tool-config.js.map +1 -1
- package/dist/tool-configs/log-tool-config.d.ts +1 -2
- package/dist/tool-configs/log-tool-config.d.ts.map +1 -1
- package/dist/tool-configs/log-tool-config.js +35 -51
- package/dist/tool-configs/log-tool-config.js.map +1 -1
- package/dist/tool-configs/script-debugger-tool-config.d.ts +11 -0
- package/dist/tool-configs/script-debugger-tool-config.d.ts.map +1 -0
- package/dist/tool-configs/script-debugger-tool-config.js +35 -0
- package/dist/tool-configs/script-debugger-tool-config.js.map +1 -0
- package/dist/tool-configs/sfra-tool-config.d.ts.map +1 -1
- package/dist/tool-configs/sfra-tool-config.js +0 -11
- package/dist/tool-configs/sfra-tool-config.js.map +1 -1
- package/dist/tool-configs/system-object-tool-config.d.ts.map +1 -1
- package/dist/tool-configs/system-object-tool-config.js +0 -5
- package/dist/tool-configs/system-object-tool-config.js.map +1 -1
- package/dist/types/types.d.ts +2 -0
- package/dist/types/types.d.ts.map +1 -1
- package/dist/utils/cache.d.ts +12 -10
- package/dist/utils/cache.d.ts.map +1 -1
- package/dist/utils/cache.js +47 -47
- package/dist/utils/cache.js.map +1 -1
- package/dist/utils/category-utils.d.ts +31 -0
- package/dist/utils/category-utils.d.ts.map +1 -0
- package/dist/utils/category-utils.js +45 -0
- package/dist/utils/category-utils.js.map +1 -0
- package/dist/utils/log-tool-constants.d.ts +16 -13
- package/dist/utils/log-tool-constants.d.ts.map +1 -1
- package/dist/utils/log-tool-constants.js +10 -11
- package/dist/utils/log-tool-constants.js.map +1 -1
- package/dist/utils/logger.d.ts +11 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +35 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/markdown-utils.d.ts +60 -0
- package/dist/utils/markdown-utils.d.ts.map +1 -0
- package/dist/utils/markdown-utils.js +206 -0
- package/dist/utils/markdown-utils.js.map +1 -0
- package/dist/utils/path-resolver.d.ts +12 -4
- package/dist/utils/path-resolver.d.ts.map +1 -1
- package/dist/utils/path-resolver.js +22 -8
- package/dist/utils/path-resolver.js.map +1 -1
- package/dist/utils/path-validation.d.ts +40 -0
- package/dist/utils/path-validation.d.ts.map +1 -0
- package/dist/utils/path-validation.js +84 -0
- package/dist/utils/path-validation.js.map +1 -0
- package/docs/dw_net/HTTPClient.md +46 -2
- package/docs/dw_net/HTTPClientLoggingConfig.md +296 -0
- package/docs/dw_order/Basket.md +7 -7
- package/docs/dw_order/BasketMgr.md +22 -6
- package/docs/dw_order.hooks/BasketMergeHooks.md +42 -0
- package/docs/dw_svc/ServiceCallback.md +2 -2
- package/docs/isml/isactivedatacontext.md +382 -0
- package/docs/isml/isactivedatahead.md +566 -0
- package/docs/isml/isanalyticsoff.md +537 -0
- package/docs/isml/isapplepay.md +667 -0
- package/docs/isml/isbreak.md +687 -0
- package/docs/isml/isbuynow.md +682 -0
- package/docs/isml/iscache.md +802 -0
- package/docs/isml/iscomment.md +794 -0
- package/docs/isml/iscomponent.md +797 -0
- package/docs/isml/iscontent.md +594 -0
- package/docs/isml/iscontinue.md +563 -0
- package/docs/isml/iscookie.md +798 -0
- package/docs/isml/isdecorate.md +818 -0
- package/docs/isml/isif.md +737 -0
- package/docs/isml/isinclude.md +874 -0
- package/docs/isml/isloop.md +377 -0
- package/docs/isml/ismodule.md +844 -0
- package/docs/isml/isnext.md +672 -0
- package/docs/isml/isobject.md +760 -0
- package/docs/isml/ispayment.md +577 -0
- package/docs/isml/ispaymentmessages.md +664 -0
- package/docs/isml/isprint.md +875 -0
- package/docs/isml/isredirect.md +716 -0
- package/docs/isml/isremove.md +725 -0
- package/docs/isml/isreplace.md +783 -0
- package/docs/isml/isscript.md +859 -0
- package/docs/isml/isselect.md +908 -0
- package/docs/isml/isset.md +585 -0
- package/docs/isml/isslot.md +824 -0
- package/docs/isml/isstatus.md +711 -0
- package/docs-site-v2/.vitepress/config.mts +190 -0
- package/docs-site-v2/.vitepress/theme/components/AssistantTabs.vue +96 -0
- package/docs-site-v2/.vitepress/theme/components/Callout.vue +10 -0
- package/docs-site-v2/.vitepress/theme/components/Collapsible.vue +14 -0
- package/docs-site-v2/.vitepress/theme/components/DwJsonBuilder.vue +82 -0
- package/docs-site-v2/.vitepress/theme/components/HomeSections.vue +552 -0
- package/docs-site-v2/.vitepress/theme/components/InstructionFilesTabs.vue +87 -0
- package/docs-site-v2/.vitepress/theme/components/ModeTabs.vue +70 -0
- package/docs-site-v2/.vitepress/theme/components/NewcomerCTA.vue +14 -0
- package/docs-site-v2/.vitepress/theme/components/QuickStartCards.vue +20 -0
- package/docs-site-v2/.vitepress/theme/components/QuickStartHero.vue +20 -0
- package/docs-site-v2/.vitepress/theme/components/SkillsList.vue +48 -0
- package/docs-site-v2/.vitepress/theme/components/ToolExplorer.vue +85 -0
- package/docs-site-v2/.vitepress/theme/custom.css +1373 -0
- package/docs-site-v2/.vitepress/theme/index.ts +39 -0
- package/docs-site-v2/data/skills.ts +147 -0
- package/docs-site-v2/data/tools.ts +490 -0
- package/docs-site-v2/development/index.md +151 -0
- package/docs-site-v2/examples/index.md +333 -0
- package/docs-site-v2/features/index.md +144 -0
- package/docs-site-v2/guide/ai-interfaces.md +58 -0
- package/docs-site-v2/guide/configuration.md +208 -0
- package/docs-site-v2/guide/index.md +50 -0
- package/docs-site-v2/index.md +32 -0
- package/docs-site-v2/package-lock.json +2511 -0
- package/docs-site-v2/package.json +15 -0
- package/docs-site-v2/public/android-chrome-192x192.png +0 -0
- package/docs-site-v2/public/android-chrome-512x512.png +0 -0
- package/docs-site-v2/public/apple-touch-icon.png +0 -0
- package/docs-site-v2/public/favicon-16x16.png +0 -0
- package/docs-site-v2/public/favicon-32x32.png +0 -0
- package/docs-site-v2/public/favicon.ico +0 -0
- package/docs-site-v2/public/index.css +4174 -0
- package/docs-site-v2/public/llms.txt +44 -0
- package/docs-site-v2/public/logo-dark.svg +8 -0
- package/docs-site-v2/public/logo.svg +8 -0
- package/{docs-site → docs-site-v2}/public/robots.txt +1 -6
- package/{docs-site → docs-site-v2}/public/site.webmanifest +1 -1
- package/{docs-site → docs-site-v2}/public/sitemap.xml +33 -12
- package/docs-site-v2/script-debugger/index.md +105 -0
- package/docs-site-v2/scripts/generate-llms.js +71 -0
- package/docs-site-v2/scripts/generate-sitemap.js +97 -0
- package/docs-site-v2/security/index.md +115 -0
- package/docs-site-v2/skills/index.md +40 -0
- package/docs-site-v2/tools/index.md +36 -0
- package/docs-site-v2/troubleshooting/index.md +204 -0
- package/eslint.config.js +3 -1
- package/memories/repo/docs-site-v2-build.json +11 -0
- package/package.json +18 -14
- package/scripts/validate-server-json.js +68 -0
- package/server.json +4 -6
- package/src/clients/agent-instructions-client.ts +370 -0
- package/src/clients/base/abstract-documentation-client.ts +405 -0
- package/src/clients/base/oauth-token.ts +52 -2
- package/src/clients/cartridge/cartridge-generation-client.ts +302 -0
- package/src/clients/cartridge/cartridge-structure.ts +37 -0
- package/src/clients/cartridge/cartridge-templates.ts +246 -0
- package/src/clients/cartridge/index.ts +6 -0
- package/src/clients/docs/documentation-scanner.ts +44 -28
- package/src/clients/docs-client.ts +54 -14
- package/src/clients/isml-client.ts +353 -0
- package/src/clients/ocapi/code-versions-client.ts +7 -1
- package/src/clients/ocapi-client.ts +11 -166
- package/src/clients/script-debugger/index.ts +5 -0
- package/src/clients/script-debugger/script-debugger-client.ts +754 -0
- package/src/clients/sfra-client.ts +134 -397
- package/src/config/configuration-factory.ts +6 -1
- package/src/config/dw-json-loader.ts +96 -15
- package/src/config/workspace-roots.ts +540 -0
- package/src/constants/index.ts +1 -0
- package/src/core/handlers/abstract-client-handler.ts +85 -0
- package/src/core/handlers/agent-instructions-handler.ts +48 -0
- package/src/core/handlers/base-handler.ts +17 -127
- package/src/core/handlers/cartridge-handler.ts +13 -33
- package/src/core/handlers/client-factory.ts +32 -2
- package/src/core/handlers/code-version-handler.ts +17 -32
- package/src/core/handlers/docs-handler.ts +12 -44
- package/src/core/handlers/isml-handler.ts +19 -0
- package/src/core/handlers/job-log-handler.ts +19 -8
- package/src/core/handlers/log-handler.ts +19 -8
- package/src/core/handlers/script-debugger-handler.ts +46 -0
- package/src/core/handlers/sfra-handler.ts +12 -44
- package/src/core/handlers/simple-client-handler.ts +78 -0
- package/src/core/handlers/system-object-handler.ts +17 -32
- package/src/core/handlers/validation-helpers.ts +87 -47
- package/src/core/instruction-advisor.ts +122 -0
- package/src/core/server.ts +178 -13
- package/src/core/tool-definitions.ts +25 -1071
- package/src/core/tool-schemas/agent-instruction-tools.ts +72 -0
- package/src/core/tool-schemas/cartridge-tools.ts +29 -0
- package/src/core/tool-schemas/code-version-tools.ts +28 -0
- package/src/core/tool-schemas/documentation-tools.ts +104 -0
- package/src/core/tool-schemas/index.ts +27 -0
- package/src/core/tool-schemas/isml-tools.ts +89 -0
- package/src/core/tool-schemas/log-tools.ts +196 -0
- package/src/core/tool-schemas/script-debugger-tools.ts +83 -0
- package/src/core/tool-schemas/sfra-tools.ts +65 -0
- package/src/core/tool-schemas/shared-schemas.ts +158 -0
- package/src/core/tool-schemas/system-object-tools.ts +127 -0
- package/src/main.ts +63 -30
- package/src/services/index.ts +4 -10
- package/src/tool-configs/agent-instructions-tool-config.ts +83 -0
- package/src/tool-configs/cartridge-tool-config.ts +1 -1
- package/src/tool-configs/code-version-tool-config.ts +0 -5
- package/src/tool-configs/docs-tool-config.ts +0 -7
- package/src/tool-configs/isml-tool-config.ts +87 -0
- package/src/tool-configs/job-log-tool-config.ts +18 -17
- package/src/tool-configs/log-tool-config.ts +49 -64
- package/src/tool-configs/script-debugger-tool-config.ts +69 -0
- package/src/tool-configs/sfra-tool-config.ts +0 -11
- package/src/tool-configs/system-object-tool-config.ts +0 -5
- package/src/types/types.ts +2 -0
- package/src/utils/cache.ts +49 -54
- package/src/utils/category-utils.ts +70 -0
- package/src/utils/log-tool-constants.ts +25 -17
- package/src/utils/logger.ts +38 -1
- package/src/utils/markdown-utils.ts +280 -0
- package/src/utils/path-resolver.ts +25 -9
- package/src/utils/path-validation.ts +113 -0
- package/tests/base-handler.test.ts +1 -1
- package/tests/cache.test.ts +2 -2
- package/tests/cartridge-handler.test.ts +4 -4
- package/tests/client-factory.test.ts +1 -1
- package/tests/code-version-handler.test.ts +3 -3
- package/tests/docs-handler.test.ts +2 -2
- package/tests/documentation-scanner.test.ts +4 -4
- package/tests/isml-client.test.ts +463 -0
- package/tests/isml-handler.test.ts +375 -0
- package/tests/job-log-handler.test.ts +1 -1
- package/tests/log-handler.test.ts +8 -8
- package/tests/log-validation.test.ts +149 -0
- package/tests/mcp/README.md +22 -18
- package/tests/mcp/node/activate-code-version-advanced.full-mode.programmatic.test.js +30 -12
- package/tests/mcp/node/evaluate-script.full-mode.programmatic.test.js +387 -0
- package/tests/mcp/node/generate-cartridge-structure.docs-only.programmatic.test.js +14 -8
- package/tests/mcp/node/get-isml-categories.programmatic.test.js +278 -0
- package/tests/mcp/node/get-isml-element.programmatic.test.js +278 -0
- package/tests/mcp/node/get-isml-elements-by-category.programmatic.test.js +363 -0
- package/tests/mcp/node/get-sfra-categories.docs-only.programmatic.test.js +24 -24
- package/tests/mcp/node/get-sfra-document.programmatic.test.js +4 -2
- package/tests/mcp/node/list-isml-elements.programmatic.test.js +311 -0
- package/tests/mcp/node/list-sfcc-classes.docs-only.programmatic.test.js +2 -33
- package/tests/mcp/node/search-isml-elements.programmatic.test.js +325 -0
- package/tests/mcp/node/search-sfcc-classes.docs-only.programmatic.test.js +5 -9
- package/tests/mcp/node/search-sfcc-methods.docs-only.programmatic.test.js +7 -9
- package/tests/mcp/node/tools.docs-only.programmatic.test.js +42 -65
- package/tests/mcp/node/tools.full-mode.programmatic.test.js +7 -8
- package/tests/mcp/yaml/activate-code-version.full-mode.test.mcp.yml +2 -2
- package/tests/mcp/yaml/evaluate-script.full-mode.test.mcp.yml +281 -0
- package/tests/mcp/yaml/get-isml-categories.docs-only.test.mcp.yml +330 -0
- package/tests/mcp/yaml/get-isml-element.docs-only.test.mcp.yml +294 -0
- package/tests/mcp/yaml/get-isml-elements-by-category.docs-only.test.mcp.yml +334 -0
- package/tests/mcp/yaml/get-sfcc-class-info.docs-only.test.mcp.yml +2 -2
- package/tests/mcp/yaml/get-sfra-categories.docs-only.test.mcp.yml +13 -13
- package/tests/mcp/yaml/get-sfra-categories.full-mode.test.mcp.yml +13 -13
- package/tests/mcp/yaml/get-system-object-definitions.docs-only.test.mcp.yml +1 -16
- package/tests/mcp/yaml/list-isml-elements.docs-only.test.mcp.yml +212 -0
- package/tests/mcp/yaml/search-isml-elements.docs-only.test.mcp.yml +312 -0
- package/tests/mcp/yaml/search-sfcc-classes.docs-only.test.mcp.yml +1 -1
- package/tests/mcp/yaml/search-sfcc-classes.full-mode.test.mcp.yml +1 -1
- package/tests/mcp/yaml/search-site-preferences.docs-only.test.mcp.yml +1 -1
- package/tests/mcp/yaml/tools.docs-only.test.mcp.yml +3 -57
- package/tests/mcp/yaml/tools.full-mode.test.mcp.yml +3 -3
- package/tests/oauth-token.test.ts +107 -12
- package/tests/ocapi-client.test.ts +53 -106
- package/tests/script-debugger-client.test.ts +430 -0
- package/tests/servers/sfcc-mock-server/src/app.js +15 -0
- package/tests/servers/sfcc-mock-server/src/routes/cartridge-webdav.js +258 -0
- package/tests/servers/sfcc-mock-server/src/routes/ocapi/debugger-handler.js +396 -0
- package/tests/servers/sfcc-mock-server/src/routes/ocapi.js +5 -0
- package/tests/servers/sfcc-mock-server/src/routes/storefront.js +86 -0
- package/tests/servers/sfcc-mock-server/src/routes/webdav.js +6 -4
- package/tests/validation-helpers.test.ts +0 -31
- package/tests/workspace-roots.test.ts +227 -0
- package/ai-instructions/claude-desktop/claude_custom_instructions.md +0 -321
- package/ai-instructions/cursor/.cursor/rules/debugging-workflows.mdc +0 -171
- package/ai-instructions/cursor/.cursor/rules/hooks-development.mdc +0 -168
- package/ai-instructions/cursor/.cursor/rules/isml-templates.mdc +0 -209
- package/ai-instructions/cursor/.cursor/rules/job-framework.mdc +0 -379
- package/ai-instructions/cursor/.cursor/rules/performance-optimization.mdc +0 -215
- package/ai-instructions/cursor/.cursor/rules/scapi-endpoints.mdc +0 -98
- package/ai-instructions/cursor/.cursor/rules/security-patterns.mdc +0 -375
- package/ai-instructions/cursor/.cursor/rules/sfcc-development.mdc +0 -144
- package/ai-instructions/cursor/.cursor/rules/sfra-controllers.mdc +0 -376
- package/ai-instructions/cursor/.cursor/rules/sfra-models.mdc +0 -412
- package/ai-instructions/cursor/.cursor/rules/system-objects.mdc +0 -383
- package/ai-instructions/cursor/.cursor/rules/testing-patterns.mdc +0 -418
- package/dist/clients/best-practices-client.d.ts +0 -57
- package/dist/clients/best-practices-client.d.ts.map +0 -1
- package/dist/clients/best-practices-client.js +0 -288
- package/dist/clients/best-practices-client.js.map +0 -1
- package/dist/clients/cartridge-generation-client.d.ts +0 -57
- package/dist/clients/cartridge-generation-client.d.ts.map +0 -1
- package/dist/clients/cartridge-generation-client.js +0 -384
- package/dist/clients/cartridge-generation-client.js.map +0 -1
- package/dist/clients/logs/index.d.ts +0 -13
- package/dist/clients/logs/index.d.ts.map +0 -1
- package/dist/clients/logs/index.js +0 -15
- package/dist/clients/logs/index.js.map +0 -1
- package/dist/clients/logs/log-analyzer.d.ts +0 -55
- package/dist/clients/logs/log-analyzer.d.ts.map +0 -1
- package/dist/clients/logs/log-analyzer.js +0 -228
- package/dist/clients/logs/log-analyzer.js.map +0 -1
- package/dist/clients/logs/log-client.d.ts +0 -87
- package/dist/clients/logs/log-client.d.ts.map +0 -1
- package/dist/clients/logs/log-client.js +0 -418
- package/dist/clients/logs/log-client.js.map +0 -1
- package/dist/clients/logs/log-constants.d.ts +0 -37
- package/dist/clients/logs/log-constants.d.ts.map +0 -1
- package/dist/clients/logs/log-constants.js +0 -37
- package/dist/clients/logs/log-constants.js.map +0 -1
- package/dist/clients/logs/log-file-discovery.d.ts +0 -62
- package/dist/clients/logs/log-file-discovery.d.ts.map +0 -1
- package/dist/clients/logs/log-file-discovery.js +0 -238
- package/dist/clients/logs/log-file-discovery.js.map +0 -1
- package/dist/clients/logs/log-file-reader.d.ts +0 -53
- package/dist/clients/logs/log-file-reader.d.ts.map +0 -1
- package/dist/clients/logs/log-file-reader.js +0 -194
- package/dist/clients/logs/log-file-reader.js.map +0 -1
- package/dist/clients/logs/log-formatter.d.ts +0 -90
- package/dist/clients/logs/log-formatter.d.ts.map +0 -1
- package/dist/clients/logs/log-formatter.js +0 -189
- package/dist/clients/logs/log-formatter.js.map +0 -1
- package/dist/clients/logs/log-processor.d.ts +0 -91
- package/dist/clients/logs/log-processor.d.ts.map +0 -1
- package/dist/clients/logs/log-processor.js +0 -328
- package/dist/clients/logs/log-processor.js.map +0 -1
- package/dist/clients/logs/log-types.d.ts +0 -69
- package/dist/clients/logs/log-types.d.ts.map +0 -1
- package/dist/clients/logs/log-types.js +0 -5
- package/dist/clients/logs/log-types.js.map +0 -1
- package/dist/clients/logs/webdav-client-manager.d.ts +0 -28
- package/dist/clients/logs/webdav-client-manager.d.ts.map +0 -1
- package/dist/clients/logs/webdav-client-manager.js +0 -77
- package/dist/clients/logs/webdav-client-manager.js.map +0 -1
- package/dist/core/handlers/abstract-log-tool-handler.d.ts +0 -35
- package/dist/core/handlers/abstract-log-tool-handler.d.ts.map +0 -1
- package/dist/core/handlers/abstract-log-tool-handler.js +0 -46
- package/dist/core/handlers/abstract-log-tool-handler.js.map +0 -1
- package/dist/core/handlers/best-practices-handler.d.ts +0 -17
- package/dist/core/handlers/best-practices-handler.d.ts.map +0 -1
- package/dist/core/handlers/best-practices-handler.js +0 -43
- package/dist/core/handlers/best-practices-handler.js.map +0 -1
- package/dist/core/handlers/job-log-tool-config.d.ts +0 -8
- package/dist/core/handlers/job-log-tool-config.d.ts.map +0 -1
- package/dist/core/handlers/job-log-tool-config.js +0 -76
- package/dist/core/handlers/job-log-tool-config.js.map +0 -1
- package/dist/core/handlers/log-tool-config.d.ts +0 -8
- package/dist/core/handlers/log-tool-config.d.ts.map +0 -1
- package/dist/core/handlers/log-tool-config.js +0 -73
- package/dist/core/handlers/log-tool-config.js.map +0 -1
- package/dist/docs/best-practices/isml_templates.md +0 -1933
- package/dist/docs/best-practices/job_framework.md +0 -1173
- package/dist/docs/best-practices/scapi_custom_endpoint.md +0 -963
- package/dist/docs/best-practices/sfra_client_side_js.md +0 -736
- package/dist/docs/best-practices/sfra_models.md +0 -1142
- package/dist/tool-configs/best-practices-tool-config.d.ts +0 -11
- package/dist/tool-configs/best-practices-tool-config.d.ts.map +0 -1
- package/dist/tool-configs/best-practices-tool-config.js +0 -59
- package/dist/tool-configs/best-practices-tool-config.js.map +0 -1
- package/dist/utils/job-log-tool-config.d.ts +0 -8
- package/dist/utils/job-log-tool-config.d.ts.map +0 -1
- package/dist/utils/job-log-tool-config.js +0 -76
- package/dist/utils/job-log-tool-config.js.map +0 -1
- package/dist/utils/job-log-utils.d.ts +0 -34
- package/dist/utils/job-log-utils.d.ts.map +0 -1
- package/dist/utils/job-log-utils.js +0 -60
- package/dist/utils/job-log-utils.js.map +0 -1
- package/dist/utils/log-cache.d.ts +0 -53
- package/dist/utils/log-cache.d.ts.map +0 -1
- package/dist/utils/log-cache.js +0 -114
- package/dist/utils/log-cache.js.map +0 -1
- package/dist/utils/log-tool-config.d.ts +0 -8
- package/dist/utils/log-tool-config.d.ts.map +0 -1
- package/dist/utils/log-tool-config.js +0 -73
- package/dist/utils/log-tool-config.js.map +0 -1
- package/dist/utils/log-tool-utils.d.ts +0 -39
- package/dist/utils/log-tool-utils.d.ts.map +0 -1
- package/dist/utils/log-tool-utils.js +0 -94
- package/dist/utils/log-tool-utils.js.map +0 -1
- package/docs/best-practices/isml_templates.md +0 -1933
- package/docs/best-practices/job_framework.md +0 -1173
- package/docs/best-practices/scapi_custom_endpoint.md +0 -963
- package/docs/best-practices/sfra_client_side_js.md +0 -736
- package/docs/best-practices/sfra_models.md +0 -1142
- package/docs-site/App.tsx +0 -103
- package/docs-site/README.md +0 -113
- package/docs-site/components/Badge.tsx +0 -38
- package/docs-site/components/BreadcrumbSchema.tsx +0 -34
- package/docs-site/components/CodeBlock.tsx +0 -132
- package/docs-site/components/Collapsible.tsx +0 -40
- package/docs-site/components/ConfigBuilder.tsx +0 -118
- package/docs-site/components/ConfigHero.tsx +0 -19
- package/docs-site/components/ConfigModeTabs.tsx +0 -42
- package/docs-site/components/Layout.tsx +0 -174
- package/docs-site/components/LightCodeContainer.tsx +0 -44
- package/docs-site/components/NewcomerCTA.tsx +0 -57
- package/docs-site/components/NextStepsStrip.tsx +0 -23
- package/docs-site/components/OnThisPage.tsx +0 -91
- package/docs-site/components/SEO.tsx +0 -79
- package/docs-site/components/Search.tsx +0 -207
- package/docs-site/components/Sidebar.tsx +0 -96
- package/docs-site/components/StructuredData.tsx +0 -72
- package/docs-site/components/ToolCard.tsx +0 -84
- package/docs-site/components/ToolFilters.tsx +0 -39
- package/docs-site/components/Typography.tsx +0 -30
- package/docs-site/components/VersionBadge.tsx +0 -18
- package/docs-site/components/icons.tsx +0 -37
- package/docs-site/constants.tsx +0 -34
- package/docs-site/index.html +0 -62
- package/docs-site/main.tsx +0 -16
- package/docs-site/metadata.json +0 -5
- package/docs-site/package-lock.json +0 -3966
- package/docs-site/package.json +0 -35
- package/docs-site/pages/AIInterfacesPage.tsx +0 -610
- package/docs-site/pages/ConfigurationPage.tsx +0 -315
- package/docs-site/pages/DevelopmentPage.tsx +0 -607
- package/docs-site/pages/ExamplesPage.tsx +0 -558
- package/docs-site/pages/FeaturesPage.tsx +0 -353
- package/docs-site/pages/HomePage.tsx +0 -1046
- package/docs-site/pages/SecurityPage.tsx +0 -372
- package/docs-site/pages/ToolsPage.tsx +0 -205
- package/docs-site/pages/TroubleshootingPage.tsx +0 -590
- package/docs-site/postcss.config.js +0 -6
- package/docs-site/public/.well-known/security.txt +0 -6
- package/docs-site/public/android-chrome-192x192.png +0 -0
- package/docs-site/public/android-chrome-512x512.png +0 -0
- package/docs-site/public/apple-touch-icon.png +0 -0
- package/docs-site/public/favicon-16x16.png +0 -0
- package/docs-site/public/favicon-32x32.png +0 -0
- package/docs-site/public/favicon.ico +0 -0
- package/docs-site/public/llms.txt +0 -47
- package/docs-site/scripts/generate-search-index.js +0 -323
- package/docs-site/scripts/generate-sitemap.js +0 -156
- package/docs-site/scripts/search-dev.js +0 -112
- package/docs-site/src/styles/input.css +0 -248
- package/docs-site/src/styles/prism-theme.css +0 -124
- package/docs-site/tailwind.config.js +0 -70
- package/docs-site/tsconfig.json +0 -29
- package/docs-site/types.ts +0 -16
- package/docs-site/utils/search.ts +0 -132
- package/docs-site/utils/toolsData.ts +0 -116
- package/docs-site/vite.config.ts +0 -63
- package/src/clients/best-practices-client.ts +0 -332
- package/src/clients/cartridge-generation-client.ts +0 -507
- package/src/clients/logs/index.ts +0 -18
- package/src/clients/logs/log-analyzer.ts +0 -289
- package/src/clients/logs/log-client.ts +0 -540
- package/src/clients/logs/log-constants.ts +0 -53
- package/src/clients/logs/log-file-discovery.ts +0 -299
- package/src/clients/logs/log-file-reader.ts +0 -227
- package/src/clients/logs/log-formatter.ts +0 -258
- package/src/clients/logs/log-processor.ts +0 -402
- package/src/clients/logs/log-types.ts +0 -80
- package/src/clients/logs/webdav-client-manager.ts +0 -93
- package/src/core/handlers/abstract-log-tool-handler.ts +0 -64
- package/src/core/handlers/best-practices-handler.ts +0 -55
- package/src/core/handlers/job-log-tool-config.ts +0 -89
- package/src/core/handlers/log-tool-config.ts +0 -98
- package/src/tool-configs/best-practices-tool-config.ts +0 -68
- package/src/utils/job-log-tool-config.ts +0 -89
- package/src/utils/job-log-utils.ts +0 -78
- package/src/utils/log-cache.ts +0 -134
- package/src/utils/log-tool-config.ts +0 -98
- package/src/utils/log-tool-utils.ts +0 -122
- package/tests/best-practices-handler.test.ts +0 -236
- package/tests/job-log-utils.test.ts +0 -182
- package/tests/mcp/node/get-available-best-practice-guides.docs-only.programmatic.test.js +0 -516
- package/tests/mcp/node/get-best-practice-guide.docs-only.programmatic.test.js +0 -733
- package/tests/mcp/node/get-hook-reference.docs-only.programmatic.test.js +0 -185
- package/tests/mcp/node/search-best-practices.docs-only.programmatic.test.js +0 -836
- package/tests/mcp/yaml/get-available-best-practice-guides.docs-only.test.mcp.yml +0 -885
- package/tests/mcp/yaml/get-available-best-practice-guides.full-mode.test.mcp.yml +0 -885
- package/tests/mcp/yaml/get-best-practice-guide.docs-only.test.mcp.yml +0 -462
- package/tests/mcp/yaml/get-best-practice-guide.full-mode.test.mcp.yml +0 -462
- package/tests/mcp/yaml/get-hook-reference.docs-only.test.mcp.yml +0 -321
- package/tests/mcp/yaml/get-hook-reference.full-mode.test.mcp.yml +0 -321
- package/tests/mcp/yaml/search-best-practices.docs-only.test.mcp.yml +0 -655
- package/tests/mcp/yaml/search-best-practices.full-mode.test.mcp.yml +0 -655
- /package/{docs-site → docs-site-v2}/public/404.html +0 -0
- /package/{docs-site → docs-site-v2}/public/explain-product-pricing-methods-no-mcp.png +0 -0
- /package/{docs-site → docs-site-v2}/public/explain-product-pricing-methods.png +0 -0
package/dist/ai-instructions/skills/sfcc-isml-development/references/SFRA-PAGES-CART-ACCOUNT-AUTH.md
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# SFRA Page Patterns (Cart, Account, Auth)
|
|
2
|
+
|
|
3
|
+
These patterns are common in SFRA for stateful and account-related pages.
|
|
4
|
+
|
|
5
|
+
## Cart
|
|
6
|
+
|
|
7
|
+
Typical traits:
|
|
8
|
+
|
|
9
|
+
- Decorated with `common/layout/page`
|
|
10
|
+
- Uses Bootstrap alerts for errors
|
|
11
|
+
- Renders line items via includes by product type
|
|
12
|
+
- Renders totals + promo/coupon UX in a right-side column on desktop
|
|
13
|
+
|
|
14
|
+
Common includes:
|
|
15
|
+
|
|
16
|
+
- `cart/productCard/cartProductCard`
|
|
17
|
+
- `cart/productCard/cartBundleCard`
|
|
18
|
+
- `cart/cartTotals`
|
|
19
|
+
- `cart/cartPromoCode`
|
|
20
|
+
- `cart/checkoutButtons`
|
|
21
|
+
|
|
22
|
+
Keep cart-specific fragments local unless you have a strong cache boundary reason.
|
|
23
|
+
|
|
24
|
+
## Account (Dashboard + Subpages)
|
|
25
|
+
|
|
26
|
+
Typical traits:
|
|
27
|
+
|
|
28
|
+
- Decorated with `common/layout/page`
|
|
29
|
+
- Left-side navigation include: `account/accountNav`
|
|
30
|
+
- Card layout for subpages and content areas
|
|
31
|
+
|
|
32
|
+
Avoid putting “which subpage is active” logic in ISML beyond simple conditionals. Prefer controller flags (`pdict.profile`, `pdict.orderHistory`, etc.).
|
|
33
|
+
|
|
34
|
+
## Login / Registration
|
|
35
|
+
|
|
36
|
+
Typical traits:
|
|
37
|
+
|
|
38
|
+
- Decorated with `common/layout/page`
|
|
39
|
+
- CSRF hidden fields required
|
|
40
|
+
- Bootstrap 4 validation patterns:
|
|
41
|
+
- input adds `is-invalid` when field invalid
|
|
42
|
+
- error text rendered in `invalid-feedback`
|
|
43
|
+
- Uses `autocomplete` attributes for UX and accessibility
|
|
44
|
+
|
|
45
|
+
Reminder: do not output raw form attributes with `encoding="off"` unless the source is trusted.
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# SFRA Page Patterns (Catalog/Search)
|
|
2
|
+
|
|
3
|
+
These are common SFRA patterns for pages that list or describe products/categories.
|
|
4
|
+
|
|
5
|
+
## Homepage
|
|
6
|
+
|
|
7
|
+
Typical traits:
|
|
8
|
+
|
|
9
|
+
- Decorated with `common/layout/page`
|
|
10
|
+
- Uses content slots (`<isslot>`) for BM-driven content
|
|
11
|
+
- Uses Bootstrap grid containers for layout
|
|
12
|
+
|
|
13
|
+
Example skeleton:
|
|
14
|
+
|
|
15
|
+
```html
|
|
16
|
+
<isdecorate template="common/layout/page">
|
|
17
|
+
<isscript>
|
|
18
|
+
var assets = require('*/cartridge/scripts/assets.js');
|
|
19
|
+
assets.addCss('/css/homePage.css');
|
|
20
|
+
assets.addJs('/js/productTile.js');
|
|
21
|
+
</isscript>
|
|
22
|
+
|
|
23
|
+
<div class="home-main homepage">
|
|
24
|
+
<isslot id="home-main-m" description="Main home page slot." context="global" />
|
|
25
|
+
</div>
|
|
26
|
+
</isdecorate>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Product Detail Page (PDP)
|
|
30
|
+
|
|
31
|
+
Typical traits:
|
|
32
|
+
|
|
33
|
+
- Decorated with `common/layout/page`
|
|
34
|
+
- Creates a page-scoped `product` convenience variable
|
|
35
|
+
- Uses responsive patterns (`d-md-none`, etc.)
|
|
36
|
+
|
|
37
|
+
Example skeleton:
|
|
38
|
+
|
|
39
|
+
```html
|
|
40
|
+
<isdecorate template="common/layout/page">
|
|
41
|
+
<isscript>
|
|
42
|
+
var assets = require('*/cartridge/scripts/assets.js');
|
|
43
|
+
assets.addCss('/css/product/detail.css');
|
|
44
|
+
assets.addJs('/js/productDetail.js');
|
|
45
|
+
</isscript>
|
|
46
|
+
|
|
47
|
+
<isset name="product" value="${pdict.product}" scope="page" />
|
|
48
|
+
|
|
49
|
+
<div class="container product-detail" data-pid="${product.id}">
|
|
50
|
+
<div class="row">
|
|
51
|
+
<div class="col-12">
|
|
52
|
+
<h1 class="product-name">${product.productName}</h1>
|
|
53
|
+
<isinclude template="product/components/pricing/main"/>
|
|
54
|
+
</div>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
</isdecorate>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Search Results
|
|
61
|
+
|
|
62
|
+
Typical traits:
|
|
63
|
+
|
|
64
|
+
- Decorated with `common/layout/page`
|
|
65
|
+
- `refinement-bar` sidebar + grid content area
|
|
66
|
+
- Product tiles rendered via local include(s)
|
|
67
|
+
|
|
68
|
+
Key include components you’ll typically see:
|
|
69
|
+
|
|
70
|
+
- `search/refinements`
|
|
71
|
+
- `search/searchResultsCount`
|
|
72
|
+
- `search/sortOrderMenu`
|
|
73
|
+
- `search/searchResultsPagination`
|
|
74
|
+
- `product/productTile`
|
|
75
|
+
|
|
76
|
+
## Category Landing
|
|
77
|
+
|
|
78
|
+
Typical traits:
|
|
79
|
+
|
|
80
|
+
- Decorated with `common/layout/page`
|
|
81
|
+
- Breadcrumbs via `components/breadcrumbs/pageBreadcrumbs`
|
|
82
|
+
- Optional custom template selection via `pdict.category.template`
|
|
83
|
+
- Content slots for BM-managed category content
|
|
84
|
+
|
|
85
|
+
If you need a “hero image” style, prefer safe attribute construction and encoded values. Avoid mixing ISML tags into the middle of an HTML tag in a way that produces invalid markup.
|
package/dist/ai-instructions/skills/sfcc-isml-development/references/SFRA-STRUCTURE-COMPONENTS.md
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# SFRA Template Structure & Shared Components
|
|
2
|
+
|
|
3
|
+
This reference focuses on where things live and how SFRA composes templates.
|
|
4
|
+
|
|
5
|
+
## Typical Structure
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
templates/default/
|
|
9
|
+
common/
|
|
10
|
+
layout/ # page, checkout, pdStorePage layouts
|
|
11
|
+
htmlHead.isml # shared <head> content
|
|
12
|
+
scripts.isml # shared script includes
|
|
13
|
+
components/
|
|
14
|
+
header/
|
|
15
|
+
footer/
|
|
16
|
+
breadcrumbs/
|
|
17
|
+
modules.isml # module registration (if your project uses it)
|
|
18
|
+
schema.isml # structured data
|
|
19
|
+
home/
|
|
20
|
+
product/
|
|
21
|
+
cart/
|
|
22
|
+
checkout/
|
|
23
|
+
account/
|
|
24
|
+
search/
|
|
25
|
+
error/
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Composition Rules (SFRA)
|
|
29
|
+
|
|
30
|
+
- Prefer small, reusable partials under `components/**`.
|
|
31
|
+
- Use local includes for most composition:
|
|
32
|
+
|
|
33
|
+
```html
|
|
34
|
+
<isinclude template="components/breadcrumbs/pageBreadcrumbs"/>
|
|
35
|
+
<isinclude template="product/productTile"/>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
- Use remote includes only when you need an independent cache boundary or isolation (see `REMOTE-INCLUDES.md`).
|
|
39
|
+
|
|
40
|
+
## `common/htmlHead.isml` (What it typically does)
|
|
41
|
+
|
|
42
|
+
Common responsibilities:
|
|
43
|
+
|
|
44
|
+
- `<title>` and environment-aware titles
|
|
45
|
+
- meta tags (description/keywords)
|
|
46
|
+
- canonical link when provided
|
|
47
|
+
- favicon set and shared head assets
|
|
48
|
+
|
|
49
|
+
Keep meta values encoded and sourced from controller-provided `pdict`.
|
|
50
|
+
|
|
51
|
+
## Asset Registration (`assets.js`)
|
|
52
|
+
|
|
53
|
+
Page templates may register page-specific assets:
|
|
54
|
+
|
|
55
|
+
```html
|
|
56
|
+
<isscript>
|
|
57
|
+
var assets = require('*/cartridge/scripts/assets.js');
|
|
58
|
+
assets.addCss('/css/search.css');
|
|
59
|
+
assets.addJs('/js/search.js');
|
|
60
|
+
</isscript>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Do not use `<isscript>` for business logic.
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
# ISML Utility Objects & Expressions Reference
|
|
2
|
+
|
|
3
|
+
Reference for built-in template utilities and expression syntax.
|
|
4
|
+
|
|
5
|
+
## Top-Level Variables
|
|
6
|
+
|
|
7
|
+
The template scope automatically exposes:
|
|
8
|
+
|
|
9
|
+
- `pdict` - Pipeline Dictionary (controller data)
|
|
10
|
+
- `out` - Output stream
|
|
11
|
+
- `request` - Current request object
|
|
12
|
+
- `session` - Current session object
|
|
13
|
+
|
|
14
|
+
## dw.system.Request Methods
|
|
15
|
+
|
|
16
|
+
| Method | Description |
|
|
17
|
+
|--------|-------------|
|
|
18
|
+
| `getHttpCookies()` → `Cookies` | Returns cookies object |
|
|
19
|
+
| `getHttpHeaders()` → `Map` | Returns HTTP header values |
|
|
20
|
+
| `isHttpSecure()` → `Boolean` | Whether request is HTTPS |
|
|
21
|
+
| `isSCAPI()` → `Boolean` | Distinguishes OCAPI vs SCAPI |
|
|
22
|
+
|
|
23
|
+
**Example:**
|
|
24
|
+
```html
|
|
25
|
+
<isprint value="${request.custom.Container.adjustedMerchandiseTotalNetPrice}" />
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## dw.system.Session Methods
|
|
29
|
+
|
|
30
|
+
| Method | Description |
|
|
31
|
+
|--------|-------------|
|
|
32
|
+
| `getCustomer()` → `Customer` | Current customer (null in BM) |
|
|
33
|
+
| `isCustomerAuthenticated()` → `Boolean` | Whether customer is authenticated |
|
|
34
|
+
|
|
35
|
+
**Example:**
|
|
36
|
+
```html
|
|
37
|
+
<isprint value="${session.getCustomer().firstname}" />
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## dw.util.StringUtils
|
|
41
|
+
|
|
42
|
+
Pre-imported, call by simple name:
|
|
43
|
+
|
|
44
|
+
| Method | Description |
|
|
45
|
+
|--------|-------------|
|
|
46
|
+
| `formatDate(date)` | Format with site's default date format |
|
|
47
|
+
| `formatInteger(number)` | Format with site's integer format |
|
|
48
|
+
| `formatNumber(number)` | Format with site's number format |
|
|
49
|
+
| `garble(str, replaceChar, suffixLength)` | Mask string leaving suffix |
|
|
50
|
+
| `pad(str, width)` | Pad string to target width |
|
|
51
|
+
| `stringToHtml(str)` | Convert to HTML-safe |
|
|
52
|
+
| `stringToXml(str)` | Convert to XML-safe |
|
|
53
|
+
| `trim(str)` | Remove leading/trailing whitespace |
|
|
54
|
+
| `truncate(str, maxLength, mode, suffix)` | Truncate text with suffix |
|
|
55
|
+
|
|
56
|
+
**Example:**
|
|
57
|
+
```html
|
|
58
|
+
<isprint value="${StringUtils.pad('abc', 5)}" />
|
|
59
|
+
${StringUtils.truncate(description, 100, '...')}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## dw.web.URLUtils
|
|
63
|
+
|
|
64
|
+
Pre-imported for URL generation:
|
|
65
|
+
|
|
66
|
+
| Method | Description |
|
|
67
|
+
|--------|-------------|
|
|
68
|
+
| `abs(action, ...params)` | Absolute URL from calling request |
|
|
69
|
+
| `http(action, ...params)` | Absolute HTTP URL |
|
|
70
|
+
| `https(action, ...params)` | Absolute HTTPS URL |
|
|
71
|
+
| `httpsWebRoot()` | HTTPS web root for static assets |
|
|
72
|
+
| `httpWebRoot()` | HTTP web root for static assets |
|
|
73
|
+
| `url(action, ...params)` | Relative URL |
|
|
74
|
+
| `webRoot()` | Relative web root |
|
|
75
|
+
| `staticURL(path)` | Static resource URL |
|
|
76
|
+
| `continueURL()` | Continue URL for form action |
|
|
77
|
+
|
|
78
|
+
**Examples:**
|
|
79
|
+
```html
|
|
80
|
+
<a href="${URLUtils.url('Product-Show', 'pid', product.ID)}">View</a>
|
|
81
|
+
<a href="${URLUtils.https('Account-Show')}">My Account</a>
|
|
82
|
+
<img src="${URLUtils.staticURL('/images/logo.png')}" alt="Logo"/>
|
|
83
|
+
|
|
84
|
+
<form action="${URLUtils.continueURL()}" method="post">
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Resource (Localization)
|
|
88
|
+
|
|
89
|
+
```html
|
|
90
|
+
<!-- Simple message -->
|
|
91
|
+
${Resource.msg('button.addtocart', 'product', null)}
|
|
92
|
+
|
|
93
|
+
<!-- With parameters -->
|
|
94
|
+
${Resource.msgf('cart.items', 'cart', null, cartCount)}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Expression Syntax
|
|
98
|
+
|
|
99
|
+
### Basics
|
|
100
|
+
|
|
101
|
+
- **Syntax**: `${ ... }`
|
|
102
|
+
- **Scope**: Evaluates in template context (`pdict`, `request`, `session`)
|
|
103
|
+
|
|
104
|
+
### Common Patterns
|
|
105
|
+
|
|
106
|
+
```html
|
|
107
|
+
<!-- Property access -->
|
|
108
|
+
${pdict.product.name}
|
|
109
|
+
${pdict.product.price.sales.value}
|
|
110
|
+
|
|
111
|
+
<!-- Method calls -->
|
|
112
|
+
${product.getAvailabilityModel().isInStock()}
|
|
113
|
+
|
|
114
|
+
<!-- Session data -->
|
|
115
|
+
${session.customer.firstName}
|
|
116
|
+
|
|
117
|
+
<!-- Request params -->
|
|
118
|
+
${request.httpParameterMap.pid.stringValue}
|
|
119
|
+
|
|
120
|
+
<!-- Operators -->
|
|
121
|
+
${price > 100 ? 'expensive' : 'affordable'}
|
|
122
|
+
${firstName + ' ' + lastName}
|
|
123
|
+
${quantity * unitPrice}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Quick Reference
|
|
127
|
+
|
|
128
|
+
| Expression | Description |
|
|
129
|
+
|------------|-------------|
|
|
130
|
+
| `${pdict.Product}` | Current product object |
|
|
131
|
+
| `${pdict.Content.template}` | Content asset template |
|
|
132
|
+
| `${pdict.ProductPrices}` | Product prices structure |
|
|
133
|
+
| `${pdict.Order.orderNo}` | Order number |
|
|
134
|
+
|
|
135
|
+
## Protected Strings
|
|
136
|
+
|
|
137
|
+
The literal string `</body>` is reserved by ISML parser. Obfuscate if needed:
|
|
138
|
+
|
|
139
|
+
```javascript
|
|
140
|
+
var endBodyIndex = markup.indexOf('</bo' + 'dy>');
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## dw.util.SecureEncoder
|
|
144
|
+
|
|
145
|
+
For context-specific encoding:
|
|
146
|
+
|
|
147
|
+
```html
|
|
148
|
+
<isscript>
|
|
149
|
+
var SecureEncoder = require('dw/util/SecureEncoder');
|
|
150
|
+
</isscript>
|
|
151
|
+
|
|
152
|
+
<!-- JavaScript context -->
|
|
153
|
+
<script>
|
|
154
|
+
var searchTerm = "${SecureEncoder.forJavaScript(pdict.searchPhrase)}";
|
|
155
|
+
</script>
|
|
156
|
+
|
|
157
|
+
<!-- HTML attribute -->
|
|
158
|
+
<input type="hidden" value="${SecureEncoder.forHTMLAttribute(pdict.token)}" />
|
|
159
|
+
```
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
## SFRA Base Templates Architecture (Index)
|
|
2
|
+
|
|
3
|
+
This reference used to be a single long document. It’s now split into smaller, on-demand files so agents can load only what’s needed.
|
|
4
|
+
|
|
5
|
+
### References
|
|
6
|
+
|
|
7
|
+
- [SFRA Layout Templates](SFRA-LAYOUTS.md) — decorators, `<isreplace/>`, hooks, Bootstrap 4 notes
|
|
8
|
+
- [SFRA Structure & Shared Components](SFRA-STRUCTURE-COMPONENTS.md) — where templates live, composition rules, `htmlHead`, asset registration
|
|
9
|
+
- [SFRA Pages: Catalog/Search](SFRA-PAGES-CATALOG.md) — homepage, PDP, search, category patterns
|
|
10
|
+
- [SFRA Pages: Cart/Account/Auth](SFRA-PAGES-CART-ACCOUNT-AUTH.md) — cart, account dashboard/subpages, login/registration patterns
|
|
11
|
+
|
|
12
|
+
If you need deeper examples beyond these references, use the legacy long-form doc linked from the main skill.
|
|
13
|
+
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sfcc-job-development
|
|
3
|
+
description: Guide for developing custom jobs in Salesforce B2C Commerce Job Framework. Use this when asked to create batch jobs, scheduled tasks, chunk-oriented processing, or task-oriented jobs.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# SFCC Job Development Skill
|
|
7
|
+
|
|
8
|
+
This skill guides you through creating custom job steps for Salesforce B2C Commerce batch processing.
|
|
9
|
+
|
|
10
|
+
## Quick Checklist
|
|
11
|
+
|
|
12
|
+
```text
|
|
13
|
+
[ ] Choose the right model: task-oriented vs chunk-oriented
|
|
14
|
+
[ ] steptypes.json exists at the cartridge ROOT (not under cartridge/)
|
|
15
|
+
[ ] Step script exports required functions for its step type
|
|
16
|
+
[ ] All resources closed (iterators, file readers/writers) in afterStep
|
|
17
|
+
[ ] Timeouts are explicit and realistic for the dataset
|
|
18
|
+
[ ] Transactions scoped intentionally (avoid giant single transactions)
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Overview
|
|
22
|
+
|
|
23
|
+
Custom job steps execute custom business logic as part of B2C Commerce jobs. Two execution models:
|
|
24
|
+
|
|
25
|
+
| Model | Use Case | Progress Tracking |
|
|
26
|
+
|-------|----------|-------------------|
|
|
27
|
+
| **Task-oriented** | Single operations (FTP, import/export) | Limited |
|
|
28
|
+
| **Chunk-oriented** | Bulk data processing | Fine-grained |
|
|
29
|
+
|
|
30
|
+
## File Structure
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
my_cartridge/
|
|
34
|
+
├── cartridge/
|
|
35
|
+
│ ├── scripts/
|
|
36
|
+
│ │ └── steps/
|
|
37
|
+
│ │ ├── myTaskStep.js
|
|
38
|
+
│ │ └── myChunkStep.js
|
|
39
|
+
│ └── my_cartridge.properties
|
|
40
|
+
└── steptypes.json ← Must be here, NOT inside cartridge/
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Important:** Only one `steptypes.json` per cartridge. Must be at cartridge root.
|
|
44
|
+
|
|
45
|
+
## Task-Oriented Steps
|
|
46
|
+
|
|
47
|
+
Use for single operations like FTP transfers, file generation, or quick database updates.
|
|
48
|
+
|
|
49
|
+
```javascript
|
|
50
|
+
'use strict';
|
|
51
|
+
|
|
52
|
+
var Status = require('dw/system/Status');
|
|
53
|
+
var Logger = require('dw/system/Logger');
|
|
54
|
+
|
|
55
|
+
exports.execute = function (parameters, stepExecution) {
|
|
56
|
+
var log = Logger.getLogger('job', 'MyTaskStep');
|
|
57
|
+
|
|
58
|
+
try {
|
|
59
|
+
var inputFile = parameters.InputFile;
|
|
60
|
+
|
|
61
|
+
if (!parameters.Enabled) {
|
|
62
|
+
log.info('Step disabled, skipping');
|
|
63
|
+
return new Status(Status.OK, 'SKIP', 'Step disabled');
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Your business logic here
|
|
67
|
+
log.info('Processing file: ' + inputFile);
|
|
68
|
+
|
|
69
|
+
return new Status(Status.OK);
|
|
70
|
+
|
|
71
|
+
} catch (e) {
|
|
72
|
+
log.error('Step failed: ' + e.message);
|
|
73
|
+
return new Status(Status.ERROR, 'ERROR', e.message);
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Status Codes
|
|
79
|
+
|
|
80
|
+
```javascript
|
|
81
|
+
// Success
|
|
82
|
+
return new Status(Status.OK);
|
|
83
|
+
return new Status(Status.OK, 'CUSTOM_CODE', 'Custom message');
|
|
84
|
+
|
|
85
|
+
// Error
|
|
86
|
+
return new Status(Status.ERROR);
|
|
87
|
+
return new Status(Status.ERROR, null, 'Error message');
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
**Important:** Custom status codes work **only** with OK status. ERROR status replaces custom codes.
|
|
91
|
+
|
|
92
|
+
## Chunk-Oriented Steps
|
|
93
|
+
|
|
94
|
+
Use for bulk processing of countable data (products, orders, customers).
|
|
95
|
+
|
|
96
|
+
### Required Functions
|
|
97
|
+
|
|
98
|
+
| Function | Purpose | Returns |
|
|
99
|
+
|----------|---------|---------|
|
|
100
|
+
| `read()` | Get next item | Item or nothing |
|
|
101
|
+
| `process(item)` | Transform item | Processed item or nothing (filters) |
|
|
102
|
+
| `write(items)` | Save chunk of items | Nothing |
|
|
103
|
+
|
|
104
|
+
### Optional Functions
|
|
105
|
+
|
|
106
|
+
| Function | Purpose |
|
|
107
|
+
|----------|---------|
|
|
108
|
+
| `beforeStep()` | Initialize (open files, queries) |
|
|
109
|
+
| `afterStep(success)` | Cleanup (close files) |
|
|
110
|
+
| `getTotalCount()` | Return total items for progress |
|
|
111
|
+
| `beforeChunk()` | Before each chunk |
|
|
112
|
+
| `afterChunk()` | After each chunk |
|
|
113
|
+
|
|
114
|
+
### Script Example
|
|
115
|
+
|
|
116
|
+
```javascript
|
|
117
|
+
'use strict';
|
|
118
|
+
|
|
119
|
+
var ProductMgr = require('dw/catalog/ProductMgr');
|
|
120
|
+
var Transaction = require('dw/system/Transaction');
|
|
121
|
+
var Logger = require('dw/system/Logger');
|
|
122
|
+
|
|
123
|
+
var log = Logger.getLogger('job', 'MyChunkStep');
|
|
124
|
+
var products;
|
|
125
|
+
|
|
126
|
+
exports.beforeStep = function (parameters, stepExecution) {
|
|
127
|
+
log.info('Starting chunk processing');
|
|
128
|
+
products = ProductMgr.queryAllSiteProducts();
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
exports.getTotalCount = function (parameters, stepExecution) {
|
|
132
|
+
return products.count; // Use built-in count!
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
exports.read = function (parameters, stepExecution) {
|
|
136
|
+
if (products.hasNext()) {
|
|
137
|
+
return products.next();
|
|
138
|
+
}
|
|
139
|
+
// Return nothing = end of data
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
exports.process = function (product, parameters, stepExecution) {
|
|
143
|
+
if (!product.online) {
|
|
144
|
+
return; // Filtered out
|
|
145
|
+
}
|
|
146
|
+
return {
|
|
147
|
+
id: product.ID,
|
|
148
|
+
name: product.name,
|
|
149
|
+
price: product.priceModel.price.value
|
|
150
|
+
};
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
exports.write = function (items, parameters, stepExecution) {
|
|
154
|
+
for (var i = 0; i < items.size(); i++) {
|
|
155
|
+
var item = items.get(i);
|
|
156
|
+
// Write item...
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
exports.afterStep = function (success, parameters, stepExecution) {
|
|
161
|
+
if (products) {
|
|
162
|
+
products.close(); // Critical: close iterators!
|
|
163
|
+
}
|
|
164
|
+
log.info(success ? 'Completed successfully' : 'Failed');
|
|
165
|
+
};
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
**Important:** Chunk-oriented steps always finish with either **OK** or **ERROR**. Custom exit status codes are not supported.
|
|
169
|
+
|
|
170
|
+
## steptypes.json Configuration
|
|
171
|
+
|
|
172
|
+
### Task-Oriented Step
|
|
173
|
+
|
|
174
|
+
```json
|
|
175
|
+
{
|
|
176
|
+
"step-types": {
|
|
177
|
+
"script-module-step": [
|
|
178
|
+
{
|
|
179
|
+
"@type-id": "custom.MyTaskStep",
|
|
180
|
+
"@supports-site-context": true,
|
|
181
|
+
"@supports-organization-context": false,
|
|
182
|
+
"description": "My custom task step",
|
|
183
|
+
"module": "my_cartridge/cartridge/scripts/steps/myTaskStep.js",
|
|
184
|
+
"function": "execute",
|
|
185
|
+
"timeout-in-seconds": 900,
|
|
186
|
+
"parameters": {
|
|
187
|
+
"parameter": [
|
|
188
|
+
{
|
|
189
|
+
"@name": "InputFile",
|
|
190
|
+
"@type": "string",
|
|
191
|
+
"@required": true,
|
|
192
|
+
"description": "Path to input file"
|
|
193
|
+
}
|
|
194
|
+
]
|
|
195
|
+
},
|
|
196
|
+
"status-codes": {
|
|
197
|
+
"status": [
|
|
198
|
+
{ "@code": "OK", "description": "Step completed" },
|
|
199
|
+
{ "@code": "ERROR", "description": "Step failed" }
|
|
200
|
+
]
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
]
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Chunk-Oriented Step
|
|
209
|
+
|
|
210
|
+
```json
|
|
211
|
+
{
|
|
212
|
+
"step-types": {
|
|
213
|
+
"chunk-script-module-step": [
|
|
214
|
+
{
|
|
215
|
+
"@type-id": "custom.MyChunkStep",
|
|
216
|
+
"@supports-site-context": true,
|
|
217
|
+
"@supports-organization-context": false,
|
|
218
|
+
"description": "Bulk data processing step",
|
|
219
|
+
"module": "my_cartridge/cartridge/scripts/steps/myChunkStep.js",
|
|
220
|
+
"before-step-function": "beforeStep",
|
|
221
|
+
"read-function": "read",
|
|
222
|
+
"process-function": "process",
|
|
223
|
+
"write-function": "write",
|
|
224
|
+
"after-step-function": "afterStep",
|
|
225
|
+
"total-count-function": "getTotalCount",
|
|
226
|
+
"chunk-size": 100,
|
|
227
|
+
"transactional": false,
|
|
228
|
+
"timeout-in-seconds": 1800
|
|
229
|
+
}
|
|
230
|
+
]
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
## Key Configuration Attributes
|
|
236
|
+
|
|
237
|
+
| Attribute | Required | Description |
|
|
238
|
+
|-----------|----------|-------------|
|
|
239
|
+
| `@type-id` | Yes | Unique ID (must start with `custom.`) |
|
|
240
|
+
| `@supports-site-context` | No | Available in site-scoped jobs |
|
|
241
|
+
| `@supports-organization-context` | No | Available in org-scoped jobs |
|
|
242
|
+
| `module` | Yes | Path to script module |
|
|
243
|
+
| `function` | Yes | Function name (task-oriented) |
|
|
244
|
+
| `chunk-size` | Yes* | Items per chunk (*chunk steps only) |
|
|
245
|
+
| `timeout-in-seconds` | No | Step timeout (recommended) |
|
|
246
|
+
|
|
247
|
+
**Context Constraints:** `@supports-site-context` and `@supports-organization-context` cannot both be `true` or both be `false`.
|
|
248
|
+
|
|
249
|
+
## Parameter Types
|
|
250
|
+
|
|
251
|
+
| Type | Description | Example |
|
|
252
|
+
|------|-------------|---------|
|
|
253
|
+
| `string` | Text value | `"my-value"` |
|
|
254
|
+
| `boolean` | true/false | `true` |
|
|
255
|
+
| `long` | Integer | `12345` |
|
|
256
|
+
| `double` | Decimal | `123.45` |
|
|
257
|
+
|
|
258
|
+
## Critical Performance Pattern
|
|
259
|
+
|
|
260
|
+
**Use SeekableIterator's built-in count** instead of creating separate iterators:
|
|
261
|
+
|
|
262
|
+
```javascript
|
|
263
|
+
// ✅ CORRECT - Uses built-in count
|
|
264
|
+
exports.getTotalCount = function() {
|
|
265
|
+
return products.getCount(); // Instant, no DB hit
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
// ❌ WRONG - Creates duplicate query!
|
|
269
|
+
exports.getTotalCount = function() {
|
|
270
|
+
var counter = ProductMgr.queryAllSiteProducts(); // Unnecessary!
|
|
271
|
+
var count = 0;
|
|
272
|
+
while (counter.hasNext()) { counter.next(); count++; }
|
|
273
|
+
counter.close();
|
|
274
|
+
return count;
|
|
275
|
+
}
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
## Best Practices
|
|
279
|
+
|
|
280
|
+
1. **Use chunk-oriented** for bulk data - better progress tracking and resumability
|
|
281
|
+
2. **Close resources** in `afterStep()` - queries, files, connections
|
|
282
|
+
3. **Set explicit timeouts** - default may be too short
|
|
283
|
+
4. **Log progress** - helps debugging
|
|
284
|
+
5. **Handle errors gracefully** - return proper Status objects
|
|
285
|
+
6. **Don't rely on transactional=true** - use `Transaction.wrap()` for control
|
|
286
|
+
7. **Use streaming APIs** for file processing
|
|
287
|
+
8. **Avoid accumulating objects** in global scope
|
|
288
|
+
|
|
289
|
+
## Chunk Size Guidelines
|
|
290
|
+
|
|
291
|
+
| Operation Type | Recommended Size |
|
|
292
|
+
|----------------|------------------|
|
|
293
|
+
| Simple attribute updates | 500-1000 |
|
|
294
|
+
| Complex object creation | 100-300 |
|
|
295
|
+
| File I/O operations | 200-500 |
|
|
296
|
+
| General operations | 250 |
|
|
297
|
+
|
|
298
|
+
### How to Choose a Chunk Size (Beyond Rules of Thumb)
|
|
299
|
+
|
|
300
|
+
- **Processing complexity**: complex per-record logic (extra lookups, multiple writes) usually needs smaller chunks.
|
|
301
|
+
- **Memory behavior**: if memory grows with chunk size, shrink chunks and ensure references are released after `write`.
|
|
302
|
+
- **Optimistic locking risk**: for “high contention” objects (e.g., profiles that can be updated by storefront traffic), smaller chunks reduce the blast radius of failures and make retries cheaper.
|
|
303
|
+
|
|
304
|
+
### `transactional` Setting Guidance
|
|
305
|
+
|
|
306
|
+
Keep `"transactional": false` in `steptypes.json` unless you have a very specific requirement.
|
|
307
|
+
|
|
308
|
+
- When `transactional` is enabled, the platform can treat the step as one large transaction, increasing rollback risk on errors.
|
|
309
|
+
- Prefer explicit, local `Transaction.wrap()` scopes inside `process` or `write` to control what is committed and when.
|
|
310
|
+
|
|
311
|
+
## Troubleshooting
|
|
312
|
+
|
|
313
|
+
| Issue | Solution |
|
|
314
|
+
|-------|----------|
|
|
315
|
+
| OutOfMemoryError | Use streaming APIs, close iterators, reduce chunk size |
|
|
316
|
+
| ScriptingTimeoutError | Use chunk-oriented model, review algorithm |
|
|
317
|
+
| Transaction timeouts | Reduce chunk size, commit per chunk |
|
|
318
|
+
| Job not visible in BM | Check code version is active |
|
|
319
|
+
|
|
320
|
+
## Related Skills
|
|
321
|
+
|
|
322
|
+
- **[sfcc-logging](../sfcc-logging/SKILL.md)** - Comprehensive logging patterns, custom log files, NDC tracing. Essential for job debugging and monitoring.
|
|
323
|
+
|
|
324
|
+
## Detailed References
|
|
325
|
+
|
|
326
|
+
- [Task-Oriented Steps](references/TASK-ORIENTED.md) - Full task step patterns
|
|
327
|
+
- [Chunk-Oriented Steps](references/CHUNK-ORIENTED.md) - Full chunk step patterns
|
|
328
|
+
- [steptypes.json Reference](references/STEPTYPES-JSON.md) - Complete schema
|
|
329
|
+
|
|
330
|
+
External reading:
|
|
331
|
+
- Rhino Inquisitor: Mastering Chunk-Oriented Job Steps
|
|
332
|
+
- https://www.rhino-inquisitor.com/mastering-chunk-oriented-job-steps-in-salesforce-b2c-commerce-cloud/
|
|
333
|
+
- Salesforce Docs: Custom job steps (chunk-oriented)
|
|
334
|
+
- https://developer.salesforce.com/docs/commerce/b2c-commerce/guide/b2c-custom-job-steps.html
|