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
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace Roots Management for SFCC MCP Server
|
|
3
|
+
*
|
|
4
|
+
* This module handles secure discovery and validation of workspace roots
|
|
5
|
+
* provided by MCP clients, enabling automatic dw.json discovery from the
|
|
6
|
+
* VS Code workspace without requiring absolute paths.
|
|
7
|
+
*
|
|
8
|
+
* Configuration Discovery Priority:
|
|
9
|
+
* 1. CLI parameter (--dw-json) - handled in main.ts
|
|
10
|
+
* 2. Environment variables (SFCC_*) - handled in main.ts
|
|
11
|
+
* 3. MCP workspace roots (this module) - called after client connects
|
|
12
|
+
*
|
|
13
|
+
* This discovery mechanism is preferred over CWD-based search because
|
|
14
|
+
* MCP servers often start with cwd set to the user's home directory,
|
|
15
|
+
* not the project directory. The MCP workspace roots capability provides
|
|
16
|
+
* the correct project context from VS Code/Copilot/Cursor.
|
|
17
|
+
*
|
|
18
|
+
* Security considerations:
|
|
19
|
+
* - Only file:// URIs are accepted (per MCP spec)
|
|
20
|
+
* - Path traversal attacks are prevented
|
|
21
|
+
* - System directories are blocked
|
|
22
|
+
* - Symlink resolution is handled securely
|
|
23
|
+
*/
|
|
24
|
+
import { existsSync, realpathSync, statSync } from 'fs';
|
|
25
|
+
import { resolve, normalize, join, isAbsolute } from 'path';
|
|
26
|
+
import { fileURLToPath } from 'url';
|
|
27
|
+
import { Logger } from '../utils/logger.js';
|
|
28
|
+
import { loadSecureDwJson } from './dw-json-loader.js';
|
|
29
|
+
/**
|
|
30
|
+
* Dangerous system paths that should never be accessed
|
|
31
|
+
* These are blocked to prevent accidental or malicious access to sensitive areas
|
|
32
|
+
*/
|
|
33
|
+
const BLOCKED_SYSTEM_PATHS = [
|
|
34
|
+
'/etc',
|
|
35
|
+
'/proc',
|
|
36
|
+
'/sys',
|
|
37
|
+
'/dev',
|
|
38
|
+
'/root',
|
|
39
|
+
'/var/log',
|
|
40
|
+
'/var/run',
|
|
41
|
+
'/boot',
|
|
42
|
+
'/sbin',
|
|
43
|
+
'/bin',
|
|
44
|
+
// Windows system paths
|
|
45
|
+
'C:\\Windows',
|
|
46
|
+
'C:\\Program Files',
|
|
47
|
+
'C:\\ProgramData',
|
|
48
|
+
// Common sensitive directories
|
|
49
|
+
'.ssh',
|
|
50
|
+
'.gnupg',
|
|
51
|
+
'.aws',
|
|
52
|
+
'.config/gcloud',
|
|
53
|
+
];
|
|
54
|
+
/**
|
|
55
|
+
* Allowed path prefixes for workspace roots
|
|
56
|
+
* These are the typical locations where development projects reside
|
|
57
|
+
*/
|
|
58
|
+
const ALLOWED_PATH_PATTERNS = [
|
|
59
|
+
// User home directories
|
|
60
|
+
/^\/Users\/[^/]+\//i, // macOS
|
|
61
|
+
/^\/home\/[^/]+\//i, // Linux (allow all users, not just runner)
|
|
62
|
+
/^C:\\Users\\[^\\]+\\/i, // Windows
|
|
63
|
+
// Common project directories
|
|
64
|
+
/^\/opt\//i,
|
|
65
|
+
/^\/var\/www\//i,
|
|
66
|
+
/^\/srv\//i,
|
|
67
|
+
// Temp directories (for testing)
|
|
68
|
+
/^\/tmp\//i,
|
|
69
|
+
/^\/private\/tmp\//i, // macOS real temp path
|
|
70
|
+
/^\/var\/folders\//i, // macOS temp
|
|
71
|
+
/^\/private\/var\/folders\//i, // macOS real temp path (symlink resolved)
|
|
72
|
+
/^C:\\Temp\\/i, // Windows temp
|
|
73
|
+
// CI workspace paths
|
|
74
|
+
/^\/home\/runner\/work\//i, // GitHub Actions
|
|
75
|
+
];
|
|
76
|
+
/**
|
|
77
|
+
* Validates that a file URI is safe and converts it to an absolute path
|
|
78
|
+
*
|
|
79
|
+
* @param uri - The file:// URI to validate
|
|
80
|
+
* @returns Validation result with resolved path or error
|
|
81
|
+
*/
|
|
82
|
+
function validateFileUri(uri) {
|
|
83
|
+
// Check for null bytes and other dangerous characters
|
|
84
|
+
if (uri.includes('\0') || uri.includes('\x00')) {
|
|
85
|
+
return { isValid: false, error: 'URI contains invalid characters' };
|
|
86
|
+
}
|
|
87
|
+
// Verify it's a file:// URI
|
|
88
|
+
if (!uri.startsWith('file://')) {
|
|
89
|
+
return { isValid: false, error: 'Only file:// URIs are supported for workspace roots' };
|
|
90
|
+
}
|
|
91
|
+
try {
|
|
92
|
+
// Convert file URI to path securely
|
|
93
|
+
const path = fileURLToPath(uri);
|
|
94
|
+
return validatePath(path);
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
return {
|
|
98
|
+
isValid: false,
|
|
99
|
+
error: `Invalid file URI: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Validates that a file path is safe to use as a workspace root
|
|
105
|
+
*
|
|
106
|
+
* @param inputPath - The path to validate
|
|
107
|
+
* @returns Validation result with resolved path or error
|
|
108
|
+
*/
|
|
109
|
+
function validatePath(inputPath) {
|
|
110
|
+
// Check for null bytes
|
|
111
|
+
if (inputPath.includes('\0')) {
|
|
112
|
+
return { isValid: false, error: 'Path contains invalid characters' };
|
|
113
|
+
}
|
|
114
|
+
// Check for excessively long paths (DoS prevention)
|
|
115
|
+
if (inputPath.length > 4096) {
|
|
116
|
+
return { isValid: false, error: 'Path is too long' };
|
|
117
|
+
}
|
|
118
|
+
// Normalize and resolve the path
|
|
119
|
+
let resolvedPath;
|
|
120
|
+
try {
|
|
121
|
+
resolvedPath = normalize(resolve(inputPath));
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
return { isValid: false, error: 'Failed to resolve path' };
|
|
125
|
+
}
|
|
126
|
+
// Verify it's an absolute path
|
|
127
|
+
if (!isAbsolute(resolvedPath)) {
|
|
128
|
+
return { isValid: false, error: 'Path must be absolute' };
|
|
129
|
+
}
|
|
130
|
+
// Check against blocked system paths
|
|
131
|
+
const lowerPath = resolvedPath.toLowerCase();
|
|
132
|
+
for (const blocked of BLOCKED_SYSTEM_PATHS) {
|
|
133
|
+
const blockedLower = blocked.toLowerCase();
|
|
134
|
+
if (lowerPath === blockedLower || lowerPath.startsWith(`${blockedLower}/`) || lowerPath.startsWith(`${blockedLower}\\`)) {
|
|
135
|
+
return { isValid: false, error: 'Access to system directories is not allowed' };
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
// Check that path matches allowed patterns
|
|
139
|
+
const matchesAllowed = ALLOWED_PATH_PATTERNS.some(pattern => pattern.test(resolvedPath));
|
|
140
|
+
if (!matchesAllowed) {
|
|
141
|
+
return {
|
|
142
|
+
isValid: false,
|
|
143
|
+
error: 'Path is outside of allowed workspace directories',
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
// Verify the path exists and is a directory
|
|
147
|
+
try {
|
|
148
|
+
if (!existsSync(resolvedPath)) {
|
|
149
|
+
return { isValid: false, error: 'Path does not exist' };
|
|
150
|
+
}
|
|
151
|
+
const stats = statSync(resolvedPath);
|
|
152
|
+
if (!stats.isDirectory()) {
|
|
153
|
+
return { isValid: false, error: 'Path is not a directory' };
|
|
154
|
+
}
|
|
155
|
+
// Resolve symlinks to verify the real path is also safe
|
|
156
|
+
const realPath = realpathSync(resolvedPath);
|
|
157
|
+
if (realPath !== resolvedPath) {
|
|
158
|
+
// Re-validate the resolved symlink path
|
|
159
|
+
const symlinkValidation = validatePath(realPath);
|
|
160
|
+
if (!symlinkValidation.isValid) {
|
|
161
|
+
return {
|
|
162
|
+
isValid: false,
|
|
163
|
+
error: `Symlink target is not allowed: ${symlinkValidation.error}`,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
resolvedPath = realPath;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
return {
|
|
171
|
+
isValid: false,
|
|
172
|
+
error: `Cannot access path: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
return { isValid: true, resolvedPath };
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Service for managing workspace roots from MCP clients
|
|
179
|
+
*
|
|
180
|
+
* This class provides secure handling of workspace roots, enabling
|
|
181
|
+
* automatic discovery of configuration files (like dw.json) in the
|
|
182
|
+
* agent's working directories.
|
|
183
|
+
*/
|
|
184
|
+
export class WorkspaceRootsService {
|
|
185
|
+
roots = [];
|
|
186
|
+
logger;
|
|
187
|
+
constructor(logger) {
|
|
188
|
+
this.logger = logger ?? Logger.getInstance();
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Update workspace roots from MCP client response
|
|
192
|
+
*
|
|
193
|
+
* @param clientRoots - Array of roots from the MCP client (roots/list response)
|
|
194
|
+
* @returns Array of successfully validated roots
|
|
195
|
+
*/
|
|
196
|
+
updateRoots(clientRoots) {
|
|
197
|
+
this.roots = [];
|
|
198
|
+
for (const root of clientRoots) {
|
|
199
|
+
const validation = validateFileUri(root.uri);
|
|
200
|
+
if (validation.isValid && validation.resolvedPath) {
|
|
201
|
+
this.roots.push({
|
|
202
|
+
uri: root.uri,
|
|
203
|
+
path: validation.resolvedPath,
|
|
204
|
+
name: root.name,
|
|
205
|
+
});
|
|
206
|
+
this.logger.debug(`Validated workspace root: ${root.name ?? root.uri} -> ${validation.resolvedPath}`);
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
this.logger.debug(`Rejected workspace root: ${root.uri} - ${validation.error}`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
this.logger.log(`Workspace roots updated: ${this.roots.length} valid root(s)`);
|
|
213
|
+
return [...this.roots];
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Get all validated workspace roots
|
|
217
|
+
*/
|
|
218
|
+
getRoots() {
|
|
219
|
+
return [...this.roots];
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Search for a file in all workspace roots
|
|
223
|
+
*
|
|
224
|
+
* @param filename - The filename to search for (e.g., 'dw.json')
|
|
225
|
+
* @param maxDepth - Maximum directory depth to search (default: 2)
|
|
226
|
+
* @returns The first matching file path, or undefined if not found
|
|
227
|
+
*/
|
|
228
|
+
findFile(filename, maxDepth = 2) {
|
|
229
|
+
// Validate filename to prevent path traversal
|
|
230
|
+
if (filename.includes('/') || filename.includes('\\') || filename.includes('..')) {
|
|
231
|
+
this.logger.debug(`Invalid filename rejected: ${filename}`);
|
|
232
|
+
return undefined;
|
|
233
|
+
}
|
|
234
|
+
for (const root of this.roots) {
|
|
235
|
+
const found = this.searchInDirectory(root.path, filename, 0, maxDepth);
|
|
236
|
+
if (found) {
|
|
237
|
+
this.logger.debug(`Found ${filename} in workspace root: ${found}`);
|
|
238
|
+
return found;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
return undefined;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Recursively search for a file in a directory
|
|
245
|
+
*
|
|
246
|
+
* @param directory - Directory to search
|
|
247
|
+
* @param filename - Filename to find
|
|
248
|
+
* @param currentDepth - Current recursion depth
|
|
249
|
+
* @param maxDepth - Maximum depth to search
|
|
250
|
+
* @returns File path if found, undefined otherwise
|
|
251
|
+
*/
|
|
252
|
+
searchInDirectory(directory, filename, currentDepth, maxDepth) {
|
|
253
|
+
// Check immediate file
|
|
254
|
+
const filePath = join(directory, filename);
|
|
255
|
+
if (existsSync(filePath)) {
|
|
256
|
+
try {
|
|
257
|
+
const stats = statSync(filePath);
|
|
258
|
+
if (stats.isFile()) {
|
|
259
|
+
return filePath;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
catch {
|
|
263
|
+
// Ignore access errors
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
// Don't recurse deeper if at max depth
|
|
267
|
+
if (currentDepth >= maxDepth) {
|
|
268
|
+
return undefined;
|
|
269
|
+
}
|
|
270
|
+
// Search subdirectories (limited set to avoid excessive scanning)
|
|
271
|
+
const allowedSubdirs = ['cartridges', 'config', '.vscode', 'sfcc'];
|
|
272
|
+
for (const subdir of allowedSubdirs) {
|
|
273
|
+
const subdirPath = join(directory, subdir);
|
|
274
|
+
try {
|
|
275
|
+
if (existsSync(subdirPath) && statSync(subdirPath).isDirectory()) {
|
|
276
|
+
const found = this.searchInDirectory(subdirPath, filename, currentDepth + 1, maxDepth);
|
|
277
|
+
if (found) {
|
|
278
|
+
return found;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
catch {
|
|
283
|
+
// Ignore access errors
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
return undefined;
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Check if a given path is within any of the validated workspace roots
|
|
290
|
+
*
|
|
291
|
+
* This is useful for validating that file operations stay within
|
|
292
|
+
* the allowed workspace boundaries.
|
|
293
|
+
*
|
|
294
|
+
* @param filePath - The path to check
|
|
295
|
+
* @returns true if the path is within a workspace root
|
|
296
|
+
*/
|
|
297
|
+
isPathWithinRoots(filePath) {
|
|
298
|
+
try {
|
|
299
|
+
// Normalize and resolve the path
|
|
300
|
+
const normalizedPath = normalize(resolve(filePath));
|
|
301
|
+
// For existing paths, resolve symlinks to get the real path
|
|
302
|
+
// For non-existing paths (like potential new files), use the normalized path
|
|
303
|
+
let checkPath = normalizedPath;
|
|
304
|
+
if (existsSync(normalizedPath)) {
|
|
305
|
+
checkPath = realpathSync(normalizedPath);
|
|
306
|
+
}
|
|
307
|
+
else {
|
|
308
|
+
// For non-existing paths, try to resolve symlinks in the parent directory chain
|
|
309
|
+
// This handles cases like /var/folders on macOS which is a symlink to /private/var/folders
|
|
310
|
+
let parentPath = normalizedPath;
|
|
311
|
+
while (parentPath !== '/') {
|
|
312
|
+
const parent = resolve(parentPath, '..');
|
|
313
|
+
if (parent === parentPath) {
|
|
314
|
+
break;
|
|
315
|
+
}
|
|
316
|
+
parentPath = parent;
|
|
317
|
+
if (existsSync(parentPath)) {
|
|
318
|
+
// Found an existing parent, resolve its realpath and reconstruct
|
|
319
|
+
const realParent = realpathSync(parentPath);
|
|
320
|
+
const relativePart = normalizedPath.substring(parentPath.length);
|
|
321
|
+
checkPath = realParent + relativePart;
|
|
322
|
+
break;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
return this.roots.some(root => {
|
|
327
|
+
return checkPath.startsWith(`${root.path}/`) || checkPath.startsWith(`${root.path}\\`) || checkPath === root.path;
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
catch {
|
|
331
|
+
return false;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Clear all workspace roots
|
|
336
|
+
*/
|
|
337
|
+
clear() {
|
|
338
|
+
this.roots = [];
|
|
339
|
+
this.logger.debug('Workspace roots cleared');
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Discover dw.json from MCP client workspace roots
|
|
343
|
+
*
|
|
344
|
+
* This is the main entry point for workspace-based config discovery.
|
|
345
|
+
* It takes raw roots from the MCP client, validates them, searches for
|
|
346
|
+
* dw.json, and loads the configuration.
|
|
347
|
+
*
|
|
348
|
+
* @param clientRoots - Raw roots array from server.listRoots() response
|
|
349
|
+
* @returns Discovery result with config if found
|
|
350
|
+
*/
|
|
351
|
+
discoverDwJson(clientRoots) {
|
|
352
|
+
this.logger.log('[WorkspaceRoots] Starting dw.json discovery from client roots');
|
|
353
|
+
// Log what we received from the client
|
|
354
|
+
if (!clientRoots) {
|
|
355
|
+
this.logger.log('[WorkspaceRoots] No roots array received from client (undefined)');
|
|
356
|
+
return { success: false, reason: 'No roots array received from client' };
|
|
357
|
+
}
|
|
358
|
+
this.logger.log(`[WorkspaceRoots] Received ${clientRoots.length} root(s) from client`);
|
|
359
|
+
if (clientRoots.length === 0) {
|
|
360
|
+
this.logger.log('[WorkspaceRoots] Client returned empty roots array');
|
|
361
|
+
return { success: false, reason: 'Client returned empty roots array', rootsReceived: 0 };
|
|
362
|
+
}
|
|
363
|
+
// Log each root we received
|
|
364
|
+
clientRoots.forEach((root, index) => {
|
|
365
|
+
this.logger.log(`[WorkspaceRoots] Root ${index + 1}: uri="${root.uri}", name="${root.name ?? '(none)'}"`);
|
|
366
|
+
});
|
|
367
|
+
// Validate and store the workspace roots
|
|
368
|
+
const validRoots = this.updateRoots(clientRoots);
|
|
369
|
+
this.logger.log(`[WorkspaceRoots] After validation: ${validRoots.length} valid root(s)`);
|
|
370
|
+
if (validRoots.length === 0) {
|
|
371
|
+
this.logger.log('[WorkspaceRoots] No valid roots after security validation');
|
|
372
|
+
return {
|
|
373
|
+
success: false,
|
|
374
|
+
reason: 'No valid workspace roots after security validation',
|
|
375
|
+
rootsReceived: clientRoots.length,
|
|
376
|
+
validRoots: 0,
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
// Log validated roots
|
|
380
|
+
validRoots.forEach((root, index) => {
|
|
381
|
+
this.logger.log(`[WorkspaceRoots] Valid root ${index + 1}: path="${root.path}"`);
|
|
382
|
+
});
|
|
383
|
+
// Search for dw.json in workspace roots
|
|
384
|
+
this.logger.log('[WorkspaceRoots] Searching for dw.json in workspace roots...');
|
|
385
|
+
const dwJsonPath = this.findFile('dw.json');
|
|
386
|
+
if (!dwJsonPath) {
|
|
387
|
+
this.logger.log('[WorkspaceRoots] No dw.json found in any workspace root');
|
|
388
|
+
return {
|
|
389
|
+
success: false,
|
|
390
|
+
reason: 'No dw.json found in workspace roots',
|
|
391
|
+
rootsReceived: clientRoots.length,
|
|
392
|
+
validRoots: validRoots.length,
|
|
393
|
+
};
|
|
394
|
+
}
|
|
395
|
+
this.logger.log(`[WorkspaceRoots] Found dw.json at: ${dwJsonPath}`);
|
|
396
|
+
// Load and validate the dw.json
|
|
397
|
+
try {
|
|
398
|
+
const config = loadSecureDwJson(dwJsonPath);
|
|
399
|
+
this.logger.log('[WorkspaceRoots] Successfully loaded dw.json');
|
|
400
|
+
this.logger.log(`[WorkspaceRoots] hostname: ${config.hostname}`);
|
|
401
|
+
this.logger.log(`[WorkspaceRoots] username: ${config.username ? '(set)' : '(not set)'}`);
|
|
402
|
+
this.logger.log(`[WorkspaceRoots] password: ${config.password ? '(set)' : '(not set)'}`);
|
|
403
|
+
this.logger.log(`[WorkspaceRoots] client-id: ${config['client-id'] ? '(set)' : '(not set)'}`);
|
|
404
|
+
this.logger.log(`[WorkspaceRoots] client-secret: ${config['client-secret'] ? '(set)' : '(not set)'}`);
|
|
405
|
+
return {
|
|
406
|
+
success: true,
|
|
407
|
+
config,
|
|
408
|
+
dwJsonPath,
|
|
409
|
+
rootsReceived: clientRoots.length,
|
|
410
|
+
validRoots: validRoots.length,
|
|
411
|
+
};
|
|
412
|
+
}
|
|
413
|
+
catch (error) {
|
|
414
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
415
|
+
this.logger.error(`[WorkspaceRoots] Failed to load dw.json: ${errorMessage}`);
|
|
416
|
+
return {
|
|
417
|
+
success: false,
|
|
418
|
+
reason: `Failed to load dw.json: ${errorMessage}`,
|
|
419
|
+
dwJsonPath,
|
|
420
|
+
rootsReceived: clientRoots.length,
|
|
421
|
+
validRoots: validRoots.length,
|
|
422
|
+
};
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Validate a path for dw.json access
|
|
428
|
+
*
|
|
429
|
+
* This is a standalone function that can be used by the dw-json-loader
|
|
430
|
+
* to validate paths before attempting to read them.
|
|
431
|
+
*
|
|
432
|
+
* @param filePath - The path to validate
|
|
433
|
+
* @returns Object with isValid flag and optional error message
|
|
434
|
+
*/
|
|
435
|
+
export function validateDwJsonPath(filePath) {
|
|
436
|
+
// First validate the directory containing the file
|
|
437
|
+
const directory = resolve(filePath, '..');
|
|
438
|
+
const validation = validatePath(directory);
|
|
439
|
+
if (!validation.isValid) {
|
|
440
|
+
return validation;
|
|
441
|
+
}
|
|
442
|
+
// Additional validation: ensure it's a .json file
|
|
443
|
+
if (!filePath.toLowerCase().endsWith('.json')) {
|
|
444
|
+
return { isValid: false, error: 'Only .json files are allowed' };
|
|
445
|
+
}
|
|
446
|
+
return { isValid: true };
|
|
447
|
+
}
|
|
448
|
+
//# sourceMappingURL=workspace-roots.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-roots.js","sourceRoot":"","sources":["../../src/config/workspace-roots.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":";AAAA,sFAAsF"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { BaseToolHandler, ToolExecutionContext, GenericToolSpec, HandlerContext, ToolArguments } from './base-handler.js';
|
|
2
|
+
import { ClientFactory } from './client-factory.js';
|
|
3
|
+
/**
|
|
4
|
+
* Abstract base class for handlers that need a client with factory-based creation.
|
|
5
|
+
* This provides a simpler alternative to SimpleClientHandler when you need
|
|
6
|
+
* access to ClientFactory for more complex client creation scenarios.
|
|
7
|
+
*
|
|
8
|
+
* Use this when:
|
|
9
|
+
* - Your client needs ClientFactory for creation (e.g., requires config/credentials)
|
|
10
|
+
* - You need a simple single-client handler pattern
|
|
11
|
+
*
|
|
12
|
+
* Use SimpleClientHandler when:
|
|
13
|
+
* - Your client has a simple constructor with no dependencies
|
|
14
|
+
* - You want the most minimal boilerplate
|
|
15
|
+
*/
|
|
16
|
+
export declare abstract class AbstractClientHandler<TToolName extends string, TClient> extends BaseToolHandler<TToolName> {
|
|
17
|
+
protected client: TClient | null;
|
|
18
|
+
protected clientFactory: ClientFactory;
|
|
19
|
+
constructor(context: HandlerContext, subLoggerName: string);
|
|
20
|
+
/**
|
|
21
|
+
* Create the client for this handler.
|
|
22
|
+
* Returns null if the client cannot be created (e.g., missing credentials).
|
|
23
|
+
*/
|
|
24
|
+
protected abstract createClient(): TClient | null;
|
|
25
|
+
/**
|
|
26
|
+
* Get the context key used to expose the client in the execution context.
|
|
27
|
+
*/
|
|
28
|
+
protected abstract getClientContextKey(): string;
|
|
29
|
+
/**
|
|
30
|
+
* Get a descriptive name for the client (used in logging and error messages).
|
|
31
|
+
*/
|
|
32
|
+
protected abstract getClientDisplayName(): string;
|
|
33
|
+
/**
|
|
34
|
+
* Get the error message when the client is not available.
|
|
35
|
+
* Override this for custom error messages.
|
|
36
|
+
*/
|
|
37
|
+
protected getClientRequiredError(): string;
|
|
38
|
+
protected onInitialize(): Promise<void>;
|
|
39
|
+
protected onDispose(): Promise<void>;
|
|
40
|
+
protected createExecutionContext(): Promise<ToolExecutionContext>;
|
|
41
|
+
/**
|
|
42
|
+
* Abstract method to get tool configuration.
|
|
43
|
+
* Each concrete handler implements this with their specific config.
|
|
44
|
+
*/
|
|
45
|
+
protected abstract getToolConfig(): Record<TToolName, GenericToolSpec<ToolArguments, any>>;
|
|
46
|
+
/**
|
|
47
|
+
* Abstract method to get tool name set for O(1) lookup.
|
|
48
|
+
* Each concrete handler implements this with their specific tool set.
|
|
49
|
+
*/
|
|
50
|
+
protected abstract getToolNameSet(): Set<TToolName>;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=abstract-client-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstract-client-handler.d.ts","sourceRoot":"","sources":["../../../src/core/handlers/abstract-client-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC1H,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;;;;;;;;;GAYG;AACH,8BAAsB,qBAAqB,CAAC,SAAS,SAAS,MAAM,EAAE,OAAO,CAAE,SAAQ,eAAe,CAAC,SAAS,CAAC;IAC/G,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAQ;IACxC,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;gBAE3B,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM;IAK1D;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,OAAO,GAAG,IAAI;IAEjD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,mBAAmB,IAAI,MAAM;IAEhD;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,oBAAoB,IAAI,MAAM;IAEjD;;;OAGG;IACH,SAAS,CAAC,sBAAsB,IAAI,MAAM;cAI1B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;cAO7B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;cAK1B,sBAAsB,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAYvE;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,aAAa,IAAI,MAAM,CAAC,SAAS,EAAE,eAAe,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAE1F;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,IAAI,GAAG,CAAC,SAAS,CAAC;CACpD"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { BaseToolHandler } from './base-handler.js';
|
|
2
|
+
import { ClientFactory } from './client-factory.js';
|
|
3
|
+
/**
|
|
4
|
+
* Abstract base class for handlers that need a client with factory-based creation.
|
|
5
|
+
* This provides a simpler alternative to SimpleClientHandler when you need
|
|
6
|
+
* access to ClientFactory for more complex client creation scenarios.
|
|
7
|
+
*
|
|
8
|
+
* Use this when:
|
|
9
|
+
* - Your client needs ClientFactory for creation (e.g., requires config/credentials)
|
|
10
|
+
* - You need a simple single-client handler pattern
|
|
11
|
+
*
|
|
12
|
+
* Use SimpleClientHandler when:
|
|
13
|
+
* - Your client has a simple constructor with no dependencies
|
|
14
|
+
* - You want the most minimal boilerplate
|
|
15
|
+
*/
|
|
16
|
+
export class AbstractClientHandler extends BaseToolHandler {
|
|
17
|
+
client = null;
|
|
18
|
+
clientFactory;
|
|
19
|
+
constructor(context, subLoggerName) {
|
|
20
|
+
super(context, subLoggerName);
|
|
21
|
+
this.clientFactory = new ClientFactory(context, this.logger);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Get the error message when the client is not available.
|
|
25
|
+
* Override this for custom error messages.
|
|
26
|
+
*/
|
|
27
|
+
getClientRequiredError() {
|
|
28
|
+
return `${this.getClientDisplayName()} client not initialized`;
|
|
29
|
+
}
|
|
30
|
+
async onInitialize() {
|
|
31
|
+
this.client = this.createClient();
|
|
32
|
+
if (this.client) {
|
|
33
|
+
this.logger.debug(`${this.getClientDisplayName()} client initialized`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async onDispose() {
|
|
37
|
+
this.client = null;
|
|
38
|
+
this.logger.debug(`${this.getClientDisplayName()} client disposed`);
|
|
39
|
+
}
|
|
40
|
+
async createExecutionContext() {
|
|
41
|
+
if (!this.client) {
|
|
42
|
+
throw new Error(this.getClientRequiredError());
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
handlerContext: this.context,
|
|
46
|
+
logger: this.logger,
|
|
47
|
+
[this.getClientContextKey()]: this.client,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=abstract-client-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstract-client-handler.js","sourceRoot":"","sources":["../../../src/core/handlers/abstract-client-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAwE,MAAM,mBAAmB,CAAC;AAC1H,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;;;;;;;;;GAYG;AACH,MAAM,OAAgB,qBAAyD,SAAQ,eAA0B;IACrG,MAAM,GAAmB,IAAI,CAAC;IAC9B,aAAa,CAAgB;IAEvC,YAAY,OAAuB,EAAE,aAAqB;QACxD,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC9B,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/D,CAAC;IAkBD;;;OAGG;IACO,sBAAsB;QAC9B,OAAO,GAAG,IAAI,CAAC,oBAAoB,EAAE,yBAAyB,CAAC;IACjE,CAAC;IAES,KAAK,CAAC,YAAY;QAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAES,KAAK,CAAC,SAAS;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;IACtE,CAAC;IAES,KAAK,CAAC,sBAAsB;QACpC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,OAAO;YACL,cAAc,EAAE,IAAI,CAAC,OAAO;YAC5B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM;SAC1C,CAAC;IACJ,CAAC;CAaF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { HandlerContext, ToolExecutionContext } from './base-handler.js';
|
|
2
|
+
import { SimpleClientHandler } from './simple-client-handler.js';
|
|
3
|
+
import { AgentInstructionsClient } from '../../clients/agent-instructions-client.js';
|
|
4
|
+
import { AgentInstructionToolName } from '../../tool-configs/agent-instructions-tool-config.js';
|
|
5
|
+
/**
|
|
6
|
+
* Handler for installing/merging AGENTS.md and skills into the user's project
|
|
7
|
+
*/
|
|
8
|
+
export declare class AgentInstructionsToolHandler extends SimpleClientHandler<AgentInstructionToolName, AgentInstructionsClient> {
|
|
9
|
+
private readonly instructionAdvisor;
|
|
10
|
+
private agentInstructionsClient;
|
|
11
|
+
constructor(context: HandlerContext);
|
|
12
|
+
/**
|
|
13
|
+
* Override to add instructionAdvisor to execution context
|
|
14
|
+
*/
|
|
15
|
+
protected createExecutionContext(): Promise<ToolExecutionContext>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=agent-instructions-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-instructions-handler.d.ts","sourceRoot":"","sources":["../../../src/core/handlers/agent-instructions-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAErF,OAAO,EAEL,wBAAwB,EAEzB,MAAM,sDAAsD,CAAC;AAG9D;;GAEG;AACH,qBAAa,4BAA6B,SAAQ,mBAAmB,CACnE,wBAAwB,EACxB,uBAAuB,CACxB;IACC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,uBAAuB,CAAwC;gBAE3D,OAAO,EAAE,cAAc;IAgBnC;;OAEG;cACsB,sBAAsB,IAAI,OAAO,CAAC,oBAAoB,CAAC;CAOjF"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { SimpleClientHandler } from './simple-client-handler.js';
|
|
2
|
+
import { AgentInstructionsClient } from '../../clients/agent-instructions-client.js';
|
|
3
|
+
import { InstructionAdvisor } from '../instruction-advisor.js';
|
|
4
|
+
import { AGENT_INSTRUCTION_TOOL_CONFIG, AGENT_INSTRUCTION_TOOL_NAMES_SET, } from '../../tool-configs/agent-instructions-tool-config.js';
|
|
5
|
+
import { WorkspaceRootsService } from '../../config/workspace-roots.js';
|
|
6
|
+
/**
|
|
7
|
+
* Handler for installing/merging AGENTS.md and skills into the user's project
|
|
8
|
+
*/
|
|
9
|
+
export class AgentInstructionsToolHandler extends SimpleClientHandler {
|
|
10
|
+
instructionAdvisor;
|
|
11
|
+
agentInstructionsClient = null;
|
|
12
|
+
constructor(context) {
|
|
13
|
+
const rootsService = context.workspaceRootsService ?? new WorkspaceRootsService(context.logger);
|
|
14
|
+
const client = new AgentInstructionsClient(rootsService);
|
|
15
|
+
super(context, 'AgentInstructions', {
|
|
16
|
+
toolConfig: AGENT_INSTRUCTION_TOOL_CONFIG,
|
|
17
|
+
toolNameSet: AGENT_INSTRUCTION_TOOL_NAMES_SET,
|
|
18
|
+
clientContextKey: 'agentInstructionsClient',
|
|
19
|
+
clientDisplayName: 'Agent instructions',
|
|
20
|
+
createClient: () => {
|
|
21
|
+
this.agentInstructionsClient = client;
|
|
22
|
+
return client;
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
this.instructionAdvisor = new InstructionAdvisor(client, context.logger);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Override to add instructionAdvisor to execution context
|
|
29
|
+
*/
|
|
30
|
+
async createExecutionContext() {
|
|
31
|
+
const baseContext = await super.createExecutionContext();
|
|
32
|
+
return {
|
|
33
|
+
...baseContext,
|
|
34
|
+
instructionAdvisor: this.instructionAdvisor,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=agent-instructions-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-instructions-handler.js","sourceRoot":"","sources":["../../../src/core/handlers/agent-instructions-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EACL,6BAA6B,EAE7B,gCAAgC,GACjC,MAAM,sDAAsD,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAExE;;GAEG;AACH,MAAM,OAAO,4BAA6B,SAAQ,mBAGjD;IACkB,kBAAkB,CAAqB;IAChD,uBAAuB,GAAmC,IAAI,CAAC;IAEvE,YAAY,OAAuB;QACjC,MAAM,YAAY,GAAG,OAAO,CAAC,qBAAqB,IAAI,IAAI,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChG,MAAM,MAAM,GAAG,IAAI,uBAAuB,CAAC,YAAY,CAAC,CAAC;QACzD,KAAK,CAAC,OAAO,EAAE,mBAAmB,EAAE;YAClC,UAAU,EAAE,6BAA6B;YACzC,WAAW,EAAE,gCAAgC;YAC7C,gBAAgB,EAAE,yBAAyB;YAC3C,iBAAiB,EAAE,oBAAoB;YACvC,YAAY,EAAE,GAAG,EAAE;gBACjB,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC;gBACtC,OAAO,MAAM,CAAC;YAChB,CAAC;SACF,CAAC,CAAC;QACH,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACgB,KAAK,CAAC,sBAAsB;QAC7C,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,sBAAsB,EAAE,CAAC;QACzD,OAAO;YACL,GAAG,WAAW;YACd,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;SAC5C,CAAC;IACJ,CAAC;CACF"}
|