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,1032 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Advanced programmatic tests for get_sfcc_class_info tool (docs-only mode)
|
|
3
|
-
*
|
|
4
|
-
* These tests go beyond what's possible with YAML testing to provide:
|
|
5
|
-
* - Complex validation scenarios
|
|
6
|
-
* - Concurrent request handling
|
|
7
|
-
* - Advanced workflow simulation
|
|
8
|
-
* - Stress testing
|
|
9
|
-
*
|
|
10
|
-
* @requires mcp-aegis
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import { test, describe, before, after, beforeEach } from 'node:test';
|
|
14
|
-
import { strict as assert } from 'node:assert';
|
|
15
|
-
import { connect } from 'mcp-aegis';
|
|
16
|
-
|
|
17
|
-
let client;
|
|
18
|
-
|
|
19
|
-
describe('SFCC MCP Server - get_sfcc_class_info Tool (Documentation-Only Mode)', () => {
|
|
20
|
-
// ==================================================================================
|
|
21
|
-
// SETUP AND TEARDOWN
|
|
22
|
-
// ==================================================================================
|
|
23
|
-
|
|
24
|
-
before(async () => {
|
|
25
|
-
client = await connect('./aegis.config.docs-only.json');
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
after(async () => {
|
|
29
|
-
if (client?.connected) {
|
|
30
|
-
await client.disconnect();
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
beforeEach(() => {
|
|
35
|
-
// CRITICAL: Clear all buffers to prevent leaking into next tests
|
|
36
|
-
client.clearAllBuffers(); // Recommended - comprehensive protection
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
// ==================================================================================
|
|
40
|
-
// TOOL DISCOVERY AND METADATA TESTS
|
|
41
|
-
// ==================================================================================
|
|
42
|
-
|
|
43
|
-
test('should successfully connect and discover get_sfcc_class_info tool', async () => {
|
|
44
|
-
const tools = await client.listTools();
|
|
45
|
-
const targetTool = tools.find(tool => tool.name === 'get_sfcc_class_info');
|
|
46
|
-
|
|
47
|
-
assert(targetTool, 'get_sfcc_class_info tool should be available');
|
|
48
|
-
assert.strictEqual(targetTool.name, 'get_sfcc_class_info');
|
|
49
|
-
assert(targetTool.description, 'Tool should have description');
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
test('should have properly structured tool metadata', async () => {
|
|
53
|
-
const tools = await client.listTools();
|
|
54
|
-
const tool = tools.find(t => t.name === 'get_sfcc_class_info');
|
|
55
|
-
|
|
56
|
-
assert(tool.inputSchema, 'Tool should have input schema');
|
|
57
|
-
assert(tool.inputSchema.properties, 'Schema should have properties');
|
|
58
|
-
assert(tool.inputSchema.properties.className, 'Should have className parameter');
|
|
59
|
-
assert(tool.inputSchema.properties.expand, 'Should have expand parameter');
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
test('should validate className parameter schema', async () => {
|
|
63
|
-
const tools = await client.listTools();
|
|
64
|
-
const tool = tools.find(t => t.name === 'get_sfcc_class_info');
|
|
65
|
-
const classNameParam = tool.inputSchema.properties.className;
|
|
66
|
-
|
|
67
|
-
assert.strictEqual(classNameParam.type, 'string');
|
|
68
|
-
assert(classNameParam.description);
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
test('should validate expand parameter schema', async () => {
|
|
72
|
-
const tools = await client.listTools();
|
|
73
|
-
const tool = tools.find(t => t.name === 'get_sfcc_class_info');
|
|
74
|
-
const expandParam = tool.inputSchema.properties.expand;
|
|
75
|
-
|
|
76
|
-
assert.strictEqual(expandParam.type, 'boolean');
|
|
77
|
-
assert(expandParam.description);
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
// ==================================================================================
|
|
81
|
-
// BASIC FUNCTIONALITY TESTS
|
|
82
|
-
// ==================================================================================
|
|
83
|
-
|
|
84
|
-
test('should execute with basic SFCC class successfully', async () => {
|
|
85
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
86
|
-
className: 'dw.catalog.Product'
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
assertValidMCPResponse(result);
|
|
90
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
91
|
-
|
|
92
|
-
assert.strictEqual(classInfo.className, 'Product');
|
|
93
|
-
assert.strictEqual(classInfo.packageName, 'dw.catalog');
|
|
94
|
-
assert(classInfo.description);
|
|
95
|
-
assert(Array.isArray(classInfo.properties));
|
|
96
|
-
assert(Array.isArray(classInfo.methods));
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
test('should work with short class names', async () => {
|
|
100
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
101
|
-
className: 'Product'
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
assertValidMCPResponse(result);
|
|
105
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
106
|
-
|
|
107
|
-
assert.strictEqual(classInfo.className, 'Product');
|
|
108
|
-
assert.strictEqual(classInfo.packageName, 'dw.catalog');
|
|
109
|
-
assert(classInfo.description);
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
test('should work with TopLevel classes', async () => {
|
|
113
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
114
|
-
className: 'Customer'
|
|
115
|
-
});
|
|
116
|
-
|
|
117
|
-
assertValidMCPResponse(result);
|
|
118
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
119
|
-
|
|
120
|
-
assert.strictEqual(classInfo.className, 'Customer');
|
|
121
|
-
assert(classInfo.packageName === 'dw.customer' || classInfo.packageName === 'TopLevel');
|
|
122
|
-
assert(classInfo.description);
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
// ==================================================================================
|
|
126
|
-
// EXPAND PARAMETER TESTS
|
|
127
|
-
// ==================================================================================
|
|
128
|
-
|
|
129
|
-
test('should handle expand parameter set to false', async () => {
|
|
130
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
131
|
-
className: 'dw.catalog.Product',
|
|
132
|
-
expand: false
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
assertValidMCPResponse(result);
|
|
136
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
137
|
-
|
|
138
|
-
assert.strictEqual(classInfo.className, 'Product');
|
|
139
|
-
assert(classInfo.properties);
|
|
140
|
-
assert(classInfo.methods);
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
test('should handle expand parameter set to true', async () => {
|
|
144
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
145
|
-
className: 'dw.catalog.Product',
|
|
146
|
-
expand: true
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
assertValidMCPResponse(result);
|
|
150
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
151
|
-
|
|
152
|
-
assert.strictEqual(classInfo.className, 'Product');
|
|
153
|
-
assert(classInfo.properties);
|
|
154
|
-
assert(classInfo.methods);
|
|
155
|
-
// When expand is true, we might get additional referenced type information
|
|
156
|
-
});
|
|
157
|
-
|
|
158
|
-
// ==================================================================================
|
|
159
|
-
// COMPLEX CLASS TESTS
|
|
160
|
-
// ==================================================================================
|
|
161
|
-
|
|
162
|
-
test('should handle complex classes with many methods', async () => {
|
|
163
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
164
|
-
className: 'dw.catalog.Product'
|
|
165
|
-
});
|
|
166
|
-
|
|
167
|
-
assertValidMCPResponse(result);
|
|
168
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
169
|
-
|
|
170
|
-
assert(classInfo.methods.length > 10, 'Product should have many methods');
|
|
171
|
-
assert(classInfo.properties.length > 5, 'Product should have many properties');
|
|
172
|
-
|
|
173
|
-
// Validate method structure
|
|
174
|
-
const sampleMethod = classInfo.methods[0];
|
|
175
|
-
assert(sampleMethod.name, 'Method should have name');
|
|
176
|
-
assert(sampleMethod.signature, 'Method should have signature');
|
|
177
|
-
assert(sampleMethod.description, 'Method should have description');
|
|
178
|
-
});
|
|
179
|
-
|
|
180
|
-
test('should handle variation model classes', async () => {
|
|
181
|
-
const testClasses = [
|
|
182
|
-
'dw.catalog.ProductVariationModel',
|
|
183
|
-
'dw.catalog.ProductVariationAttribute',
|
|
184
|
-
'dw.catalog.ProductVariationAttributeValue'
|
|
185
|
-
];
|
|
186
|
-
|
|
187
|
-
for (const className of testClasses) {
|
|
188
|
-
const result = await client.callTool('get_sfcc_class_info', { className });
|
|
189
|
-
assertValidMCPResponse(result);
|
|
190
|
-
|
|
191
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
192
|
-
assert(classInfo.className, `${className} should have className`);
|
|
193
|
-
assert(classInfo.description, `${className} should have description`);
|
|
194
|
-
}
|
|
195
|
-
});
|
|
196
|
-
|
|
197
|
-
test('should handle inventory-related classes', async () => {
|
|
198
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
199
|
-
className: 'dw.catalog.ProductInventoryList'
|
|
200
|
-
});
|
|
201
|
-
|
|
202
|
-
assertValidMCPResponse(result);
|
|
203
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
204
|
-
|
|
205
|
-
assert.strictEqual(classInfo.className, 'ProductInventoryList');
|
|
206
|
-
assert.strictEqual(classInfo.packageName, 'dw.catalog');
|
|
207
|
-
});
|
|
208
|
-
|
|
209
|
-
// ==================================================================================
|
|
210
|
-
// ERROR HANDLING TESTS
|
|
211
|
-
// ==================================================================================
|
|
212
|
-
|
|
213
|
-
test('should handle invalid class names gracefully', async () => {
|
|
214
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
215
|
-
className: 'NonExistentClass'
|
|
216
|
-
});
|
|
217
|
-
|
|
218
|
-
// Should either return an error or empty results
|
|
219
|
-
assert(result.content || result.error, 'Should have some response');
|
|
220
|
-
});
|
|
221
|
-
|
|
222
|
-
test('should handle empty class name', async () => {
|
|
223
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
224
|
-
className: ''
|
|
225
|
-
});
|
|
226
|
-
|
|
227
|
-
// Should handle empty input gracefully
|
|
228
|
-
assert(result.content || result.error, 'Should handle empty className');
|
|
229
|
-
});
|
|
230
|
-
|
|
231
|
-
test('should handle missing className parameter', async () => {
|
|
232
|
-
try {
|
|
233
|
-
await client.callTool('get_sfcc_class_info', {});
|
|
234
|
-
assert.fail('Should have thrown an error for missing className');
|
|
235
|
-
} catch (error) {
|
|
236
|
-
assert(error.message.includes('className') || error.message.includes('required'),
|
|
237
|
-
'Error should mention className requirement');
|
|
238
|
-
}
|
|
239
|
-
});
|
|
240
|
-
|
|
241
|
-
test('should handle malformed class names', async () => {
|
|
242
|
-
const malformedNames = [
|
|
243
|
-
'dw.catalog..Product',
|
|
244
|
-
'.Product',
|
|
245
|
-
'dw.',
|
|
246
|
-
'dw catalog Product',
|
|
247
|
-
'dw/catalog/Product'
|
|
248
|
-
];
|
|
249
|
-
|
|
250
|
-
for (const className of malformedNames) {
|
|
251
|
-
const result = await client.callTool('get_sfcc_class_info', { className });
|
|
252
|
-
// Should handle malformed names without crashing
|
|
253
|
-
assert(result, `Should handle malformed name: ${className}`);
|
|
254
|
-
}
|
|
255
|
-
});
|
|
256
|
-
|
|
257
|
-
test('should handle case sensitivity properly', async () => {
|
|
258
|
-
const variations = [
|
|
259
|
-
'dw.catalog.product',
|
|
260
|
-
'DW.CATALOG.PRODUCT',
|
|
261
|
-
'dw.Catalog.Product'
|
|
262
|
-
];
|
|
263
|
-
|
|
264
|
-
for (const className of variations) {
|
|
265
|
-
const result = await client.callTool('get_sfcc_class_info', { className });
|
|
266
|
-
// Should either work or fail gracefully
|
|
267
|
-
assert(result, `Should handle case variation: ${className}`);
|
|
268
|
-
}
|
|
269
|
-
});
|
|
270
|
-
|
|
271
|
-
// ==================================================================================
|
|
272
|
-
// CONSISTENCY AND RELIABILITY TESTS
|
|
273
|
-
// ==================================================================================
|
|
274
|
-
|
|
275
|
-
test('should return consistent results for repeated calls', async () => {
|
|
276
|
-
const className = 'dw.catalog.Catalog';
|
|
277
|
-
|
|
278
|
-
const result1 = await client.callTool('get_sfcc_class_info', { className });
|
|
279
|
-
const result2 = await client.callTool('get_sfcc_class_info', { className });
|
|
280
|
-
|
|
281
|
-
assertValidMCPResponse(result1);
|
|
282
|
-
assertValidMCPResponse(result2);
|
|
283
|
-
|
|
284
|
-
const class1 = JSON.parse(result1.content[0].text);
|
|
285
|
-
const class2 = JSON.parse(result2.content[0].text);
|
|
286
|
-
|
|
287
|
-
assert.deepStrictEqual(class1, class2, 'Results should be identical');
|
|
288
|
-
});
|
|
289
|
-
|
|
290
|
-
test('should handle concurrent requests properly', async () => {
|
|
291
|
-
const classNames = [
|
|
292
|
-
'dw.catalog.Product',
|
|
293
|
-
'dw.catalog.Category',
|
|
294
|
-
'dw.catalog.Catalog',
|
|
295
|
-
'dw.system.Site',
|
|
296
|
-
'dw.customer.Customer'
|
|
297
|
-
];
|
|
298
|
-
|
|
299
|
-
const promises = classNames.map(className =>
|
|
300
|
-
client.callTool('get_sfcc_class_info', { className })
|
|
301
|
-
);
|
|
302
|
-
|
|
303
|
-
const results = await Promise.all(promises);
|
|
304
|
-
|
|
305
|
-
results.forEach((result, index) => {
|
|
306
|
-
assertValidMCPResponse(result);
|
|
307
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
308
|
-
assert(classInfo.className, `Result ${index} should have className`);
|
|
309
|
-
});
|
|
310
|
-
});
|
|
311
|
-
|
|
312
|
-
// ==================================================================================
|
|
313
|
-
// ADVANCED VALIDATION TESTS
|
|
314
|
-
// ==================================================================================
|
|
315
|
-
|
|
316
|
-
test('should validate complete JSON structure for various classes', async () => {
|
|
317
|
-
const testClasses = [
|
|
318
|
-
'dw.catalog.Product',
|
|
319
|
-
'dw.catalog.Category',
|
|
320
|
-
'dw.system.Site'
|
|
321
|
-
];
|
|
322
|
-
|
|
323
|
-
for (const className of testClasses) {
|
|
324
|
-
const result = await client.callTool('get_sfcc_class_info', { className });
|
|
325
|
-
assertValidMCPResponse(result);
|
|
326
|
-
|
|
327
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
328
|
-
|
|
329
|
-
// Validate required fields
|
|
330
|
-
assert(classInfo.className, `${className} should have className`);
|
|
331
|
-
assert(classInfo.packageName, `${className} should have packageName`);
|
|
332
|
-
assert(classInfo.description, `${className} should have description`);
|
|
333
|
-
assert(Array.isArray(classInfo.properties), `${className} should have properties array`);
|
|
334
|
-
assert(Array.isArray(classInfo.methods), `${className} should have methods array`);
|
|
335
|
-
assert(Array.isArray(classInfo.constants), `${className} should have constants array`);
|
|
336
|
-
}
|
|
337
|
-
});
|
|
338
|
-
|
|
339
|
-
test('should validate method signatures and descriptions', async () => {
|
|
340
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
341
|
-
className: 'dw.catalog.Product'
|
|
342
|
-
});
|
|
343
|
-
|
|
344
|
-
assertValidMCPResponse(result);
|
|
345
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
346
|
-
|
|
347
|
-
// Validate method structure
|
|
348
|
-
classInfo.methods.slice(0, 5).forEach((method, index) => {
|
|
349
|
-
assert(method.name, `Method ${index} should have name`);
|
|
350
|
-
assert(method.signature, `Method ${index} should have signature`);
|
|
351
|
-
assert(method.description, `Method ${index} should have description`);
|
|
352
|
-
assert(method.signature.includes(method.name),
|
|
353
|
-
`Method ${index} signature should contain method name`);
|
|
354
|
-
});
|
|
355
|
-
});
|
|
356
|
-
|
|
357
|
-
test('should validate property structure', async () => {
|
|
358
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
359
|
-
className: 'dw.catalog.Product'
|
|
360
|
-
});
|
|
361
|
-
|
|
362
|
-
assertValidMCPResponse(result);
|
|
363
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
364
|
-
|
|
365
|
-
// Validate property structure
|
|
366
|
-
classInfo.properties.slice(0, 5).forEach((property, index) => {
|
|
367
|
-
assert(property.name, `Property ${index} should have name`);
|
|
368
|
-
assert(property.type, `Property ${index} should have type`);
|
|
369
|
-
assert(property.description, `Property ${index} should have description`);
|
|
370
|
-
});
|
|
371
|
-
});
|
|
372
|
-
|
|
373
|
-
// ==================================================================================
|
|
374
|
-
// INTEGRATION AND WORKFLOW TESTS
|
|
375
|
-
// ==================================================================================
|
|
376
|
-
|
|
377
|
-
test('should support class discovery workflow', async () => {
|
|
378
|
-
// In docs-only mode, we test the main functionality directly
|
|
379
|
-
const classResult = await client.callTool('get_sfcc_class_info', {
|
|
380
|
-
className: 'dw.catalog.Catalog'
|
|
381
|
-
});
|
|
382
|
-
|
|
383
|
-
assertValidMCPResponse(classResult);
|
|
384
|
-
const classInfo = JSON.parse(classResult.content[0].text);
|
|
385
|
-
|
|
386
|
-
assert.strictEqual(classInfo.className, 'Catalog');
|
|
387
|
-
assert.strictEqual(classInfo.packageName, 'dw.catalog');
|
|
388
|
-
assert(classInfo.description);
|
|
389
|
-
});
|
|
390
|
-
|
|
391
|
-
test('should support development workflow simulation', async () => {
|
|
392
|
-
// Simulate a developer exploring the Product class
|
|
393
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
394
|
-
className: 'dw.catalog.Product'
|
|
395
|
-
});
|
|
396
|
-
|
|
397
|
-
assertValidMCPResponse(result);
|
|
398
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
399
|
-
|
|
400
|
-
// Check for commonly used methods
|
|
401
|
-
const methodNames = classInfo.methods.map(m => m.name);
|
|
402
|
-
const importantMethods = ['getID', 'getName', 'isOnline', 'isAvailable'];
|
|
403
|
-
|
|
404
|
-
importantMethods.forEach(methodName => {
|
|
405
|
-
assert(methodNames.includes(methodName),
|
|
406
|
-
`Product class should have ${methodName} method`);
|
|
407
|
-
});
|
|
408
|
-
});
|
|
409
|
-
|
|
410
|
-
// ==================================================================================
|
|
411
|
-
// STRESS AND EDGE CASE TESTS
|
|
412
|
-
// ==================================================================================
|
|
413
|
-
|
|
414
|
-
test('should handle rapid successive calls without issues', async () => {
|
|
415
|
-
const calls = 10;
|
|
416
|
-
const className = 'dw.catalog.Category';
|
|
417
|
-
|
|
418
|
-
const promises = Array(calls).fill().map(() =>
|
|
419
|
-
client.callTool('get_sfcc_class_info', { className })
|
|
420
|
-
);
|
|
421
|
-
|
|
422
|
-
const results = await Promise.all(promises);
|
|
423
|
-
|
|
424
|
-
results.forEach(result => {
|
|
425
|
-
assertValidMCPResponse(result);
|
|
426
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
427
|
-
assert.strictEqual(classInfo.className, 'Category');
|
|
428
|
-
});
|
|
429
|
-
});
|
|
430
|
-
|
|
431
|
-
test('should maintain accuracy across different parameter combinations', async () => {
|
|
432
|
-
const testCases = [
|
|
433
|
-
{ className: 'dw.catalog.Product', expand: false },
|
|
434
|
-
{ className: 'dw.catalog.Product', expand: true },
|
|
435
|
-
{ className: 'Product', expand: false },
|
|
436
|
-
{ className: 'Product', expand: true }
|
|
437
|
-
];
|
|
438
|
-
|
|
439
|
-
const results = await Promise.all(
|
|
440
|
-
testCases.map(params => client.callTool('get_sfcc_class_info', params))
|
|
441
|
-
);
|
|
442
|
-
|
|
443
|
-
results.forEach(result => {
|
|
444
|
-
assertValidMCPResponse(result);
|
|
445
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
446
|
-
assert.strictEqual(classInfo.className, 'Product');
|
|
447
|
-
assert.strictEqual(classInfo.packageName, 'dw.catalog');
|
|
448
|
-
});
|
|
449
|
-
});
|
|
450
|
-
|
|
451
|
-
// ==================================================================================
|
|
452
|
-
// FILTERING PARAMETERS COMPREHENSIVE TESTS
|
|
453
|
-
// ==================================================================================
|
|
454
|
-
|
|
455
|
-
describe('Filtering Parameters', () => {
|
|
456
|
-
test('should validate all filtering parameters exist in tool schema', async () => {
|
|
457
|
-
const tools = await client.listTools();
|
|
458
|
-
const tool = tools.find(t => t.name === 'get_sfcc_class_info');
|
|
459
|
-
const props = tool.inputSchema.properties;
|
|
460
|
-
|
|
461
|
-
// Validate all new filtering parameters are defined
|
|
462
|
-
assert(props.includeDescription, 'Should have includeDescription parameter');
|
|
463
|
-
assert(props.includeConstants, 'Should have includeConstants parameter');
|
|
464
|
-
assert(props.includeProperties, 'Should have includeProperties parameter');
|
|
465
|
-
assert(props.includeMethods, 'Should have includeMethods parameter');
|
|
466
|
-
assert(props.includeInheritance, 'Should have includeInheritance parameter');
|
|
467
|
-
assert(props.search, 'Should have search parameter');
|
|
468
|
-
|
|
469
|
-
// Validate parameter types
|
|
470
|
-
assert.strictEqual(props.includeDescription.type, 'boolean');
|
|
471
|
-
assert.strictEqual(props.includeConstants.type, 'boolean');
|
|
472
|
-
assert.strictEqual(props.includeProperties.type, 'boolean');
|
|
473
|
-
assert.strictEqual(props.includeMethods.type, 'boolean');
|
|
474
|
-
assert.strictEqual(props.includeInheritance.type, 'boolean');
|
|
475
|
-
assert.strictEqual(props.search.type, 'string');
|
|
476
|
-
});
|
|
477
|
-
|
|
478
|
-
test('should include all sections by default', async () => {
|
|
479
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
480
|
-
className: 'dw.catalog.Product'
|
|
481
|
-
});
|
|
482
|
-
|
|
483
|
-
assertValidMCPResponse(result);
|
|
484
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
485
|
-
|
|
486
|
-
// Verify all sections are present by default
|
|
487
|
-
assert(classInfo.description, 'Should include description by default');
|
|
488
|
-
assert(Array.isArray(classInfo.constants), 'Should include constants array');
|
|
489
|
-
assert(Array.isArray(classInfo.properties), 'Should include properties array');
|
|
490
|
-
assert(Array.isArray(classInfo.methods), 'Should include methods array');
|
|
491
|
-
assert(classInfo.inheritance, 'Should include inheritance by default');
|
|
492
|
-
});
|
|
493
|
-
|
|
494
|
-
test('should exclude description when includeDescription is false', async () => {
|
|
495
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
496
|
-
className: 'dw.catalog.Product',
|
|
497
|
-
includeDescription: false
|
|
498
|
-
});
|
|
499
|
-
|
|
500
|
-
assertValidMCPResponse(result);
|
|
501
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
502
|
-
|
|
503
|
-
// Description should be excluded or empty
|
|
504
|
-
assert(!classInfo.description || classInfo.description === '',
|
|
505
|
-
'Description should be excluded when includeDescription is false');
|
|
506
|
-
|
|
507
|
-
// Other sections should still be present
|
|
508
|
-
assert(Array.isArray(classInfo.properties), 'Properties should still be included');
|
|
509
|
-
assert(Array.isArray(classInfo.methods), 'Methods should still be included');
|
|
510
|
-
});
|
|
511
|
-
|
|
512
|
-
test('should exclude constants when includeConstants is false', async () => {
|
|
513
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
514
|
-
className: 'dw.catalog.Product',
|
|
515
|
-
includeConstants: false
|
|
516
|
-
});
|
|
517
|
-
|
|
518
|
-
assertValidMCPResponse(result);
|
|
519
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
520
|
-
|
|
521
|
-
// Constants should be excluded or empty
|
|
522
|
-
assert(!classInfo.constants || classInfo.constants.length === 0,
|
|
523
|
-
'Constants should be excluded when includeConstants is false');
|
|
524
|
-
|
|
525
|
-
// Other sections should still be present
|
|
526
|
-
assert(classInfo.description, 'Description should still be included');
|
|
527
|
-
assert(Array.isArray(classInfo.properties), 'Properties should still be included');
|
|
528
|
-
});
|
|
529
|
-
|
|
530
|
-
test('should exclude properties when includeProperties is false', async () => {
|
|
531
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
532
|
-
className: 'dw.catalog.Product',
|
|
533
|
-
includeProperties: false
|
|
534
|
-
});
|
|
535
|
-
|
|
536
|
-
assertValidMCPResponse(result);
|
|
537
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
538
|
-
|
|
539
|
-
// Properties should be excluded or empty
|
|
540
|
-
assert(!classInfo.properties || classInfo.properties.length === 0,
|
|
541
|
-
'Properties should be excluded when includeProperties is false');
|
|
542
|
-
|
|
543
|
-
// Other sections should still be present
|
|
544
|
-
assert(classInfo.description, 'Description should still be included');
|
|
545
|
-
assert(Array.isArray(classInfo.methods), 'Methods should still be included');
|
|
546
|
-
});
|
|
547
|
-
|
|
548
|
-
test('should exclude methods when includeMethods is false', async () => {
|
|
549
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
550
|
-
className: 'dw.catalog.Product',
|
|
551
|
-
includeMethods: false
|
|
552
|
-
});
|
|
553
|
-
|
|
554
|
-
assertValidMCPResponse(result);
|
|
555
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
556
|
-
|
|
557
|
-
// Methods should be excluded or empty
|
|
558
|
-
assert(!classInfo.methods || classInfo.methods.length === 0,
|
|
559
|
-
'Methods should be excluded when includeMethods is false');
|
|
560
|
-
|
|
561
|
-
// Other sections should still be present
|
|
562
|
-
assert(classInfo.description, 'Description should still be included');
|
|
563
|
-
assert(Array.isArray(classInfo.properties), 'Properties should still be included');
|
|
564
|
-
});
|
|
565
|
-
|
|
566
|
-
test('should exclude inheritance when includeInheritance is false', async () => {
|
|
567
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
568
|
-
className: 'dw.catalog.Product',
|
|
569
|
-
includeInheritance: false
|
|
570
|
-
});
|
|
571
|
-
|
|
572
|
-
assertValidMCPResponse(result);
|
|
573
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
574
|
-
|
|
575
|
-
// Inheritance should be excluded or empty
|
|
576
|
-
assert(!classInfo.inheritance ||
|
|
577
|
-
(Array.isArray(classInfo.inheritance) && classInfo.inheritance.length === 0) ||
|
|
578
|
-
classInfo.inheritance === '',
|
|
579
|
-
'Inheritance should be excluded when includeInheritance is false');
|
|
580
|
-
|
|
581
|
-
// Other sections should still be present
|
|
582
|
-
assert(classInfo.description, 'Description should still be included');
|
|
583
|
-
assert(Array.isArray(classInfo.methods), 'Methods should still be included');
|
|
584
|
-
});
|
|
585
|
-
|
|
586
|
-
test('should create minimal response when all filters disabled', async () => {
|
|
587
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
588
|
-
className: 'dw.catalog.Product',
|
|
589
|
-
includeDescription: false,
|
|
590
|
-
includeConstants: false,
|
|
591
|
-
includeProperties: false,
|
|
592
|
-
includeMethods: false,
|
|
593
|
-
includeInheritance: false
|
|
594
|
-
});
|
|
595
|
-
|
|
596
|
-
assertValidMCPResponse(result);
|
|
597
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
598
|
-
|
|
599
|
-
// Only basic class info should remain
|
|
600
|
-
assert.strictEqual(classInfo.className, 'Product');
|
|
601
|
-
assert.strictEqual(classInfo.packageName, 'dw.catalog');
|
|
602
|
-
|
|
603
|
-
// All optional sections should be excluded or empty
|
|
604
|
-
assert(!classInfo.description || classInfo.description === '');
|
|
605
|
-
assert(!classInfo.constants || classInfo.constants.length === 0);
|
|
606
|
-
assert(!classInfo.properties || classInfo.properties.length === 0);
|
|
607
|
-
assert(!classInfo.methods || classInfo.methods.length === 0);
|
|
608
|
-
assert(!classInfo.inheritance ||
|
|
609
|
-
(Array.isArray(classInfo.inheritance) && classInfo.inheritance.length === 0) ||
|
|
610
|
-
classInfo.inheritance === '');
|
|
611
|
-
});
|
|
612
|
-
|
|
613
|
-
test('should combine filtering parameters effectively', async () => {
|
|
614
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
615
|
-
className: 'dw.catalog.Product',
|
|
616
|
-
includeDescription: true,
|
|
617
|
-
includeConstants: false,
|
|
618
|
-
includeProperties: true,
|
|
619
|
-
includeMethods: false,
|
|
620
|
-
includeInheritance: true
|
|
621
|
-
});
|
|
622
|
-
|
|
623
|
-
assertValidMCPResponse(result);
|
|
624
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
625
|
-
|
|
626
|
-
// Should include: description, properties, inheritance
|
|
627
|
-
assert(classInfo.description, 'Description should be included');
|
|
628
|
-
assert(Array.isArray(classInfo.properties), 'Properties should be included');
|
|
629
|
-
assert(classInfo.inheritance, 'Inheritance should be included');
|
|
630
|
-
|
|
631
|
-
// Should exclude: constants, methods
|
|
632
|
-
assert(!classInfo.constants || classInfo.constants.length === 0, 'Constants should be excluded');
|
|
633
|
-
assert(!classInfo.methods || classInfo.methods.length === 0, 'Methods should be excluded');
|
|
634
|
-
});
|
|
635
|
-
});
|
|
636
|
-
|
|
637
|
-
// ==================================================================================
|
|
638
|
-
// SEARCH FUNCTIONALITY COMPREHENSIVE TESTS
|
|
639
|
-
// ==================================================================================
|
|
640
|
-
|
|
641
|
-
describe('Search Functionality', () => {
|
|
642
|
-
test('should filter results with search parameter', async () => {
|
|
643
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
644
|
-
className: 'dw.catalog.Product',
|
|
645
|
-
search: 'name'
|
|
646
|
-
});
|
|
647
|
-
|
|
648
|
-
assertValidMCPResponse(result);
|
|
649
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
650
|
-
|
|
651
|
-
// Search should filter properties and methods
|
|
652
|
-
if (classInfo.properties && classInfo.properties.length > 0) {
|
|
653
|
-
classInfo.properties.forEach(prop => {
|
|
654
|
-
assert(prop.name.toLowerCase().includes('name') ||
|
|
655
|
-
(prop.description && prop.description.toLowerCase().includes('name')),
|
|
656
|
-
`Property ${prop.name} should match search term 'name'`);
|
|
657
|
-
});
|
|
658
|
-
}
|
|
659
|
-
|
|
660
|
-
if (classInfo.methods && classInfo.methods.length > 0) {
|
|
661
|
-
classInfo.methods.forEach(method => {
|
|
662
|
-
assert(method.name.toLowerCase().includes('name') ||
|
|
663
|
-
(method.description && method.description.toLowerCase().includes('name')),
|
|
664
|
-
`Method ${method.name} should match search term 'name'`);
|
|
665
|
-
});
|
|
666
|
-
}
|
|
667
|
-
});
|
|
668
|
-
|
|
669
|
-
test('should perform case-insensitive search', async () => {
|
|
670
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
671
|
-
className: 'dw.catalog.Product',
|
|
672
|
-
search: 'NAME'
|
|
673
|
-
});
|
|
674
|
-
|
|
675
|
-
assertValidMCPResponse(result);
|
|
676
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
677
|
-
|
|
678
|
-
// Search should be case-insensitive
|
|
679
|
-
if (classInfo.properties && classInfo.properties.length > 0) {
|
|
680
|
-
classInfo.properties.forEach(prop => {
|
|
681
|
-
assert(prop.name.toLowerCase().includes('name') ||
|
|
682
|
-
(prop.description && prop.description.toLowerCase().includes('name')),
|
|
683
|
-
`Property ${prop.name} should match case-insensitive search 'NAME'`);
|
|
684
|
-
});
|
|
685
|
-
}
|
|
686
|
-
});
|
|
687
|
-
|
|
688
|
-
test('should combine search with filtering parameters', async () => {
|
|
689
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
690
|
-
className: 'dw.catalog.Product',
|
|
691
|
-
includeMethods: true,
|
|
692
|
-
includeProperties: false,
|
|
693
|
-
includeConstants: false,
|
|
694
|
-
search: 'get'
|
|
695
|
-
});
|
|
696
|
-
|
|
697
|
-
assertValidMCPResponse(result);
|
|
698
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
699
|
-
|
|
700
|
-
// Should only have methods (no properties/constants)
|
|
701
|
-
assert(!classInfo.properties || classInfo.properties.length === 0, 'Properties should be excluded');
|
|
702
|
-
assert(!classInfo.constants || classInfo.constants.length === 0, 'Constants should be excluded');
|
|
703
|
-
|
|
704
|
-
// Methods should be filtered by search term
|
|
705
|
-
if (classInfo.methods && classInfo.methods.length > 0) {
|
|
706
|
-
classInfo.methods.forEach(method => {
|
|
707
|
-
assert(method.name.toLowerCase().includes('get') ||
|
|
708
|
-
(method.description && method.description.toLowerCase().includes('get')),
|
|
709
|
-
`Method ${method.name} should match search term 'get'`);
|
|
710
|
-
});
|
|
711
|
-
}
|
|
712
|
-
});
|
|
713
|
-
|
|
714
|
-
test('should handle search with no matches gracefully', async () => {
|
|
715
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
716
|
-
className: 'dw.catalog.Product',
|
|
717
|
-
search: 'zzznomatchesexpected'
|
|
718
|
-
});
|
|
719
|
-
|
|
720
|
-
assertValidMCPResponse(result);
|
|
721
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
722
|
-
|
|
723
|
-
// Should still have basic class info
|
|
724
|
-
assert.strictEqual(classInfo.className, 'Product');
|
|
725
|
-
assert.strictEqual(classInfo.packageName, 'dw.catalog');
|
|
726
|
-
|
|
727
|
-
// Arrays should be empty (no matches)
|
|
728
|
-
if (classInfo.properties) {
|
|
729
|
-
assert.strictEqual(classInfo.properties.length, 0, 'Properties should be empty with no matches');
|
|
730
|
-
}
|
|
731
|
-
if (classInfo.methods) {
|
|
732
|
-
assert.strictEqual(classInfo.methods.length, 0, 'Methods should be empty with no matches');
|
|
733
|
-
}
|
|
734
|
-
if (classInfo.constants) {
|
|
735
|
-
assert.strictEqual(classInfo.constants.length, 0, 'Constants should be empty with no matches');
|
|
736
|
-
}
|
|
737
|
-
});
|
|
738
|
-
|
|
739
|
-
test('should search across multiple field types', async () => {
|
|
740
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
741
|
-
className: 'dw.catalog.Product',
|
|
742
|
-
search: 'get' // Changed from 'id' to 'get' which is more common
|
|
743
|
-
});
|
|
744
|
-
|
|
745
|
-
assertValidMCPResponse(result);
|
|
746
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
747
|
-
|
|
748
|
-
// Should find matches in different sections
|
|
749
|
-
let foundMatches = false;
|
|
750
|
-
|
|
751
|
-
if (classInfo.properties && classInfo.properties.length > 0) {
|
|
752
|
-
foundMatches = true;
|
|
753
|
-
classInfo.properties.forEach(prop => {
|
|
754
|
-
assert(prop.name.toLowerCase().includes('get') ||
|
|
755
|
-
(prop.description && prop.description.toLowerCase().includes('get')),
|
|
756
|
-
`Property ${prop.name} should match search term 'get'`);
|
|
757
|
-
});
|
|
758
|
-
}
|
|
759
|
-
|
|
760
|
-
if (classInfo.methods && classInfo.methods.length > 0) {
|
|
761
|
-
foundMatches = true;
|
|
762
|
-
classInfo.methods.forEach(method => {
|
|
763
|
-
assert(method.name.toLowerCase().includes('get') ||
|
|
764
|
-
(method.description && method.description.toLowerCase().includes('get')),
|
|
765
|
-
`Method ${method.name} should match search term 'get'`);
|
|
766
|
-
});
|
|
767
|
-
}
|
|
768
|
-
|
|
769
|
-
// Should find at least some matches with 'get' in Product class
|
|
770
|
-
assert(foundMatches, 'Should find matches for common term "get" in Product class');
|
|
771
|
-
});
|
|
772
|
-
|
|
773
|
-
test('should handle empty search string', async () => {
|
|
774
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
775
|
-
className: 'dw.catalog.Product',
|
|
776
|
-
search: ''
|
|
777
|
-
});
|
|
778
|
-
|
|
779
|
-
assertValidMCPResponse(result);
|
|
780
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
781
|
-
|
|
782
|
-
// Empty search should return all results (no filtering)
|
|
783
|
-
assert.strictEqual(classInfo.className, 'Product');
|
|
784
|
-
assert(classInfo.description, 'Should include description with empty search');
|
|
785
|
-
assert(Array.isArray(classInfo.properties), 'Should include all properties with empty search');
|
|
786
|
-
assert(Array.isArray(classInfo.methods), 'Should include all methods with empty search');
|
|
787
|
-
});
|
|
788
|
-
});
|
|
789
|
-
|
|
790
|
-
// ==================================================================================
|
|
791
|
-
// RESPONSE STRUCTURE VALIDATION WITH dw.catalog.Product
|
|
792
|
-
// ==================================================================================
|
|
793
|
-
|
|
794
|
-
describe('Product Class Response Structure Validation', () => {
|
|
795
|
-
test('should return comprehensive Product class information', async () => {
|
|
796
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
797
|
-
className: 'dw.catalog.Product'
|
|
798
|
-
});
|
|
799
|
-
|
|
800
|
-
assertValidMCPResponse(result);
|
|
801
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
802
|
-
|
|
803
|
-
// Validate basic structure
|
|
804
|
-
assert.strictEqual(classInfo.className, 'Product');
|
|
805
|
-
assert.strictEqual(classInfo.packageName, 'dw.catalog');
|
|
806
|
-
assert(typeof classInfo.description === 'string', 'Description should be string');
|
|
807
|
-
|
|
808
|
-
// Validate arrays are present and non-empty for a rich class like Product
|
|
809
|
-
assert(Array.isArray(classInfo.properties), 'Properties should be array');
|
|
810
|
-
assert(classInfo.properties.length > 0, 'Product should have properties');
|
|
811
|
-
|
|
812
|
-
assert(Array.isArray(classInfo.methods), 'Methods should be array');
|
|
813
|
-
assert(classInfo.methods.length > 0, 'Product should have methods');
|
|
814
|
-
|
|
815
|
-
// Validate property structure
|
|
816
|
-
classInfo.properties.forEach(prop => {
|
|
817
|
-
assert(typeof prop.name === 'string', 'Property name should be string');
|
|
818
|
-
assert(typeof prop.type === 'string', 'Property type should be string');
|
|
819
|
-
// Description is optional but should be string if present
|
|
820
|
-
if (prop.description) {
|
|
821
|
-
assert(typeof prop.description === 'string', 'Property description should be string');
|
|
822
|
-
}
|
|
823
|
-
});
|
|
824
|
-
|
|
825
|
-
// Validate method structure
|
|
826
|
-
classInfo.methods.forEach(method => {
|
|
827
|
-
assert(typeof method.name === 'string', 'Method name should be string');
|
|
828
|
-
assert(typeof method.signature === 'string', 'Method signature should be string');
|
|
829
|
-
// Return type and description are optional
|
|
830
|
-
if (method.returnType) {
|
|
831
|
-
assert(typeof method.returnType === 'string', 'Method returnType should be string');
|
|
832
|
-
}
|
|
833
|
-
if (method.description) {
|
|
834
|
-
assert(typeof method.description === 'string', 'Method description should be string');
|
|
835
|
-
}
|
|
836
|
-
});
|
|
837
|
-
});
|
|
838
|
-
|
|
839
|
-
test('should validate filtered Product class responses maintain structure', async () => {
|
|
840
|
-
const scenarios = [
|
|
841
|
-
{ includeProperties: true, includeMethods: false },
|
|
842
|
-
{ includeProperties: false, includeMethods: true },
|
|
843
|
-
{ includeDescription: false, includeProperties: true },
|
|
844
|
-
{ includeConstants: false, includeInheritance: false }
|
|
845
|
-
];
|
|
846
|
-
|
|
847
|
-
for (const scenario of scenarios) {
|
|
848
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
849
|
-
className: 'dw.catalog.Product',
|
|
850
|
-
...scenario
|
|
851
|
-
});
|
|
852
|
-
|
|
853
|
-
assertValidMCPResponse(result);
|
|
854
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
855
|
-
|
|
856
|
-
// Basic info should always be present
|
|
857
|
-
assert.strictEqual(classInfo.className, 'Product');
|
|
858
|
-
assert.strictEqual(classInfo.packageName, 'dw.catalog');
|
|
859
|
-
|
|
860
|
-
// Validate conditional sections
|
|
861
|
-
if (scenario.includeProperties === false) {
|
|
862
|
-
assert(!classInfo.properties || classInfo.properties.length === 0,
|
|
863
|
-
'Properties should be excluded when includeProperties is false');
|
|
864
|
-
} else if (scenario.includeProperties !== false) {
|
|
865
|
-
assert(Array.isArray(classInfo.properties), 'Properties should be array when included');
|
|
866
|
-
}
|
|
867
|
-
|
|
868
|
-
if (scenario.includeMethods === false) {
|
|
869
|
-
assert(!classInfo.methods || classInfo.methods.length === 0,
|
|
870
|
-
'Methods should be excluded when includeMethods is false');
|
|
871
|
-
} else if (scenario.includeMethods !== false) {
|
|
872
|
-
assert(Array.isArray(classInfo.methods), 'Methods should be array when included');
|
|
873
|
-
}
|
|
874
|
-
|
|
875
|
-
if (scenario.includeDescription === false) {
|
|
876
|
-
assert(!classInfo.description || classInfo.description === '',
|
|
877
|
-
'Description should be excluded when includeDescription is false');
|
|
878
|
-
}
|
|
879
|
-
}
|
|
880
|
-
});
|
|
881
|
-
|
|
882
|
-
test('should validate Product class search results maintain proper structure', async () => {
|
|
883
|
-
const searchTerms = ['get', 'set', 'name']; // Changed from including 'id' and 'price' to more reliable terms
|
|
884
|
-
|
|
885
|
-
for (const searchTerm of searchTerms) {
|
|
886
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
887
|
-
className: 'dw.catalog.Product',
|
|
888
|
-
search: searchTerm
|
|
889
|
-
});
|
|
890
|
-
|
|
891
|
-
assertValidMCPResponse(result);
|
|
892
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
893
|
-
|
|
894
|
-
// Basic structure should be maintained
|
|
895
|
-
assert.strictEqual(classInfo.className, 'Product');
|
|
896
|
-
assert.strictEqual(classInfo.packageName, 'dw.catalog');
|
|
897
|
-
|
|
898
|
-
// Filtered arrays should still have proper structure
|
|
899
|
-
if (classInfo.properties && classInfo.properties.length > 0) {
|
|
900
|
-
classInfo.properties.forEach(prop => {
|
|
901
|
-
assert(typeof prop.name === 'string', 'Filtered property name should be string');
|
|
902
|
-
assert(typeof prop.type === 'string', 'Filtered property type should be string');
|
|
903
|
-
|
|
904
|
-
// Verify search filtering worked
|
|
905
|
-
const matchesSearch = prop.name.toLowerCase().includes(searchTerm.toLowerCase()) ||
|
|
906
|
-
(prop.description && prop.description.toLowerCase().includes(searchTerm.toLowerCase()));
|
|
907
|
-
assert(matchesSearch, `Property ${prop.name} should match search term ${searchTerm}`);
|
|
908
|
-
});
|
|
909
|
-
}
|
|
910
|
-
|
|
911
|
-
if (classInfo.methods && classInfo.methods.length > 0) {
|
|
912
|
-
classInfo.methods.forEach(method => {
|
|
913
|
-
assert(typeof method.name === 'string', 'Filtered method name should be string');
|
|
914
|
-
assert(typeof method.signature === 'string', 'Filtered method signature should be string');
|
|
915
|
-
|
|
916
|
-
// Verify search filtering worked
|
|
917
|
-
const matchesSearch = method.name.toLowerCase().includes(searchTerm.toLowerCase()) ||
|
|
918
|
-
(method.description && method.description.toLowerCase().includes(searchTerm.toLowerCase()));
|
|
919
|
-
assert(matchesSearch, `Method ${method.name} should match search term ${searchTerm}`);
|
|
920
|
-
});
|
|
921
|
-
}
|
|
922
|
-
}
|
|
923
|
-
});
|
|
924
|
-
|
|
925
|
-
test('should validate Product class with expand parameter maintains structure', async () => {
|
|
926
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
927
|
-
className: 'dw.catalog.Product',
|
|
928
|
-
expand: true
|
|
929
|
-
});
|
|
930
|
-
|
|
931
|
-
assertValidMCPResponse(result);
|
|
932
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
933
|
-
|
|
934
|
-
// Basic structure should be maintained
|
|
935
|
-
assert.strictEqual(classInfo.className, 'Product');
|
|
936
|
-
assert.strictEqual(classInfo.packageName, 'dw.catalog');
|
|
937
|
-
assert(Array.isArray(classInfo.properties), 'Properties should be array');
|
|
938
|
-
assert(Array.isArray(classInfo.methods), 'Methods should be array');
|
|
939
|
-
|
|
940
|
-
// With expand=true, there might be additional type information
|
|
941
|
-
// Validate that expanded information maintains proper structure
|
|
942
|
-
classInfo.properties.forEach(prop => {
|
|
943
|
-
assert(typeof prop.name === 'string', 'Expanded property name should be string');
|
|
944
|
-
assert(typeof prop.type === 'string', 'Expanded property type should be string');
|
|
945
|
-
});
|
|
946
|
-
|
|
947
|
-
classInfo.methods.forEach(method => {
|
|
948
|
-
assert(typeof method.name === 'string', 'Expanded method name should be string');
|
|
949
|
-
assert(typeof method.signature === 'string', 'Expanded method signature should be string');
|
|
950
|
-
});
|
|
951
|
-
});
|
|
952
|
-
});
|
|
953
|
-
|
|
954
|
-
// ==================================================================================
|
|
955
|
-
// PARAMETER COMBINATIONS AND EDGE CASES
|
|
956
|
-
// ==================================================================================
|
|
957
|
-
|
|
958
|
-
describe('Parameter Combinations and Edge Cases', () => {
|
|
959
|
-
test('should handle all parameters together', async () => {
|
|
960
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
961
|
-
className: 'dw.catalog.Product',
|
|
962
|
-
expand: true,
|
|
963
|
-
includeDescription: true,
|
|
964
|
-
includeConstants: false,
|
|
965
|
-
includeProperties: true,
|
|
966
|
-
includeMethods: true,
|
|
967
|
-
includeInheritance: false,
|
|
968
|
-
search: 'get'
|
|
969
|
-
});
|
|
970
|
-
|
|
971
|
-
assertValidMCPResponse(result);
|
|
972
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
973
|
-
|
|
974
|
-
// Validate combination of parameters
|
|
975
|
-
assert.strictEqual(classInfo.className, 'Product');
|
|
976
|
-
assert(classInfo.description, 'Description should be included');
|
|
977
|
-
assert(!classInfo.constants || classInfo.constants.length === 0, 'Constants should be excluded');
|
|
978
|
-
assert(!classInfo.inheritance ||
|
|
979
|
-
(Array.isArray(classInfo.inheritance) && classInfo.inheritance.length === 0) ||
|
|
980
|
-
classInfo.inheritance === '', 'Inheritance should be excluded');
|
|
981
|
-
|
|
982
|
-
// Properties and methods should be filtered by search
|
|
983
|
-
if (classInfo.properties && classInfo.properties.length > 0) {
|
|
984
|
-
classInfo.properties.forEach(prop => {
|
|
985
|
-
assert(prop.name.toLowerCase().includes('get') ||
|
|
986
|
-
(prop.description && prop.description.toLowerCase().includes('get')),
|
|
987
|
-
`Property ${prop.name} should match search term 'get'`);
|
|
988
|
-
});
|
|
989
|
-
}
|
|
990
|
-
|
|
991
|
-
if (classInfo.methods && classInfo.methods.length > 0) {
|
|
992
|
-
classInfo.methods.forEach(method => {
|
|
993
|
-
assert(method.name.toLowerCase().includes('get') ||
|
|
994
|
-
(method.description && method.description.toLowerCase().includes('get')),
|
|
995
|
-
`Method ${method.name} should match search term 'get'`);
|
|
996
|
-
});
|
|
997
|
-
}
|
|
998
|
-
});
|
|
999
|
-
|
|
1000
|
-
test('should handle contradictory filters gracefully', async () => {
|
|
1001
|
-
const result = await client.callTool('get_sfcc_class_info', {
|
|
1002
|
-
className: 'dw.catalog.Product',
|
|
1003
|
-
includeMethods: false,
|
|
1004
|
-
search: 'getName' // Searching for method while excluding methods
|
|
1005
|
-
});
|
|
1006
|
-
|
|
1007
|
-
assertValidMCPResponse(result);
|
|
1008
|
-
const classInfo = JSON.parse(result.content[0].text);
|
|
1009
|
-
|
|
1010
|
-
// Should respect the filter over the search
|
|
1011
|
-
assert(!classInfo.methods || classInfo.methods.length === 0,
|
|
1012
|
-
'Methods should be excluded even when searching for method names');
|
|
1013
|
-
});
|
|
1014
|
-
});
|
|
1015
|
-
|
|
1016
|
-
});
|
|
1017
|
-
|
|
1018
|
-
// ==================================================================================
|
|
1019
|
-
// HELPER FUNCTIONS
|
|
1020
|
-
// ==================================================================================
|
|
1021
|
-
|
|
1022
|
-
/**
|
|
1023
|
-
* Validates that a response follows the MCP protocol structure
|
|
1024
|
-
*/
|
|
1025
|
-
function assertValidMCPResponse(result) {
|
|
1026
|
-
assert.ok(result, 'Result should exist');
|
|
1027
|
-
assert.ok(result.content, 'Result should have content');
|
|
1028
|
-
assert.ok(Array.isArray(result.content), 'Content should be an array');
|
|
1029
|
-
assert.ok(result.content.length > 0, 'Content should not be empty');
|
|
1030
|
-
assert.equal(result.content[0].type, 'text', 'Content type should be text');
|
|
1031
|
-
assert.ok(typeof result.content[0].text === 'string', 'Content text should be string');
|
|
1032
|
-
}
|