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
package/tests/mcp/node/search-custom-object-attribute-definitions.full-mode.programmatic.test.js
DELETED
|
@@ -1,875 +0,0 @@
|
|
|
1
|
-
import { test, describe, before, after, beforeEach } from 'node:test';
|
|
2
|
-
import { strict as assert } from 'node:assert';
|
|
3
|
-
import { connect } from 'mcp-aegis';
|
|
4
|
-
|
|
5
|
-
describe('search_custom_object_attribute_definitions - Full Mode Programmatic Tests', () => {
|
|
6
|
-
let client;
|
|
7
|
-
|
|
8
|
-
before(async () => {
|
|
9
|
-
client = await connect('./aegis.config.with-dw.json');
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
after(async () => {
|
|
13
|
-
if (client?.connected) {
|
|
14
|
-
await client.disconnect();
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
beforeEach(() => {
|
|
19
|
-
// CRITICAL: Clear all buffers to prevent leaking into next tests
|
|
20
|
-
client.clearAllBuffers();
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
// ============================================================================
|
|
24
|
-
// HELPER FUNCTIONS - Custom Assertion Helpers for SFCC-specific validation
|
|
25
|
-
// ============================================================================
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Assert that a result is a valid MCP response
|
|
29
|
-
*/
|
|
30
|
-
function assertValidMCPResponse(result, shouldBeError = false) {
|
|
31
|
-
assert.ok(result.content, 'Result should have content');
|
|
32
|
-
assert.ok(Array.isArray(result.content), 'Content should be array');
|
|
33
|
-
assert.equal(typeof result.isError, 'boolean', 'isError should be boolean');
|
|
34
|
-
assert.equal(result.isError, shouldBeError, `isError should be ${shouldBeError}`);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Assert that a result contains valid SFCC attribute definition search response
|
|
39
|
-
*/
|
|
40
|
-
function assertValidAttributeSearchResponse(result) {
|
|
41
|
-
assertValidMCPResponse(result, false);
|
|
42
|
-
assert.equal(result.content[0].type, 'text');
|
|
43
|
-
|
|
44
|
-
const responseData = JSON.parse(result.content[0].text);
|
|
45
|
-
assert.equal(responseData._type, 'object_attribute_definition_search_result');
|
|
46
|
-
assert.ok(typeof responseData.count === 'number', 'Should have count');
|
|
47
|
-
assert.ok(typeof responseData.total === 'number', 'Should have total');
|
|
48
|
-
assert.ok(Array.isArray(responseData.hits), 'Should have hits array');
|
|
49
|
-
assert.ok(responseData.query, 'Should have query object');
|
|
50
|
-
|
|
51
|
-
return responseData;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Assert that an attribute definition has required SFCC fields
|
|
56
|
-
*/
|
|
57
|
-
function assertValidAttributeDefinition(attribute) {
|
|
58
|
-
assert.equal(attribute._type, 'object_attribute_definition');
|
|
59
|
-
assert.ok(attribute.id, 'Attribute should have id');
|
|
60
|
-
assert.ok(attribute.value_type, 'Attribute should have value_type');
|
|
61
|
-
assert.ok(typeof attribute.mandatory === 'boolean', 'Attribute should have mandatory boolean');
|
|
62
|
-
assert.ok(typeof attribute.queryable === 'boolean', 'Attribute should have queryable boolean');
|
|
63
|
-
assert.ok(typeof attribute.system === 'boolean', 'Attribute should have system boolean');
|
|
64
|
-
assert.ok(attribute.creation_date, 'Attribute should have creation_date');
|
|
65
|
-
assert.ok(attribute.last_modified, 'Attribute should have last_modified');
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Assert that error response contains expected SFCC error structure
|
|
70
|
-
*/
|
|
71
|
-
function assertSFCCErrorResponse(result, errorType = null) {
|
|
72
|
-
assertValidMCPResponse(result, true);
|
|
73
|
-
|
|
74
|
-
const errorText = result.content[0].text;
|
|
75
|
-
if (errorType) {
|
|
76
|
-
assert.ok(errorText.includes(errorType), `Error should contain ${errorType}`);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
// Check if it's a structured SFCC error (JSON format)
|
|
80
|
-
if (errorText.startsWith('Error: Request failed:')) {
|
|
81
|
-
const jsonMatch = errorText.match(/\{.*\}/s);
|
|
82
|
-
if (jsonMatch) {
|
|
83
|
-
const errorData = JSON.parse(jsonMatch[0]);
|
|
84
|
-
assert.ok(errorData.fault, 'SFCC error should have fault object');
|
|
85
|
-
assert.ok(errorData.fault.type, 'SFCC error should have fault type');
|
|
86
|
-
assert.ok(errorData.fault.message, 'SFCC error should have fault message');
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
// ============================================================================
|
|
92
|
-
// PROTOCOL COMPLIANCE TESTS
|
|
93
|
-
// ============================================================================
|
|
94
|
-
|
|
95
|
-
describe('Protocol Compliance', () => {
|
|
96
|
-
test('should complete MCP handshake successfully', async () => {
|
|
97
|
-
assert.ok(client.connected, 'Client should be connected after handshake');
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
test('should list search_custom_object_attribute_definitions in available tools', async () => {
|
|
101
|
-
const tools = await client.listTools();
|
|
102
|
-
assert.ok(Array.isArray(tools), 'Tools should be an array');
|
|
103
|
-
|
|
104
|
-
const targetTool = tools.find(tool => tool.name === 'search_custom_object_attribute_definitions');
|
|
105
|
-
assert.ok(targetTool, 'search_custom_object_attribute_definitions should be available');
|
|
106
|
-
assert.ok(targetTool.description, 'Tool should have description');
|
|
107
|
-
assert.ok(targetTool.inputSchema, 'Tool should have input schema');
|
|
108
|
-
assert.equal(targetTool.inputSchema.type, 'object', 'Schema should be object type');
|
|
109
|
-
|
|
110
|
-
// Validate required parameters
|
|
111
|
-
const requiredParams = targetTool.inputSchema.required || [];
|
|
112
|
-
assert.ok(requiredParams.includes('objectType'), 'objectType should be required');
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
// ============================================================================
|
|
117
|
-
// BASIC FUNCTIONALITY TESTS
|
|
118
|
-
// ============================================================================
|
|
119
|
-
|
|
120
|
-
describe('Basic Functionality', () => {
|
|
121
|
-
test('should search VersionHistory custom object attributes successfully', async () => {
|
|
122
|
-
const result = await client.callTool('search_custom_object_attribute_definitions', {
|
|
123
|
-
objectType: 'VersionHistory',
|
|
124
|
-
searchRequest: {
|
|
125
|
-
query: {
|
|
126
|
-
match_all_query: {}
|
|
127
|
-
},
|
|
128
|
-
start: 0,
|
|
129
|
-
count: 10
|
|
130
|
-
}
|
|
131
|
-
});
|
|
132
|
-
|
|
133
|
-
const responseData = assertValidAttributeSearchResponse(result);
|
|
134
|
-
assert.ok(responseData.hits.length > 0, 'Should return some attributes');
|
|
135
|
-
|
|
136
|
-
// Validate each attribute definition
|
|
137
|
-
responseData.hits.forEach(attribute => {
|
|
138
|
-
assertValidAttributeDefinition(attribute);
|
|
139
|
-
});
|
|
140
|
-
});
|
|
141
|
-
|
|
142
|
-
test('should handle minimal parameters with default search', async () => {
|
|
143
|
-
const result = await client.callTool('search_custom_object_attribute_definitions', {
|
|
144
|
-
objectType: 'VersionHistory'
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
const responseData = assertValidAttributeSearchResponse(result);
|
|
148
|
-
assert.ok(responseData.hits.length > 0, 'Should return attributes with default search');
|
|
149
|
-
assert.equal(responseData.query.match_all_query._type, 'match_all_query');
|
|
150
|
-
});
|
|
151
|
-
});
|
|
152
|
-
|
|
153
|
-
// ============================================================================
|
|
154
|
-
// COMPLEX QUERY BUILDING AND FILTERING TESTS
|
|
155
|
-
// ============================================================================
|
|
156
|
-
|
|
157
|
-
describe('Complex Query Building', () => {
|
|
158
|
-
test('should execute text search queries correctly', async () => {
|
|
159
|
-
const result = await client.callTool('search_custom_object_attribute_definitions', {
|
|
160
|
-
objectType: 'VersionHistory',
|
|
161
|
-
searchRequest: {
|
|
162
|
-
query: {
|
|
163
|
-
text_query: {
|
|
164
|
-
fields: ['id', 'display_name'],
|
|
165
|
-
search_phrase: 'UUID'
|
|
166
|
-
}
|
|
167
|
-
},
|
|
168
|
-
start: 0,
|
|
169
|
-
count: 5
|
|
170
|
-
}
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
const responseData = assertValidAttributeSearchResponse(result);
|
|
174
|
-
|
|
175
|
-
// Should find UUID attribute
|
|
176
|
-
const uuidAttribute = responseData.hits.find(attr => attr.id === 'UUID');
|
|
177
|
-
if (uuidAttribute) {
|
|
178
|
-
assertValidAttributeDefinition(uuidAttribute);
|
|
179
|
-
assert.equal(uuidAttribute.value_type, 'string');
|
|
180
|
-
assert.equal(uuidAttribute.system, true);
|
|
181
|
-
}
|
|
182
|
-
});
|
|
183
|
-
|
|
184
|
-
test('should handle complex boolean queries with multiple conditions', async () => {
|
|
185
|
-
const result = await client.callTool('search_custom_object_attribute_definitions', {
|
|
186
|
-
objectType: 'VersionHistory',
|
|
187
|
-
searchRequest: {
|
|
188
|
-
query: {
|
|
189
|
-
bool_query: {
|
|
190
|
-
must: [
|
|
191
|
-
{
|
|
192
|
-
term_query: {
|
|
193
|
-
fields: ['value_type'],
|
|
194
|
-
operator: 'is',
|
|
195
|
-
values: ['string']
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
],
|
|
199
|
-
should: [
|
|
200
|
-
{
|
|
201
|
-
text_query: {
|
|
202
|
-
fields: ['id'],
|
|
203
|
-
search_phrase: 'user'
|
|
204
|
-
}
|
|
205
|
-
},
|
|
206
|
-
{
|
|
207
|
-
text_query: {
|
|
208
|
-
fields: ['id'],
|
|
209
|
-
search_phrase: 'locale'
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
]
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
});
|
|
217
|
-
|
|
218
|
-
const responseData = assertValidAttributeSearchResponse(result);
|
|
219
|
-
|
|
220
|
-
// Check that we get attributes and can distinguish types
|
|
221
|
-
responseData.hits.forEach(attribute => {
|
|
222
|
-
assertValidAttributeDefinition(attribute);
|
|
223
|
-
assert.ok(['string', 'datetime', 'text', 'int', 'double', 'boolean'].includes(attribute.value_type),
|
|
224
|
-
`Attribute should have valid value_type, got: ${attribute.value_type}`);
|
|
225
|
-
});
|
|
226
|
-
|
|
227
|
-
// Log type distribution for debugging
|
|
228
|
-
const stringAttrs = responseData.hits.filter(attr => attr.value_type === 'string').length;
|
|
229
|
-
const totalAttrs = responseData.hits.length;
|
|
230
|
-
console.log(`Found ${stringAttrs} string attributes out of ${totalAttrs} total attributes`);
|
|
231
|
-
});
|
|
232
|
-
|
|
233
|
-
test('should support pagination with different start and count values', async () => {
|
|
234
|
-
// Get first page
|
|
235
|
-
const firstPage = await client.callTool('search_custom_object_attribute_definitions', {
|
|
236
|
-
objectType: 'VersionHistory',
|
|
237
|
-
searchRequest: {
|
|
238
|
-
query: {
|
|
239
|
-
match_all_query: {}
|
|
240
|
-
},
|
|
241
|
-
start: 0,
|
|
242
|
-
count: 3
|
|
243
|
-
}
|
|
244
|
-
});
|
|
245
|
-
|
|
246
|
-
const firstPageData = assertValidAttributeSearchResponse(firstPage);
|
|
247
|
-
assert.ok(firstPageData.hits.length <= 3, 'First page should have max 3 results');
|
|
248
|
-
|
|
249
|
-
// Get second page
|
|
250
|
-
const secondPage = await client.callTool('search_custom_object_attribute_definitions', {
|
|
251
|
-
objectType: 'VersionHistory',
|
|
252
|
-
searchRequest: {
|
|
253
|
-
query: {
|
|
254
|
-
match_all_query: {}
|
|
255
|
-
},
|
|
256
|
-
start: 3,
|
|
257
|
-
count: 3
|
|
258
|
-
}
|
|
259
|
-
});
|
|
260
|
-
|
|
261
|
-
const secondPageData = assertValidAttributeSearchResponse(secondPage);
|
|
262
|
-
|
|
263
|
-
// Verify pagination consistency
|
|
264
|
-
assert.equal(firstPageData.total, secondPageData.total, 'Total count should be consistent');
|
|
265
|
-
assert.equal(firstPageData.start, 0, 'First page start should be 0');
|
|
266
|
-
assert.equal(secondPageData.start, 3, 'Second page start should be 3');
|
|
267
|
-
|
|
268
|
-
// Ensure no overlap between pages
|
|
269
|
-
const firstPageIds = firstPageData.hits.map(attr => attr.id);
|
|
270
|
-
const secondPageIds = secondPageData.hits.map(attr => attr.id);
|
|
271
|
-
const overlap = firstPageIds.filter(id => secondPageIds.includes(id));
|
|
272
|
-
assert.equal(overlap.length, 0, 'Pages should not have overlapping results');
|
|
273
|
-
});
|
|
274
|
-
|
|
275
|
-
test('should apply sorting parameters correctly', async () => {
|
|
276
|
-
const result = await client.callTool('search_custom_object_attribute_definitions', {
|
|
277
|
-
objectType: 'VersionHistory',
|
|
278
|
-
searchRequest: {
|
|
279
|
-
query: {
|
|
280
|
-
match_all_query: {}
|
|
281
|
-
},
|
|
282
|
-
sorts: [
|
|
283
|
-
{
|
|
284
|
-
field: 'id',
|
|
285
|
-
sort_order: 'asc'
|
|
286
|
-
}
|
|
287
|
-
],
|
|
288
|
-
count: 10
|
|
289
|
-
}
|
|
290
|
-
});
|
|
291
|
-
|
|
292
|
-
const responseData = assertValidAttributeSearchResponse(result);
|
|
293
|
-
|
|
294
|
-
if (responseData.hits.length > 1) {
|
|
295
|
-
// Verify ascending sort order by id
|
|
296
|
-
for (let i = 1; i < responseData.hits.length; i++) {
|
|
297
|
-
const current = responseData.hits[i].id;
|
|
298
|
-
const previous = responseData.hits[i - 1].id;
|
|
299
|
-
assert.ok(current >= previous, `Results should be sorted ascending: ${previous} <= ${current}`);
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
});
|
|
303
|
-
});
|
|
304
|
-
|
|
305
|
-
// ============================================================================
|
|
306
|
-
// MULTI-STEP WORKFLOW TESTS
|
|
307
|
-
// ============================================================================
|
|
308
|
-
|
|
309
|
-
describe('Multi-Step Workflows', () => {
|
|
310
|
-
test('should support discovery and detailed analysis workflow', async () => {
|
|
311
|
-
// Step 1: Discover all custom objects first (this would typically use get_system_object_definitions)
|
|
312
|
-
// For this test, we'll use known custom objects from our mock
|
|
313
|
-
const knownCustomObjects = ['VersionHistory', 'CustomAPI', 'GlobalSettings'];
|
|
314
|
-
|
|
315
|
-
const attributesByObjectType = new Map();
|
|
316
|
-
|
|
317
|
-
// Step 2: For each custom object, get its attribute definitions
|
|
318
|
-
for (const objectType of knownCustomObjects) {
|
|
319
|
-
try {
|
|
320
|
-
const result = await client.callTool('search_custom_object_attribute_definitions', {
|
|
321
|
-
objectType: objectType,
|
|
322
|
-
searchRequest: {
|
|
323
|
-
query: {
|
|
324
|
-
match_all_query: {}
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
});
|
|
328
|
-
|
|
329
|
-
if (!result.isError) {
|
|
330
|
-
const responseData = assertValidAttributeSearchResponse(result);
|
|
331
|
-
attributesByObjectType.set(objectType, responseData.hits);
|
|
332
|
-
}
|
|
333
|
-
} catch (error) {
|
|
334
|
-
// Some objects might not exist, continue with others
|
|
335
|
-
console.log(`Skipping ${objectType}: ${error.message}`);
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
// Step 3: Analyze collected attributes for patterns
|
|
340
|
-
let totalAttributes = 0;
|
|
341
|
-
let systemAttributes = 0;
|
|
342
|
-
let mandatoryAttributes = 0;
|
|
343
|
-
const valueTypeDistribution = new Map();
|
|
344
|
-
|
|
345
|
-
for (const [, attributes] of attributesByObjectType) {
|
|
346
|
-
totalAttributes += attributes.length;
|
|
347
|
-
|
|
348
|
-
attributes.forEach(attr => {
|
|
349
|
-
if (attr.system) systemAttributes++;
|
|
350
|
-
if (attr.mandatory) mandatoryAttributes++;
|
|
351
|
-
|
|
352
|
-
const valueType = attr.value_type;
|
|
353
|
-
valueTypeDistribution.set(valueType, (valueTypeDistribution.get(valueType) || 0) + 1);
|
|
354
|
-
});
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
// Step 4: Validate analysis results
|
|
358
|
-
assert.ok(totalAttributes > 0, 'Should have found some attributes');
|
|
359
|
-
assert.ok(systemAttributes > 0, 'Should have some system attributes');
|
|
360
|
-
assert.ok(valueTypeDistribution.has('string'), 'Should have string type attributes');
|
|
361
|
-
|
|
362
|
-
console.log(`Analysis complete: ${totalAttributes} total attributes across ${attributesByObjectType.size} objects`);
|
|
363
|
-
console.log(`System attributes: ${systemAttributes}, Mandatory: ${mandatoryAttributes}`);
|
|
364
|
-
console.log('Value type distribution:', Object.fromEntries(valueTypeDistribution));
|
|
365
|
-
});
|
|
366
|
-
|
|
367
|
-
test('should support attribute comparison across different custom objects', async () => {
|
|
368
|
-
const comparisonResults = [];
|
|
369
|
-
const objectTypes = ['VersionHistory', 'CustomAPI'];
|
|
370
|
-
|
|
371
|
-
// Collect attributes for each object type
|
|
372
|
-
for (const objectType of objectTypes) {
|
|
373
|
-
try {
|
|
374
|
-
const result = await client.callTool('search_custom_object_attribute_definitions', {
|
|
375
|
-
objectType: objectType,
|
|
376
|
-
searchRequest: {
|
|
377
|
-
query: {
|
|
378
|
-
match_all_query: {}
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
});
|
|
382
|
-
|
|
383
|
-
if (!result.isError) {
|
|
384
|
-
const responseData = assertValidAttributeSearchResponse(result);
|
|
385
|
-
comparisonResults.push({
|
|
386
|
-
objectType,
|
|
387
|
-
attributes: responseData.hits,
|
|
388
|
-
count: responseData.total
|
|
389
|
-
});
|
|
390
|
-
}
|
|
391
|
-
} catch {
|
|
392
|
-
// Continue with available objects
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
assert.ok(comparisonResults.length >= 1, 'Should have results for at least one object type');
|
|
397
|
-
|
|
398
|
-
// Compare common attributes across object types
|
|
399
|
-
if (comparisonResults.length > 1) {
|
|
400
|
-
const [first, second] = comparisonResults;
|
|
401
|
-
const firstIds = new Set(first.attributes.map(attr => attr.id));
|
|
402
|
-
const secondIds = new Set(second.attributes.map(attr => attr.id));
|
|
403
|
-
|
|
404
|
-
const commonAttributes = [...firstIds].filter(id => secondIds.has(id));
|
|
405
|
-
console.log(`Common attributes between ${first.objectType} and ${second.objectType}:`, commonAttributes);
|
|
406
|
-
|
|
407
|
-
// System attributes like 'ID', 'UUID' should be common
|
|
408
|
-
assert.ok(commonAttributes.includes('ID'), 'ID should be common across custom objects');
|
|
409
|
-
}
|
|
410
|
-
});
|
|
411
|
-
});
|
|
412
|
-
|
|
413
|
-
// ============================================================================
|
|
414
|
-
// ERROR RECOVERY AND RESILIENCE TESTS
|
|
415
|
-
// ============================================================================
|
|
416
|
-
|
|
417
|
-
describe('Error Recovery and Resilience', () => {
|
|
418
|
-
test('should handle unknown custom object types gracefully', async () => {
|
|
419
|
-
const result = await client.callTool('search_custom_object_attribute_definitions', {
|
|
420
|
-
objectType: 'NonExistentCustomObject',
|
|
421
|
-
searchRequest: {
|
|
422
|
-
query: {
|
|
423
|
-
match_all_query: {}
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
});
|
|
427
|
-
|
|
428
|
-
assertSFCCErrorResponse(result, 'ObjectTypeNotFoundException');
|
|
429
|
-
});
|
|
430
|
-
|
|
431
|
-
test('should recover from invalid queries and continue working', async () => {
|
|
432
|
-
// Try invalid query structure
|
|
433
|
-
const invalidResult = await client.callTool('search_custom_object_attribute_definitions', {
|
|
434
|
-
objectType: 'VersionHistory',
|
|
435
|
-
searchRequest: {
|
|
436
|
-
invalidStructure: 'badData'
|
|
437
|
-
}
|
|
438
|
-
});
|
|
439
|
-
|
|
440
|
-
assertSFCCErrorResponse(invalidResult, 'PropertyConstraintViolationException');
|
|
441
|
-
|
|
442
|
-
// Verify system still works with valid query
|
|
443
|
-
const validResult = await client.callTool('search_custom_object_attribute_definitions', {
|
|
444
|
-
objectType: 'VersionHistory',
|
|
445
|
-
searchRequest: {
|
|
446
|
-
query: {
|
|
447
|
-
match_all_query: {}
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
|
-
});
|
|
451
|
-
|
|
452
|
-
assertValidAttributeSearchResponse(validResult);
|
|
453
|
-
});
|
|
454
|
-
|
|
455
|
-
test('should handle parameter validation errors consistently', async () => {
|
|
456
|
-
const testCases = [
|
|
457
|
-
{ params: {}, expectedError: 'objectType' },
|
|
458
|
-
{ params: { objectType: '' }, expectedError: 'objectType must be a non-empty string' },
|
|
459
|
-
{ params: { objectType: null }, expectedError: 'objectType' },
|
|
460
|
-
{ params: { objectType: 123 }, expectedError: 'objectType' }
|
|
461
|
-
];
|
|
462
|
-
|
|
463
|
-
for (const testCase of testCases) {
|
|
464
|
-
const result = await client.callTool('search_custom_object_attribute_definitions', testCase.params);
|
|
465
|
-
assertValidMCPResponse(result, true);
|
|
466
|
-
assert.ok(
|
|
467
|
-
result.content[0].text.includes(testCase.expectedError),
|
|
468
|
-
`Should contain error message about ${testCase.expectedError}`
|
|
469
|
-
);
|
|
470
|
-
}
|
|
471
|
-
});
|
|
472
|
-
|
|
473
|
-
test('should maintain consistency across multiple rapid requests', async () => {
|
|
474
|
-
const results = [];
|
|
475
|
-
const requestCount = 5;
|
|
476
|
-
|
|
477
|
-
// Execute multiple sequential requests (no Promise.all as per guidelines)
|
|
478
|
-
for (let i = 0; i < requestCount; i++) {
|
|
479
|
-
const result = await client.callTool('search_custom_object_attribute_definitions', {
|
|
480
|
-
objectType: 'VersionHistory',
|
|
481
|
-
searchRequest: {
|
|
482
|
-
query: {
|
|
483
|
-
match_all_query: {}
|
|
484
|
-
}
|
|
485
|
-
}
|
|
486
|
-
});
|
|
487
|
-
|
|
488
|
-
assertValidAttributeSearchResponse(result);
|
|
489
|
-
results.push(JSON.parse(result.content[0].text));
|
|
490
|
-
}
|
|
491
|
-
|
|
492
|
-
// Verify consistency across all requests
|
|
493
|
-
const firstResult = results[0];
|
|
494
|
-
for (let i = 1; i < results.length; i++) {
|
|
495
|
-
assert.equal(results[i].total, firstResult.total, 'Total count should be consistent');
|
|
496
|
-
assert.equal(results[i].count, firstResult.count, 'Result count should be consistent');
|
|
497
|
-
assert.deepEqual(results[i].hits, firstResult.hits, 'Results should be identical');
|
|
498
|
-
}
|
|
499
|
-
});
|
|
500
|
-
});
|
|
501
|
-
|
|
502
|
-
// ============================================================================
|
|
503
|
-
// DYNAMIC VALIDATION AND BUSINESS LOGIC TESTS
|
|
504
|
-
// ============================================================================
|
|
505
|
-
|
|
506
|
-
describe('Dynamic Validation and Business Logic', () => {
|
|
507
|
-
test('should validate SFCC attribute definition constraints', async () => {
|
|
508
|
-
const result = await client.callTool('search_custom_object_attribute_definitions', {
|
|
509
|
-
objectType: 'VersionHistory',
|
|
510
|
-
searchRequest: {
|
|
511
|
-
query: {
|
|
512
|
-
match_all_query: {}
|
|
513
|
-
}
|
|
514
|
-
}
|
|
515
|
-
});
|
|
516
|
-
|
|
517
|
-
const responseData = assertValidAttributeSearchResponse(result);
|
|
518
|
-
|
|
519
|
-
// Validate SFCC business rules
|
|
520
|
-
responseData.hits.forEach(attribute => {
|
|
521
|
-
assertValidAttributeDefinition(attribute);
|
|
522
|
-
|
|
523
|
-
// Key attributes should be mandatory
|
|
524
|
-
if (attribute.key) {
|
|
525
|
-
assert.equal(attribute.mandatory, true, 'Key attributes should be mandatory');
|
|
526
|
-
}
|
|
527
|
-
|
|
528
|
-
// System attributes should be read-only
|
|
529
|
-
if (attribute.system) {
|
|
530
|
-
assert.equal(attribute.read_only, true, 'System attributes should be read-only');
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
// Validate effective_id patterns
|
|
534
|
-
if (attribute.id !== 'ID' && attribute.id !== 'UUID' && !attribute.system) {
|
|
535
|
-
assert.ok(
|
|
536
|
-
attribute.effective_id.startsWith('c_'),
|
|
537
|
-
`Custom attribute ${attribute.id} should have effective_id starting with c_`
|
|
538
|
-
);
|
|
539
|
-
}
|
|
540
|
-
|
|
541
|
-
// Validate value types
|
|
542
|
-
const validValueTypes = ['string', 'number', 'boolean', 'datetime', 'date', 'text', 'email', 'password'];
|
|
543
|
-
assert.ok(
|
|
544
|
-
validValueTypes.includes(attribute.value_type),
|
|
545
|
-
`${attribute.value_type} should be a valid SFCC value type`
|
|
546
|
-
);
|
|
547
|
-
|
|
548
|
-
// String attributes with field_length should be reasonable
|
|
549
|
-
if (attribute.value_type === 'string' && attribute.field_length) {
|
|
550
|
-
assert.ok(
|
|
551
|
-
attribute.field_length > 0 && attribute.field_length <= 4000,
|
|
552
|
-
'String field length should be reasonable'
|
|
553
|
-
);
|
|
554
|
-
}
|
|
555
|
-
});
|
|
556
|
-
});
|
|
557
|
-
|
|
558
|
-
test('should analyze attribute relationships and dependencies', async () => {
|
|
559
|
-
const result = await client.callTool('search_custom_object_attribute_definitions', {
|
|
560
|
-
objectType: 'VersionHistory',
|
|
561
|
-
searchRequest: {
|
|
562
|
-
query: {
|
|
563
|
-
match_all_query: {}
|
|
564
|
-
}
|
|
565
|
-
}
|
|
566
|
-
});
|
|
567
|
-
|
|
568
|
-
const responseData = assertValidAttributeSearchResponse(result);
|
|
569
|
-
|
|
570
|
-
// Analyze attribute patterns
|
|
571
|
-
const analysis = {
|
|
572
|
-
totalAttributes: responseData.hits.length,
|
|
573
|
-
systemAttributes: responseData.hits.filter(attr => attr.system).length,
|
|
574
|
-
customAttributes: responseData.hits.filter(attr => !attr.system).length,
|
|
575
|
-
mandatoryAttributes: responseData.hits.filter(attr => attr.mandatory).length,
|
|
576
|
-
queryableAttributes: responseData.hits.filter(attr => attr.queryable).length,
|
|
577
|
-
searchableAttributes: responseData.hits.filter(attr => attr.searchable).length,
|
|
578
|
-
localizableAttributes: responseData.hits.filter(attr => attr.localizable).length
|
|
579
|
-
};
|
|
580
|
-
|
|
581
|
-
// Validate basic patterns for custom object attributes
|
|
582
|
-
assert.ok(analysis.totalAttributes > 0, 'Should have some attributes');
|
|
583
|
-
|
|
584
|
-
// Log actual attribute names for debugging
|
|
585
|
-
const attributeNames = responseData.hits.map(attr => attr.id);
|
|
586
|
-
console.log(`Found attributes: ${attributeNames.join(', ')}`);
|
|
587
|
-
|
|
588
|
-
// Check for common SFCC patterns (flexible validation based on actual mock data)
|
|
589
|
-
const hasIdAttribute = responseData.hits.some(attr => attr.id === 'ID' || attr.id.toLowerCase().includes('id'));
|
|
590
|
-
const hasDateAttributes = responseData.hits.some(attr => attr.value_type === 'datetime');
|
|
591
|
-
|
|
592
|
-
if (hasIdAttribute) {
|
|
593
|
-
console.log('✓ Found ID-related attributes');
|
|
594
|
-
}
|
|
595
|
-
if (hasDateAttributes) {
|
|
596
|
-
console.log('✓ Found datetime attributes');
|
|
597
|
-
}
|
|
598
|
-
|
|
599
|
-
// System attributes should be a subset of mandatory and queryable (if any exist)
|
|
600
|
-
const systemAttrs = responseData.hits.filter(attr => attr.system);
|
|
601
|
-
if (systemAttrs.length > 0) {
|
|
602
|
-
const mandatorySystemAttrs = systemAttrs.filter(attr => attr.mandatory);
|
|
603
|
-
assert.ok(mandatorySystemAttrs.length >= 0, 'System attributes should have consistent mandatory status');
|
|
604
|
-
}
|
|
605
|
-
|
|
606
|
-
console.log('Attribute analysis for VersionHistory:', analysis);
|
|
607
|
-
});
|
|
608
|
-
|
|
609
|
-
test('should validate search query effectiveness', async () => {
|
|
610
|
-
// Test different query types and compare effectiveness
|
|
611
|
-
const queryTests = [
|
|
612
|
-
{
|
|
613
|
-
name: 'match_all',
|
|
614
|
-
query: { match_all_query: {} }
|
|
615
|
-
},
|
|
616
|
-
{
|
|
617
|
-
name: 'text_search_id',
|
|
618
|
-
query: {
|
|
619
|
-
text_query: {
|
|
620
|
-
fields: ['id'],
|
|
621
|
-
search_phrase: 'component'
|
|
622
|
-
}
|
|
623
|
-
}
|
|
624
|
-
},
|
|
625
|
-
{
|
|
626
|
-
name: 'term_search_string_type',
|
|
627
|
-
query: {
|
|
628
|
-
term_query: {
|
|
629
|
-
fields: ['value_type'],
|
|
630
|
-
operator: 'is',
|
|
631
|
-
values: ['string']
|
|
632
|
-
}
|
|
633
|
-
}
|
|
634
|
-
}
|
|
635
|
-
];
|
|
636
|
-
|
|
637
|
-
const queryResults = [];
|
|
638
|
-
|
|
639
|
-
for (const queryTest of queryTests) {
|
|
640
|
-
const result = await client.callTool('search_custom_object_attribute_definitions', {
|
|
641
|
-
objectType: 'VersionHistory',
|
|
642
|
-
searchRequest: {
|
|
643
|
-
query: queryTest.query
|
|
644
|
-
}
|
|
645
|
-
});
|
|
646
|
-
|
|
647
|
-
if (!result.isError) {
|
|
648
|
-
const responseData = assertValidAttributeSearchResponse(result);
|
|
649
|
-
queryResults.push({
|
|
650
|
-
name: queryTest.name,
|
|
651
|
-
resultCount: responseData.count,
|
|
652
|
-
totalCount: responseData.total
|
|
653
|
-
});
|
|
654
|
-
}
|
|
655
|
-
}
|
|
656
|
-
|
|
657
|
-
assert.ok(queryResults.length > 0, 'Should have successful query results');
|
|
658
|
-
|
|
659
|
-
// match_all should return the most results
|
|
660
|
-
const matchAllResult = queryResults.find(r => r.name === 'match_all');
|
|
661
|
-
if (matchAllResult) {
|
|
662
|
-
queryResults.forEach(result => {
|
|
663
|
-
if (result.name !== 'match_all') {
|
|
664
|
-
assert.ok(
|
|
665
|
-
result.resultCount <= matchAllResult.resultCount,
|
|
666
|
-
`${result.name} should return <= results than match_all`
|
|
667
|
-
);
|
|
668
|
-
}
|
|
669
|
-
});
|
|
670
|
-
}
|
|
671
|
-
|
|
672
|
-
console.log('Query effectiveness results:', queryResults);
|
|
673
|
-
});
|
|
674
|
-
});
|
|
675
|
-
|
|
676
|
-
// ============================================================================
|
|
677
|
-
// EDGE CASES AND BOUNDARY CONDITIONS
|
|
678
|
-
// ============================================================================
|
|
679
|
-
|
|
680
|
-
describe('Edge Cases and Boundary Conditions', () => {
|
|
681
|
-
test('should handle empty search results gracefully', async () => {
|
|
682
|
-
const result = await client.callTool('search_custom_object_attribute_definitions', {
|
|
683
|
-
objectType: 'VersionHistory',
|
|
684
|
-
searchRequest: {
|
|
685
|
-
query: {
|
|
686
|
-
text_query: {
|
|
687
|
-
fields: ['id'],
|
|
688
|
-
search_phrase: 'NonExistentAttributeName'
|
|
689
|
-
}
|
|
690
|
-
}
|
|
691
|
-
}
|
|
692
|
-
});
|
|
693
|
-
|
|
694
|
-
const responseData = assertValidAttributeSearchResponse(result);
|
|
695
|
-
|
|
696
|
-
// Mock server may not implement proper filtering, so we need flexible validation
|
|
697
|
-
console.log(`Search for non-existent attribute returned ${responseData.count} results`);
|
|
698
|
-
|
|
699
|
-
if (responseData.count === 0) {
|
|
700
|
-
// Ideal behavior - search properly filters
|
|
701
|
-
assert.equal(responseData.hits.length, 0, 'Hits array should be empty');
|
|
702
|
-
assert.equal(responseData.total, 0, 'Total should be 0');
|
|
703
|
-
console.log('✓ Mock server properly filters non-existent attributes');
|
|
704
|
-
} else {
|
|
705
|
-
// Mock server returns all results regardless of filter
|
|
706
|
-
console.log('⚠ Mock server does not filter search results - this is acceptable for testing');
|
|
707
|
-
assert.ok(responseData.hits.length >= 0, 'Should return valid hits array');
|
|
708
|
-
assert.ok(responseData.total >= 0, 'Should return valid total count');
|
|
709
|
-
}
|
|
710
|
-
});
|
|
711
|
-
|
|
712
|
-
test('should handle large count parameters appropriately', async () => {
|
|
713
|
-
const result = await client.callTool('search_custom_object_attribute_definitions', {
|
|
714
|
-
objectType: 'VersionHistory',
|
|
715
|
-
searchRequest: {
|
|
716
|
-
query: {
|
|
717
|
-
match_all_query: {}
|
|
718
|
-
},
|
|
719
|
-
count: 1000 // Large count
|
|
720
|
-
}
|
|
721
|
-
});
|
|
722
|
-
|
|
723
|
-
const responseData = assertValidAttributeSearchResponse(result);
|
|
724
|
-
// Should either return all available attributes or handle large count gracefully
|
|
725
|
-
assert.ok(responseData.count <= responseData.total, 'Count should not exceed total');
|
|
726
|
-
assert.ok(responseData.hits.length <= 1000, 'Should not return more than requested');
|
|
727
|
-
});
|
|
728
|
-
|
|
729
|
-
test('should handle extreme pagination boundaries', async () => {
|
|
730
|
-
// First, get total count
|
|
731
|
-
const countResult = await client.callTool('search_custom_object_attribute_definitions', {
|
|
732
|
-
objectType: 'VersionHistory',
|
|
733
|
-
searchRequest: {
|
|
734
|
-
query: {
|
|
735
|
-
match_all_query: {}
|
|
736
|
-
},
|
|
737
|
-
count: 1
|
|
738
|
-
}
|
|
739
|
-
});
|
|
740
|
-
|
|
741
|
-
const countData = assertValidAttributeSearchResponse(countResult);
|
|
742
|
-
const totalCount = countData.total;
|
|
743
|
-
|
|
744
|
-
if (totalCount > 1) {
|
|
745
|
-
// Test pagination beyond available results
|
|
746
|
-
const beyondResult = await client.callTool('search_custom_object_attribute_definitions', {
|
|
747
|
-
objectType: 'VersionHistory',
|
|
748
|
-
searchRequest: {
|
|
749
|
-
query: {
|
|
750
|
-
match_all_query: {}
|
|
751
|
-
},
|
|
752
|
-
start: totalCount + 10,
|
|
753
|
-
count: 5
|
|
754
|
-
}
|
|
755
|
-
});
|
|
756
|
-
|
|
757
|
-
const beyondData = assertValidAttributeSearchResponse(beyondResult);
|
|
758
|
-
assert.equal(beyondData.count, 0, 'Should return 0 results when start > total');
|
|
759
|
-
assert.equal(beyondData.hits.length, 0, 'Should have empty hits array');
|
|
760
|
-
}
|
|
761
|
-
});
|
|
762
|
-
|
|
763
|
-
test('should handle special characters in object type names', async () => {
|
|
764
|
-
// Test with object type that might have special characters (if any exist in mock)
|
|
765
|
-
const specialCases = ['Version-History', 'Version_History', 'version history'];
|
|
766
|
-
|
|
767
|
-
for (const objectType of specialCases) {
|
|
768
|
-
const result = await client.callTool('search_custom_object_attribute_definitions', {
|
|
769
|
-
objectType: objectType,
|
|
770
|
-
searchRequest: {
|
|
771
|
-
query: {
|
|
772
|
-
match_all_query: {}
|
|
773
|
-
}
|
|
774
|
-
}
|
|
775
|
-
});
|
|
776
|
-
|
|
777
|
-
// These should typically fail with ObjectTypeNotFoundException
|
|
778
|
-
if (result.isError) {
|
|
779
|
-
assertSFCCErrorResponse(result, 'ObjectTypeNotFoundException');
|
|
780
|
-
}
|
|
781
|
-
}
|
|
782
|
-
});
|
|
783
|
-
|
|
784
|
-
test('should validate property selector functionality', async () => {
|
|
785
|
-
const result = await client.callTool('search_custom_object_attribute_definitions', {
|
|
786
|
-
objectType: 'VersionHistory',
|
|
787
|
-
searchRequest: {
|
|
788
|
-
query: {
|
|
789
|
-
match_all_query: {}
|
|
790
|
-
},
|
|
791
|
-
select: '(id,value_type,mandatory)' // Limited property selection
|
|
792
|
-
}
|
|
793
|
-
});
|
|
794
|
-
|
|
795
|
-
// Note: Property selector might not be fully implemented in mock,
|
|
796
|
-
// but should not cause errors
|
|
797
|
-
assertValidAttributeSearchResponse(result);
|
|
798
|
-
});
|
|
799
|
-
});
|
|
800
|
-
|
|
801
|
-
// ============================================================================
|
|
802
|
-
// INTEGRATION AND FUNCTIONAL MONITORING
|
|
803
|
-
// ============================================================================
|
|
804
|
-
|
|
805
|
-
describe('Integration and Functional Monitoring', () => {
|
|
806
|
-
test('should maintain response time consistency', async () => {
|
|
807
|
-
const responseTimes = [];
|
|
808
|
-
const iterations = 3;
|
|
809
|
-
|
|
810
|
-
for (let i = 0; i < iterations; i++) {
|
|
811
|
-
const startTime = Date.now();
|
|
812
|
-
|
|
813
|
-
const result = await client.callTool('search_custom_object_attribute_definitions', {
|
|
814
|
-
objectType: 'VersionHistory',
|
|
815
|
-
searchRequest: {
|
|
816
|
-
query: {
|
|
817
|
-
match_all_query: {}
|
|
818
|
-
}
|
|
819
|
-
}
|
|
820
|
-
});
|
|
821
|
-
|
|
822
|
-
const endTime = Date.now();
|
|
823
|
-
const responseTime = endTime - startTime;
|
|
824
|
-
|
|
825
|
-
assertValidAttributeSearchResponse(result);
|
|
826
|
-
responseTimes.push(responseTime);
|
|
827
|
-
}
|
|
828
|
-
|
|
829
|
-
// Calculate response time statistics (functional monitoring)
|
|
830
|
-
const avgResponseTime = responseTimes.reduce((a, b) => a + b, 0) / responseTimes.length;
|
|
831
|
-
const maxResponseTime = Math.max(...responseTimes);
|
|
832
|
-
const minResponseTime = Math.min(...responseTimes);
|
|
833
|
-
|
|
834
|
-
console.log(`Response time stats: avg=${avgResponseTime}ms, min=${minResponseTime}ms, max=${maxResponseTime}ms`);
|
|
835
|
-
|
|
836
|
-
// Functional validation rather than strict performance requirements
|
|
837
|
-
assert.ok(avgResponseTime > 0, 'Should have measurable response time');
|
|
838
|
-
assert.ok(maxResponseTime < 10000, 'Should complete within reasonable time (10s)');
|
|
839
|
-
});
|
|
840
|
-
|
|
841
|
-
test('should validate complete tool lifecycle', async () => {
|
|
842
|
-
// Full lifecycle test: discovery -> parameter validation -> execution -> analysis
|
|
843
|
-
|
|
844
|
-
// 1. Tool discovery
|
|
845
|
-
const tools = await client.listTools();
|
|
846
|
-
const targetTool = tools.find(tool => tool.name === 'search_custom_object_attribute_definitions');
|
|
847
|
-
assert.ok(targetTool, 'Tool should be discoverable');
|
|
848
|
-
|
|
849
|
-
// 2. Parameter validation (schema-based)
|
|
850
|
-
const schema = targetTool.inputSchema;
|
|
851
|
-
assert.ok(schema.properties.objectType, 'Should have objectType parameter');
|
|
852
|
-
assert.ok(schema.properties.searchRequest, 'Should have searchRequest parameter');
|
|
853
|
-
|
|
854
|
-
// 3. Successful execution
|
|
855
|
-
const successResult = await client.callTool('search_custom_object_attribute_definitions', {
|
|
856
|
-
objectType: 'VersionHistory',
|
|
857
|
-
searchRequest: {
|
|
858
|
-
query: {
|
|
859
|
-
match_all_query: {}
|
|
860
|
-
}
|
|
861
|
-
}
|
|
862
|
-
});
|
|
863
|
-
|
|
864
|
-
const responseData = assertValidAttributeSearchResponse(successResult);
|
|
865
|
-
|
|
866
|
-
// 4. Response analysis and validation
|
|
867
|
-
assert.ok(responseData.hits.every(attr => attr._type === 'object_attribute_definition'));
|
|
868
|
-
assert.ok(responseData.query.match_all_query._type === 'match_all_query');
|
|
869
|
-
assert.equal(responseData.start, 0);
|
|
870
|
-
assert.ok(responseData.total >= responseData.count);
|
|
871
|
-
|
|
872
|
-
console.log(`Lifecycle test complete: Found ${responseData.total} attributes for VersionHistory`);
|
|
873
|
-
});
|
|
874
|
-
});
|
|
875
|
-
});
|