sfcc-dev-mcp 1.0.19 → 1.0.21
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/dist/clients/logs/index.d.ts +13 -0
- package/dist/clients/logs/index.d.ts.map +1 -0
- package/dist/clients/logs/index.js +15 -0
- package/dist/clients/logs/index.js.map +1 -0
- package/dist/clients/logs/log-analyzer.d.ts +55 -0
- package/dist/clients/logs/log-analyzer.d.ts.map +1 -0
- package/dist/clients/logs/log-analyzer.js +228 -0
- package/dist/clients/logs/log-analyzer.js.map +1 -0
- package/dist/clients/logs/log-client.d.ts +87 -0
- package/dist/clients/logs/log-client.d.ts.map +1 -0
- package/dist/clients/logs/log-client.js +418 -0
- package/dist/clients/logs/log-client.js.map +1 -0
- package/dist/clients/logs/log-constants.d.ts +37 -0
- package/dist/clients/logs/log-constants.d.ts.map +1 -0
- package/dist/clients/logs/log-constants.js +37 -0
- package/dist/clients/logs/log-constants.js.map +1 -0
- package/dist/clients/logs/log-file-discovery.d.ts +64 -0
- package/dist/clients/logs/log-file-discovery.d.ts.map +1 -0
- package/dist/clients/logs/log-file-discovery.js +249 -0
- package/dist/clients/logs/log-file-discovery.js.map +1 -0
- package/dist/clients/logs/log-file-reader.d.ts +55 -0
- package/dist/clients/logs/log-file-reader.d.ts.map +1 -0
- package/dist/clients/logs/log-file-reader.js +207 -0
- package/dist/clients/logs/log-file-reader.js.map +1 -0
- package/dist/clients/logs/log-formatter.d.ts +90 -0
- package/dist/clients/logs/log-formatter.d.ts.map +1 -0
- package/dist/clients/logs/log-formatter.js +189 -0
- package/dist/clients/logs/log-formatter.js.map +1 -0
- package/dist/clients/logs/log-processor.d.ts +91 -0
- package/dist/clients/logs/log-processor.d.ts.map +1 -0
- package/dist/clients/logs/log-processor.js +328 -0
- package/dist/clients/logs/log-processor.js.map +1 -0
- package/dist/clients/logs/log-types.d.ts +58 -0
- package/dist/clients/logs/log-types.d.ts.map +1 -0
- package/dist/clients/logs/log-types.js +8 -0
- package/dist/clients/logs/log-types.js.map +1 -0
- package/dist/clients/logs/webdav-client-manager.d.ts +28 -0
- package/dist/clients/logs/webdav-client-manager.d.ts.map +1 -0
- package/dist/clients/logs/webdav-client-manager.js +77 -0
- package/dist/clients/logs/webdav-client-manager.js.map +1 -0
- package/dist/docs/dw_customer/CustomerMgr.md +3 -3
- package/dist/docs/dw_customer/Wallet.md +25 -0
- package/dist/docs/dw_extensions.payments/SalesforceAdyenPaymentIntent.md +156 -0
- package/dist/docs/dw_extensions.payments/SalesforceAdyenSavedPaymentMethod.md +258 -0
- package/dist/docs/dw_extensions.payments/SalesforcePayPalOrder.md +36 -0
- package/dist/docs/dw_extensions.payments/SalesforcePaymentIntent.md +1 -1
- package/dist/docs/dw_extensions.payments/SalesforcePaymentsHooks.md +68 -1
- package/dist/docs/dw_extensions.payments/SalesforcePaymentsMerchantAccount.md +154 -0
- package/dist/docs/dw_extensions.payments/SalesforcePaymentsMerchantAccountPaymentMethod.md +96 -0
- package/dist/docs/dw_extensions.payments/SalesforcePaymentsMgr.md +311 -2
- package/dist/docs/dw_extensions.payments/SalesforcePaymentsSiteConfiguration.md +26 -0
- package/dist/docs/dw_extensions.payments/SalesforcePaymentsZone.md +458 -0
- package/dist/docs/dw_order/OrderMgr.md +3 -3
- package/dist/docs/dw_order.hooks/BasketMergeHooks.md +4 -4
- package/dist/docs/dw_order.hooks/CheckoutHooks.md +42 -0
- package/dist/utils/path-resolver.d.ts +5 -0
- package/dist/utils/path-resolver.d.ts.map +1 -1
- package/dist/utils/path-resolver.js +27 -5
- package/dist/utils/path-resolver.js.map +1 -1
- package/package.json +9 -3
- package/.github/ISSUE_TEMPLATE/bug_report.yml +0 -131
- package/.github/ISSUE_TEMPLATE/config.yml +0 -9
- package/.github/ISSUE_TEMPLATE/documentation.yml +0 -117
- package/.github/ISSUE_TEMPLATE/feature_request.yml +0 -151
- package/.github/ISSUE_TEMPLATE/question.yml +0 -102
- package/.github/PULL_REQUEST_TEMPLATE/bug_fix.md +0 -59
- package/.github/PULL_REQUEST_TEMPLATE/documentation.md +0 -48
- package/.github/PULL_REQUEST_TEMPLATE/new_tool.md +0 -55
- package/.github/agents/official-docs-researcher.agent.md +0 -56
- package/.github/dependabot.yml +0 -65
- package/.github/instructions/mcp-node-tests.instructions.md +0 -30
- package/.github/instructions/mcp-yml-tests.instructions.md +0 -27
- package/.github/pull_request_template.md +0 -103
- package/.github/skills/agent-authoring/SKILL.md +0 -66
- package/.github/skills/mcp-log-debugging/SKILL.md +0 -69
- package/.github/skills/mcp-programmatic-testing/SKILL.md +0 -142
- package/.github/skills/mcp-yaml-testing/SKILL.md +0 -136
- package/.github/skills/salesforce-developer-site-scraper/SKILL.md +0 -102
- package/.github/skills/salesforce-developer-site-scraper/scripts/scrape-to-markdown.js +0 -205
- package/.github/skills/salesforce-help-site-scraper/SKILL.md +0 -84
- package/.github/skills/salesforce-help-site-scraper/scripts/scrape-help-to-markdown.js +0 -212
- package/.github/skills/skill-authoring/SKILL.md +0 -228
- package/.github/skills/skill-authoring/references/PATTERNS.md +0 -384
- package/.github/workflows/ci.yml +0 -103
- package/.github/workflows/deploy-pages.yml +0 -59
- package/.github/workflows/publish.yml +0 -112
- package/.github/workflows/update-docs.yml +0 -182
- package/.husky/pre-commit +0 -2
- package/AGENTS.md +0 -638
- package/CONTRIBUTING.md +0 -323
- package/SECURITY.md +0 -148
- package/aegis.config.docs-only.json +0 -9
- package/aegis.config.json +0 -12
- package/aegis.config.with-dw.json +0 -15
- package/ai-instructions/AGENTS.md +0 -628
- package/ai-instructions/skills/sfcc-caching/SKILL.md +0 -89
- package/ai-instructions/skills/sfcc-cartridge-development/SKILL.md +0 -240
- package/ai-instructions/skills/sfcc-forms-development/SKILL.md +0 -261
- package/ai-instructions/skills/sfcc-forms-development/references/ARCHITECTURE-SGJC-SFRA.md +0 -143
- package/ai-instructions/skills/sfcc-forms-development/references/FORM-XML-CHEATSHEET.md +0 -127
- package/ai-instructions/skills/sfcc-fraud-prevention/SKILL.md +0 -95
- package/ai-instructions/skills/sfcc-hooks-registration/SKILL.md +0 -39
- package/ai-instructions/skills/sfcc-isml-development/SKILL.md +0 -370
- package/ai-instructions/skills/sfcc-isml-development/references/REMOTE-INCLUDES.md +0 -116
- package/ai-instructions/skills/sfcc-isml-development/references/SFRA-LAYOUTS.md +0 -50
- package/ai-instructions/skills/sfcc-isml-development/references/SFRA-PAGES-CART-ACCOUNT-AUTH.md +0 -45
- package/ai-instructions/skills/sfcc-isml-development/references/SFRA-PAGES-CATALOG.md +0 -85
- package/ai-instructions/skills/sfcc-isml-development/references/SFRA-STRUCTURE-COMPONENTS.md +0 -63
- package/ai-instructions/skills/sfcc-isml-development/references/UTILITIES-EXPRESSIONS.md +0 -159
- package/ai-instructions/skills/sfcc-isml-development/references/sfra-base-templates-architecture.md +0 -13
- package/ai-instructions/skills/sfcc-job-development/SKILL.md +0 -334
- package/ai-instructions/skills/sfcc-job-development/references/CHUNK-ORIENTED.md +0 -393
- package/ai-instructions/skills/sfcc-job-development/references/STEPTYPES-JSON.md +0 -271
- package/ai-instructions/skills/sfcc-job-development/references/TASK-ORIENTED.md +0 -257
- package/ai-instructions/skills/sfcc-localization/SKILL.md +0 -92
- package/ai-instructions/skills/sfcc-localization/references/CONTROLLERS.md +0 -63
- package/ai-instructions/skills/sfcc-localization/references/FORMATTING.md +0 -29
- package/ai-instructions/skills/sfcc-localization/references/FORMS-LOCALIZATION.md +0 -33
- package/ai-instructions/skills/sfcc-localization/references/JAVASCRIPT-LOCALIZATION.md +0 -41
- package/ai-instructions/skills/sfcc-localization/references/LOCALE-SWITCHING.md +0 -35
- package/ai-instructions/skills/sfcc-localization/references/PATTERNS.md +0 -740
- package/ai-instructions/skills/sfcc-localization/references/PROPERTIES-ENCODING.md +0 -25
- package/ai-instructions/skills/sfcc-localization/references/RESOURCE-BUNDLES.md +0 -67
- package/ai-instructions/skills/sfcc-localization/references/STATIC-FILES.md +0 -23
- package/ai-instructions/skills/sfcc-localization/references/TESTING.md +0 -21
- package/ai-instructions/skills/sfcc-localserviceregistry/SKILL.md +0 -374
- package/ai-instructions/skills/sfcc-logging/SKILL.md +0 -352
- package/ai-instructions/skills/sfcc-logging/references/LOG-FILES.md +0 -282
- package/ai-instructions/skills/sfcc-ocapi-hooks/SKILL.md +0 -350
- package/ai-instructions/skills/sfcc-ocapi-scapi-slas/SKILL.md +0 -108
- package/ai-instructions/skills/sfcc-page-designer/SKILL.md +0 -353
- package/ai-instructions/skills/sfcc-page-designer/references/ATTRIBUTE-TYPES.md +0 -436
- package/ai-instructions/skills/sfcc-page-designer/references/META-DEFINITIONS.md +0 -322
- package/ai-instructions/skills/sfcc-performance/SKILL.md +0 -424
- package/ai-instructions/skills/sfcc-platform-limits/SKILL.md +0 -89
- package/ai-instructions/skills/sfcc-scapi-custom-endpoints/SKILL.md +0 -237
- package/ai-instructions/skills/sfcc-scapi-custom-endpoints/references/AUTHENTICATION.md +0 -214
- package/ai-instructions/skills/sfcc-scapi-custom-endpoints/references/URL-MAPPING.md +0 -253
- package/ai-instructions/skills/sfcc-scapi-hooks/SKILL.md +0 -341
- package/ai-instructions/skills/sfcc-script-evaluation/SKILL.md +0 -380
- package/ai-instructions/skills/sfcc-security/SKILL.md +0 -394
- package/ai-instructions/skills/sfcc-sfra-client-side-js/SKILL.md +0 -270
- package/ai-instructions/skills/sfcc-sfra-client-side-js/references/AJAX-CSRF-VALIDATION.md +0 -285
- package/ai-instructions/skills/sfcc-sfra-client-side-js/references/BASE-MODULE-INDEX.md +0 -206
- package/ai-instructions/skills/sfcc-sfra-client-side-js/references/EXTENSION-PATTERNS.md +0 -165
- package/ai-instructions/skills/sfcc-sfra-client-side-js/references/PLUGIN-PATTERNS.md +0 -185
- package/ai-instructions/skills/sfcc-sfra-controllers/SKILL.md +0 -347
- package/ai-instructions/skills/sfcc-sfra-controllers/references/MIDDLEWARE-REFERENCE.md +0 -257
- package/ai-instructions/skills/sfcc-sfra-controllers/references/REMOTE-INCLUDES.md +0 -193
- package/ai-instructions/skills/sfcc-sfra-controllers/references/standard-sfra-controllers.md +0 -814
- package/ai-instructions/skills/sfcc-sfra-models/SKILL.md +0 -322
- package/ai-instructions/skills/sfcc-sfra-models/references/MODEL-PATTERNS.md +0 -530
- package/ai-instructions/skills/sfcc-sfra-models/references/MODEL-STRUCTURE.md +0 -234
- package/ai-instructions/skills/sfcc-sfra-models/references/TESTING-SECURITY.md +0 -417
- package/ai-instructions/skills/sfcc-sfra-scss/SKILL.md +0 -393
- package/ai-instructions/skills/sfcc-webdav-workflows/SKILL.md +0 -111
- package/docs/TopLevel/APIException.md +0 -68
- package/docs/TopLevel/Array.md +0 -897
- package/docs/TopLevel/ArrayBuffer.md +0 -79
- package/docs/TopLevel/BigInt.md +0 -132
- package/docs/TopLevel/Boolean.md +0 -62
- package/docs/TopLevel/ConversionError.md +0 -23
- package/docs/TopLevel/DataView.md +0 -352
- package/docs/TopLevel/Date.md +0 -924
- package/docs/TopLevel/ES6Iterator.md +0 -33
- package/docs/TopLevel/Error.md +0 -88
- package/docs/TopLevel/EvalError.md +0 -23
- package/docs/TopLevel/Fault.md +0 -87
- package/docs/TopLevel/Float32Array.md +0 -130
- package/docs/TopLevel/Float64Array.md +0 -130
- package/docs/TopLevel/Function.md +0 -105
- package/docs/TopLevel/Generator.md +0 -78
- package/docs/TopLevel/IOError.md +0 -62
- package/docs/TopLevel/Int16Array.md +0 -130
- package/docs/TopLevel/Int32Array.md +0 -130
- package/docs/TopLevel/Int8Array.md +0 -130
- package/docs/TopLevel/InternalError.md +0 -23
- package/docs/TopLevel/Iterable.md +0 -41
- package/docs/TopLevel/Iterator.md +0 -48
- package/docs/TopLevel/JSON.md +0 -162
- package/docs/TopLevel/Map.md +0 -216
- package/docs/TopLevel/Math.md +0 -913
- package/docs/TopLevel/Module.md +0 -45
- package/docs/TopLevel/Namespace.md +0 -96
- package/docs/TopLevel/Number.md +0 -417
- package/docs/TopLevel/Object.md +0 -641
- package/docs/TopLevel/QName.md +0 -96
- package/docs/TopLevel/RangeError.md +0 -23
- package/docs/TopLevel/ReferenceError.md +0 -23
- package/docs/TopLevel/RegExp.md +0 -109
- package/docs/TopLevel/Set.md +0 -165
- package/docs/TopLevel/StopIteration.md +0 -20
- package/docs/TopLevel/String.md +0 -1299
- package/docs/TopLevel/Symbol.md +0 -78
- package/docs/TopLevel/SyntaxError.md +0 -23
- package/docs/TopLevel/SystemError.md +0 -62
- package/docs/TopLevel/TypeError.md +0 -23
- package/docs/TopLevel/URIError.md +0 -23
- package/docs/TopLevel/Uint16Array.md +0 -130
- package/docs/TopLevel/Uint32Array.md +0 -130
- package/docs/TopLevel/Uint8Array.md +0 -130
- package/docs/TopLevel/Uint8ClampedArray.md +0 -130
- package/docs/TopLevel/WeakMap.md +0 -137
- package/docs/TopLevel/WeakSet.md +0 -92
- package/docs/TopLevel/XML.md +0 -937
- package/docs/TopLevel/XMLList.md +0 -484
- package/docs/TopLevel/XMLStreamError.md +0 -74
- package/docs/TopLevel/arguments.md +0 -34
- package/docs/TopLevel/global.md +0 -474
- package/docs/dw_campaign/ABTest.md +0 -47
- package/docs/dw_campaign/ABTestMgr.md +0 -70
- package/docs/dw_campaign/ABTestSegment.md +0 -96
- package/docs/dw_campaign/AmountDiscount.md +0 -51
- package/docs/dw_campaign/ApproachingDiscount.md +0 -124
- package/docs/dw_campaign/BonusChoiceDiscount.md +0 -146
- package/docs/dw_campaign/BonusDiscount.md +0 -48
- package/docs/dw_campaign/Campaign.md +0 -365
- package/docs/dw_campaign/CampaignMgr.md +0 -395
- package/docs/dw_campaign/CampaignStatusCodes.md +0 -48
- package/docs/dw_campaign/Coupon.md +0 -310
- package/docs/dw_campaign/CouponMgr.md +0 -144
- package/docs/dw_campaign/CouponRedemption.md +0 -94
- package/docs/dw_campaign/CouponStatusCodes.md +0 -86
- package/docs/dw_campaign/Discount.md +0 -226
- package/docs/dw_campaign/DiscountPlan.md +0 -282
- package/docs/dw_campaign/FixedPriceDiscount.md +0 -52
- package/docs/dw_campaign/FixedPriceShippingDiscount.md +0 -52
- package/docs/dw_campaign/FreeDiscount.md +0 -17
- package/docs/dw_campaign/FreeShippingDiscount.md +0 -17
- package/docs/dw_campaign/PercentageDiscount.md +0 -52
- package/docs/dw_campaign/PercentageOptionDiscount.md +0 -48
- package/docs/dw_campaign/PriceBookPriceDiscount.md +0 -47
- package/docs/dw_campaign/Promotion.md +0 -874
- package/docs/dw_campaign/PromotionMgr.md +0 -386
- package/docs/dw_campaign/PromotionPlan.md +0 -330
- package/docs/dw_campaign/SlotContent.md +0 -144
- package/docs/dw_campaign/SourceCodeGroup.md +0 -72
- package/docs/dw_campaign/SourceCodeInfo.md +0 -144
- package/docs/dw_campaign/SourceCodeStatusCodes.md +0 -36
- package/docs/dw_campaign/TotalFixedPriceDiscount.md +0 -47
- package/docs/dw_catalog/Catalog.md +0 -122
- package/docs/dw_catalog/CatalogMgr.md +0 -182
- package/docs/dw_catalog/Category.md +0 -1308
- package/docs/dw_catalog/CategoryAssignment.md +0 -192
- package/docs/dw_catalog/CategoryLink.md +0 -126
- package/docs/dw_catalog/PriceBook.md +0 -242
- package/docs/dw_catalog/PriceBookMgr.md +0 -204
- package/docs/dw_catalog/Product.md +0 -2593
- package/docs/dw_catalog/ProductActiveData.md +0 -1275
- package/docs/dw_catalog/ProductAttributeModel.md +0 -277
- package/docs/dw_catalog/ProductAvailabilityLevels.md +0 -142
- package/docs/dw_catalog/ProductAvailabilityModel.md +0 -380
- package/docs/dw_catalog/ProductInventoryList.md +0 -140
- package/docs/dw_catalog/ProductInventoryMgr.md +0 -117
- package/docs/dw_catalog/ProductInventoryRecord.md +0 -563
- package/docs/dw_catalog/ProductLink.md +0 -144
- package/docs/dw_catalog/ProductMgr.md +0 -138
- package/docs/dw_catalog/ProductOption.md +0 -214
- package/docs/dw_catalog/ProductOptionModel.md +0 -246
- package/docs/dw_catalog/ProductOptionValue.md +0 -123
- package/docs/dw_catalog/ProductPriceInfo.md +0 -172
- package/docs/dw_catalog/ProductPriceModel.md +0 -745
- package/docs/dw_catalog/ProductPriceTable.md +0 -134
- package/docs/dw_catalog/ProductSearchHit.md +0 -581
- package/docs/dw_catalog/ProductSearchModel.md +0 -2018
- package/docs/dw_catalog/ProductSearchRefinementDefinition.md +0 -97
- package/docs/dw_catalog/ProductSearchRefinementValue.md +0 -73
- package/docs/dw_catalog/ProductSearchRefinements.md +0 -216
- package/docs/dw_catalog/ProductVariationAttribute.md +0 -100
- package/docs/dw_catalog/ProductVariationAttributeValue.md +0 -238
- package/docs/dw_catalog/ProductVariationModel.md +0 -849
- package/docs/dw_catalog/Recommendation.md +0 -314
- package/docs/dw_catalog/SearchModel.md +0 -901
- package/docs/dw_catalog/SearchRefinementDefinition.md +0 -146
- package/docs/dw_catalog/SearchRefinementValue.md +0 -185
- package/docs/dw_catalog/SearchRefinements.md +0 -180
- package/docs/dw_catalog/SortingOption.md +0 -120
- package/docs/dw_catalog/SortingRule.md +0 -47
- package/docs/dw_catalog/Store.md +0 -562
- package/docs/dw_catalog/StoreGroup.md +0 -96
- package/docs/dw_catalog/StoreInventoryFilter.md +0 -74
- package/docs/dw_catalog/StoreInventoryFilterValue.md +0 -74
- package/docs/dw_catalog/StoreMgr.md +0 -236
- package/docs/dw_catalog/Variant.md +0 -859
- package/docs/dw_catalog/VariationGroup.md +0 -792
- package/docs/dw_content/Content.md +0 -534
- package/docs/dw_content/ContentMgr.md +0 -166
- package/docs/dw_content/ContentSearchModel.md +0 -682
- package/docs/dw_content/ContentSearchRefinementDefinition.md +0 -49
- package/docs/dw_content/ContentSearchRefinementValue.md +0 -17
- package/docs/dw_content/ContentSearchRefinements.md +0 -208
- package/docs/dw_content/Folder.md +0 -467
- package/docs/dw_content/Library.md +0 -121
- package/docs/dw_content/MarkupText.md +0 -88
- package/docs/dw_content/MediaFile.md +0 -317
- package/docs/dw_crypto/CertificateRef.md +0 -42
- package/docs/dw_crypto/CertificateUtils.md +0 -187
- package/docs/dw_crypto/Cipher.md +0 -530
- package/docs/dw_crypto/Encoding.md +0 -220
- package/docs/dw_crypto/JWE.md +0 -224
- package/docs/dw_crypto/JWEHeader.md +0 -172
- package/docs/dw_crypto/JWS.md +0 -264
- package/docs/dw_crypto/JWSHeader.md +0 -148
- package/docs/dw_crypto/KeyRef.md +0 -44
- package/docs/dw_crypto/Mac.md +0 -139
- package/docs/dw_crypto/MessageDigest.md +0 -175
- package/docs/dw_crypto/SecureRandom.md +0 -148
- package/docs/dw_crypto/Signature.md +0 -252
- package/docs/dw_crypto/WeakCipher.md +0 -538
- package/docs/dw_crypto/WeakMac.md +0 -121
- package/docs/dw_crypto/WeakMessageDigest.md +0 -163
- package/docs/dw_crypto/WeakSignature.md +0 -242
- package/docs/dw_crypto/X509Certificate.md +0 -193
- package/docs/dw_customer/AddressBook.md +0 -163
- package/docs/dw_customer/AgentUserMgr.md +0 -83
- package/docs/dw_customer/AgentUserStatusCodes.md +0 -96
- package/docs/dw_customer/AuthenticationStatus.md +0 -138
- package/docs/dw_customer/Credentials.md +0 -494
- package/docs/dw_customer/Customer.md +0 -571
- package/docs/dw_customer/CustomerActiveData.md +0 -552
- package/docs/dw_customer/CustomerAddress.md +0 -852
- package/docs/dw_customer/CustomerCDPData.md +0 -70
- package/docs/dw_customer/CustomerContextMgr.md +0 -64
- package/docs/dw_customer/CustomerGroup.md +0 -134
- package/docs/dw_customer/CustomerList.md +0 -71
- package/docs/dw_customer/CustomerMgr.md +0 -735
- package/docs/dw_customer/CustomerPasswordConstraints.md +0 -142
- package/docs/dw_customer/CustomerPaymentInstrument.md +0 -125
- package/docs/dw_customer/CustomerStatusCodes.md +0 -30
- package/docs/dw_customer/EncryptedObject.md +0 -18
- package/docs/dw_customer/ExternalProfile.md +0 -160
- package/docs/dw_customer/OrderHistory.md +0 -111
- package/docs/dw_customer/ProductList.md +0 -1000
- package/docs/dw_customer/ProductListItem.md +0 -504
- package/docs/dw_customer/ProductListItemPurchase.md +0 -145
- package/docs/dw_customer/ProductListMgr.md +0 -234
- package/docs/dw_customer/ProductListRegistrant.md +0 -193
- package/docs/dw_customer/Profile.md +0 -1128
- package/docs/dw_customer/Wallet.md +0 -118
- package/docs/dw_extensions.applepay/ApplePayHookResult.md +0 -209
- package/docs/dw_extensions.applepay/ApplePayHooks.md +0 -255
- package/docs/dw_extensions.facebook/FacebookFeedHooks.md +0 -47
- package/docs/dw_extensions.facebook/FacebookProduct.md +0 -1621
- package/docs/dw_extensions.paymentrequest/PaymentRequestHookResult.md +0 -159
- package/docs/dw_extensions.paymentrequest/PaymentRequestHooks.md +0 -160
- package/docs/dw_extensions.payments/SalesforceBancontactPaymentDetails.md +0 -79
- package/docs/dw_extensions.payments/SalesforceCardPaymentDetails.md +0 -103
- package/docs/dw_extensions.payments/SalesforceEpsPaymentDetails.md +0 -51
- package/docs/dw_extensions.payments/SalesforceIdealPaymentDetails.md +0 -51
- package/docs/dw_extensions.payments/SalesforceKlarnaPaymentDetails.md +0 -51
- package/docs/dw_extensions.payments/SalesforcePayPalOrder.md +0 -246
- package/docs/dw_extensions.payments/SalesforcePayPalOrderAddress.md +0 -191
- package/docs/dw_extensions.payments/SalesforcePayPalOrderPayer.md +0 -118
- package/docs/dw_extensions.payments/SalesforcePayPalPaymentDetails.md +0 -79
- package/docs/dw_extensions.payments/SalesforcePaymentDetails.md +0 -57
- package/docs/dw_extensions.payments/SalesforcePaymentIntent.md +0 -281
- package/docs/dw_extensions.payments/SalesforcePaymentMethod.md +0 -346
- package/docs/dw_extensions.payments/SalesforcePaymentRequest.md +0 -784
- package/docs/dw_extensions.payments/SalesforcePaymentsHooks.md +0 -45
- package/docs/dw_extensions.payments/SalesforcePaymentsMgr.md +0 -634
- package/docs/dw_extensions.payments/SalesforcePaymentsSiteConfiguration.md +0 -95
- package/docs/dw_extensions.payments/SalesforceSepaDebitPaymentDetails.md +0 -51
- package/docs/dw_extensions.payments/SalesforceVenmoPaymentDetails.md +0 -79
- package/docs/dw_extensions.pinterest/PinterestAvailability.md +0 -86
- package/docs/dw_extensions.pinterest/PinterestFeedHooks.md +0 -69
- package/docs/dw_extensions.pinterest/PinterestOrder.md +0 -232
- package/docs/dw_extensions.pinterest/PinterestOrderHooks.md +0 -45
- package/docs/dw_extensions.pinterest/PinterestProduct.md +0 -850
- package/docs/dw_io/CSVStreamReader.md +0 -80
- package/docs/dw_io/CSVStreamWriter.md +0 -60
- package/docs/dw_io/File.md +0 -614
- package/docs/dw_io/FileReader.md +0 -41
- package/docs/dw_io/FileWriter.md +0 -103
- package/docs/dw_io/InputStream.md +0 -34
- package/docs/dw_io/OutputStream.md +0 -34
- package/docs/dw_io/PrintWriter.md +0 -71
- package/docs/dw_io/RandomAccessFileReader.md +0 -173
- package/docs/dw_io/Reader.md +0 -274
- package/docs/dw_io/StringWriter.md +0 -81
- package/docs/dw_io/Writer.md +0 -92
- package/docs/dw_io/XMLIndentingStreamWriter.md +0 -112
- package/docs/dw_io/XMLStreamConstants.md +0 -114
- package/docs/dw_io/XMLStreamReader.md +0 -1043
- package/docs/dw_io/XMLStreamWriter.md +0 -572
- package/docs/dw_job/JobExecution.md +0 -107
- package/docs/dw_job/JobStepExecution.md +0 -151
- package/docs/dw_net/FTPClient.md +0 -699
- package/docs/dw_net/FTPFileInfo.md +0 -122
- package/docs/dw_net/HTTPClient.md +0 -831
- package/docs/dw_net/HTTPClientLoggingConfig.md +0 -296
- package/docs/dw_net/HTTPRequestPart.md +0 -206
- package/docs/dw_net/Mail.md +0 -551
- package/docs/dw_net/SFTPClient.md +0 -591
- package/docs/dw_net/SFTPFileInfo.md +0 -122
- package/docs/dw_net/WebDAVClient.md +0 -715
- package/docs/dw_net/WebDAVFileInfo.md +0 -184
- package/docs/dw_object/ActiveData.md +0 -75
- package/docs/dw_object/CustomAttributes.md +0 -16
- package/docs/dw_object/CustomObject.md +0 -73
- package/docs/dw_object/CustomObjectMgr.md +0 -291
- package/docs/dw_object/Extensible.md +0 -64
- package/docs/dw_object/ExtensibleObject.md +0 -68
- package/docs/dw_object/Note.md +0 -121
- package/docs/dw_object/ObjectAttributeDefinition.md +0 -481
- package/docs/dw_object/ObjectAttributeGroup.md +0 -170
- package/docs/dw_object/ObjectAttributeValueDefinition.md +0 -72
- package/docs/dw_object/ObjectTypeDefinition.md +0 -216
- package/docs/dw_object/PersistentObject.md +0 -94
- package/docs/dw_object/SimpleExtensible.md +0 -46
- package/docs/dw_object/SystemObjectMgr.md +0 -153
- package/docs/dw_order/AbstractItem.md +0 -244
- package/docs/dw_order/AbstractItemCtnr.md +0 -240
- package/docs/dw_order/Appeasement.md +0 -367
- package/docs/dw_order/AppeasementItem.md +0 -90
- package/docs/dw_order/Basket.md +0 -362
- package/docs/dw_order/BasketMgr.md +0 -418
- package/docs/dw_order/BonusDiscountLineItem.md +0 -248
- package/docs/dw_order/CouponLineItem.md +0 -272
- package/docs/dw_order/CreateAgentBasketLimitExceededException.md +0 -18
- package/docs/dw_order/CreateBasketFromOrderException.md +0 -26
- package/docs/dw_order/CreateCouponLineItemException.md +0 -26
- package/docs/dw_order/CreateOrderException.md +0 -18
- package/docs/dw_order/CreateTemporaryBasketLimitExceededException.md +0 -18
- package/docs/dw_order/GiftCertificate.md +0 -569
- package/docs/dw_order/GiftCertificateLineItem.md +0 -324
- package/docs/dw_order/GiftCertificateMgr.md +0 -197
- package/docs/dw_order/GiftCertificateStatusCodes.md +0 -60
- package/docs/dw_order/Invoice.md +0 -418
- package/docs/dw_order/InvoiceItem.md +0 -222
- package/docs/dw_order/LineItem.md +0 -532
- package/docs/dw_order/LineItemCtnr.md +0 -2431
- package/docs/dw_order/Order.md +0 -2567
- package/docs/dw_order/OrderAddress.md +0 -807
- package/docs/dw_order/OrderItem.md +0 -536
- package/docs/dw_order/OrderMgr.md +0 -535
- package/docs/dw_order/OrderPaymentInstrument.md +0 -220
- package/docs/dw_order/OrderProcessStatusCodes.md +0 -84
- package/docs/dw_order/PaymentCard.md +0 -217
- package/docs/dw_order/PaymentInstrument.md +0 -1462
- package/docs/dw_order/PaymentMethod.md +0 -242
- package/docs/dw_order/PaymentMgr.md +0 -117
- package/docs/dw_order/PaymentProcessor.md +0 -70
- package/docs/dw_order/PaymentStatusCodes.md +0 -42
- package/docs/dw_order/PaymentTransaction.md +0 -328
- package/docs/dw_order/PriceAdjustment.md +0 -640
- package/docs/dw_order/PriceAdjustmentLimitTypes.md +0 -38
- package/docs/dw_order/ProductLineItem.md +0 -1821
- package/docs/dw_order/ProductShippingCost.md +0 -96
- package/docs/dw_order/ProductShippingLineItem.md +0 -326
- package/docs/dw_order/ProductShippingModel.md +0 -125
- package/docs/dw_order/Return.md +0 -360
- package/docs/dw_order/ReturnCase.md +0 -400
- package/docs/dw_order/ReturnCaseItem.md +0 -373
- package/docs/dw_order/ReturnItem.md +0 -362
- package/docs/dw_order/Shipment.md +0 -1251
- package/docs/dw_order/ShipmentShippingCost.md +0 -46
- package/docs/dw_order/ShipmentShippingModel.md +0 -146
- package/docs/dw_order/ShippingLineItem.md +0 -278
- package/docs/dw_order/ShippingLocation.md +0 -366
- package/docs/dw_order/ShippingMethod.md +0 -266
- package/docs/dw_order/ShippingMgr.md +0 -158
- package/docs/dw_order/ShippingOrder.md +0 -561
- package/docs/dw_order/ShippingOrderItem.md +0 -355
- package/docs/dw_order/SumItem.md +0 -147
- package/docs/dw_order/TaxGroup.md +0 -143
- package/docs/dw_order/TaxItem.md +0 -74
- package/docs/dw_order/TaxMgr.md +0 -227
- package/docs/dw_order/TrackingInfo.md +0 -312
- package/docs/dw_order/TrackingRef.md +0 -113
- package/docs/dw_order.hooks/BasketMergeHooks.md +0 -42
- package/docs/dw_order.hooks/CalculateHooks.md +0 -77
- package/docs/dw_order.hooks/OrderHooks.md +0 -41
- package/docs/dw_order.hooks/PaymentHooks.md +0 -180
- package/docs/dw_order.hooks/ReturnHooks.md +0 -135
- package/docs/dw_order.hooks/ShippingOrderHooks.md +0 -245
- package/docs/dw_rpc/SOAPUtil.md +0 -465
- package/docs/dw_rpc/Stub.md +0 -289
- package/docs/dw_rpc/WebReference.md +0 -83
- package/docs/dw_suggest/BrandSuggestions.md +0 -17
- package/docs/dw_suggest/CategorySuggestions.md +0 -53
- package/docs/dw_suggest/ContentSuggestions.md +0 -53
- package/docs/dw_suggest/CustomSuggestions.md +0 -17
- package/docs/dw_suggest/ProductSuggestions.md +0 -53
- package/docs/dw_suggest/SearchPhraseSuggestions.md +0 -117
- package/docs/dw_suggest/SuggestModel.md +0 -403
- package/docs/dw_suggest/SuggestedCategory.md +0 -46
- package/docs/dw_suggest/SuggestedContent.md +0 -46
- package/docs/dw_suggest/SuggestedPhrase.md +0 -70
- package/docs/dw_suggest/SuggestedProduct.md +0 -47
- package/docs/dw_suggest/SuggestedTerm.md +0 -143
- package/docs/dw_suggest/SuggestedTerms.md +0 -132
- package/docs/dw_suggest/Suggestions.md +0 -179
- package/docs/dw_svc/FTPService.md +0 -118
- package/docs/dw_svc/FTPServiceDefinition.md +0 -69
- package/docs/dw_svc/HTTPFormService.md +0 -18
- package/docs/dw_svc/HTTPFormServiceDefinition.md +0 -18
- package/docs/dw_svc/HTTPService.md +0 -415
- package/docs/dw_svc/HTTPServiceDefinition.md +0 -303
- package/docs/dw_svc/LocalServiceRegistry.md +0 -43
- package/docs/dw_svc/Result.md +0 -303
- package/docs/dw_svc/SOAPService.md +0 -115
- package/docs/dw_svc/SOAPServiceDefinition.md +0 -17
- package/docs/dw_svc/Service.md +0 -295
- package/docs/dw_svc/ServiceCallback.md +0 -268
- package/docs/dw_svc/ServiceConfig.md +0 -120
- package/docs/dw_svc/ServiceCredential.md +0 -156
- package/docs/dw_svc/ServiceDefinition.md +0 -176
- package/docs/dw_svc/ServiceProfile.md +0 -168
- package/docs/dw_svc/ServiceRegistry.md +0 -109
- package/docs/dw_system/AgentUserStatusCodes.md +0 -21
- package/docs/dw_system/Cache.md +0 -102
- package/docs/dw_system/CacheMgr.md +0 -42
- package/docs/dw_system/HookMgr.md +0 -66
- package/docs/dw_system/InternalObject.md +0 -56
- package/docs/dw_system/JobProcessMonitor.md +0 -124
- package/docs/dw_system/Log.md +0 -237
- package/docs/dw_system/LogNDC.md +0 -88
- package/docs/dw_system/Logger.md +0 -263
- package/docs/dw_system/OrganizationPreferences.md +0 -18
- package/docs/dw_system/Pipeline.md +0 -73
- package/docs/dw_system/PipelineDictionary.md +0 -16
- package/docs/dw_system/RESTErrorResponse.md +0 -66
- package/docs/dw_system/RESTResponseMgr.md +0 -258
- package/docs/dw_system/RESTSuccessResponse.md +0 -39
- package/docs/dw_system/RemoteInclude.md +0 -74
- package/docs/dw_system/Request.md +0 -839
- package/docs/dw_system/RequestHooks.md +0 -59
- package/docs/dw_system/Response.md +0 -522
- package/docs/dw_system/SearchStatus.md +0 -151
- package/docs/dw_system/Session.md +0 -476
- package/docs/dw_system/Site.md +0 -585
- package/docs/dw_system/SitePreferences.md +0 -49
- package/docs/dw_system/Status.md +0 -273
- package/docs/dw_system/StatusItem.md +0 -273
- package/docs/dw_system/System.md +0 -200
- package/docs/dw_system/Transaction.md +0 -84
- package/docs/dw_util/ArrayList.md +0 -50
- package/docs/dw_util/Assert.md +0 -391
- package/docs/dw_util/BigInteger.md +0 -326
- package/docs/dw_util/Bytes.md +0 -252
- package/docs/dw_util/Calendar.md +0 -921
- package/docs/dw_util/Collection.md +0 -338
- package/docs/dw_util/Currency.md +0 -163
- package/docs/dw_util/DateUtils.md +0 -86
- package/docs/dw_util/Decimal.md +0 -438
- package/docs/dw_util/FilteringCollection.md +0 -93
- package/docs/dw_util/Geolocation.md +0 -271
- package/docs/dw_util/HashMap.md +0 -43
- package/docs/dw_util/HashSet.md +0 -46
- package/docs/dw_util/Iterator.md +0 -97
- package/docs/dw_util/LinkedHashMap.md +0 -43
- package/docs/dw_util/LinkedHashSet.md +0 -46
- package/docs/dw_util/List.md +0 -519
- package/docs/dw_util/Locale.md +0 -267
- package/docs/dw_util/Map.md +0 -313
- package/docs/dw_util/MapEntry.md +0 -70
- package/docs/dw_util/MappingKey.md +0 -76
- package/docs/dw_util/MappingMgr.md +0 -122
- package/docs/dw_util/PropertyComparator.md +0 -51
- package/docs/dw_util/SecureEncoder.md +0 -350
- package/docs/dw_util/SecureFilter.md +0 -350
- package/docs/dw_util/SeekableIterator.md +0 -176
- package/docs/dw_util/Set.md +0 -19
- package/docs/dw_util/SortedMap.md +0 -148
- package/docs/dw_util/SortedSet.md +0 -151
- package/docs/dw_util/StringUtils.md +0 -753
- package/docs/dw_util/Template.md +0 -88
- package/docs/dw_util/UUIDUtils.md +0 -38
- package/docs/dw_value/EnumValue.md +0 -92
- package/docs/dw_value/MimeEncodedText.md +0 -103
- package/docs/dw_value/Money.md +0 -610
- package/docs/dw_value/Quantity.md +0 -376
- package/docs/dw_web/CSRFProtection.md +0 -83
- package/docs/dw_web/ClickStream.md +0 -157
- package/docs/dw_web/ClickStreamEntry.md +0 -289
- package/docs/dw_web/Cookie.md +0 -396
- package/docs/dw_web/Cookies.md +0 -46
- package/docs/dw_web/Form.md +0 -74
- package/docs/dw_web/FormAction.md +0 -199
- package/docs/dw_web/FormElement.md +0 -220
- package/docs/dw_web/FormElementValidationResult.md +0 -157
- package/docs/dw_web/FormField.md +0 -603
- package/docs/dw_web/FormFieldOption.md +0 -238
- package/docs/dw_web/FormFieldOptions.md +0 -42
- package/docs/dw_web/FormGroup.md +0 -199
- package/docs/dw_web/FormList.md +0 -126
- package/docs/dw_web/FormListItem.md +0 -48
- package/docs/dw_web/Forms.md +0 -16
- package/docs/dw_web/HttpParameter.md +0 -513
- package/docs/dw_web/HttpParameterMap.md +0 -185
- package/docs/dw_web/LoopIterator.md +0 -261
- package/docs/dw_web/PageMetaData.md +0 -230
- package/docs/dw_web/PageMetaTag.md +0 -142
- package/docs/dw_web/PagingModel.md +0 -389
- package/docs/dw_web/Resource.md +0 -126
- package/docs/dw_web/URL.md +0 -213
- package/docs/dw_web/URLAction.md +0 -26
- package/docs/dw_web/URLParameter.md +0 -22
- package/docs/dw_web/URLRedirect.md +0 -71
- package/docs/dw_web/URLRedirectMgr.md +0 -73
- package/docs/dw_web/URLUtils.md +0 -1264
- package/docs/isml/isactivedatacontext.md +0 -382
- package/docs/isml/isactivedatahead.md +0 -566
- package/docs/isml/isanalyticsoff.md +0 -537
- package/docs/isml/isapplepay.md +0 -667
- package/docs/isml/isbreak.md +0 -687
- package/docs/isml/isbuynow.md +0 -682
- package/docs/isml/iscache.md +0 -802
- package/docs/isml/iscomment.md +0 -794
- package/docs/isml/iscomponent.md +0 -797
- package/docs/isml/iscontent.md +0 -594
- package/docs/isml/iscontinue.md +0 -563
- package/docs/isml/iscookie.md +0 -798
- package/docs/isml/isdecorate.md +0 -818
- package/docs/isml/isif.md +0 -737
- package/docs/isml/isinclude.md +0 -874
- package/docs/isml/isloop.md +0 -377
- package/docs/isml/ismodule.md +0 -844
- package/docs/isml/isnext.md +0 -672
- package/docs/isml/isobject.md +0 -760
- package/docs/isml/ispayment.md +0 -577
- package/docs/isml/ispaymentmessages.md +0 -664
- package/docs/isml/isprint.md +0 -875
- package/docs/isml/isredirect.md +0 -716
- package/docs/isml/isremove.md +0 -725
- package/docs/isml/isreplace.md +0 -783
- package/docs/isml/isscript.md +0 -859
- package/docs/isml/isselect.md +0 -908
- package/docs/isml/isset.md +0 -585
- package/docs/isml/isslot.md +0 -824
- package/docs/isml/isstatus.md +0 -711
- package/docs/sfra/account.md +0 -145
- package/docs/sfra/address.md +0 -84
- package/docs/sfra/billing.md +0 -90
- package/docs/sfra/cart.md +0 -134
- package/docs/sfra/categories.md +0 -124
- package/docs/sfra/content.md +0 -133
- package/docs/sfra/locale.md +0 -126
- package/docs/sfra/order.md +0 -219
- package/docs/sfra/payment.md +0 -131
- package/docs/sfra/price-default.md +0 -118
- package/docs/sfra/price-range.md +0 -77
- package/docs/sfra/price-tiered.md +0 -117
- package/docs/sfra/product-bundle.md +0 -164
- package/docs/sfra/product-full.md +0 -179
- package/docs/sfra/product-line-items.md +0 -147
- package/docs/sfra/product-search.md +0 -245
- package/docs/sfra/product-tile.md +0 -95
- package/docs/sfra/querystring.md +0 -240
- package/docs/sfra/render.md +0 -354
- package/docs/sfra/request.md +0 -210
- package/docs/sfra/response.md +0 -391
- package/docs/sfra/server.md +0 -375
- package/docs/sfra/shipping.md +0 -181
- package/docs/sfra/store.md +0 -145
- package/docs/sfra/stores.md +0 -190
- package/docs/sfra/totals.md +0 -184
- package/docs-site-v2/.vitepress/config.mts +0 -190
- package/docs-site-v2/.vitepress/theme/components/AssistantTabs.vue +0 -96
- package/docs-site-v2/.vitepress/theme/components/Callout.vue +0 -10
- package/docs-site-v2/.vitepress/theme/components/Collapsible.vue +0 -14
- package/docs-site-v2/.vitepress/theme/components/DwJsonBuilder.vue +0 -82
- package/docs-site-v2/.vitepress/theme/components/HomeSections.vue +0 -552
- package/docs-site-v2/.vitepress/theme/components/InstructionFilesTabs.vue +0 -87
- package/docs-site-v2/.vitepress/theme/components/ModeTabs.vue +0 -70
- package/docs-site-v2/.vitepress/theme/components/NewcomerCTA.vue +0 -14
- package/docs-site-v2/.vitepress/theme/components/QuickStartCards.vue +0 -20
- package/docs-site-v2/.vitepress/theme/components/QuickStartHero.vue +0 -20
- package/docs-site-v2/.vitepress/theme/components/SkillsList.vue +0 -48
- package/docs-site-v2/.vitepress/theme/components/ToolExplorer.vue +0 -85
- package/docs-site-v2/.vitepress/theme/custom.css +0 -1373
- package/docs-site-v2/.vitepress/theme/index.ts +0 -39
- package/docs-site-v2/data/skills.ts +0 -147
- package/docs-site-v2/data/tools.ts +0 -490
- package/docs-site-v2/development/index.md +0 -151
- package/docs-site-v2/examples/index.md +0 -333
- package/docs-site-v2/features/index.md +0 -144
- package/docs-site-v2/guide/ai-interfaces.md +0 -58
- package/docs-site-v2/guide/configuration.md +0 -208
- package/docs-site-v2/guide/index.md +0 -50
- package/docs-site-v2/index.md +0 -32
- package/docs-site-v2/package-lock.json +0 -2511
- package/docs-site-v2/package.json +0 -15
- package/docs-site-v2/public/404.html +0 -15
- 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/explain-product-pricing-methods-no-mcp.png +0 -0
- package/docs-site-v2/public/explain-product-pricing-methods.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 +0 -4174
- package/docs-site-v2/public/llms.txt +0 -44
- package/docs-site-v2/public/logo-dark.svg +0 -8
- package/docs-site-v2/public/logo.svg +0 -8
- package/docs-site-v2/public/robots.txt +0 -20
- package/docs-site-v2/public/site.webmanifest +0 -50
- package/docs-site-v2/public/sitemap.xml +0 -90
- package/docs-site-v2/script-debugger/index.md +0 -105
- package/docs-site-v2/scripts/generate-llms.js +0 -71
- package/docs-site-v2/scripts/generate-sitemap.js +0 -97
- package/docs-site-v2/security/index.md +0 -115
- package/docs-site-v2/skills/index.md +0 -40
- package/docs-site-v2/tools/index.md +0 -36
- package/docs-site-v2/troubleshooting/index.md +0 -204
- package/eslint.config.js +0 -139
- package/jest.config.js +0 -27
- package/memories/repo/docs-site-v2-build.json +0 -11
- package/scripts/convert-docs.js +0 -633
- package/scripts/validate-server-json.js +0 -68
- package/server.json +0 -20
- package/src/clients/agent-instructions-client.ts +0 -370
- package/src/clients/base/abstract-documentation-client.ts +0 -405
- package/src/clients/base/http-client.ts +0 -152
- package/src/clients/base/oauth-token.ts +0 -164
- package/src/clients/base/ocapi-auth-client.ts +0 -133
- package/src/clients/cartridge/cartridge-generation-client.ts +0 -302
- package/src/clients/cartridge/cartridge-structure.ts +0 -37
- package/src/clients/cartridge/cartridge-templates.ts +0 -246
- package/src/clients/cartridge/index.ts +0 -6
- package/src/clients/docs/class-content-parser.ts +0 -308
- package/src/clients/docs/class-name-resolver.ts +0 -99
- package/src/clients/docs/documentation-scanner.ts +0 -255
- package/src/clients/docs/index.ts +0 -16
- package/src/clients/docs/referenced-types-extractor.ts +0 -92
- package/src/clients/docs-client.ts +0 -393
- package/src/clients/isml-client.ts +0 -353
- package/src/clients/log-client.ts +0 -19
- package/src/clients/ocapi/code-versions-client.ts +0 -54
- package/src/clients/ocapi/site-preferences-client.ts +0 -106
- package/src/clients/ocapi/system-objects-client.ts +0 -148
- package/src/clients/ocapi-client.ts +0 -53
- package/src/clients/script-debugger/index.ts +0 -5
- package/src/clients/script-debugger/script-debugger-client.ts +0 -754
- package/src/clients/sfra-client.ts +0 -339
- package/src/config/configuration-factory.ts +0 -201
- package/src/config/dw-json-loader.ts +0 -248
- package/src/config/workspace-roots.ts +0 -540
- package/src/constants/index.ts +0 -1
- package/src/core/handlers/abstract-client-handler.ts +0 -85
- package/src/core/handlers/agent-instructions-handler.ts +0 -48
- package/src/core/handlers/base-handler.ts +0 -172
- package/src/core/handlers/cartridge-handler.ts +0 -38
- package/src/core/handlers/client-factory.ts +0 -140
- package/src/core/handlers/code-version-handler.ts +0 -43
- package/src/core/handlers/docs-handler.ts +0 -19
- package/src/core/handlers/isml-handler.ts +0 -19
- package/src/core/handlers/job-log-handler.ts +0 -39
- package/src/core/handlers/log-handler.ts +0 -39
- package/src/core/handlers/script-debugger-handler.ts +0 -46
- package/src/core/handlers/sfra-handler.ts +0 -23
- package/src/core/handlers/simple-client-handler.ts +0 -78
- package/src/core/handlers/system-object-handler.ts +0 -43
- package/src/core/handlers/validation-helpers.ts +0 -206
- package/src/core/instruction-advisor.ts +0 -122
- package/src/core/server.ts +0 -374
- package/src/core/tool-definitions.ts +0 -30
- package/src/core/tool-schemas/agent-instruction-tools.ts +0 -72
- package/src/core/tool-schemas/cartridge-tools.ts +0 -29
- package/src/core/tool-schemas/code-version-tools.ts +0 -28
- package/src/core/tool-schemas/documentation-tools.ts +0 -104
- package/src/core/tool-schemas/index.ts +0 -27
- package/src/core/tool-schemas/isml-tools.ts +0 -89
- package/src/core/tool-schemas/log-tools.ts +0 -196
- package/src/core/tool-schemas/script-debugger-tools.ts +0 -83
- package/src/core/tool-schemas/sfra-tools.ts +0 -65
- package/src/core/tool-schemas/shared-schemas.ts +0 -158
- package/src/core/tool-schemas/system-object-tools.ts +0 -127
- package/src/index.ts +0 -20
- package/src/main.ts +0 -161
- package/src/services/file-system-service.ts +0 -117
- package/src/services/index.ts +0 -11
- package/src/services/path-service.ts +0 -124
- package/src/tool-configs/agent-instructions-tool-config.ts +0 -83
- package/src/tool-configs/cartridge-tool-config.ts +0 -41
- package/src/tool-configs/code-version-tool-config.ts +0 -37
- package/src/tool-configs/docs-tool-config.ts +0 -103
- package/src/tool-configs/isml-tool-config.ts +0 -87
- package/src/tool-configs/job-log-tool-config.ts +0 -119
- package/src/tool-configs/log-tool-config.ts +0 -110
- package/src/tool-configs/script-debugger-tool-config.ts +0 -69
- package/src/tool-configs/sfra-tool-config.ts +0 -74
- package/src/tool-configs/system-object-tool-config.ts +0 -142
- package/src/types/types.ts +0 -125
- package/src/utils/cache.ts +0 -291
- package/src/utils/category-utils.ts +0 -70
- package/src/utils/log-tool-constants.ts +0 -95
- package/src/utils/logger.ts +0 -260
- package/src/utils/markdown-utils.ts +0 -280
- package/src/utils/ocapi-url-builder.ts +0 -48
- package/src/utils/path-resolver.ts +0 -69
- package/src/utils/path-validation.ts +0 -113
- package/src/utils/query-builder.ts +0 -84
- package/src/utils/utils.ts +0 -139
- package/src/utils/validator.ts +0 -162
- package/tests/__mocks__/docs-client.ts +0 -8
- package/tests/__mocks__/src/clients/base/http-client.js +0 -43
- package/tests/__mocks__/webdav.js +0 -14
- package/tests/base-handler.test.ts +0 -527
- package/tests/base-http-client.test.ts +0 -311
- package/tests/cache.test.ts +0 -453
- package/tests/cartridge-handler.test.ts +0 -290
- package/tests/class-content-parser.test.ts +0 -629
- package/tests/class-name-resolver.test.ts +0 -365
- package/tests/client-factory.test.ts +0 -280
- package/tests/code-version-handler.test.ts +0 -291
- package/tests/code-versions-client.test.ts +0 -156
- package/tests/config.test.ts +0 -285
- package/tests/configuration-factory.test.ts +0 -233
- package/tests/docs-handler.test.ts +0 -359
- package/tests/documentation-scanner.test.ts +0 -755
- package/tests/file-system-service.test.ts +0 -111
- package/tests/isml-client.test.ts +0 -463
- package/tests/isml-handler.test.ts +0 -375
- package/tests/job-log-handler.test.ts +0 -283
- package/tests/log-client.test.ts +0 -768
- package/tests/log-handler.test.ts +0 -365
- package/tests/log-processor.test.ts +0 -243
- package/tests/log-validation.test.ts +0 -149
- package/tests/logger.test.ts +0 -303
- package/tests/mcp/AGENTS.md +0 -162
- package/tests/mcp/README.md +0 -237
- package/tests/mcp/node/activate-code-version-advanced.full-mode.programmatic.test.js +0 -669
- package/tests/mcp/node/code-versions.full-mode.programmatic.test.js +0 -605
- package/tests/mcp/node/evaluate-script.full-mode.programmatic.test.js +0 -387
- package/tests/mcp/node/generate-cartridge-structure.docs-only.programmatic.test.js +0 -644
- package/tests/mcp/node/get-available-sfra-documents.programmatic.test.js +0 -274
- package/tests/mcp/node/get-isml-categories.programmatic.test.js +0 -278
- package/tests/mcp/node/get-isml-element.programmatic.test.js +0 -278
- package/tests/mcp/node/get-isml-elements-by-category.programmatic.test.js +0 -363
- package/tests/mcp/node/get-job-execution-summary.full-mode.programmatic.test.js +0 -432
- package/tests/mcp/node/get-job-log-entries.full-mode.programmatic.test.js +0 -488
- package/tests/mcp/node/get-latest-debug.full-mode.programmatic.test.js +0 -338
- package/tests/mcp/node/get-latest-error.full-mode.programmatic.test.js +0 -255
- package/tests/mcp/node/get-latest-info.full-mode.programmatic.test.js +0 -347
- package/tests/mcp/node/get-latest-job-log-files.full-mode.programmatic.test.js +0 -460
- package/tests/mcp/node/get-latest-warn.full-mode.programmatic.test.js +0 -454
- package/tests/mcp/node/get-log-file-contents.full-mode.programmatic.test.js +0 -381
- package/tests/mcp/node/get-sfcc-class-documentation.docs-only.programmatic.test.js +0 -371
- package/tests/mcp/node/get-sfcc-class-info.docs-only.programmatic.test.js +0 -1032
- package/tests/mcp/node/get-sfra-categories.docs-only.programmatic.test.js +0 -369
- package/tests/mcp/node/get-sfra-document.programmatic.test.js +0 -473
- package/tests/mcp/node/get-sfra-documents-by-category.docs-only.programmatic.test.js +0 -510
- package/tests/mcp/node/get-system-object-definition.full-mode.programmatic.test.js +0 -389
- package/tests/mcp/node/get-system-object-definitions.docs-only.programmatic.test.js +0 -300
- package/tests/mcp/node/get-system-object-definitions.full-mode.programmatic.test.js +0 -387
- package/tests/mcp/node/list-isml-elements.programmatic.test.js +0 -311
- package/tests/mcp/node/list-log-files.full-mode.programmatic.test.js +0 -150
- package/tests/mcp/node/list-sfcc-classes.docs-only.programmatic.test.js +0 -612
- package/tests/mcp/node/search-custom-object-attribute-definitions.full-mode.programmatic.test.js +0 -875
- package/tests/mcp/node/search-isml-elements.programmatic.test.js +0 -325
- package/tests/mcp/node/search-job-logs-by-name.full-mode.programmatic.test.js +0 -330
- package/tests/mcp/node/search-job-logs.full-mode.programmatic.test.js +0 -526
- package/tests/mcp/node/search-logs.full-mode.programmatic.test.js +0 -478
- package/tests/mcp/node/search-sfcc-classes.docs-only.programmatic.test.js +0 -334
- package/tests/mcp/node/search-sfcc-methods.docs-only.programmatic.test.js +0 -487
- package/tests/mcp/node/search-sfra-documentation.docs-only.programmatic.test.js +0 -563
- package/tests/mcp/node/search-site-preferences.full-mode.programmatic.test.js +0 -556
- package/tests/mcp/node/search-system-object-attribute-definitions.full-mode.programmatic.test.js +0 -744
- package/tests/mcp/node/search-system-object-attribute-groups.full-mode.programmatic.test.js +0 -657
- package/tests/mcp/node/summarize-logs.full-mode.programmatic.test.js +0 -357
- package/tests/mcp/node/tools.docs-only.programmatic.test.js +0 -515
- package/tests/mcp/node/tools.full-mode.programmatic.test.js +0 -154
- package/tests/mcp/test-fixtures/dw.json +0 -10
- package/tests/mcp/yaml/activate-code-version.docs-only.test.mcp.yml +0 -318
- package/tests/mcp/yaml/activate-code-version.full-mode.test.mcp.yml +0 -507
- package/tests/mcp/yaml/evaluate-script.full-mode.test.mcp.yml +0 -281
- package/tests/mcp/yaml/get-available-sfra-documents.docs-only.test.mcp.yml +0 -684
- package/tests/mcp/yaml/get-available-sfra-documents.full-mode.test.mcp.yml +0 -684
- package/tests/mcp/yaml/get-code-versions.docs-only.test.mcp.yml +0 -196
- package/tests/mcp/yaml/get-code-versions.full-mode.test.mcp.yml +0 -273
- package/tests/mcp/yaml/get-isml-categories.docs-only.test.mcp.yml +0 -330
- package/tests/mcp/yaml/get-isml-element.docs-only.test.mcp.yml +0 -294
- package/tests/mcp/yaml/get-isml-elements-by-category.docs-only.test.mcp.yml +0 -334
- package/tests/mcp/yaml/get-job-execution-summary.full-mode.test.mcp.yml +0 -148
- package/tests/mcp/yaml/get-job-log-entries.full-mode.test.mcp.yml +0 -284
- package/tests/mcp/yaml/get-latest-debug.full-mode.test.mcp.yml +0 -191
- package/tests/mcp/yaml/get-latest-error.full-mode.test.mcp.yml +0 -195
- package/tests/mcp/yaml/get-latest-info.full-mode.test.mcp.yml +0 -242
- package/tests/mcp/yaml/get-latest-job-log-files.full-mode.test.mcp.yml +0 -189
- package/tests/mcp/yaml/get-latest-warn.full-mode.test.mcp.yml +0 -182
- package/tests/mcp/yaml/get-log-file-contents.full-mode.test.mcp.yml +0 -256
- package/tests/mcp/yaml/get-sfcc-class-documentation.docs-only.test.mcp.yml +0 -2416
- package/tests/mcp/yaml/get-sfcc-class-documentation.full-mode.test.mcp.yml +0 -2416
- package/tests/mcp/yaml/get-sfcc-class-info.docs-only.test.mcp.yml +0 -1225
- package/tests/mcp/yaml/get-sfcc-class-info.full-mode.test.mcp.yml +0 -1225
- package/tests/mcp/yaml/get-sfra-categories.docs-only.test.mcp.yml +0 -452
- package/tests/mcp/yaml/get-sfra-categories.full-mode.test.mcp.yml +0 -452
- package/tests/mcp/yaml/get-sfra-document.docs-only.test.mcp.yml +0 -525
- package/tests/mcp/yaml/get-sfra-document.full-mode.test.mcp.yml +0 -525
- package/tests/mcp/yaml/get-sfra-documents-by-category.docs-only.test.mcp.yml +0 -507
- package/tests/mcp/yaml/get-sfra-documents-by-category.full-mode.test.mcp.yml +0 -507
- package/tests/mcp/yaml/get-system-object-definition.docs-only.test.mcp.yml +0 -208
- package/tests/mcp/yaml/get-system-object-definition.full-mode.test.mcp.yml +0 -191
- package/tests/mcp/yaml/get-system-object-definitions.docs-only.test.mcp.yml +0 -257
- package/tests/mcp/yaml/get-system-object-definitions.full-mode.test.mcp.yml +0 -517
- package/tests/mcp/yaml/get_latest_error.test.mcp.yml +0 -472
- package/tests/mcp/yaml/list-isml-elements.docs-only.test.mcp.yml +0 -212
- package/tests/mcp/yaml/list-log-files.full-mode.test.mcp.yml +0 -89
- package/tests/mcp/yaml/list-sfcc-classes.docs-only.test.mcp.yml +0 -511
- package/tests/mcp/yaml/list-sfcc-classes.full-mode.test.mcp.yml +0 -511
- package/tests/mcp/yaml/search-custom-object-attribute-definitions.docs-only.test.mcp.yml +0 -82
- package/tests/mcp/yaml/search-custom-object-attribute-definitions.test.mcp.yml +0 -387
- package/tests/mcp/yaml/search-isml-elements.docs-only.test.mcp.yml +0 -312
- package/tests/mcp/yaml/search-job-logs-by-name.full-mode.test.mcp.yml +0 -169
- package/tests/mcp/yaml/search-job-logs.full-mode.test.mcp.yml +0 -174
- package/tests/mcp/yaml/search-logs.full-mode.test.mcp.yml +0 -207
- package/tests/mcp/yaml/search-sfcc-classes.docs-only.test.mcp.yml +0 -1157
- package/tests/mcp/yaml/search-sfcc-classes.full-mode.test.mcp.yml +0 -1157
- package/tests/mcp/yaml/search-sfcc-methods.docs-only.test.mcp.yml +0 -723
- package/tests/mcp/yaml/search-sfcc-methods.full-mode.test.mcp.yml +0 -723
- package/tests/mcp/yaml/search-sfra-documentation.docs-only.test.mcp.yml +0 -427
- package/tests/mcp/yaml/search-sfra-documentation.full-mode.test.mcp.yml +0 -427
- package/tests/mcp/yaml/search-site-preferences.docs-only.test.mcp.yml +0 -295
- package/tests/mcp/yaml/search-site-preferences.full-mode.test.mcp.yml +0 -574
- package/tests/mcp/yaml/search-system-object-attribute-definitions.docs-only.test.mcp.yml +0 -168
- package/tests/mcp/yaml/search-system-object-attribute-definitions.full-mode.test.mcp.yml +0 -500
- package/tests/mcp/yaml/search-system-object-attribute-groups.docs-only.test.mcp.yml +0 -278
- package/tests/mcp/yaml/search-system-object-attribute-groups.full-mode.test.mcp.yml +0 -612
- package/tests/mcp/yaml/summarize-logs.full-mode.test.mcp.yml +0 -173
- package/tests/mcp/yaml/tools.docs-only.test.mcp.yml +0 -535
- package/tests/mcp/yaml/tools.full-mode.test.mcp.yml +0 -378
- package/tests/oauth-token.test.ts +0 -725
- package/tests/ocapi-auth-client.test.ts +0 -276
- package/tests/ocapi-client.test.ts +0 -242
- package/tests/path-service.test.ts +0 -96
- package/tests/query-builder.test.ts +0 -281
- package/tests/referenced-types-extractor.test.ts +0 -814
- package/tests/script-debugger-client.test.ts +0 -430
- package/tests/servers/sfcc-mock-server/README.md +0 -208
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/code-versions.json +0 -247
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/custom-object-attributes-customapi.json +0 -128
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/custom-object-attributes-globalsettings.json +0 -92
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/custom-object-attributes-versionhistory.json +0 -256
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/site-preferences-ccv.json +0 -275
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/site-preferences-fastforward.json +0 -123
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/site-preferences-sfra.json +0 -224
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/site-preferences-storefront.json +0 -447
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/site-preferences-system.json +0 -171
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-attribute-groups-campaign.json +0 -13
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-attribute-groups-category.json +0 -50
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-attribute-groups-order.json +0 -32
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-attribute-groups-product.json +0 -224
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-attribute-groups-sitepreferences.json +0 -62
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-attributes-customeraddress.json +0 -109
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-attributes-product-expanded.json +0 -183
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-attributes-product.json +0 -139
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-definition-category.json +0 -26
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-definition-customer.json +0 -26
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-definition-customeraddress.json +0 -26
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-definition-order.json +0 -26
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-definition-product.json +0 -26
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-definitions-old.json +0 -354
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-definitions.json +0 -172
- package/tests/servers/sfcc-mock-server/package-lock.json +0 -879
- package/tests/servers/sfcc-mock-server/package.json +0 -39
- package/tests/servers/sfcc-mock-server/scripts/setup-logs.js +0 -224
- package/tests/servers/sfcc-mock-server/server.js +0 -280
- package/tests/servers/sfcc-mock-server/src/app.js +0 -182
- package/tests/servers/sfcc-mock-server/src/config/server-config.js +0 -124
- package/tests/servers/sfcc-mock-server/src/middleware/auth.js +0 -101
- package/tests/servers/sfcc-mock-server/src/middleware/cors.js +0 -39
- package/tests/servers/sfcc-mock-server/src/middleware/logging.js +0 -124
- package/tests/servers/sfcc-mock-server/src/routes/cartridge-webdav.js +0 -258
- package/tests/servers/sfcc-mock-server/src/routes/ocapi/code-versions-handler.js +0 -184
- package/tests/servers/sfcc-mock-server/src/routes/ocapi/debugger-handler.js +0 -396
- package/tests/servers/sfcc-mock-server/src/routes/ocapi/oauth-handler.js +0 -36
- package/tests/servers/sfcc-mock-server/src/routes/ocapi/ocapi-error-utils.js +0 -221
- package/tests/servers/sfcc-mock-server/src/routes/ocapi/ocapi-utils.js +0 -440
- package/tests/servers/sfcc-mock-server/src/routes/ocapi/site-preferences-handler.js +0 -332
- package/tests/servers/sfcc-mock-server/src/routes/ocapi/system-objects-handler.js +0 -572
- package/tests/servers/sfcc-mock-server/src/routes/ocapi.js +0 -58
- package/tests/servers/sfcc-mock-server/src/routes/storefront.js +0 -86
- package/tests/servers/sfcc-mock-server/src/routes/webdav.js +0 -240
- package/tests/servers/sfcc-mock-server/src/utils/mock-data-loader.js +0 -84
- package/tests/servers/sfcc-mock-server/src/utils/webdav-xml.js +0 -121
- package/tests/servers/sfcc-mock-server-manager.ts +0 -280
- package/tests/sfcc-mock-server.test.ts +0 -423
- package/tests/site-preferences-client.test.ts +0 -358
- package/tests/system-objects-client.test.ts +0 -310
- package/tests/utils.test.ts +0 -477
- package/tests/validation-helpers.test.ts +0 -325
- package/tests/validator.test.ts +0 -416
- package/tests/workspace-roots.test.ts +0 -227
- package/tsconfig.json +0 -20
- package/tsconfig.test.json +0 -20
|
@@ -1,644 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Programmatic tests for generate_cartridge_structure tool
|
|
3
|
-
*
|
|
4
|
-
* These tests provide comprehensive verification of cartridge generation functionality,
|
|
5
|
-
* including directory structure validation, file content verification, cleanup operations,
|
|
6
|
-
* and edge case handling. All tests use system temp directory for safe isolation.
|
|
7
|
-
*
|
|
8
|
-
* Response format discovered via aegis query:
|
|
9
|
-
* - Success: { content: [{ type: "text", text: "{\"success\": true, \"message\": \"...\", \"createdFiles\": [...], \"createdDirectories\": [...], \"skippedFiles\": []}" }] }
|
|
10
|
-
* - Error: { content: [{ type: "text", text: "Error: ..." }], isError: true }
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import { test, describe, before, after, beforeEach, afterEach } from 'node:test';
|
|
14
|
-
import { strict as assert } from 'node:assert';
|
|
15
|
-
import { connect } from 'mcp-aegis';
|
|
16
|
-
import { promises as fs } from 'node:fs';
|
|
17
|
-
import { join } from 'node:path';
|
|
18
|
-
import { tmpdir } from 'node:os';
|
|
19
|
-
import { randomBytes } from 'node:crypto';
|
|
20
|
-
|
|
21
|
-
describe('generate_cartridge_structure Programmatic Tests', () => {
|
|
22
|
-
let client;
|
|
23
|
-
let testDirectories = []; // Track directories for cleanup
|
|
24
|
-
|
|
25
|
-
before(async () => {
|
|
26
|
-
client = await connect('./aegis.config.docs-only.json');
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
after(async () => {
|
|
30
|
-
if (client?.connected) {
|
|
31
|
-
await client.disconnect();
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
beforeEach(() => {
|
|
36
|
-
// CRITICAL: Clear all buffers to prevent test interference
|
|
37
|
-
client.clearAllBuffers(); // Recommended - comprehensive protection
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
afterEach(async () => {
|
|
41
|
-
// Clean up all test directories
|
|
42
|
-
for (const dir of testDirectories) {
|
|
43
|
-
try {
|
|
44
|
-
await fs.rm(dir, { recursive: true, force: true });
|
|
45
|
-
} catch (error) {
|
|
46
|
-
// Ignore cleanup errors - directory might not exist
|
|
47
|
-
console.warn(`Cleanup warning for ${dir}:`, error.message);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
testDirectories = [];
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Create a unique temporary directory for testing
|
|
55
|
-
* @returns {string} Absolute path to temporary directory
|
|
56
|
-
*/
|
|
57
|
-
function createTempTestDir() {
|
|
58
|
-
const uniqueId = randomBytes(8).toString('hex');
|
|
59
|
-
const testDir = join(tmpdir(), `mcp-cartridge-test-${uniqueId}`);
|
|
60
|
-
testDirectories.push(testDir);
|
|
61
|
-
return testDir;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Check if a file exists and is readable
|
|
66
|
-
* @param {string} filePath - Path to check
|
|
67
|
-
* @returns {Promise<boolean>} True if file exists and is readable
|
|
68
|
-
*/
|
|
69
|
-
async function fileExists(filePath) {
|
|
70
|
-
try {
|
|
71
|
-
await fs.access(filePath, fs.constants.F_OK | fs.constants.R_OK);
|
|
72
|
-
return true;
|
|
73
|
-
} catch {
|
|
74
|
-
return false;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Check if a directory exists and is readable
|
|
80
|
-
* @param {string} dirPath - Path to check
|
|
81
|
-
* @returns {Promise<boolean>} True if directory exists and is readable
|
|
82
|
-
*/
|
|
83
|
-
async function directoryExists(dirPath) {
|
|
84
|
-
try {
|
|
85
|
-
const stat = await fs.stat(dirPath);
|
|
86
|
-
return stat.isDirectory();
|
|
87
|
-
} catch {
|
|
88
|
-
return false;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Read and parse JSON response from tool execution
|
|
94
|
-
* @param {object} result - MCP tool result
|
|
95
|
-
* @returns {object} Parsed response object
|
|
96
|
-
*/
|
|
97
|
-
function parseToolResponse(result) {
|
|
98
|
-
assert.equal(result.isError, false, 'Tool should execute successfully');
|
|
99
|
-
assert.ok(result.content, 'Result should have content');
|
|
100
|
-
assert.equal(result.content.length, 1, 'Should have exactly one content item');
|
|
101
|
-
assert.equal(result.content[0].type, 'text', 'Content should be text type');
|
|
102
|
-
|
|
103
|
-
const responseText = result.content[0].text;
|
|
104
|
-
return JSON.parse(responseText);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
describe('Protocol Compliance', () => {
|
|
108
|
-
test('should be properly connected to MCP server', async () => {
|
|
109
|
-
assert.ok(client.connected, 'Client should be connected');
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
test('should have generate_cartridge_structure tool available', async () => {
|
|
113
|
-
const tools = await client.listTools();
|
|
114
|
-
const cartridgeTool = tools.find(tool => tool.name === 'generate_cartridge_structure');
|
|
115
|
-
|
|
116
|
-
assert.ok(cartridgeTool, 'generate_cartridge_structure tool should be available');
|
|
117
|
-
assert.equal(cartridgeTool.name, 'generate_cartridge_structure');
|
|
118
|
-
assert.ok(cartridgeTool.description, 'Tool should have description');
|
|
119
|
-
assert.ok(cartridgeTool.inputSchema, 'Tool should have input schema');
|
|
120
|
-
assert.equal(cartridgeTool.inputSchema.type, 'object');
|
|
121
|
-
assert.ok(cartridgeTool.inputSchema.properties.cartridgeName, 'Tool should have cartridgeName parameter');
|
|
122
|
-
assert.ok(cartridgeTool.inputSchema.required.includes('cartridgeName'), 'cartridgeName should be required');
|
|
123
|
-
});
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
describe('Full Project Setup Generation', () => {
|
|
127
|
-
test('should create complete project structure with all required files', async () => {
|
|
128
|
-
const testDir = createTempTestDir();
|
|
129
|
-
const cartridgeName = 'test_full_project';
|
|
130
|
-
|
|
131
|
-
const result = await client.callTool('generate_cartridge_structure', {
|
|
132
|
-
cartridgeName,
|
|
133
|
-
targetPath: testDir,
|
|
134
|
-
fullProjectSetup: true
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
const response = parseToolResponse(result);
|
|
138
|
-
|
|
139
|
-
// Verify response structure
|
|
140
|
-
assert.equal(response.success, true, 'Operation should be successful');
|
|
141
|
-
assert.ok(response.message.includes('Successfully created full project setup'), 'Message should indicate full project setup');
|
|
142
|
-
assert.ok(response.message.includes(cartridgeName), 'Message should include cartridge name');
|
|
143
|
-
assert.ok(response.message.includes(testDir), 'Message should include target path');
|
|
144
|
-
assert.ok(Array.isArray(response.createdFiles), 'Should have createdFiles array');
|
|
145
|
-
assert.ok(Array.isArray(response.createdDirectories), 'Should have createdDirectories array');
|
|
146
|
-
assert.ok(Array.isArray(response.skippedFiles), 'Should have skippedFiles array');
|
|
147
|
-
|
|
148
|
-
// Verify essential project files were created
|
|
149
|
-
const expectedProjectFiles = [
|
|
150
|
-
'package.json',
|
|
151
|
-
'dw.json',
|
|
152
|
-
'webpack.config.js',
|
|
153
|
-
'.eslintrc.json',
|
|
154
|
-
'.stylelintrc.json',
|
|
155
|
-
'.eslintignore',
|
|
156
|
-
'.gitignore'
|
|
157
|
-
];
|
|
158
|
-
|
|
159
|
-
for (const file of expectedProjectFiles) {
|
|
160
|
-
const filePath = join(testDir, file);
|
|
161
|
-
assert.ok(await fileExists(filePath), `Project file ${file} should exist`);
|
|
162
|
-
assert.ok(response.createdFiles.some(f => f.endsWith(file)), `${file} should be in createdFiles list`);
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
// Verify cartridge-specific files
|
|
166
|
-
const cartridgeDir = join(testDir, 'cartridges', cartridgeName);
|
|
167
|
-
const expectedCartridgeFiles = [
|
|
168
|
-
'.project',
|
|
169
|
-
join('cartridge', `${cartridgeName}.properties`)
|
|
170
|
-
];
|
|
171
|
-
|
|
172
|
-
for (const file of expectedCartridgeFiles) {
|
|
173
|
-
const filePath = join(cartridgeDir, file);
|
|
174
|
-
assert.ok(await fileExists(filePath), `Cartridge file ${file} should exist`);
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
// Verify directory structure
|
|
178
|
-
const expectedDirectories = [
|
|
179
|
-
testDir,
|
|
180
|
-
join(testDir, 'cartridges'),
|
|
181
|
-
cartridgeDir,
|
|
182
|
-
join(cartridgeDir, 'cartridge'),
|
|
183
|
-
join(cartridgeDir, 'cartridge', 'controllers'),
|
|
184
|
-
join(cartridgeDir, 'cartridge', 'models'),
|
|
185
|
-
join(cartridgeDir, 'cartridge', 'templates'),
|
|
186
|
-
join(cartridgeDir, 'cartridge', 'templates', 'default'),
|
|
187
|
-
join(cartridgeDir, 'cartridge', 'templates', 'resources'),
|
|
188
|
-
join(cartridgeDir, 'cartridge', 'client'),
|
|
189
|
-
join(cartridgeDir, 'cartridge', 'client', 'default'),
|
|
190
|
-
join(cartridgeDir, 'cartridge', 'client', 'default', 'js'),
|
|
191
|
-
join(cartridgeDir, 'cartridge', 'client', 'default', 'scss')
|
|
192
|
-
];
|
|
193
|
-
|
|
194
|
-
for (const dir of expectedDirectories) {
|
|
195
|
-
assert.ok(await directoryExists(dir), `Directory ${dir} should exist`);
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
// Verify file contents - check package.json contains cartridge name
|
|
199
|
-
const packageJsonPath = join(testDir, 'package.json');
|
|
200
|
-
const packageJsonContent = await fs.readFile(packageJsonPath, 'utf-8');
|
|
201
|
-
const packageJson = JSON.parse(packageJsonContent);
|
|
202
|
-
assert.ok(packageJson.name.includes(cartridgeName), 'package.json should reference cartridge name');
|
|
203
|
-
});
|
|
204
|
-
|
|
205
|
-
test('should create cartridge with default fullProjectSetup when not specified', async () => {
|
|
206
|
-
const testDir = createTempTestDir();
|
|
207
|
-
const cartridgeName = 'test_default_full';
|
|
208
|
-
|
|
209
|
-
const result = await client.callTool('generate_cartridge_structure', {
|
|
210
|
-
cartridgeName,
|
|
211
|
-
targetPath: testDir
|
|
212
|
-
// fullProjectSetup not specified - should default to true
|
|
213
|
-
});
|
|
214
|
-
|
|
215
|
-
const response = parseToolResponse(result);
|
|
216
|
-
|
|
217
|
-
assert.equal(response.success, true, 'Operation should be successful');
|
|
218
|
-
assert.ok(response.message.includes('full project setup'), 'Should create full project setup by default');
|
|
219
|
-
|
|
220
|
-
// Verify project files were created (indicates full project setup)
|
|
221
|
-
const packageJsonPath = join(testDir, 'package.json');
|
|
222
|
-
assert.ok(await fileExists(packageJsonPath), 'package.json should exist with default full project setup');
|
|
223
|
-
});
|
|
224
|
-
});
|
|
225
|
-
|
|
226
|
-
describe('Cartridge-Only Generation', () => {
|
|
227
|
-
test('should create cartridge structure without project files when fullProjectSetup is false', async () => {
|
|
228
|
-
const testDir = createTempTestDir();
|
|
229
|
-
const cartridgeName = 'test_cartridge_only';
|
|
230
|
-
|
|
231
|
-
const result = await client.callTool('generate_cartridge_structure', {
|
|
232
|
-
cartridgeName,
|
|
233
|
-
targetPath: testDir,
|
|
234
|
-
fullProjectSetup: false
|
|
235
|
-
});
|
|
236
|
-
|
|
237
|
-
const response = parseToolResponse(result);
|
|
238
|
-
|
|
239
|
-
// Verify response structure
|
|
240
|
-
assert.equal(response.success, true, 'Operation should be successful');
|
|
241
|
-
assert.ok(response.message.includes('Successfully created cartridge'), 'Message should indicate cartridge creation');
|
|
242
|
-
assert.ok(response.message.includes('existing project'), 'Message should indicate existing project context');
|
|
243
|
-
assert.ok(response.message.includes(cartridgeName), 'Message should include cartridge name');
|
|
244
|
-
|
|
245
|
-
// Verify cartridge files were created
|
|
246
|
-
const cartridgeDir = join(testDir, 'cartridges', cartridgeName);
|
|
247
|
-
const expectedCartridgeFiles = [
|
|
248
|
-
join(cartridgeDir, '.project'),
|
|
249
|
-
join(cartridgeDir, 'cartridge', `${cartridgeName}.properties`)
|
|
250
|
-
];
|
|
251
|
-
|
|
252
|
-
for (const filePath of expectedCartridgeFiles) {
|
|
253
|
-
assert.ok(await fileExists(filePath), `Cartridge file ${filePath} should exist`);
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
// Verify project files were NOT created
|
|
257
|
-
const projectFiles = ['package.json', 'dw.json', 'webpack.config.js'];
|
|
258
|
-
for (const file of projectFiles) {
|
|
259
|
-
const filePath = join(testDir, file);
|
|
260
|
-
assert.ok(!(await fileExists(filePath)), `Project file ${file} should NOT exist in cartridge-only mode`);
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
// Verify cartridge directory structure exists
|
|
264
|
-
const expectedDirs = [
|
|
265
|
-
join(testDir, 'cartridges'),
|
|
266
|
-
cartridgeDir,
|
|
267
|
-
join(cartridgeDir, 'cartridge'),
|
|
268
|
-
join(cartridgeDir, 'cartridge', 'controllers'),
|
|
269
|
-
join(cartridgeDir, 'cartridge', 'models'),
|
|
270
|
-
join(cartridgeDir, 'cartridge', 'templates')
|
|
271
|
-
];
|
|
272
|
-
|
|
273
|
-
for (const dir of expectedDirs) {
|
|
274
|
-
assert.ok(await directoryExists(dir), `Cartridge directory ${dir} should exist`);
|
|
275
|
-
}
|
|
276
|
-
});
|
|
277
|
-
});
|
|
278
|
-
|
|
279
|
-
describe('Target Path Handling', () => {
|
|
280
|
-
test('should create cartridge in current working directory when targetPath not specified', async () => {
|
|
281
|
-
const cartridgeName = 'test_cwd_cartridge';
|
|
282
|
-
|
|
283
|
-
const result = await client.callTool('generate_cartridge_structure', {
|
|
284
|
-
cartridgeName
|
|
285
|
-
// targetPath not specified - should use current working directory
|
|
286
|
-
});
|
|
287
|
-
|
|
288
|
-
const response = parseToolResponse(result);
|
|
289
|
-
|
|
290
|
-
assert.equal(response.success, true, 'Operation should be successful');
|
|
291
|
-
assert.ok(Array.isArray(response.createdFiles), 'Should have createdFiles array');
|
|
292
|
-
assert.ok(response.createdFiles.length > 0, 'Should have created files');
|
|
293
|
-
|
|
294
|
-
// Clean up files created in current directory
|
|
295
|
-
const cwd = process.cwd();
|
|
296
|
-
const createdPaths = [...response.createdFiles, ...response.createdDirectories];
|
|
297
|
-
|
|
298
|
-
for (const path of createdPaths) {
|
|
299
|
-
try {
|
|
300
|
-
if (path.startsWith(cwd)) {
|
|
301
|
-
const relativePath = path.substring(cwd.length + 1);
|
|
302
|
-
if (relativePath.startsWith('cartridges/') || ['package.json', 'dw.json', 'webpack.config.js', '.eslintrc.json', '.stylelintrc.json', '.eslintignore', '.gitignore'].includes(relativePath)) {
|
|
303
|
-
await fs.rm(path, { recursive: true, force: true });
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
} catch {
|
|
307
|
-
// Ignore cleanup errors
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
});
|
|
311
|
-
|
|
312
|
-
test('should handle absolute target paths correctly', async () => {
|
|
313
|
-
const testDir = createTempTestDir();
|
|
314
|
-
const cartridgeName = 'test_absolute_path';
|
|
315
|
-
|
|
316
|
-
const result = await client.callTool('generate_cartridge_structure', {
|
|
317
|
-
cartridgeName,
|
|
318
|
-
targetPath: testDir,
|
|
319
|
-
fullProjectSetup: false
|
|
320
|
-
});
|
|
321
|
-
|
|
322
|
-
const response = parseToolResponse(result);
|
|
323
|
-
|
|
324
|
-
assert.equal(response.success, true, 'Operation should be successful');
|
|
325
|
-
|
|
326
|
-
// Verify files were created in specified absolute path
|
|
327
|
-
const cartridgeDir = join(testDir, 'cartridges', cartridgeName);
|
|
328
|
-
assert.ok(await directoryExists(cartridgeDir), 'Cartridge should be created in specified absolute path');
|
|
329
|
-
|
|
330
|
-
// Verify all created paths are under the specified target directory
|
|
331
|
-
for (const createdPath of response.createdFiles) {
|
|
332
|
-
assert.ok(createdPath.startsWith(testDir), `Created file ${createdPath} should be under target directory ${testDir}`);
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
for (const createdDir of response.createdDirectories) {
|
|
336
|
-
assert.ok(createdDir.startsWith(testDir) || createdDir === testDir, `Created directory ${createdDir} should be under target directory ${testDir}`);
|
|
337
|
-
}
|
|
338
|
-
});
|
|
339
|
-
});
|
|
340
|
-
|
|
341
|
-
describe('Cartridge Name Validation', () => {
|
|
342
|
-
test('should reject empty cartridge name', async () => {
|
|
343
|
-
const testDir = createTempTestDir();
|
|
344
|
-
|
|
345
|
-
const result = await client.callTool('generate_cartridge_structure', {
|
|
346
|
-
cartridgeName: '',
|
|
347
|
-
targetPath: testDir
|
|
348
|
-
});
|
|
349
|
-
|
|
350
|
-
assert.equal(result.isError, true, 'Should return error for empty cartridge name');
|
|
351
|
-
assert.ok(result.content[0].text.includes('Error'), 'Error message should be present');
|
|
352
|
-
assert.ok(result.content[0].text.includes('valid identifier'), 'Should mention valid identifier requirement');
|
|
353
|
-
});
|
|
354
|
-
|
|
355
|
-
test('should reject missing cartridge name', async () => {
|
|
356
|
-
const testDir = createTempTestDir();
|
|
357
|
-
|
|
358
|
-
const result = await client.callTool('generate_cartridge_structure', {
|
|
359
|
-
targetPath: testDir
|
|
360
|
-
// cartridgeName missing
|
|
361
|
-
});
|
|
362
|
-
|
|
363
|
-
assert.equal(result.isError, true, 'Should return error for missing cartridge name');
|
|
364
|
-
assert.ok(result.content[0].text.includes('Error'), 'Error message should be present');
|
|
365
|
-
});
|
|
366
|
-
|
|
367
|
-
test('should accept valid cartridge names with different formats', async () => {
|
|
368
|
-
const testDir = createTempTestDir();
|
|
369
|
-
const validNames = [
|
|
370
|
-
'simple_cartridge',
|
|
371
|
-
'plugin-example',
|
|
372
|
-
'my_plugin_123',
|
|
373
|
-
'cart123',
|
|
374
|
-
'a_b_c'
|
|
375
|
-
];
|
|
376
|
-
|
|
377
|
-
for (const cartridgeName of validNames) {
|
|
378
|
-
const subTestDir = join(testDir, cartridgeName + '_test');
|
|
379
|
-
testDirectories.push(subTestDir);
|
|
380
|
-
|
|
381
|
-
const result = await client.callTool('generate_cartridge_structure', {
|
|
382
|
-
cartridgeName,
|
|
383
|
-
targetPath: subTestDir,
|
|
384
|
-
fullProjectSetup: false
|
|
385
|
-
});
|
|
386
|
-
|
|
387
|
-
const response = parseToolResponse(result);
|
|
388
|
-
assert.equal(response.success, true, `Cartridge name "${cartridgeName}" should be valid`);
|
|
389
|
-
assert.ok(response.message.includes(cartridgeName), `Message should include cartridge name "${cartridgeName}"`);
|
|
390
|
-
}
|
|
391
|
-
});
|
|
392
|
-
});
|
|
393
|
-
|
|
394
|
-
describe('File System Integration', () => {
|
|
395
|
-
test('should handle directory creation permissions correctly', async () => {
|
|
396
|
-
const testDir = createTempTestDir();
|
|
397
|
-
const cartridgeName = 'test_permissions';
|
|
398
|
-
|
|
399
|
-
const result = await client.callTool('generate_cartridge_structure', {
|
|
400
|
-
cartridgeName,
|
|
401
|
-
targetPath: testDir,
|
|
402
|
-
fullProjectSetup: false
|
|
403
|
-
});
|
|
404
|
-
|
|
405
|
-
const response = parseToolResponse(result);
|
|
406
|
-
assert.equal(response.success, true, 'Should handle directory creation successfully');
|
|
407
|
-
|
|
408
|
-
// Verify created directories have appropriate permissions (readable and writable)
|
|
409
|
-
const cartridgeDir = join(testDir, 'cartridges', cartridgeName);
|
|
410
|
-
const stat = await fs.stat(cartridgeDir);
|
|
411
|
-
|
|
412
|
-
// Check that directory is readable and writable by owner
|
|
413
|
-
const mode = stat.mode;
|
|
414
|
-
const ownerRead = (mode & 0o400) !== 0;
|
|
415
|
-
const ownerWrite = (mode & 0o200) !== 0;
|
|
416
|
-
const ownerExecute = (mode & 0o100) !== 0;
|
|
417
|
-
|
|
418
|
-
assert.ok(ownerRead, 'Directory should be readable by owner');
|
|
419
|
-
assert.ok(ownerWrite, 'Directory should be writable by owner');
|
|
420
|
-
assert.ok(ownerExecute, 'Directory should be executable by owner');
|
|
421
|
-
});
|
|
422
|
-
|
|
423
|
-
test('should create files with correct content structure', async () => {
|
|
424
|
-
const testDir = createTempTestDir();
|
|
425
|
-
const cartridgeName = 'test_file_content';
|
|
426
|
-
|
|
427
|
-
const result = await client.callTool('generate_cartridge_structure', {
|
|
428
|
-
cartridgeName,
|
|
429
|
-
targetPath: testDir,
|
|
430
|
-
fullProjectSetup: true
|
|
431
|
-
});
|
|
432
|
-
|
|
433
|
-
const response = parseToolResponse(result);
|
|
434
|
-
assert.equal(response.success, true, 'Should create files successfully');
|
|
435
|
-
|
|
436
|
-
// Check package.json structure
|
|
437
|
-
const packageJsonPath = join(testDir, 'package.json');
|
|
438
|
-
const packageJsonContent = await fs.readFile(packageJsonPath, 'utf-8');
|
|
439
|
-
const packageJson = JSON.parse(packageJsonContent);
|
|
440
|
-
|
|
441
|
-
assert.ok(packageJson.name, 'package.json should have name field');
|
|
442
|
-
assert.ok(packageJson.version, 'package.json should have version field');
|
|
443
|
-
assert.ok(packageJson.scripts, 'package.json should have scripts');
|
|
444
|
-
assert.ok(packageJson.devDependencies, 'package.json should have devDependencies');
|
|
445
|
-
|
|
446
|
-
// Check cartridge properties file
|
|
447
|
-
const propertiesPath = join(testDir, 'cartridges', cartridgeName, 'cartridge', `${cartridgeName}.properties`);
|
|
448
|
-
const propertiesContent = await fs.readFile(propertiesPath, 'utf-8');
|
|
449
|
-
|
|
450
|
-
assert.ok(propertiesContent.includes('demandware.cartridges'), 'Properties file should contain demandware.cartridges');
|
|
451
|
-
assert.ok(propertiesContent.includes(cartridgeName), 'Properties file should reference cartridge name');
|
|
452
|
-
|
|
453
|
-
// Check .project file (Eclipse project file)
|
|
454
|
-
const projectPath = join(testDir, 'cartridges', cartridgeName, '.project');
|
|
455
|
-
const projectContent = await fs.readFile(projectPath, 'utf-8');
|
|
456
|
-
|
|
457
|
-
assert.ok(projectContent.includes('<name>'), '.project file should contain project name tag');
|
|
458
|
-
assert.ok(projectContent.includes(cartridgeName), '.project file should reference cartridge name');
|
|
459
|
-
});
|
|
460
|
-
|
|
461
|
-
test('should handle nested directory creation correctly', async () => {
|
|
462
|
-
const testDir = createTempTestDir();
|
|
463
|
-
const cartridgeName = 'test_nested_dirs';
|
|
464
|
-
|
|
465
|
-
const result = await client.callTool('generate_cartridge_structure', {
|
|
466
|
-
cartridgeName,
|
|
467
|
-
targetPath: testDir,
|
|
468
|
-
fullProjectSetup: false
|
|
469
|
-
});
|
|
470
|
-
|
|
471
|
-
const response = parseToolResponse(result);
|
|
472
|
-
assert.equal(response.success, true, 'Should create nested directories successfully');
|
|
473
|
-
|
|
474
|
-
// Verify deeply nested directories were created
|
|
475
|
-
const deepPath = join(testDir, 'cartridges', cartridgeName, 'cartridge', 'client', 'default', 'scss');
|
|
476
|
-
assert.ok(await directoryExists(deepPath), 'Deep nested directory structure should be created');
|
|
477
|
-
|
|
478
|
-
// Verify specific key directories in the structure exist
|
|
479
|
-
const keyDirectories = [
|
|
480
|
-
join(testDir, 'cartridges', cartridgeName),
|
|
481
|
-
join(testDir, 'cartridges', cartridgeName, 'cartridge'),
|
|
482
|
-
join(testDir, 'cartridges', cartridgeName, 'cartridge', 'client'),
|
|
483
|
-
join(testDir, 'cartridges', cartridgeName, 'cartridge', 'client', 'default'),
|
|
484
|
-
join(testDir, 'cartridges', cartridgeName, 'cartridge', 'client', 'default', 'scss')
|
|
485
|
-
];
|
|
486
|
-
|
|
487
|
-
for (const dir of keyDirectories) {
|
|
488
|
-
assert.ok(await directoryExists(dir), `Key directory ${dir} should exist`);
|
|
489
|
-
}
|
|
490
|
-
});
|
|
491
|
-
});
|
|
492
|
-
|
|
493
|
-
describe('Edge Cases and Error Handling', () => {
|
|
494
|
-
test('should handle special characters in target path', async () => {
|
|
495
|
-
const specialDir = join(tmpdir(), 'mcp-test-special chars & symbols');
|
|
496
|
-
testDirectories.push(specialDir);
|
|
497
|
-
const cartridgeName = 'test_special_path';
|
|
498
|
-
|
|
499
|
-
const result = await client.callTool('generate_cartridge_structure', {
|
|
500
|
-
cartridgeName,
|
|
501
|
-
targetPath: specialDir,
|
|
502
|
-
fullProjectSetup: false
|
|
503
|
-
});
|
|
504
|
-
|
|
505
|
-
const response = parseToolResponse(result);
|
|
506
|
-
assert.equal(response.success, true, 'Should handle special characters in path');
|
|
507
|
-
|
|
508
|
-
const cartridgeDir = join(specialDir, 'cartridges', cartridgeName);
|
|
509
|
-
assert.ok(await directoryExists(cartridgeDir), 'Should create cartridge in path with special characters');
|
|
510
|
-
});
|
|
511
|
-
|
|
512
|
-
test('should report created files and directories accurately', async () => {
|
|
513
|
-
const testDir = createTempTestDir();
|
|
514
|
-
const cartridgeName = 'test_file_reporting';
|
|
515
|
-
|
|
516
|
-
const result = await client.callTool('generate_cartridge_structure', {
|
|
517
|
-
cartridgeName,
|
|
518
|
-
targetPath: testDir,
|
|
519
|
-
fullProjectSetup: true
|
|
520
|
-
});
|
|
521
|
-
|
|
522
|
-
const response = parseToolResponse(result);
|
|
523
|
-
assert.equal(response.success, true, 'Operation should be successful');
|
|
524
|
-
|
|
525
|
-
// Verify all reported files actually exist
|
|
526
|
-
for (const filePath of response.createdFiles) {
|
|
527
|
-
assert.ok(await fileExists(filePath), `Reported file ${filePath} should actually exist`);
|
|
528
|
-
}
|
|
529
|
-
|
|
530
|
-
// Verify all reported directories actually exist
|
|
531
|
-
for (const dirPath of response.createdDirectories) {
|
|
532
|
-
assert.ok(await directoryExists(dirPath), `Reported directory ${dirPath} should actually exist`);
|
|
533
|
-
}
|
|
534
|
-
|
|
535
|
-
// Verify files list is comprehensive - check for essential files
|
|
536
|
-
const essentialFiles = ['package.json', 'dw.json', '.gitignore'];
|
|
537
|
-
for (const file of essentialFiles) {
|
|
538
|
-
assert.ok(response.createdFiles.some(f => f.endsWith(file)), `Essential file ${file} should be in createdFiles list`);
|
|
539
|
-
}
|
|
540
|
-
|
|
541
|
-
// Verify no duplicate entries in created files/directories
|
|
542
|
-
const uniqueFiles = new Set(response.createdFiles);
|
|
543
|
-
const uniqueDirs = new Set(response.createdDirectories);
|
|
544
|
-
|
|
545
|
-
assert.equal(response.createdFiles.length, uniqueFiles.size, 'createdFiles should not contain duplicates');
|
|
546
|
-
assert.equal(response.createdDirectories.length, uniqueDirs.size, 'createdDirectories should not contain duplicates');
|
|
547
|
-
});
|
|
548
|
-
|
|
549
|
-
test('should handle very long cartridge names appropriately', async () => {
|
|
550
|
-
const testDir = createTempTestDir();
|
|
551
|
-
const longCartridgeName = 'very_long_cartridge_name_that_exceeds_normal_limits_but_should_still_work_properly_for_testing_purposes';
|
|
552
|
-
|
|
553
|
-
const result = await client.callTool('generate_cartridge_structure', {
|
|
554
|
-
cartridgeName: longCartridgeName,
|
|
555
|
-
targetPath: testDir,
|
|
556
|
-
fullProjectSetup: false
|
|
557
|
-
});
|
|
558
|
-
|
|
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
|
|
564
|
-
const cartridgeDir = join(testDir, 'cartridges', longCartridgeName);
|
|
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
|
-
);
|
|
574
|
-
}
|
|
575
|
-
});
|
|
576
|
-
});
|
|
577
|
-
|
|
578
|
-
describe('Response Format Consistency', () => {
|
|
579
|
-
test('should always return consistent JSON response structure', async () => {
|
|
580
|
-
const testDir = createTempTestDir();
|
|
581
|
-
const cartridgeName = 'test_response_format';
|
|
582
|
-
|
|
583
|
-
const result = await client.callTool('generate_cartridge_structure', {
|
|
584
|
-
cartridgeName,
|
|
585
|
-
targetPath: testDir,
|
|
586
|
-
fullProjectSetup: false
|
|
587
|
-
});
|
|
588
|
-
|
|
589
|
-
const response = parseToolResponse(result);
|
|
590
|
-
|
|
591
|
-
// Verify required response fields
|
|
592
|
-
assert.ok(typeof response.success === 'boolean', 'Response should have boolean success field');
|
|
593
|
-
assert.ok(typeof response.message === 'string', 'Response should have string message field');
|
|
594
|
-
assert.ok(Array.isArray(response.createdFiles), 'Response should have createdFiles array');
|
|
595
|
-
assert.ok(Array.isArray(response.createdDirectories), 'Response should have createdDirectories array');
|
|
596
|
-
assert.ok(Array.isArray(response.skippedFiles), 'Response should have skippedFiles array');
|
|
597
|
-
|
|
598
|
-
// Verify field content types
|
|
599
|
-
for (const file of response.createdFiles) {
|
|
600
|
-
assert.ok(typeof file === 'string', 'All createdFiles entries should be strings');
|
|
601
|
-
assert.ok(file.length > 0, 'All createdFiles entries should be non-empty');
|
|
602
|
-
}
|
|
603
|
-
|
|
604
|
-
for (const dir of response.createdDirectories) {
|
|
605
|
-
assert.ok(typeof dir === 'string', 'All createdDirectories entries should be strings');
|
|
606
|
-
assert.ok(dir.length > 0, 'All createdDirectories entries should be non-empty');
|
|
607
|
-
}
|
|
608
|
-
|
|
609
|
-
for (const skipped of response.skippedFiles) {
|
|
610
|
-
assert.ok(typeof skipped === 'string', 'All skippedFiles entries should be strings');
|
|
611
|
-
}
|
|
612
|
-
});
|
|
613
|
-
|
|
614
|
-
test('should provide meaningful success messages', async () => {
|
|
615
|
-
const testDir = createTempTestDir();
|
|
616
|
-
const cartridgeName = 'test_success_message';
|
|
617
|
-
|
|
618
|
-
// Test full project setup message
|
|
619
|
-
const fullResult = await client.callTool('generate_cartridge_structure', {
|
|
620
|
-
cartridgeName: cartridgeName + '_full',
|
|
621
|
-
targetPath: testDir + '_full',
|
|
622
|
-
fullProjectSetup: true
|
|
623
|
-
});
|
|
624
|
-
|
|
625
|
-
const fullResponse = parseToolResponse(fullResult);
|
|
626
|
-
assert.ok(fullResponse.message.includes('full project setup'), 'Full project message should mention full project setup');
|
|
627
|
-
assert.ok(fullResponse.message.includes(cartridgeName + '_full'), 'Message should include cartridge name');
|
|
628
|
-
|
|
629
|
-
// Test cartridge-only message
|
|
630
|
-
const cartridgeResult = await client.callTool('generate_cartridge_structure', {
|
|
631
|
-
cartridgeName: cartridgeName + '_only',
|
|
632
|
-
targetPath: testDir + '_only',
|
|
633
|
-
fullProjectSetup: false
|
|
634
|
-
});
|
|
635
|
-
|
|
636
|
-
const cartridgeResponse = parseToolResponse(cartridgeResult);
|
|
637
|
-
assert.ok(cartridgeResponse.message.includes('existing project'), 'Cartridge-only message should mention existing project');
|
|
638
|
-
assert.ok(cartridgeResponse.message.includes(cartridgeName + '_only'), 'Message should include cartridge name');
|
|
639
|
-
|
|
640
|
-
// Add these additional test directories to cleanup list
|
|
641
|
-
testDirectories.push(testDir + '_full', testDir + '_only');
|
|
642
|
-
});
|
|
643
|
-
});
|
|
644
|
-
});
|