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/tests/mcp/README.md
CHANGED
|
@@ -6,6 +6,8 @@ This document describes the MCP (Model Context Protocol) tests for the SFCC Deve
|
|
|
6
6
|
|
|
7
7
|
The project includes comprehensive MCP tests using both **YAML** and **Node.js** approaches with the [mcp-aegis](https://aegis.rhino-inquisitor.com/) testing library. The tests verify both **documentation-only mode** and **full mode with credentials**.
|
|
8
8
|
|
|
9
|
+
> Note: The server is capability-gated. In real usage there is also an intermediate “WebDAV-only” surface (30 tools) when `hostname` + `username/password` are present (logs + job logs), but `client-id/client-secret` are not (so OCAPI Data API tools are not exposed). The test configs in this folder currently cover docs-only (17) and full (38).
|
|
10
|
+
|
|
9
11
|
## Test Structure
|
|
10
12
|
|
|
11
13
|
```
|
|
@@ -28,12 +30,12 @@ tests/mcp/
|
|
|
28
30
|
### Documentation-Only Mode
|
|
29
31
|
- **File**: `aegis.config.docs-only.json`
|
|
30
32
|
- **Command**: `node dist/index.js` (no credentials)
|
|
31
|
-
- **Tools**:
|
|
33
|
+
- **Tools**: 17 tools (documentation, SFRA, ISML, cartridge generation, agent instruction bootstrap)
|
|
32
34
|
|
|
33
35
|
### Full Mode with Credentials
|
|
34
36
|
- **File**: `aegis.config.with-dw.json`
|
|
35
37
|
- **Command**: `node dist/index.js --dw-json ./tests/mcp/test-fixtures/dw.json`
|
|
36
|
-
- **Tools**:
|
|
38
|
+
- **Tools**: 38 tools (includes log + job log analysis, system objects, code versions)
|
|
37
39
|
|
|
38
40
|
## Available Test Commands
|
|
39
41
|
|
|
@@ -79,15 +81,15 @@ npm run test:mcp:ci
|
|
|
79
81
|
|
|
80
82
|
### 2. Documentation-Only Mode Tests
|
|
81
83
|
- **SFCC Documentation Tools** (5 tools): Class info, search, method discovery
|
|
82
|
-
- **Best Practices Tools** (4 tools): Guides, search, hook references
|
|
83
84
|
- **SFRA Documentation Tools** (5 tools): Documents, search, categories
|
|
85
|
+
- **ISML Documentation Tools** (5 tools): Element docs, category browsing, search
|
|
86
|
+
- **Agent Instruction Tools** (2 tools): Sync AGENTS.md + bundled skills into a workspace, disable sync suggestions
|
|
84
87
|
- **Cartridge Generation Tools** (1 tool): Structure generation
|
|
85
88
|
- **Tool Availability**: Verifies log/OCAPI tools are NOT available
|
|
86
89
|
|
|
87
90
|
### 3. Full Mode Tests
|
|
88
91
|
- **All Documentation Tools**: Same as documentation-only mode
|
|
89
|
-
- **Log
|
|
90
|
-
- **Job Log Tools** (5 tools): Job log files, entries, search, execution summaries
|
|
92
|
+
- **Log & Job Log Tools** (13 tools): Runtime log tails + search, plus job log discovery/entries/search/execution summaries
|
|
91
93
|
- **System Object Tools** (6 tools): System objects, attributes, site preferences
|
|
92
94
|
- **Code Version Tools** (2 tools): List and activate code versions
|
|
93
95
|
- **Authentication Testing**: Graceful handling of connection failures
|
|
@@ -163,24 +165,26 @@ To test full functionality:
|
|
|
163
165
|
|
|
164
166
|
## Test Coverage
|
|
165
167
|
|
|
166
|
-
### Tools Tested in Documentation-Only Mode (
|
|
168
|
+
### Tools Tested in Documentation-Only Mode (17 tools)
|
|
167
169
|
1. `get_sfcc_class_info` - SFCC class information
|
|
168
170
|
2. `search_sfcc_classes` - SFCC class search
|
|
169
171
|
3. `search_sfcc_methods` - SFCC method search
|
|
170
172
|
4. `list_sfcc_classes` - Complete SFCC class list
|
|
171
173
|
5. `get_sfcc_class_documentation` - Raw SFCC class documentation
|
|
172
|
-
6. `
|
|
173
|
-
7. `
|
|
174
|
-
8. `
|
|
175
|
-
9. `
|
|
176
|
-
10. `
|
|
177
|
-
11. `
|
|
178
|
-
12. `
|
|
179
|
-
13. `
|
|
180
|
-
14. `
|
|
181
|
-
15. `
|
|
182
|
-
|
|
183
|
-
|
|
174
|
+
6. `sync_agent_instructions` - Agent instruction bootstrap (AGENTS.md + bundled skills)
|
|
175
|
+
7. `get_available_sfra_documents` - SFRA documents list
|
|
176
|
+
8. `get_sfra_document` - Specific SFRA document
|
|
177
|
+
9. `search_sfra_documentation` - SFRA documentation search
|
|
178
|
+
10. `get_sfra_documents_by_category` - SFRA documents by category
|
|
179
|
+
11. `get_sfra_categories` - SFRA document categories
|
|
180
|
+
12. `list_isml_elements` - ISML element listing
|
|
181
|
+
13. `get_isml_element` - ISML element documentation
|
|
182
|
+
14. `search_isml_elements` - ISML element search
|
|
183
|
+
15. `get_isml_elements_by_category` - ISML elements by category
|
|
184
|
+
16. `get_isml_categories` - ISML categories
|
|
185
|
+
17. `generate_cartridge_structure` - Cartridge generation
|
|
186
|
+
|
|
187
|
+
### Additional Tools in Full Mode (+21 tools = 38 total)
|
|
184
188
|
|
|
185
189
|
**Log Analysis Tools (8)**:
|
|
186
190
|
- `get_latest_error`, `get_latest_warn`, `get_latest_info`, `get_latest_debug`
|
|
@@ -49,7 +49,7 @@ describe('activate_code_version Advanced Programmatic Tests (Full Mode)', () =>
|
|
|
49
49
|
|
|
50
50
|
assert.ok(activateTool, 'activate_code_version tool should be available');
|
|
51
51
|
assert.equal(activateTool.name, 'activate_code_version');
|
|
52
|
-
assert.ok(activateTool.description.includes('Activate a
|
|
52
|
+
assert.ok(activateTool.description.includes('Activate a code version'));
|
|
53
53
|
|
|
54
54
|
// Validate input schema
|
|
55
55
|
assert.equal(activateTool.inputSchema.type, 'object');
|
|
@@ -112,22 +112,21 @@ describe('activate_code_version Advanced Programmatic Tests (Full Mode)', () =>
|
|
|
112
112
|
});
|
|
113
113
|
|
|
114
114
|
test('should handle edge case codeVersionId values', async () => {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
'
|
|
119
|
-
'UPPERCASE-VERSION', // Case variations
|
|
120
|
-
'version_nonexistent_test', // Non-existent version
|
|
121
|
-
'version.with.dots', // Dots
|
|
122
|
-
'123-numeric-start', // Starting with numbers
|
|
123
|
-
'unicode-测试-version', // Unicode characters
|
|
115
|
+
// Edge cases that pass client-side validation (valid format but non-existent)
|
|
116
|
+
// These should reach the SFCC API and get 404 errors
|
|
117
|
+
const validFormatEdgeCases = [
|
|
118
|
+
'a'.repeat(100), // Long but valid ID
|
|
119
|
+
'UPPERCASE-VERSION', // Case variations (valid)
|
|
120
|
+
'version_nonexistent_test', // Non-existent version (valid format)
|
|
121
|
+
'version.with.dots', // Dots (valid)
|
|
122
|
+
'123-numeric-start', // Starting with numbers (valid)
|
|
124
123
|
];
|
|
125
124
|
|
|
126
|
-
for (const edgeCase of
|
|
125
|
+
for (const edgeCase of validFormatEdgeCases) {
|
|
127
126
|
const result = await client.callTool('activate_code_version', { codeVersionId: edgeCase });
|
|
128
127
|
assert.equal(result.isError, true, `Should handle edge case: ${edgeCase}`);
|
|
129
128
|
|
|
130
|
-
// Should get 404 or similar SFCC error
|
|
129
|
+
// Should get 404 or similar SFCC error for valid-format but non-existent versions
|
|
131
130
|
assert.ok(
|
|
132
131
|
result.content[0].text.includes('404') ||
|
|
133
132
|
result.content[0].text.includes('not found') ||
|
|
@@ -135,6 +134,25 @@ describe('activate_code_version Advanced Programmatic Tests (Full Mode)', () =>
|
|
|
135
134
|
`Should get SFCC API error for edge case: ${edgeCase}, got: ${result.content[0].text}`
|
|
136
135
|
);
|
|
137
136
|
}
|
|
137
|
+
|
|
138
|
+
// Edge cases that fail client-side validation (invalid characters)
|
|
139
|
+
// These should be caught early with validation errors for security
|
|
140
|
+
const invalidFormatEdgeCases = [
|
|
141
|
+
'test-version-with-special-chars!@#$%^&*()', // Special characters
|
|
142
|
+
'version with spaces', // Spaces
|
|
143
|
+
'unicode-测试-version', // Unicode characters
|
|
144
|
+
];
|
|
145
|
+
|
|
146
|
+
for (const edgeCase of invalidFormatEdgeCases) {
|
|
147
|
+
const result = await client.callTool('activate_code_version', { codeVersionId: edgeCase });
|
|
148
|
+
assert.equal(result.isError, true, `Should reject invalid format: ${edgeCase}`);
|
|
149
|
+
|
|
150
|
+
// Should get client-side validation error for invalid format
|
|
151
|
+
assert.ok(
|
|
152
|
+
result.content[0].text.includes('Invalid code version ID format'),
|
|
153
|
+
`Should get validation error for invalid format: ${edgeCase}, got: ${result.content[0].text}`
|
|
154
|
+
);
|
|
155
|
+
}
|
|
138
156
|
});
|
|
139
157
|
});
|
|
140
158
|
|
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
import { test, describe, before, after, beforeEach } from 'node:test';
|
|
2
|
+
import { strict as assert } from 'node:assert';
|
|
3
|
+
import { connect } from 'mcp-aegis';
|
|
4
|
+
|
|
5
|
+
describe('evaluate_script - Full Mode Programmatic Tests', () => {
|
|
6
|
+
let client;
|
|
7
|
+
|
|
8
|
+
before(async () => {
|
|
9
|
+
client = await connect('./aegis.config.with-dw.json');
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
after(async () => {
|
|
13
|
+
if (client?.connected) {
|
|
14
|
+
await client.disconnect();
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
beforeEach(() => {
|
|
19
|
+
// CRITICAL: Clear all buffers to prevent leaking into next tests
|
|
20
|
+
client.clearAllBuffers();
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
// Helper functions for common validations
|
|
24
|
+
function assertValidMCPResponse(result) {
|
|
25
|
+
assert.ok(result.content, 'Should have content');
|
|
26
|
+
assert.ok(Array.isArray(result.content), 'Content should be array');
|
|
27
|
+
assert.equal(typeof result.isError, 'boolean', 'isError should be boolean');
|
|
28
|
+
assert.equal(result.content[0].type, 'text', 'Content should be text type');
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function parseResultJSON(result) {
|
|
32
|
+
const text = result.content[0].text;
|
|
33
|
+
return JSON.parse(text);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function assertSuccessResponse(result) {
|
|
37
|
+
assertValidMCPResponse(result);
|
|
38
|
+
assert.equal(result.isError, false, 'Should not be an MCP error response');
|
|
39
|
+
|
|
40
|
+
const data = parseResultJSON(result);
|
|
41
|
+
assert.equal(data.success, true, 'Script execution should be successful');
|
|
42
|
+
assert.ok(typeof data.executionTimeMs === 'number', 'Should include execution time');
|
|
43
|
+
assert.ok(data.result !== undefined, 'Should include result');
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Core functionality tests
|
|
47
|
+
describe('Core Functionality', () => {
|
|
48
|
+
test('should evaluate simple arithmetic expression', async () => {
|
|
49
|
+
const result = await client.callTool('evaluate_script', {
|
|
50
|
+
script: '1 + 1'
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
assertSuccessResponse(result);
|
|
54
|
+
|
|
55
|
+
const data = parseResultJSON(result);
|
|
56
|
+
assert.equal(data.result, '2', 'Should return correct arithmetic result');
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
test('should evaluate expression with return statement', async () => {
|
|
60
|
+
const result = await client.callTool('evaluate_script', {
|
|
61
|
+
script: 'return 1 + 1;'
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
assertSuccessResponse(result);
|
|
65
|
+
|
|
66
|
+
const data = parseResultJSON(result);
|
|
67
|
+
assert.equal(data.result, '2', 'Should handle return statement');
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
test('should include execution time in response', async () => {
|
|
71
|
+
const result = await client.callTool('evaluate_script', {
|
|
72
|
+
script: '1 + 1'
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
assertSuccessResponse(result);
|
|
76
|
+
|
|
77
|
+
const data = parseResultJSON(result);
|
|
78
|
+
assert.ok(data.executionTimeMs >= 0, 'Execution time should be non-negative');
|
|
79
|
+
assert.ok(data.executionTimeMs < 30000, 'Execution time should be reasonable');
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
test('should evaluate SFCC Site API expression', async () => {
|
|
83
|
+
const result = await client.callTool('evaluate_script', {
|
|
84
|
+
script: 'var Site = require("dw/system/Site"); return Site.current.ID;'
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
assertSuccessResponse(result);
|
|
88
|
+
|
|
89
|
+
const data = parseResultJSON(result);
|
|
90
|
+
assert.equal(data.result, 'MockSiteID', 'Should return mocked Site ID');
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
test('should evaluate ProductMgr expression', async () => {
|
|
94
|
+
const result = await client.callTool('evaluate_script', {
|
|
95
|
+
script: 'var ProductMgr = require("dw/catalog/ProductMgr"); return ProductMgr.getProduct("12345");'
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
assertSuccessResponse(result);
|
|
99
|
+
|
|
100
|
+
const data = parseResultJSON(result);
|
|
101
|
+
assert.equal(data.result, 'MockProduct', 'Should return mocked product');
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
test('should evaluate JSON.stringify expression', async () => {
|
|
105
|
+
const result = await client.callTool('evaluate_script', {
|
|
106
|
+
script: 'return JSON.stringify({test: "hello"});'
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
assertSuccessResponse(result);
|
|
110
|
+
|
|
111
|
+
const data = parseResultJSON(result);
|
|
112
|
+
assert.equal(data.result, '{"test":"hello"}', 'Should return JSON string');
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
// Parameter handling tests
|
|
117
|
+
describe('Parameter Handling', () => {
|
|
118
|
+
test('should accept siteId parameter', async () => {
|
|
119
|
+
const result = await client.callTool('evaluate_script', {
|
|
120
|
+
script: '1 + 1',
|
|
121
|
+
siteId: 'RefArch'
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
assertSuccessResponse(result);
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
test('should accept different siteId values', async () => {
|
|
128
|
+
const result = await client.callTool('evaluate_script', {
|
|
129
|
+
script: '1 + 1',
|
|
130
|
+
siteId: 'RefArchGlobal'
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
assertSuccessResponse(result);
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
test('should accept siteId in Sites-{id}-Site format', async () => {
|
|
137
|
+
const result = await client.callTool('evaluate_script', {
|
|
138
|
+
script: '1 + 1',
|
|
139
|
+
siteId: 'Sites-RefArchGlobal-Site'
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
assertSuccessResponse(result);
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
test('should accept locale parameter', async () => {
|
|
146
|
+
const result = await client.callTool('evaluate_script', {
|
|
147
|
+
script: '1 + 1',
|
|
148
|
+
locale: 'default'
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
assertSuccessResponse(result);
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
test('should accept timeout parameter', async () => {
|
|
155
|
+
const result = await client.callTool('evaluate_script', {
|
|
156
|
+
script: '1 + 1',
|
|
157
|
+
timeout: 15000
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
assertSuccessResponse(result);
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
test('should accept custom breakpoint parameters', async () => {
|
|
164
|
+
const result = await client.callTool('evaluate_script', {
|
|
165
|
+
script: '1 + 1',
|
|
166
|
+
breakpointFile: '/app_storefront_base/cartridge/controllers/Default.js',
|
|
167
|
+
breakpointLine: 26
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
assertSuccessResponse(result);
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
test('should accept custom breakpoint file without line (defaults to strategic lines)', async () => {
|
|
174
|
+
const result = await client.callTool('evaluate_script', {
|
|
175
|
+
script: '1 + 1',
|
|
176
|
+
breakpointFile: '/app_storefront_base/cartridge/controllers/Default.js'
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
assertSuccessResponse(result);
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
test('should use default siteId when not provided', async () => {
|
|
183
|
+
const result = await client.callTool('evaluate_script', {
|
|
184
|
+
script: '1 + 1'
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
assertSuccessResponse(result);
|
|
188
|
+
// Default siteId is RefArch - script should still execute successfully
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
// Error handling tests
|
|
193
|
+
describe('Error Handling', () => {
|
|
194
|
+
test('should fail when script parameter is missing', async () => {
|
|
195
|
+
const result = await client.callTool('evaluate_script', {});
|
|
196
|
+
|
|
197
|
+
assertValidMCPResponse(result);
|
|
198
|
+
assert.equal(result.isError, true, 'Should be an error when script is missing');
|
|
199
|
+
assert.ok(result.content[0].text.toLowerCase().includes('script') ||
|
|
200
|
+
result.content[0].text.toLowerCase().includes('required'),
|
|
201
|
+
'Error should mention script or required');
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
test('should fail when script parameter is empty string', async () => {
|
|
205
|
+
const result = await client.callTool('evaluate_script', {
|
|
206
|
+
script: ''
|
|
207
|
+
});
|
|
208
|
+
|
|
209
|
+
assertValidMCPResponse(result);
|
|
210
|
+
assert.equal(result.isError, true, 'Should be an error when script is empty');
|
|
211
|
+
});
|
|
212
|
+
|
|
213
|
+
test('should handle null script parameter', async () => {
|
|
214
|
+
const result = await client.callTool('evaluate_script', {
|
|
215
|
+
script: null
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
assertValidMCPResponse(result);
|
|
219
|
+
assert.equal(result.isError, true, 'Should be an error when script is null');
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
// Response structure tests
|
|
224
|
+
describe('Response Structure', () => {
|
|
225
|
+
test('should return properly structured success response', async () => {
|
|
226
|
+
const result = await client.callTool('evaluate_script', {
|
|
227
|
+
script: '1 + 1'
|
|
228
|
+
});
|
|
229
|
+
|
|
230
|
+
assertValidMCPResponse(result);
|
|
231
|
+
assert.equal(result.isError, false, 'Should not be an MCP error');
|
|
232
|
+
|
|
233
|
+
const data = parseResultJSON(result);
|
|
234
|
+
|
|
235
|
+
// Verify all expected fields
|
|
236
|
+
assert.ok('success' in data, 'Should have success field');
|
|
237
|
+
assert.ok('result' in data, 'Should have result field');
|
|
238
|
+
assert.ok('executionTimeMs' in data, 'Should have executionTimeMs field');
|
|
239
|
+
|
|
240
|
+
assert.equal(typeof data.success, 'boolean', 'success should be boolean');
|
|
241
|
+
assert.equal(typeof data.executionTimeMs, 'number', 'executionTimeMs should be number');
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
test('should return properly structured error response', async () => {
|
|
245
|
+
const result = await client.callTool('evaluate_script', {});
|
|
246
|
+
|
|
247
|
+
assertValidMCPResponse(result);
|
|
248
|
+
// Validation errors should have isError true
|
|
249
|
+
assert.equal(result.isError, true, 'Validation error should have isError=true');
|
|
250
|
+
});
|
|
251
|
+
|
|
252
|
+
test('should return JSON-formatted text content', async () => {
|
|
253
|
+
const result = await client.callTool('evaluate_script', {
|
|
254
|
+
script: '1 + 1'
|
|
255
|
+
});
|
|
256
|
+
|
|
257
|
+
assertValidMCPResponse(result);
|
|
258
|
+
|
|
259
|
+
// Verify content is valid JSON
|
|
260
|
+
const text = result.content[0].text;
|
|
261
|
+
let parsed;
|
|
262
|
+
assert.doesNotThrow(() => {
|
|
263
|
+
parsed = JSON.parse(text);
|
|
264
|
+
}, 'Content should be valid JSON');
|
|
265
|
+
|
|
266
|
+
assert.ok(typeof parsed === 'object', 'Parsed content should be an object');
|
|
267
|
+
});
|
|
268
|
+
});
|
|
269
|
+
|
|
270
|
+
// Tool metadata tests
|
|
271
|
+
describe('Tool Metadata', () => {
|
|
272
|
+
test('should be listed in available tools', async () => {
|
|
273
|
+
const tools = await client.listTools();
|
|
274
|
+
const toolNames = tools.map(t => t.name);
|
|
275
|
+
|
|
276
|
+
assert.ok(toolNames.includes('evaluate_script'), 'evaluate_script should be in tool list');
|
|
277
|
+
});
|
|
278
|
+
|
|
279
|
+
test('should have correct input schema', async () => {
|
|
280
|
+
const tools = await client.listTools();
|
|
281
|
+
const evalTool = tools.find(t => t.name === 'evaluate_script');
|
|
282
|
+
|
|
283
|
+
assert.ok(evalTool, 'Tool should exist');
|
|
284
|
+
assert.ok(evalTool.inputSchema, 'Tool should have inputSchema');
|
|
285
|
+
assert.equal(evalTool.inputSchema.type, 'object', 'Schema type should be object');
|
|
286
|
+
|
|
287
|
+
// Check required fields
|
|
288
|
+
assert.ok(evalTool.inputSchema.required.includes('script'), 'script should be required');
|
|
289
|
+
|
|
290
|
+
// Check properties
|
|
291
|
+
const props = evalTool.inputSchema.properties;
|
|
292
|
+
assert.ok(props.script, 'Should have script property');
|
|
293
|
+
assert.ok(props.siteId, 'Should have siteId property');
|
|
294
|
+
assert.ok(props.locale, 'Should have locale property');
|
|
295
|
+
assert.ok(props.timeout, 'Should have timeout property');
|
|
296
|
+
});
|
|
297
|
+
|
|
298
|
+
test('should have description', async () => {
|
|
299
|
+
const tools = await client.listTools();
|
|
300
|
+
const evalTool = tools.find(t => t.name === 'evaluate_script');
|
|
301
|
+
|
|
302
|
+
assert.ok(evalTool.description, 'Tool should have description');
|
|
303
|
+
assert.ok(evalTool.description.length > 20, 'Description should be meaningful');
|
|
304
|
+
});
|
|
305
|
+
});
|
|
306
|
+
|
|
307
|
+
// Performance tests
|
|
308
|
+
describe('Performance', () => {
|
|
309
|
+
test('should complete simple evaluation within timeout', async () => {
|
|
310
|
+
const startTime = Date.now();
|
|
311
|
+
|
|
312
|
+
const result = await client.callTool('evaluate_script', {
|
|
313
|
+
script: '1 + 1',
|
|
314
|
+
timeout: 10000
|
|
315
|
+
});
|
|
316
|
+
|
|
317
|
+
const elapsed = Date.now() - startTime;
|
|
318
|
+
|
|
319
|
+
assertSuccessResponse(result);
|
|
320
|
+
assert.ok(elapsed < 10000, `Should complete within timeout (took ${elapsed}ms)`);
|
|
321
|
+
});
|
|
322
|
+
|
|
323
|
+
test('should report accurate execution time', async () => {
|
|
324
|
+
const result = await client.callTool('evaluate_script', {
|
|
325
|
+
script: '1 + 1'
|
|
326
|
+
});
|
|
327
|
+
|
|
328
|
+
assertSuccessResponse(result);
|
|
329
|
+
|
|
330
|
+
const data = parseResultJSON(result);
|
|
331
|
+
// Execution time should be positive and reasonable
|
|
332
|
+
assert.ok(data.executionTimeMs > 0, 'Execution time should be positive');
|
|
333
|
+
assert.ok(data.executionTimeMs < 15000, 'Execution time should be less than 15 seconds');
|
|
334
|
+
});
|
|
335
|
+
});
|
|
336
|
+
|
|
337
|
+
// Multi-step workflow tests
|
|
338
|
+
describe('Multi-step Workflows', () => {
|
|
339
|
+
test('should execute multiple scripts sequentially', async () => {
|
|
340
|
+
// First evaluation
|
|
341
|
+
const result1 = await client.callTool('evaluate_script', {
|
|
342
|
+
script: '1 + 1'
|
|
343
|
+
});
|
|
344
|
+
assertSuccessResponse(result1);
|
|
345
|
+
|
|
346
|
+
// Clear buffers between calls
|
|
347
|
+
client.clearAllBuffers();
|
|
348
|
+
|
|
349
|
+
// Second evaluation
|
|
350
|
+
const result2 = await client.callTool('evaluate_script', {
|
|
351
|
+
script: '2 + 2'
|
|
352
|
+
});
|
|
353
|
+
assertSuccessResponse(result2);
|
|
354
|
+
|
|
355
|
+
// Both should have succeeded independently
|
|
356
|
+
const data1 = parseResultJSON(result1);
|
|
357
|
+
const data2 = parseResultJSON(result2);
|
|
358
|
+
|
|
359
|
+
assert.equal(data1.result, '2', 'First result should be 2');
|
|
360
|
+
// Note: Mock server returns 'MockResult' for unrecognized expressions
|
|
361
|
+
assert.ok(data2.result, 'Second result should exist');
|
|
362
|
+
});
|
|
363
|
+
|
|
364
|
+
test('should handle alternating success and error scenarios', async () => {
|
|
365
|
+
// Success case
|
|
366
|
+
const successResult = await client.callTool('evaluate_script', {
|
|
367
|
+
script: '1 + 1'
|
|
368
|
+
});
|
|
369
|
+
assertSuccessResponse(successResult);
|
|
370
|
+
|
|
371
|
+
client.clearAllBuffers();
|
|
372
|
+
|
|
373
|
+
// Error case (missing script)
|
|
374
|
+
const errorResult = await client.callTool('evaluate_script', {});
|
|
375
|
+
assertValidMCPResponse(errorResult);
|
|
376
|
+
assert.equal(errorResult.isError, true, 'Should be an error');
|
|
377
|
+
|
|
378
|
+
client.clearAllBuffers();
|
|
379
|
+
|
|
380
|
+
// Success case again (should still work after error)
|
|
381
|
+
const successResult2 = await client.callTool('evaluate_script', {
|
|
382
|
+
script: '1 + 1'
|
|
383
|
+
});
|
|
384
|
+
assertSuccessResponse(successResult2);
|
|
385
|
+
});
|
|
386
|
+
});
|
|
387
|
+
});
|
|
@@ -556,15 +556,21 @@ describe('generate_cartridge_structure Programmatic Tests', () => {
|
|
|
556
556
|
fullProjectSetup: false
|
|
557
557
|
});
|
|
558
558
|
|
|
559
|
-
// The tool should
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
assert.equal(response.success, true, 'Should handle long cartridge names if accepted');
|
|
565
|
-
|
|
559
|
+
// The tool should return a response with success: false for names exceeding 64 characters
|
|
560
|
+
const response = parseToolResponse(result);
|
|
561
|
+
|
|
562
|
+
if (response.success) {
|
|
563
|
+
// If somehow accepted, verify structure was created
|
|
566
564
|
const cartridgeDir = join(testDir, 'cartridges', longCartridgeName);
|
|
567
|
-
assert.ok(await directoryExists(cartridgeDir), 'Should create directory with long name');
|
|
565
|
+
assert.ok(await directoryExists(cartridgeDir), 'Should create directory with long name if accepted');
|
|
566
|
+
} else {
|
|
567
|
+
// Should provide clear error message about name constraints
|
|
568
|
+
assert.ok(
|
|
569
|
+
response.message.includes('too long') ||
|
|
570
|
+
response.message.includes('64 characters') ||
|
|
571
|
+
response.message.includes('valid identifier'),
|
|
572
|
+
`Should provide clear error for long names, got: ${response.message}`
|
|
573
|
+
);
|
|
568
574
|
}
|
|
569
575
|
});
|
|
570
576
|
});
|