sfcc-dev-mcp 1.0.19 → 1.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/clients/logs/index.d.ts +13 -0
- package/dist/clients/logs/index.d.ts.map +1 -0
- package/dist/clients/logs/index.js +15 -0
- package/dist/clients/logs/index.js.map +1 -0
- package/dist/clients/logs/log-analyzer.d.ts +55 -0
- package/dist/clients/logs/log-analyzer.d.ts.map +1 -0
- package/dist/clients/logs/log-analyzer.js +228 -0
- package/dist/clients/logs/log-analyzer.js.map +1 -0
- package/dist/clients/logs/log-client.d.ts +87 -0
- package/dist/clients/logs/log-client.d.ts.map +1 -0
- package/dist/clients/logs/log-client.js +418 -0
- package/dist/clients/logs/log-client.js.map +1 -0
- package/dist/clients/logs/log-constants.d.ts +37 -0
- package/dist/clients/logs/log-constants.d.ts.map +1 -0
- package/dist/clients/logs/log-constants.js +37 -0
- package/dist/clients/logs/log-constants.js.map +1 -0
- package/dist/clients/logs/log-file-discovery.d.ts +64 -0
- package/dist/clients/logs/log-file-discovery.d.ts.map +1 -0
- package/dist/clients/logs/log-file-discovery.js +249 -0
- package/dist/clients/logs/log-file-discovery.js.map +1 -0
- package/dist/clients/logs/log-file-reader.d.ts +55 -0
- package/dist/clients/logs/log-file-reader.d.ts.map +1 -0
- package/dist/clients/logs/log-file-reader.js +207 -0
- package/dist/clients/logs/log-file-reader.js.map +1 -0
- package/dist/clients/logs/log-formatter.d.ts +90 -0
- package/dist/clients/logs/log-formatter.d.ts.map +1 -0
- package/dist/clients/logs/log-formatter.js +189 -0
- package/dist/clients/logs/log-formatter.js.map +1 -0
- package/dist/clients/logs/log-processor.d.ts +91 -0
- package/dist/clients/logs/log-processor.d.ts.map +1 -0
- package/dist/clients/logs/log-processor.js +328 -0
- package/dist/clients/logs/log-processor.js.map +1 -0
- package/dist/clients/logs/log-types.d.ts +58 -0
- package/dist/clients/logs/log-types.d.ts.map +1 -0
- package/dist/clients/logs/log-types.js +8 -0
- package/dist/clients/logs/log-types.js.map +1 -0
- package/dist/clients/logs/webdav-client-manager.d.ts +28 -0
- package/dist/clients/logs/webdav-client-manager.d.ts.map +1 -0
- package/dist/clients/logs/webdav-client-manager.js +77 -0
- package/dist/clients/logs/webdav-client-manager.js.map +1 -0
- package/dist/docs/dw_customer/CustomerMgr.md +3 -3
- package/dist/docs/dw_customer/Wallet.md +25 -0
- package/dist/docs/dw_extensions.payments/SalesforceAdyenPaymentIntent.md +156 -0
- package/dist/docs/dw_extensions.payments/SalesforceAdyenSavedPaymentMethod.md +258 -0
- package/dist/docs/dw_extensions.payments/SalesforcePayPalOrder.md +36 -0
- package/dist/docs/dw_extensions.payments/SalesforcePaymentIntent.md +1 -1
- package/dist/docs/dw_extensions.payments/SalesforcePaymentsHooks.md +68 -1
- package/dist/docs/dw_extensions.payments/SalesforcePaymentsMerchantAccount.md +154 -0
- package/dist/docs/dw_extensions.payments/SalesforcePaymentsMerchantAccountPaymentMethod.md +96 -0
- package/dist/docs/dw_extensions.payments/SalesforcePaymentsMgr.md +311 -2
- package/dist/docs/dw_extensions.payments/SalesforcePaymentsSiteConfiguration.md +26 -0
- package/dist/docs/dw_extensions.payments/SalesforcePaymentsZone.md +458 -0
- package/dist/docs/dw_order/OrderMgr.md +3 -3
- package/dist/docs/dw_order.hooks/BasketMergeHooks.md +4 -4
- package/dist/docs/dw_order.hooks/CheckoutHooks.md +42 -0
- package/dist/utils/path-resolver.d.ts +5 -0
- package/dist/utils/path-resolver.d.ts.map +1 -1
- package/dist/utils/path-resolver.js +27 -5
- package/dist/utils/path-resolver.js.map +1 -1
- package/package.json +9 -3
- package/.github/ISSUE_TEMPLATE/bug_report.yml +0 -131
- package/.github/ISSUE_TEMPLATE/config.yml +0 -9
- package/.github/ISSUE_TEMPLATE/documentation.yml +0 -117
- package/.github/ISSUE_TEMPLATE/feature_request.yml +0 -151
- package/.github/ISSUE_TEMPLATE/question.yml +0 -102
- package/.github/PULL_REQUEST_TEMPLATE/bug_fix.md +0 -59
- package/.github/PULL_REQUEST_TEMPLATE/documentation.md +0 -48
- package/.github/PULL_REQUEST_TEMPLATE/new_tool.md +0 -55
- package/.github/agents/official-docs-researcher.agent.md +0 -56
- package/.github/dependabot.yml +0 -65
- package/.github/instructions/mcp-node-tests.instructions.md +0 -30
- package/.github/instructions/mcp-yml-tests.instructions.md +0 -27
- package/.github/pull_request_template.md +0 -103
- package/.github/skills/agent-authoring/SKILL.md +0 -66
- package/.github/skills/mcp-log-debugging/SKILL.md +0 -69
- package/.github/skills/mcp-programmatic-testing/SKILL.md +0 -142
- package/.github/skills/mcp-yaml-testing/SKILL.md +0 -136
- package/.github/skills/salesforce-developer-site-scraper/SKILL.md +0 -102
- package/.github/skills/salesforce-developer-site-scraper/scripts/scrape-to-markdown.js +0 -205
- package/.github/skills/salesforce-help-site-scraper/SKILL.md +0 -84
- package/.github/skills/salesforce-help-site-scraper/scripts/scrape-help-to-markdown.js +0 -212
- package/.github/skills/skill-authoring/SKILL.md +0 -228
- package/.github/skills/skill-authoring/references/PATTERNS.md +0 -384
- package/.github/workflows/ci.yml +0 -103
- package/.github/workflows/deploy-pages.yml +0 -59
- package/.github/workflows/publish.yml +0 -112
- package/.github/workflows/update-docs.yml +0 -182
- package/.husky/pre-commit +0 -2
- package/AGENTS.md +0 -638
- package/CONTRIBUTING.md +0 -323
- package/SECURITY.md +0 -148
- package/aegis.config.docs-only.json +0 -9
- package/aegis.config.json +0 -12
- package/aegis.config.with-dw.json +0 -15
- package/ai-instructions/AGENTS.md +0 -628
- package/ai-instructions/skills/sfcc-caching/SKILL.md +0 -89
- package/ai-instructions/skills/sfcc-cartridge-development/SKILL.md +0 -240
- package/ai-instructions/skills/sfcc-forms-development/SKILL.md +0 -261
- package/ai-instructions/skills/sfcc-forms-development/references/ARCHITECTURE-SGJC-SFRA.md +0 -143
- package/ai-instructions/skills/sfcc-forms-development/references/FORM-XML-CHEATSHEET.md +0 -127
- package/ai-instructions/skills/sfcc-fraud-prevention/SKILL.md +0 -95
- package/ai-instructions/skills/sfcc-hooks-registration/SKILL.md +0 -39
- package/ai-instructions/skills/sfcc-isml-development/SKILL.md +0 -370
- package/ai-instructions/skills/sfcc-isml-development/references/REMOTE-INCLUDES.md +0 -116
- package/ai-instructions/skills/sfcc-isml-development/references/SFRA-LAYOUTS.md +0 -50
- package/ai-instructions/skills/sfcc-isml-development/references/SFRA-PAGES-CART-ACCOUNT-AUTH.md +0 -45
- package/ai-instructions/skills/sfcc-isml-development/references/SFRA-PAGES-CATALOG.md +0 -85
- package/ai-instructions/skills/sfcc-isml-development/references/SFRA-STRUCTURE-COMPONENTS.md +0 -63
- package/ai-instructions/skills/sfcc-isml-development/references/UTILITIES-EXPRESSIONS.md +0 -159
- package/ai-instructions/skills/sfcc-isml-development/references/sfra-base-templates-architecture.md +0 -13
- package/ai-instructions/skills/sfcc-job-development/SKILL.md +0 -334
- package/ai-instructions/skills/sfcc-job-development/references/CHUNK-ORIENTED.md +0 -393
- package/ai-instructions/skills/sfcc-job-development/references/STEPTYPES-JSON.md +0 -271
- package/ai-instructions/skills/sfcc-job-development/references/TASK-ORIENTED.md +0 -257
- package/ai-instructions/skills/sfcc-localization/SKILL.md +0 -92
- package/ai-instructions/skills/sfcc-localization/references/CONTROLLERS.md +0 -63
- package/ai-instructions/skills/sfcc-localization/references/FORMATTING.md +0 -29
- package/ai-instructions/skills/sfcc-localization/references/FORMS-LOCALIZATION.md +0 -33
- package/ai-instructions/skills/sfcc-localization/references/JAVASCRIPT-LOCALIZATION.md +0 -41
- package/ai-instructions/skills/sfcc-localization/references/LOCALE-SWITCHING.md +0 -35
- package/ai-instructions/skills/sfcc-localization/references/PATTERNS.md +0 -740
- package/ai-instructions/skills/sfcc-localization/references/PROPERTIES-ENCODING.md +0 -25
- package/ai-instructions/skills/sfcc-localization/references/RESOURCE-BUNDLES.md +0 -67
- package/ai-instructions/skills/sfcc-localization/references/STATIC-FILES.md +0 -23
- package/ai-instructions/skills/sfcc-localization/references/TESTING.md +0 -21
- package/ai-instructions/skills/sfcc-localserviceregistry/SKILL.md +0 -374
- package/ai-instructions/skills/sfcc-logging/SKILL.md +0 -352
- package/ai-instructions/skills/sfcc-logging/references/LOG-FILES.md +0 -282
- package/ai-instructions/skills/sfcc-ocapi-hooks/SKILL.md +0 -350
- package/ai-instructions/skills/sfcc-ocapi-scapi-slas/SKILL.md +0 -108
- package/ai-instructions/skills/sfcc-page-designer/SKILL.md +0 -353
- package/ai-instructions/skills/sfcc-page-designer/references/ATTRIBUTE-TYPES.md +0 -436
- package/ai-instructions/skills/sfcc-page-designer/references/META-DEFINITIONS.md +0 -322
- package/ai-instructions/skills/sfcc-performance/SKILL.md +0 -424
- package/ai-instructions/skills/sfcc-platform-limits/SKILL.md +0 -89
- package/ai-instructions/skills/sfcc-scapi-custom-endpoints/SKILL.md +0 -237
- package/ai-instructions/skills/sfcc-scapi-custom-endpoints/references/AUTHENTICATION.md +0 -214
- package/ai-instructions/skills/sfcc-scapi-custom-endpoints/references/URL-MAPPING.md +0 -253
- package/ai-instructions/skills/sfcc-scapi-hooks/SKILL.md +0 -341
- package/ai-instructions/skills/sfcc-script-evaluation/SKILL.md +0 -380
- package/ai-instructions/skills/sfcc-security/SKILL.md +0 -394
- package/ai-instructions/skills/sfcc-sfra-client-side-js/SKILL.md +0 -270
- package/ai-instructions/skills/sfcc-sfra-client-side-js/references/AJAX-CSRF-VALIDATION.md +0 -285
- package/ai-instructions/skills/sfcc-sfra-client-side-js/references/BASE-MODULE-INDEX.md +0 -206
- package/ai-instructions/skills/sfcc-sfra-client-side-js/references/EXTENSION-PATTERNS.md +0 -165
- package/ai-instructions/skills/sfcc-sfra-client-side-js/references/PLUGIN-PATTERNS.md +0 -185
- package/ai-instructions/skills/sfcc-sfra-controllers/SKILL.md +0 -347
- package/ai-instructions/skills/sfcc-sfra-controllers/references/MIDDLEWARE-REFERENCE.md +0 -257
- package/ai-instructions/skills/sfcc-sfra-controllers/references/REMOTE-INCLUDES.md +0 -193
- package/ai-instructions/skills/sfcc-sfra-controllers/references/standard-sfra-controllers.md +0 -814
- package/ai-instructions/skills/sfcc-sfra-models/SKILL.md +0 -322
- package/ai-instructions/skills/sfcc-sfra-models/references/MODEL-PATTERNS.md +0 -530
- package/ai-instructions/skills/sfcc-sfra-models/references/MODEL-STRUCTURE.md +0 -234
- package/ai-instructions/skills/sfcc-sfra-models/references/TESTING-SECURITY.md +0 -417
- package/ai-instructions/skills/sfcc-sfra-scss/SKILL.md +0 -393
- package/ai-instructions/skills/sfcc-webdav-workflows/SKILL.md +0 -111
- package/docs/TopLevel/APIException.md +0 -68
- package/docs/TopLevel/Array.md +0 -897
- package/docs/TopLevel/ArrayBuffer.md +0 -79
- package/docs/TopLevel/BigInt.md +0 -132
- package/docs/TopLevel/Boolean.md +0 -62
- package/docs/TopLevel/ConversionError.md +0 -23
- package/docs/TopLevel/DataView.md +0 -352
- package/docs/TopLevel/Date.md +0 -924
- package/docs/TopLevel/ES6Iterator.md +0 -33
- package/docs/TopLevel/Error.md +0 -88
- package/docs/TopLevel/EvalError.md +0 -23
- package/docs/TopLevel/Fault.md +0 -87
- package/docs/TopLevel/Float32Array.md +0 -130
- package/docs/TopLevel/Float64Array.md +0 -130
- package/docs/TopLevel/Function.md +0 -105
- package/docs/TopLevel/Generator.md +0 -78
- package/docs/TopLevel/IOError.md +0 -62
- package/docs/TopLevel/Int16Array.md +0 -130
- package/docs/TopLevel/Int32Array.md +0 -130
- package/docs/TopLevel/Int8Array.md +0 -130
- package/docs/TopLevel/InternalError.md +0 -23
- package/docs/TopLevel/Iterable.md +0 -41
- package/docs/TopLevel/Iterator.md +0 -48
- package/docs/TopLevel/JSON.md +0 -162
- package/docs/TopLevel/Map.md +0 -216
- package/docs/TopLevel/Math.md +0 -913
- package/docs/TopLevel/Module.md +0 -45
- package/docs/TopLevel/Namespace.md +0 -96
- package/docs/TopLevel/Number.md +0 -417
- package/docs/TopLevel/Object.md +0 -641
- package/docs/TopLevel/QName.md +0 -96
- package/docs/TopLevel/RangeError.md +0 -23
- package/docs/TopLevel/ReferenceError.md +0 -23
- package/docs/TopLevel/RegExp.md +0 -109
- package/docs/TopLevel/Set.md +0 -165
- package/docs/TopLevel/StopIteration.md +0 -20
- package/docs/TopLevel/String.md +0 -1299
- package/docs/TopLevel/Symbol.md +0 -78
- package/docs/TopLevel/SyntaxError.md +0 -23
- package/docs/TopLevel/SystemError.md +0 -62
- package/docs/TopLevel/TypeError.md +0 -23
- package/docs/TopLevel/URIError.md +0 -23
- package/docs/TopLevel/Uint16Array.md +0 -130
- package/docs/TopLevel/Uint32Array.md +0 -130
- package/docs/TopLevel/Uint8Array.md +0 -130
- package/docs/TopLevel/Uint8ClampedArray.md +0 -130
- package/docs/TopLevel/WeakMap.md +0 -137
- package/docs/TopLevel/WeakSet.md +0 -92
- package/docs/TopLevel/XML.md +0 -937
- package/docs/TopLevel/XMLList.md +0 -484
- package/docs/TopLevel/XMLStreamError.md +0 -74
- package/docs/TopLevel/arguments.md +0 -34
- package/docs/TopLevel/global.md +0 -474
- package/docs/dw_campaign/ABTest.md +0 -47
- package/docs/dw_campaign/ABTestMgr.md +0 -70
- package/docs/dw_campaign/ABTestSegment.md +0 -96
- package/docs/dw_campaign/AmountDiscount.md +0 -51
- package/docs/dw_campaign/ApproachingDiscount.md +0 -124
- package/docs/dw_campaign/BonusChoiceDiscount.md +0 -146
- package/docs/dw_campaign/BonusDiscount.md +0 -48
- package/docs/dw_campaign/Campaign.md +0 -365
- package/docs/dw_campaign/CampaignMgr.md +0 -395
- package/docs/dw_campaign/CampaignStatusCodes.md +0 -48
- package/docs/dw_campaign/Coupon.md +0 -310
- package/docs/dw_campaign/CouponMgr.md +0 -144
- package/docs/dw_campaign/CouponRedemption.md +0 -94
- package/docs/dw_campaign/CouponStatusCodes.md +0 -86
- package/docs/dw_campaign/Discount.md +0 -226
- package/docs/dw_campaign/DiscountPlan.md +0 -282
- package/docs/dw_campaign/FixedPriceDiscount.md +0 -52
- package/docs/dw_campaign/FixedPriceShippingDiscount.md +0 -52
- package/docs/dw_campaign/FreeDiscount.md +0 -17
- package/docs/dw_campaign/FreeShippingDiscount.md +0 -17
- package/docs/dw_campaign/PercentageDiscount.md +0 -52
- package/docs/dw_campaign/PercentageOptionDiscount.md +0 -48
- package/docs/dw_campaign/PriceBookPriceDiscount.md +0 -47
- package/docs/dw_campaign/Promotion.md +0 -874
- package/docs/dw_campaign/PromotionMgr.md +0 -386
- package/docs/dw_campaign/PromotionPlan.md +0 -330
- package/docs/dw_campaign/SlotContent.md +0 -144
- package/docs/dw_campaign/SourceCodeGroup.md +0 -72
- package/docs/dw_campaign/SourceCodeInfo.md +0 -144
- package/docs/dw_campaign/SourceCodeStatusCodes.md +0 -36
- package/docs/dw_campaign/TotalFixedPriceDiscount.md +0 -47
- package/docs/dw_catalog/Catalog.md +0 -122
- package/docs/dw_catalog/CatalogMgr.md +0 -182
- package/docs/dw_catalog/Category.md +0 -1308
- package/docs/dw_catalog/CategoryAssignment.md +0 -192
- package/docs/dw_catalog/CategoryLink.md +0 -126
- package/docs/dw_catalog/PriceBook.md +0 -242
- package/docs/dw_catalog/PriceBookMgr.md +0 -204
- package/docs/dw_catalog/Product.md +0 -2593
- package/docs/dw_catalog/ProductActiveData.md +0 -1275
- package/docs/dw_catalog/ProductAttributeModel.md +0 -277
- package/docs/dw_catalog/ProductAvailabilityLevels.md +0 -142
- package/docs/dw_catalog/ProductAvailabilityModel.md +0 -380
- package/docs/dw_catalog/ProductInventoryList.md +0 -140
- package/docs/dw_catalog/ProductInventoryMgr.md +0 -117
- package/docs/dw_catalog/ProductInventoryRecord.md +0 -563
- package/docs/dw_catalog/ProductLink.md +0 -144
- package/docs/dw_catalog/ProductMgr.md +0 -138
- package/docs/dw_catalog/ProductOption.md +0 -214
- package/docs/dw_catalog/ProductOptionModel.md +0 -246
- package/docs/dw_catalog/ProductOptionValue.md +0 -123
- package/docs/dw_catalog/ProductPriceInfo.md +0 -172
- package/docs/dw_catalog/ProductPriceModel.md +0 -745
- package/docs/dw_catalog/ProductPriceTable.md +0 -134
- package/docs/dw_catalog/ProductSearchHit.md +0 -581
- package/docs/dw_catalog/ProductSearchModel.md +0 -2018
- package/docs/dw_catalog/ProductSearchRefinementDefinition.md +0 -97
- package/docs/dw_catalog/ProductSearchRefinementValue.md +0 -73
- package/docs/dw_catalog/ProductSearchRefinements.md +0 -216
- package/docs/dw_catalog/ProductVariationAttribute.md +0 -100
- package/docs/dw_catalog/ProductVariationAttributeValue.md +0 -238
- package/docs/dw_catalog/ProductVariationModel.md +0 -849
- package/docs/dw_catalog/Recommendation.md +0 -314
- package/docs/dw_catalog/SearchModel.md +0 -901
- package/docs/dw_catalog/SearchRefinementDefinition.md +0 -146
- package/docs/dw_catalog/SearchRefinementValue.md +0 -185
- package/docs/dw_catalog/SearchRefinements.md +0 -180
- package/docs/dw_catalog/SortingOption.md +0 -120
- package/docs/dw_catalog/SortingRule.md +0 -47
- package/docs/dw_catalog/Store.md +0 -562
- package/docs/dw_catalog/StoreGroup.md +0 -96
- package/docs/dw_catalog/StoreInventoryFilter.md +0 -74
- package/docs/dw_catalog/StoreInventoryFilterValue.md +0 -74
- package/docs/dw_catalog/StoreMgr.md +0 -236
- package/docs/dw_catalog/Variant.md +0 -859
- package/docs/dw_catalog/VariationGroup.md +0 -792
- package/docs/dw_content/Content.md +0 -534
- package/docs/dw_content/ContentMgr.md +0 -166
- package/docs/dw_content/ContentSearchModel.md +0 -682
- package/docs/dw_content/ContentSearchRefinementDefinition.md +0 -49
- package/docs/dw_content/ContentSearchRefinementValue.md +0 -17
- package/docs/dw_content/ContentSearchRefinements.md +0 -208
- package/docs/dw_content/Folder.md +0 -467
- package/docs/dw_content/Library.md +0 -121
- package/docs/dw_content/MarkupText.md +0 -88
- package/docs/dw_content/MediaFile.md +0 -317
- package/docs/dw_crypto/CertificateRef.md +0 -42
- package/docs/dw_crypto/CertificateUtils.md +0 -187
- package/docs/dw_crypto/Cipher.md +0 -530
- package/docs/dw_crypto/Encoding.md +0 -220
- package/docs/dw_crypto/JWE.md +0 -224
- package/docs/dw_crypto/JWEHeader.md +0 -172
- package/docs/dw_crypto/JWS.md +0 -264
- package/docs/dw_crypto/JWSHeader.md +0 -148
- package/docs/dw_crypto/KeyRef.md +0 -44
- package/docs/dw_crypto/Mac.md +0 -139
- package/docs/dw_crypto/MessageDigest.md +0 -175
- package/docs/dw_crypto/SecureRandom.md +0 -148
- package/docs/dw_crypto/Signature.md +0 -252
- package/docs/dw_crypto/WeakCipher.md +0 -538
- package/docs/dw_crypto/WeakMac.md +0 -121
- package/docs/dw_crypto/WeakMessageDigest.md +0 -163
- package/docs/dw_crypto/WeakSignature.md +0 -242
- package/docs/dw_crypto/X509Certificate.md +0 -193
- package/docs/dw_customer/AddressBook.md +0 -163
- package/docs/dw_customer/AgentUserMgr.md +0 -83
- package/docs/dw_customer/AgentUserStatusCodes.md +0 -96
- package/docs/dw_customer/AuthenticationStatus.md +0 -138
- package/docs/dw_customer/Credentials.md +0 -494
- package/docs/dw_customer/Customer.md +0 -571
- package/docs/dw_customer/CustomerActiveData.md +0 -552
- package/docs/dw_customer/CustomerAddress.md +0 -852
- package/docs/dw_customer/CustomerCDPData.md +0 -70
- package/docs/dw_customer/CustomerContextMgr.md +0 -64
- package/docs/dw_customer/CustomerGroup.md +0 -134
- package/docs/dw_customer/CustomerList.md +0 -71
- package/docs/dw_customer/CustomerMgr.md +0 -735
- package/docs/dw_customer/CustomerPasswordConstraints.md +0 -142
- package/docs/dw_customer/CustomerPaymentInstrument.md +0 -125
- package/docs/dw_customer/CustomerStatusCodes.md +0 -30
- package/docs/dw_customer/EncryptedObject.md +0 -18
- package/docs/dw_customer/ExternalProfile.md +0 -160
- package/docs/dw_customer/OrderHistory.md +0 -111
- package/docs/dw_customer/ProductList.md +0 -1000
- package/docs/dw_customer/ProductListItem.md +0 -504
- package/docs/dw_customer/ProductListItemPurchase.md +0 -145
- package/docs/dw_customer/ProductListMgr.md +0 -234
- package/docs/dw_customer/ProductListRegistrant.md +0 -193
- package/docs/dw_customer/Profile.md +0 -1128
- package/docs/dw_customer/Wallet.md +0 -118
- package/docs/dw_extensions.applepay/ApplePayHookResult.md +0 -209
- package/docs/dw_extensions.applepay/ApplePayHooks.md +0 -255
- package/docs/dw_extensions.facebook/FacebookFeedHooks.md +0 -47
- package/docs/dw_extensions.facebook/FacebookProduct.md +0 -1621
- package/docs/dw_extensions.paymentrequest/PaymentRequestHookResult.md +0 -159
- package/docs/dw_extensions.paymentrequest/PaymentRequestHooks.md +0 -160
- package/docs/dw_extensions.payments/SalesforceBancontactPaymentDetails.md +0 -79
- package/docs/dw_extensions.payments/SalesforceCardPaymentDetails.md +0 -103
- package/docs/dw_extensions.payments/SalesforceEpsPaymentDetails.md +0 -51
- package/docs/dw_extensions.payments/SalesforceIdealPaymentDetails.md +0 -51
- package/docs/dw_extensions.payments/SalesforceKlarnaPaymentDetails.md +0 -51
- package/docs/dw_extensions.payments/SalesforcePayPalOrder.md +0 -246
- package/docs/dw_extensions.payments/SalesforcePayPalOrderAddress.md +0 -191
- package/docs/dw_extensions.payments/SalesforcePayPalOrderPayer.md +0 -118
- package/docs/dw_extensions.payments/SalesforcePayPalPaymentDetails.md +0 -79
- package/docs/dw_extensions.payments/SalesforcePaymentDetails.md +0 -57
- package/docs/dw_extensions.payments/SalesforcePaymentIntent.md +0 -281
- package/docs/dw_extensions.payments/SalesforcePaymentMethod.md +0 -346
- package/docs/dw_extensions.payments/SalesforcePaymentRequest.md +0 -784
- package/docs/dw_extensions.payments/SalesforcePaymentsHooks.md +0 -45
- package/docs/dw_extensions.payments/SalesforcePaymentsMgr.md +0 -634
- package/docs/dw_extensions.payments/SalesforcePaymentsSiteConfiguration.md +0 -95
- package/docs/dw_extensions.payments/SalesforceSepaDebitPaymentDetails.md +0 -51
- package/docs/dw_extensions.payments/SalesforceVenmoPaymentDetails.md +0 -79
- package/docs/dw_extensions.pinterest/PinterestAvailability.md +0 -86
- package/docs/dw_extensions.pinterest/PinterestFeedHooks.md +0 -69
- package/docs/dw_extensions.pinterest/PinterestOrder.md +0 -232
- package/docs/dw_extensions.pinterest/PinterestOrderHooks.md +0 -45
- package/docs/dw_extensions.pinterest/PinterestProduct.md +0 -850
- package/docs/dw_io/CSVStreamReader.md +0 -80
- package/docs/dw_io/CSVStreamWriter.md +0 -60
- package/docs/dw_io/File.md +0 -614
- package/docs/dw_io/FileReader.md +0 -41
- package/docs/dw_io/FileWriter.md +0 -103
- package/docs/dw_io/InputStream.md +0 -34
- package/docs/dw_io/OutputStream.md +0 -34
- package/docs/dw_io/PrintWriter.md +0 -71
- package/docs/dw_io/RandomAccessFileReader.md +0 -173
- package/docs/dw_io/Reader.md +0 -274
- package/docs/dw_io/StringWriter.md +0 -81
- package/docs/dw_io/Writer.md +0 -92
- package/docs/dw_io/XMLIndentingStreamWriter.md +0 -112
- package/docs/dw_io/XMLStreamConstants.md +0 -114
- package/docs/dw_io/XMLStreamReader.md +0 -1043
- package/docs/dw_io/XMLStreamWriter.md +0 -572
- package/docs/dw_job/JobExecution.md +0 -107
- package/docs/dw_job/JobStepExecution.md +0 -151
- package/docs/dw_net/FTPClient.md +0 -699
- package/docs/dw_net/FTPFileInfo.md +0 -122
- package/docs/dw_net/HTTPClient.md +0 -831
- package/docs/dw_net/HTTPClientLoggingConfig.md +0 -296
- package/docs/dw_net/HTTPRequestPart.md +0 -206
- package/docs/dw_net/Mail.md +0 -551
- package/docs/dw_net/SFTPClient.md +0 -591
- package/docs/dw_net/SFTPFileInfo.md +0 -122
- package/docs/dw_net/WebDAVClient.md +0 -715
- package/docs/dw_net/WebDAVFileInfo.md +0 -184
- package/docs/dw_object/ActiveData.md +0 -75
- package/docs/dw_object/CustomAttributes.md +0 -16
- package/docs/dw_object/CustomObject.md +0 -73
- package/docs/dw_object/CustomObjectMgr.md +0 -291
- package/docs/dw_object/Extensible.md +0 -64
- package/docs/dw_object/ExtensibleObject.md +0 -68
- package/docs/dw_object/Note.md +0 -121
- package/docs/dw_object/ObjectAttributeDefinition.md +0 -481
- package/docs/dw_object/ObjectAttributeGroup.md +0 -170
- package/docs/dw_object/ObjectAttributeValueDefinition.md +0 -72
- package/docs/dw_object/ObjectTypeDefinition.md +0 -216
- package/docs/dw_object/PersistentObject.md +0 -94
- package/docs/dw_object/SimpleExtensible.md +0 -46
- package/docs/dw_object/SystemObjectMgr.md +0 -153
- package/docs/dw_order/AbstractItem.md +0 -244
- package/docs/dw_order/AbstractItemCtnr.md +0 -240
- package/docs/dw_order/Appeasement.md +0 -367
- package/docs/dw_order/AppeasementItem.md +0 -90
- package/docs/dw_order/Basket.md +0 -362
- package/docs/dw_order/BasketMgr.md +0 -418
- package/docs/dw_order/BonusDiscountLineItem.md +0 -248
- package/docs/dw_order/CouponLineItem.md +0 -272
- package/docs/dw_order/CreateAgentBasketLimitExceededException.md +0 -18
- package/docs/dw_order/CreateBasketFromOrderException.md +0 -26
- package/docs/dw_order/CreateCouponLineItemException.md +0 -26
- package/docs/dw_order/CreateOrderException.md +0 -18
- package/docs/dw_order/CreateTemporaryBasketLimitExceededException.md +0 -18
- package/docs/dw_order/GiftCertificate.md +0 -569
- package/docs/dw_order/GiftCertificateLineItem.md +0 -324
- package/docs/dw_order/GiftCertificateMgr.md +0 -197
- package/docs/dw_order/GiftCertificateStatusCodes.md +0 -60
- package/docs/dw_order/Invoice.md +0 -418
- package/docs/dw_order/InvoiceItem.md +0 -222
- package/docs/dw_order/LineItem.md +0 -532
- package/docs/dw_order/LineItemCtnr.md +0 -2431
- package/docs/dw_order/Order.md +0 -2567
- package/docs/dw_order/OrderAddress.md +0 -807
- package/docs/dw_order/OrderItem.md +0 -536
- package/docs/dw_order/OrderMgr.md +0 -535
- package/docs/dw_order/OrderPaymentInstrument.md +0 -220
- package/docs/dw_order/OrderProcessStatusCodes.md +0 -84
- package/docs/dw_order/PaymentCard.md +0 -217
- package/docs/dw_order/PaymentInstrument.md +0 -1462
- package/docs/dw_order/PaymentMethod.md +0 -242
- package/docs/dw_order/PaymentMgr.md +0 -117
- package/docs/dw_order/PaymentProcessor.md +0 -70
- package/docs/dw_order/PaymentStatusCodes.md +0 -42
- package/docs/dw_order/PaymentTransaction.md +0 -328
- package/docs/dw_order/PriceAdjustment.md +0 -640
- package/docs/dw_order/PriceAdjustmentLimitTypes.md +0 -38
- package/docs/dw_order/ProductLineItem.md +0 -1821
- package/docs/dw_order/ProductShippingCost.md +0 -96
- package/docs/dw_order/ProductShippingLineItem.md +0 -326
- package/docs/dw_order/ProductShippingModel.md +0 -125
- package/docs/dw_order/Return.md +0 -360
- package/docs/dw_order/ReturnCase.md +0 -400
- package/docs/dw_order/ReturnCaseItem.md +0 -373
- package/docs/dw_order/ReturnItem.md +0 -362
- package/docs/dw_order/Shipment.md +0 -1251
- package/docs/dw_order/ShipmentShippingCost.md +0 -46
- package/docs/dw_order/ShipmentShippingModel.md +0 -146
- package/docs/dw_order/ShippingLineItem.md +0 -278
- package/docs/dw_order/ShippingLocation.md +0 -366
- package/docs/dw_order/ShippingMethod.md +0 -266
- package/docs/dw_order/ShippingMgr.md +0 -158
- package/docs/dw_order/ShippingOrder.md +0 -561
- package/docs/dw_order/ShippingOrderItem.md +0 -355
- package/docs/dw_order/SumItem.md +0 -147
- package/docs/dw_order/TaxGroup.md +0 -143
- package/docs/dw_order/TaxItem.md +0 -74
- package/docs/dw_order/TaxMgr.md +0 -227
- package/docs/dw_order/TrackingInfo.md +0 -312
- package/docs/dw_order/TrackingRef.md +0 -113
- package/docs/dw_order.hooks/BasketMergeHooks.md +0 -42
- package/docs/dw_order.hooks/CalculateHooks.md +0 -77
- package/docs/dw_order.hooks/OrderHooks.md +0 -41
- package/docs/dw_order.hooks/PaymentHooks.md +0 -180
- package/docs/dw_order.hooks/ReturnHooks.md +0 -135
- package/docs/dw_order.hooks/ShippingOrderHooks.md +0 -245
- package/docs/dw_rpc/SOAPUtil.md +0 -465
- package/docs/dw_rpc/Stub.md +0 -289
- package/docs/dw_rpc/WebReference.md +0 -83
- package/docs/dw_suggest/BrandSuggestions.md +0 -17
- package/docs/dw_suggest/CategorySuggestions.md +0 -53
- package/docs/dw_suggest/ContentSuggestions.md +0 -53
- package/docs/dw_suggest/CustomSuggestions.md +0 -17
- package/docs/dw_suggest/ProductSuggestions.md +0 -53
- package/docs/dw_suggest/SearchPhraseSuggestions.md +0 -117
- package/docs/dw_suggest/SuggestModel.md +0 -403
- package/docs/dw_suggest/SuggestedCategory.md +0 -46
- package/docs/dw_suggest/SuggestedContent.md +0 -46
- package/docs/dw_suggest/SuggestedPhrase.md +0 -70
- package/docs/dw_suggest/SuggestedProduct.md +0 -47
- package/docs/dw_suggest/SuggestedTerm.md +0 -143
- package/docs/dw_suggest/SuggestedTerms.md +0 -132
- package/docs/dw_suggest/Suggestions.md +0 -179
- package/docs/dw_svc/FTPService.md +0 -118
- package/docs/dw_svc/FTPServiceDefinition.md +0 -69
- package/docs/dw_svc/HTTPFormService.md +0 -18
- package/docs/dw_svc/HTTPFormServiceDefinition.md +0 -18
- package/docs/dw_svc/HTTPService.md +0 -415
- package/docs/dw_svc/HTTPServiceDefinition.md +0 -303
- package/docs/dw_svc/LocalServiceRegistry.md +0 -43
- package/docs/dw_svc/Result.md +0 -303
- package/docs/dw_svc/SOAPService.md +0 -115
- package/docs/dw_svc/SOAPServiceDefinition.md +0 -17
- package/docs/dw_svc/Service.md +0 -295
- package/docs/dw_svc/ServiceCallback.md +0 -268
- package/docs/dw_svc/ServiceConfig.md +0 -120
- package/docs/dw_svc/ServiceCredential.md +0 -156
- package/docs/dw_svc/ServiceDefinition.md +0 -176
- package/docs/dw_svc/ServiceProfile.md +0 -168
- package/docs/dw_svc/ServiceRegistry.md +0 -109
- package/docs/dw_system/AgentUserStatusCodes.md +0 -21
- package/docs/dw_system/Cache.md +0 -102
- package/docs/dw_system/CacheMgr.md +0 -42
- package/docs/dw_system/HookMgr.md +0 -66
- package/docs/dw_system/InternalObject.md +0 -56
- package/docs/dw_system/JobProcessMonitor.md +0 -124
- package/docs/dw_system/Log.md +0 -237
- package/docs/dw_system/LogNDC.md +0 -88
- package/docs/dw_system/Logger.md +0 -263
- package/docs/dw_system/OrganizationPreferences.md +0 -18
- package/docs/dw_system/Pipeline.md +0 -73
- package/docs/dw_system/PipelineDictionary.md +0 -16
- package/docs/dw_system/RESTErrorResponse.md +0 -66
- package/docs/dw_system/RESTResponseMgr.md +0 -258
- package/docs/dw_system/RESTSuccessResponse.md +0 -39
- package/docs/dw_system/RemoteInclude.md +0 -74
- package/docs/dw_system/Request.md +0 -839
- package/docs/dw_system/RequestHooks.md +0 -59
- package/docs/dw_system/Response.md +0 -522
- package/docs/dw_system/SearchStatus.md +0 -151
- package/docs/dw_system/Session.md +0 -476
- package/docs/dw_system/Site.md +0 -585
- package/docs/dw_system/SitePreferences.md +0 -49
- package/docs/dw_system/Status.md +0 -273
- package/docs/dw_system/StatusItem.md +0 -273
- package/docs/dw_system/System.md +0 -200
- package/docs/dw_system/Transaction.md +0 -84
- package/docs/dw_util/ArrayList.md +0 -50
- package/docs/dw_util/Assert.md +0 -391
- package/docs/dw_util/BigInteger.md +0 -326
- package/docs/dw_util/Bytes.md +0 -252
- package/docs/dw_util/Calendar.md +0 -921
- package/docs/dw_util/Collection.md +0 -338
- package/docs/dw_util/Currency.md +0 -163
- package/docs/dw_util/DateUtils.md +0 -86
- package/docs/dw_util/Decimal.md +0 -438
- package/docs/dw_util/FilteringCollection.md +0 -93
- package/docs/dw_util/Geolocation.md +0 -271
- package/docs/dw_util/HashMap.md +0 -43
- package/docs/dw_util/HashSet.md +0 -46
- package/docs/dw_util/Iterator.md +0 -97
- package/docs/dw_util/LinkedHashMap.md +0 -43
- package/docs/dw_util/LinkedHashSet.md +0 -46
- package/docs/dw_util/List.md +0 -519
- package/docs/dw_util/Locale.md +0 -267
- package/docs/dw_util/Map.md +0 -313
- package/docs/dw_util/MapEntry.md +0 -70
- package/docs/dw_util/MappingKey.md +0 -76
- package/docs/dw_util/MappingMgr.md +0 -122
- package/docs/dw_util/PropertyComparator.md +0 -51
- package/docs/dw_util/SecureEncoder.md +0 -350
- package/docs/dw_util/SecureFilter.md +0 -350
- package/docs/dw_util/SeekableIterator.md +0 -176
- package/docs/dw_util/Set.md +0 -19
- package/docs/dw_util/SortedMap.md +0 -148
- package/docs/dw_util/SortedSet.md +0 -151
- package/docs/dw_util/StringUtils.md +0 -753
- package/docs/dw_util/Template.md +0 -88
- package/docs/dw_util/UUIDUtils.md +0 -38
- package/docs/dw_value/EnumValue.md +0 -92
- package/docs/dw_value/MimeEncodedText.md +0 -103
- package/docs/dw_value/Money.md +0 -610
- package/docs/dw_value/Quantity.md +0 -376
- package/docs/dw_web/CSRFProtection.md +0 -83
- package/docs/dw_web/ClickStream.md +0 -157
- package/docs/dw_web/ClickStreamEntry.md +0 -289
- package/docs/dw_web/Cookie.md +0 -396
- package/docs/dw_web/Cookies.md +0 -46
- package/docs/dw_web/Form.md +0 -74
- package/docs/dw_web/FormAction.md +0 -199
- package/docs/dw_web/FormElement.md +0 -220
- package/docs/dw_web/FormElementValidationResult.md +0 -157
- package/docs/dw_web/FormField.md +0 -603
- package/docs/dw_web/FormFieldOption.md +0 -238
- package/docs/dw_web/FormFieldOptions.md +0 -42
- package/docs/dw_web/FormGroup.md +0 -199
- package/docs/dw_web/FormList.md +0 -126
- package/docs/dw_web/FormListItem.md +0 -48
- package/docs/dw_web/Forms.md +0 -16
- package/docs/dw_web/HttpParameter.md +0 -513
- package/docs/dw_web/HttpParameterMap.md +0 -185
- package/docs/dw_web/LoopIterator.md +0 -261
- package/docs/dw_web/PageMetaData.md +0 -230
- package/docs/dw_web/PageMetaTag.md +0 -142
- package/docs/dw_web/PagingModel.md +0 -389
- package/docs/dw_web/Resource.md +0 -126
- package/docs/dw_web/URL.md +0 -213
- package/docs/dw_web/URLAction.md +0 -26
- package/docs/dw_web/URLParameter.md +0 -22
- package/docs/dw_web/URLRedirect.md +0 -71
- package/docs/dw_web/URLRedirectMgr.md +0 -73
- package/docs/dw_web/URLUtils.md +0 -1264
- package/docs/isml/isactivedatacontext.md +0 -382
- package/docs/isml/isactivedatahead.md +0 -566
- package/docs/isml/isanalyticsoff.md +0 -537
- package/docs/isml/isapplepay.md +0 -667
- package/docs/isml/isbreak.md +0 -687
- package/docs/isml/isbuynow.md +0 -682
- package/docs/isml/iscache.md +0 -802
- package/docs/isml/iscomment.md +0 -794
- package/docs/isml/iscomponent.md +0 -797
- package/docs/isml/iscontent.md +0 -594
- package/docs/isml/iscontinue.md +0 -563
- package/docs/isml/iscookie.md +0 -798
- package/docs/isml/isdecorate.md +0 -818
- package/docs/isml/isif.md +0 -737
- package/docs/isml/isinclude.md +0 -874
- package/docs/isml/isloop.md +0 -377
- package/docs/isml/ismodule.md +0 -844
- package/docs/isml/isnext.md +0 -672
- package/docs/isml/isobject.md +0 -760
- package/docs/isml/ispayment.md +0 -577
- package/docs/isml/ispaymentmessages.md +0 -664
- package/docs/isml/isprint.md +0 -875
- package/docs/isml/isredirect.md +0 -716
- package/docs/isml/isremove.md +0 -725
- package/docs/isml/isreplace.md +0 -783
- package/docs/isml/isscript.md +0 -859
- package/docs/isml/isselect.md +0 -908
- package/docs/isml/isset.md +0 -585
- package/docs/isml/isslot.md +0 -824
- package/docs/isml/isstatus.md +0 -711
- package/docs/sfra/account.md +0 -145
- package/docs/sfra/address.md +0 -84
- package/docs/sfra/billing.md +0 -90
- package/docs/sfra/cart.md +0 -134
- package/docs/sfra/categories.md +0 -124
- package/docs/sfra/content.md +0 -133
- package/docs/sfra/locale.md +0 -126
- package/docs/sfra/order.md +0 -219
- package/docs/sfra/payment.md +0 -131
- package/docs/sfra/price-default.md +0 -118
- package/docs/sfra/price-range.md +0 -77
- package/docs/sfra/price-tiered.md +0 -117
- package/docs/sfra/product-bundle.md +0 -164
- package/docs/sfra/product-full.md +0 -179
- package/docs/sfra/product-line-items.md +0 -147
- package/docs/sfra/product-search.md +0 -245
- package/docs/sfra/product-tile.md +0 -95
- package/docs/sfra/querystring.md +0 -240
- package/docs/sfra/render.md +0 -354
- package/docs/sfra/request.md +0 -210
- package/docs/sfra/response.md +0 -391
- package/docs/sfra/server.md +0 -375
- package/docs/sfra/shipping.md +0 -181
- package/docs/sfra/store.md +0 -145
- package/docs/sfra/stores.md +0 -190
- package/docs/sfra/totals.md +0 -184
- package/docs-site-v2/.vitepress/config.mts +0 -190
- package/docs-site-v2/.vitepress/theme/components/AssistantTabs.vue +0 -96
- package/docs-site-v2/.vitepress/theme/components/Callout.vue +0 -10
- package/docs-site-v2/.vitepress/theme/components/Collapsible.vue +0 -14
- package/docs-site-v2/.vitepress/theme/components/DwJsonBuilder.vue +0 -82
- package/docs-site-v2/.vitepress/theme/components/HomeSections.vue +0 -552
- package/docs-site-v2/.vitepress/theme/components/InstructionFilesTabs.vue +0 -87
- package/docs-site-v2/.vitepress/theme/components/ModeTabs.vue +0 -70
- package/docs-site-v2/.vitepress/theme/components/NewcomerCTA.vue +0 -14
- package/docs-site-v2/.vitepress/theme/components/QuickStartCards.vue +0 -20
- package/docs-site-v2/.vitepress/theme/components/QuickStartHero.vue +0 -20
- package/docs-site-v2/.vitepress/theme/components/SkillsList.vue +0 -48
- package/docs-site-v2/.vitepress/theme/components/ToolExplorer.vue +0 -85
- package/docs-site-v2/.vitepress/theme/custom.css +0 -1373
- package/docs-site-v2/.vitepress/theme/index.ts +0 -39
- package/docs-site-v2/data/skills.ts +0 -147
- package/docs-site-v2/data/tools.ts +0 -490
- package/docs-site-v2/development/index.md +0 -151
- package/docs-site-v2/examples/index.md +0 -333
- package/docs-site-v2/features/index.md +0 -144
- package/docs-site-v2/guide/ai-interfaces.md +0 -58
- package/docs-site-v2/guide/configuration.md +0 -208
- package/docs-site-v2/guide/index.md +0 -50
- package/docs-site-v2/index.md +0 -32
- package/docs-site-v2/package-lock.json +0 -2511
- package/docs-site-v2/package.json +0 -15
- package/docs-site-v2/public/404.html +0 -15
- package/docs-site-v2/public/android-chrome-192x192.png +0 -0
- package/docs-site-v2/public/android-chrome-512x512.png +0 -0
- package/docs-site-v2/public/apple-touch-icon.png +0 -0
- package/docs-site-v2/public/explain-product-pricing-methods-no-mcp.png +0 -0
- package/docs-site-v2/public/explain-product-pricing-methods.png +0 -0
- package/docs-site-v2/public/favicon-16x16.png +0 -0
- package/docs-site-v2/public/favicon-32x32.png +0 -0
- package/docs-site-v2/public/favicon.ico +0 -0
- package/docs-site-v2/public/index.css +0 -4174
- package/docs-site-v2/public/llms.txt +0 -44
- package/docs-site-v2/public/logo-dark.svg +0 -8
- package/docs-site-v2/public/logo.svg +0 -8
- package/docs-site-v2/public/robots.txt +0 -20
- package/docs-site-v2/public/site.webmanifest +0 -50
- package/docs-site-v2/public/sitemap.xml +0 -90
- package/docs-site-v2/script-debugger/index.md +0 -105
- package/docs-site-v2/scripts/generate-llms.js +0 -71
- package/docs-site-v2/scripts/generate-sitemap.js +0 -97
- package/docs-site-v2/security/index.md +0 -115
- package/docs-site-v2/skills/index.md +0 -40
- package/docs-site-v2/tools/index.md +0 -36
- package/docs-site-v2/troubleshooting/index.md +0 -204
- package/eslint.config.js +0 -139
- package/jest.config.js +0 -27
- package/memories/repo/docs-site-v2-build.json +0 -11
- package/scripts/convert-docs.js +0 -633
- package/scripts/validate-server-json.js +0 -68
- package/server.json +0 -20
- package/src/clients/agent-instructions-client.ts +0 -370
- package/src/clients/base/abstract-documentation-client.ts +0 -405
- package/src/clients/base/http-client.ts +0 -152
- package/src/clients/base/oauth-token.ts +0 -164
- package/src/clients/base/ocapi-auth-client.ts +0 -133
- package/src/clients/cartridge/cartridge-generation-client.ts +0 -302
- package/src/clients/cartridge/cartridge-structure.ts +0 -37
- package/src/clients/cartridge/cartridge-templates.ts +0 -246
- package/src/clients/cartridge/index.ts +0 -6
- package/src/clients/docs/class-content-parser.ts +0 -308
- package/src/clients/docs/class-name-resolver.ts +0 -99
- package/src/clients/docs/documentation-scanner.ts +0 -255
- package/src/clients/docs/index.ts +0 -16
- package/src/clients/docs/referenced-types-extractor.ts +0 -92
- package/src/clients/docs-client.ts +0 -393
- package/src/clients/isml-client.ts +0 -353
- package/src/clients/log-client.ts +0 -19
- package/src/clients/ocapi/code-versions-client.ts +0 -54
- package/src/clients/ocapi/site-preferences-client.ts +0 -106
- package/src/clients/ocapi/system-objects-client.ts +0 -148
- package/src/clients/ocapi-client.ts +0 -53
- package/src/clients/script-debugger/index.ts +0 -5
- package/src/clients/script-debugger/script-debugger-client.ts +0 -754
- package/src/clients/sfra-client.ts +0 -339
- package/src/config/configuration-factory.ts +0 -201
- package/src/config/dw-json-loader.ts +0 -248
- package/src/config/workspace-roots.ts +0 -540
- package/src/constants/index.ts +0 -1
- package/src/core/handlers/abstract-client-handler.ts +0 -85
- package/src/core/handlers/agent-instructions-handler.ts +0 -48
- package/src/core/handlers/base-handler.ts +0 -172
- package/src/core/handlers/cartridge-handler.ts +0 -38
- package/src/core/handlers/client-factory.ts +0 -140
- package/src/core/handlers/code-version-handler.ts +0 -43
- package/src/core/handlers/docs-handler.ts +0 -19
- package/src/core/handlers/isml-handler.ts +0 -19
- package/src/core/handlers/job-log-handler.ts +0 -39
- package/src/core/handlers/log-handler.ts +0 -39
- package/src/core/handlers/script-debugger-handler.ts +0 -46
- package/src/core/handlers/sfra-handler.ts +0 -23
- package/src/core/handlers/simple-client-handler.ts +0 -78
- package/src/core/handlers/system-object-handler.ts +0 -43
- package/src/core/handlers/validation-helpers.ts +0 -206
- package/src/core/instruction-advisor.ts +0 -122
- package/src/core/server.ts +0 -374
- package/src/core/tool-definitions.ts +0 -30
- package/src/core/tool-schemas/agent-instruction-tools.ts +0 -72
- package/src/core/tool-schemas/cartridge-tools.ts +0 -29
- package/src/core/tool-schemas/code-version-tools.ts +0 -28
- package/src/core/tool-schemas/documentation-tools.ts +0 -104
- package/src/core/tool-schemas/index.ts +0 -27
- package/src/core/tool-schemas/isml-tools.ts +0 -89
- package/src/core/tool-schemas/log-tools.ts +0 -196
- package/src/core/tool-schemas/script-debugger-tools.ts +0 -83
- package/src/core/tool-schemas/sfra-tools.ts +0 -65
- package/src/core/tool-schemas/shared-schemas.ts +0 -158
- package/src/core/tool-schemas/system-object-tools.ts +0 -127
- package/src/index.ts +0 -20
- package/src/main.ts +0 -161
- package/src/services/file-system-service.ts +0 -117
- package/src/services/index.ts +0 -11
- package/src/services/path-service.ts +0 -124
- package/src/tool-configs/agent-instructions-tool-config.ts +0 -83
- package/src/tool-configs/cartridge-tool-config.ts +0 -41
- package/src/tool-configs/code-version-tool-config.ts +0 -37
- package/src/tool-configs/docs-tool-config.ts +0 -103
- package/src/tool-configs/isml-tool-config.ts +0 -87
- package/src/tool-configs/job-log-tool-config.ts +0 -119
- package/src/tool-configs/log-tool-config.ts +0 -110
- package/src/tool-configs/script-debugger-tool-config.ts +0 -69
- package/src/tool-configs/sfra-tool-config.ts +0 -74
- package/src/tool-configs/system-object-tool-config.ts +0 -142
- package/src/types/types.ts +0 -125
- package/src/utils/cache.ts +0 -291
- package/src/utils/category-utils.ts +0 -70
- package/src/utils/log-tool-constants.ts +0 -95
- package/src/utils/logger.ts +0 -260
- package/src/utils/markdown-utils.ts +0 -280
- package/src/utils/ocapi-url-builder.ts +0 -48
- package/src/utils/path-resolver.ts +0 -69
- package/src/utils/path-validation.ts +0 -113
- package/src/utils/query-builder.ts +0 -84
- package/src/utils/utils.ts +0 -139
- package/src/utils/validator.ts +0 -162
- package/tests/__mocks__/docs-client.ts +0 -8
- package/tests/__mocks__/src/clients/base/http-client.js +0 -43
- package/tests/__mocks__/webdav.js +0 -14
- package/tests/base-handler.test.ts +0 -527
- package/tests/base-http-client.test.ts +0 -311
- package/tests/cache.test.ts +0 -453
- package/tests/cartridge-handler.test.ts +0 -290
- package/tests/class-content-parser.test.ts +0 -629
- package/tests/class-name-resolver.test.ts +0 -365
- package/tests/client-factory.test.ts +0 -280
- package/tests/code-version-handler.test.ts +0 -291
- package/tests/code-versions-client.test.ts +0 -156
- package/tests/config.test.ts +0 -285
- package/tests/configuration-factory.test.ts +0 -233
- package/tests/docs-handler.test.ts +0 -359
- package/tests/documentation-scanner.test.ts +0 -755
- package/tests/file-system-service.test.ts +0 -111
- package/tests/isml-client.test.ts +0 -463
- package/tests/isml-handler.test.ts +0 -375
- package/tests/job-log-handler.test.ts +0 -283
- package/tests/log-client.test.ts +0 -768
- package/tests/log-handler.test.ts +0 -365
- package/tests/log-processor.test.ts +0 -243
- package/tests/log-validation.test.ts +0 -149
- package/tests/logger.test.ts +0 -303
- package/tests/mcp/AGENTS.md +0 -162
- package/tests/mcp/README.md +0 -237
- package/tests/mcp/node/activate-code-version-advanced.full-mode.programmatic.test.js +0 -669
- package/tests/mcp/node/code-versions.full-mode.programmatic.test.js +0 -605
- package/tests/mcp/node/evaluate-script.full-mode.programmatic.test.js +0 -387
- package/tests/mcp/node/generate-cartridge-structure.docs-only.programmatic.test.js +0 -644
- package/tests/mcp/node/get-available-sfra-documents.programmatic.test.js +0 -274
- package/tests/mcp/node/get-isml-categories.programmatic.test.js +0 -278
- package/tests/mcp/node/get-isml-element.programmatic.test.js +0 -278
- package/tests/mcp/node/get-isml-elements-by-category.programmatic.test.js +0 -363
- package/tests/mcp/node/get-job-execution-summary.full-mode.programmatic.test.js +0 -432
- package/tests/mcp/node/get-job-log-entries.full-mode.programmatic.test.js +0 -488
- package/tests/mcp/node/get-latest-debug.full-mode.programmatic.test.js +0 -338
- package/tests/mcp/node/get-latest-error.full-mode.programmatic.test.js +0 -255
- package/tests/mcp/node/get-latest-info.full-mode.programmatic.test.js +0 -347
- package/tests/mcp/node/get-latest-job-log-files.full-mode.programmatic.test.js +0 -460
- package/tests/mcp/node/get-latest-warn.full-mode.programmatic.test.js +0 -454
- package/tests/mcp/node/get-log-file-contents.full-mode.programmatic.test.js +0 -381
- package/tests/mcp/node/get-sfcc-class-documentation.docs-only.programmatic.test.js +0 -371
- package/tests/mcp/node/get-sfcc-class-info.docs-only.programmatic.test.js +0 -1032
- package/tests/mcp/node/get-sfra-categories.docs-only.programmatic.test.js +0 -369
- package/tests/mcp/node/get-sfra-document.programmatic.test.js +0 -473
- package/tests/mcp/node/get-sfra-documents-by-category.docs-only.programmatic.test.js +0 -510
- package/tests/mcp/node/get-system-object-definition.full-mode.programmatic.test.js +0 -389
- package/tests/mcp/node/get-system-object-definitions.docs-only.programmatic.test.js +0 -300
- package/tests/mcp/node/get-system-object-definitions.full-mode.programmatic.test.js +0 -387
- package/tests/mcp/node/list-isml-elements.programmatic.test.js +0 -311
- package/tests/mcp/node/list-log-files.full-mode.programmatic.test.js +0 -150
- package/tests/mcp/node/list-sfcc-classes.docs-only.programmatic.test.js +0 -612
- package/tests/mcp/node/search-custom-object-attribute-definitions.full-mode.programmatic.test.js +0 -875
- package/tests/mcp/node/search-isml-elements.programmatic.test.js +0 -325
- package/tests/mcp/node/search-job-logs-by-name.full-mode.programmatic.test.js +0 -330
- package/tests/mcp/node/search-job-logs.full-mode.programmatic.test.js +0 -526
- package/tests/mcp/node/search-logs.full-mode.programmatic.test.js +0 -478
- package/tests/mcp/node/search-sfcc-classes.docs-only.programmatic.test.js +0 -334
- package/tests/mcp/node/search-sfcc-methods.docs-only.programmatic.test.js +0 -487
- package/tests/mcp/node/search-sfra-documentation.docs-only.programmatic.test.js +0 -563
- package/tests/mcp/node/search-site-preferences.full-mode.programmatic.test.js +0 -556
- package/tests/mcp/node/search-system-object-attribute-definitions.full-mode.programmatic.test.js +0 -744
- package/tests/mcp/node/search-system-object-attribute-groups.full-mode.programmatic.test.js +0 -657
- package/tests/mcp/node/summarize-logs.full-mode.programmatic.test.js +0 -357
- package/tests/mcp/node/tools.docs-only.programmatic.test.js +0 -515
- package/tests/mcp/node/tools.full-mode.programmatic.test.js +0 -154
- package/tests/mcp/test-fixtures/dw.json +0 -10
- package/tests/mcp/yaml/activate-code-version.docs-only.test.mcp.yml +0 -318
- package/tests/mcp/yaml/activate-code-version.full-mode.test.mcp.yml +0 -507
- package/tests/mcp/yaml/evaluate-script.full-mode.test.mcp.yml +0 -281
- package/tests/mcp/yaml/get-available-sfra-documents.docs-only.test.mcp.yml +0 -684
- package/tests/mcp/yaml/get-available-sfra-documents.full-mode.test.mcp.yml +0 -684
- package/tests/mcp/yaml/get-code-versions.docs-only.test.mcp.yml +0 -196
- package/tests/mcp/yaml/get-code-versions.full-mode.test.mcp.yml +0 -273
- package/tests/mcp/yaml/get-isml-categories.docs-only.test.mcp.yml +0 -330
- package/tests/mcp/yaml/get-isml-element.docs-only.test.mcp.yml +0 -294
- package/tests/mcp/yaml/get-isml-elements-by-category.docs-only.test.mcp.yml +0 -334
- package/tests/mcp/yaml/get-job-execution-summary.full-mode.test.mcp.yml +0 -148
- package/tests/mcp/yaml/get-job-log-entries.full-mode.test.mcp.yml +0 -284
- package/tests/mcp/yaml/get-latest-debug.full-mode.test.mcp.yml +0 -191
- package/tests/mcp/yaml/get-latest-error.full-mode.test.mcp.yml +0 -195
- package/tests/mcp/yaml/get-latest-info.full-mode.test.mcp.yml +0 -242
- package/tests/mcp/yaml/get-latest-job-log-files.full-mode.test.mcp.yml +0 -189
- package/tests/mcp/yaml/get-latest-warn.full-mode.test.mcp.yml +0 -182
- package/tests/mcp/yaml/get-log-file-contents.full-mode.test.mcp.yml +0 -256
- package/tests/mcp/yaml/get-sfcc-class-documentation.docs-only.test.mcp.yml +0 -2416
- package/tests/mcp/yaml/get-sfcc-class-documentation.full-mode.test.mcp.yml +0 -2416
- package/tests/mcp/yaml/get-sfcc-class-info.docs-only.test.mcp.yml +0 -1225
- package/tests/mcp/yaml/get-sfcc-class-info.full-mode.test.mcp.yml +0 -1225
- package/tests/mcp/yaml/get-sfra-categories.docs-only.test.mcp.yml +0 -452
- package/tests/mcp/yaml/get-sfra-categories.full-mode.test.mcp.yml +0 -452
- package/tests/mcp/yaml/get-sfra-document.docs-only.test.mcp.yml +0 -525
- package/tests/mcp/yaml/get-sfra-document.full-mode.test.mcp.yml +0 -525
- package/tests/mcp/yaml/get-sfra-documents-by-category.docs-only.test.mcp.yml +0 -507
- package/tests/mcp/yaml/get-sfra-documents-by-category.full-mode.test.mcp.yml +0 -507
- package/tests/mcp/yaml/get-system-object-definition.docs-only.test.mcp.yml +0 -208
- package/tests/mcp/yaml/get-system-object-definition.full-mode.test.mcp.yml +0 -191
- package/tests/mcp/yaml/get-system-object-definitions.docs-only.test.mcp.yml +0 -257
- package/tests/mcp/yaml/get-system-object-definitions.full-mode.test.mcp.yml +0 -517
- package/tests/mcp/yaml/get_latest_error.test.mcp.yml +0 -472
- package/tests/mcp/yaml/list-isml-elements.docs-only.test.mcp.yml +0 -212
- package/tests/mcp/yaml/list-log-files.full-mode.test.mcp.yml +0 -89
- package/tests/mcp/yaml/list-sfcc-classes.docs-only.test.mcp.yml +0 -511
- package/tests/mcp/yaml/list-sfcc-classes.full-mode.test.mcp.yml +0 -511
- package/tests/mcp/yaml/search-custom-object-attribute-definitions.docs-only.test.mcp.yml +0 -82
- package/tests/mcp/yaml/search-custom-object-attribute-definitions.test.mcp.yml +0 -387
- package/tests/mcp/yaml/search-isml-elements.docs-only.test.mcp.yml +0 -312
- package/tests/mcp/yaml/search-job-logs-by-name.full-mode.test.mcp.yml +0 -169
- package/tests/mcp/yaml/search-job-logs.full-mode.test.mcp.yml +0 -174
- package/tests/mcp/yaml/search-logs.full-mode.test.mcp.yml +0 -207
- package/tests/mcp/yaml/search-sfcc-classes.docs-only.test.mcp.yml +0 -1157
- package/tests/mcp/yaml/search-sfcc-classes.full-mode.test.mcp.yml +0 -1157
- package/tests/mcp/yaml/search-sfcc-methods.docs-only.test.mcp.yml +0 -723
- package/tests/mcp/yaml/search-sfcc-methods.full-mode.test.mcp.yml +0 -723
- package/tests/mcp/yaml/search-sfra-documentation.docs-only.test.mcp.yml +0 -427
- package/tests/mcp/yaml/search-sfra-documentation.full-mode.test.mcp.yml +0 -427
- package/tests/mcp/yaml/search-site-preferences.docs-only.test.mcp.yml +0 -295
- package/tests/mcp/yaml/search-site-preferences.full-mode.test.mcp.yml +0 -574
- package/tests/mcp/yaml/search-system-object-attribute-definitions.docs-only.test.mcp.yml +0 -168
- package/tests/mcp/yaml/search-system-object-attribute-definitions.full-mode.test.mcp.yml +0 -500
- package/tests/mcp/yaml/search-system-object-attribute-groups.docs-only.test.mcp.yml +0 -278
- package/tests/mcp/yaml/search-system-object-attribute-groups.full-mode.test.mcp.yml +0 -612
- package/tests/mcp/yaml/summarize-logs.full-mode.test.mcp.yml +0 -173
- package/tests/mcp/yaml/tools.docs-only.test.mcp.yml +0 -535
- package/tests/mcp/yaml/tools.full-mode.test.mcp.yml +0 -378
- package/tests/oauth-token.test.ts +0 -725
- package/tests/ocapi-auth-client.test.ts +0 -276
- package/tests/ocapi-client.test.ts +0 -242
- package/tests/path-service.test.ts +0 -96
- package/tests/query-builder.test.ts +0 -281
- package/tests/referenced-types-extractor.test.ts +0 -814
- package/tests/script-debugger-client.test.ts +0 -430
- package/tests/servers/sfcc-mock-server/README.md +0 -208
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/code-versions.json +0 -247
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/custom-object-attributes-customapi.json +0 -128
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/custom-object-attributes-globalsettings.json +0 -92
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/custom-object-attributes-versionhistory.json +0 -256
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/site-preferences-ccv.json +0 -275
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/site-preferences-fastforward.json +0 -123
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/site-preferences-sfra.json +0 -224
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/site-preferences-storefront.json +0 -447
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/site-preferences-system.json +0 -171
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-attribute-groups-campaign.json +0 -13
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-attribute-groups-category.json +0 -50
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-attribute-groups-order.json +0 -32
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-attribute-groups-product.json +0 -224
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-attribute-groups-sitepreferences.json +0 -62
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-attributes-customeraddress.json +0 -109
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-attributes-product-expanded.json +0 -183
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-attributes-product.json +0 -139
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-definition-category.json +0 -26
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-definition-customer.json +0 -26
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-definition-customeraddress.json +0 -26
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-definition-order.json +0 -26
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-definition-product.json +0 -26
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-definitions-old.json +0 -354
- package/tests/servers/sfcc-mock-server/mock-data/ocapi/system-object-definitions.json +0 -172
- package/tests/servers/sfcc-mock-server/package-lock.json +0 -879
- package/tests/servers/sfcc-mock-server/package.json +0 -39
- package/tests/servers/sfcc-mock-server/scripts/setup-logs.js +0 -224
- package/tests/servers/sfcc-mock-server/server.js +0 -280
- package/tests/servers/sfcc-mock-server/src/app.js +0 -182
- package/tests/servers/sfcc-mock-server/src/config/server-config.js +0 -124
- package/tests/servers/sfcc-mock-server/src/middleware/auth.js +0 -101
- package/tests/servers/sfcc-mock-server/src/middleware/cors.js +0 -39
- package/tests/servers/sfcc-mock-server/src/middleware/logging.js +0 -124
- package/tests/servers/sfcc-mock-server/src/routes/cartridge-webdav.js +0 -258
- package/tests/servers/sfcc-mock-server/src/routes/ocapi/code-versions-handler.js +0 -184
- package/tests/servers/sfcc-mock-server/src/routes/ocapi/debugger-handler.js +0 -396
- package/tests/servers/sfcc-mock-server/src/routes/ocapi/oauth-handler.js +0 -36
- package/tests/servers/sfcc-mock-server/src/routes/ocapi/ocapi-error-utils.js +0 -221
- package/tests/servers/sfcc-mock-server/src/routes/ocapi/ocapi-utils.js +0 -440
- package/tests/servers/sfcc-mock-server/src/routes/ocapi/site-preferences-handler.js +0 -332
- package/tests/servers/sfcc-mock-server/src/routes/ocapi/system-objects-handler.js +0 -572
- package/tests/servers/sfcc-mock-server/src/routes/ocapi.js +0 -58
- package/tests/servers/sfcc-mock-server/src/routes/storefront.js +0 -86
- package/tests/servers/sfcc-mock-server/src/routes/webdav.js +0 -240
- package/tests/servers/sfcc-mock-server/src/utils/mock-data-loader.js +0 -84
- package/tests/servers/sfcc-mock-server/src/utils/webdav-xml.js +0 -121
- package/tests/servers/sfcc-mock-server-manager.ts +0 -280
- package/tests/sfcc-mock-server.test.ts +0 -423
- package/tests/site-preferences-client.test.ts +0 -358
- package/tests/system-objects-client.test.ts +0 -310
- package/tests/utils.test.ts +0 -477
- package/tests/validation-helpers.test.ts +0 -325
- package/tests/validator.test.ts +0 -416
- package/tests/workspace-roots.test.ts +0 -227
- package/tsconfig.json +0 -20
- package/tsconfig.test.json +0 -20
|
@@ -1,669 +0,0 @@
|
|
|
1
|
-
// ==================================================================================
|
|
2
|
-
// SFCC MCP Server - activate_code_version Advanced Programmatic Tests (Full Mode)
|
|
3
|
-
// Comprehensive testing for complex scenarios, workflows, and edge cases
|
|
4
|
-
//
|
|
5
|
-
// Test Coverage:
|
|
6
|
-
// - Multi-step code version management workflows
|
|
7
|
-
// - Error recovery and resilience testing
|
|
8
|
-
// - Integration with get_code_versions tool
|
|
9
|
-
// - Advanced parameter validation and edge cases
|
|
10
|
-
// - State consistency and transaction-like behavior
|
|
11
|
-
// - Performance characteristics under various loads
|
|
12
|
-
// - Complex business logic validation
|
|
13
|
-
//
|
|
14
|
-
// Usage:
|
|
15
|
-
// node --test tests/mcp/node/activate-code-version-advanced.full-mode.programmatic.test.js
|
|
16
|
-
// npm run test:mcp:node
|
|
17
|
-
// ==================================================================================
|
|
18
|
-
|
|
19
|
-
import { test, describe, before, after, beforeEach } from 'node:test';
|
|
20
|
-
import { strict as assert } from 'node:assert';
|
|
21
|
-
import { connect } from 'mcp-aegis';
|
|
22
|
-
|
|
23
|
-
describe('activate_code_version Advanced Programmatic Tests (Full Mode)', () => {
|
|
24
|
-
let client;
|
|
25
|
-
|
|
26
|
-
before(async () => {
|
|
27
|
-
client = await connect('./aegis.config.with-dw.json');
|
|
28
|
-
assert.ok(client.connected, 'Client should be connected to server');
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
after(async () => {
|
|
32
|
-
if (client?.connected) {
|
|
33
|
-
await client.disconnect();
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
beforeEach(() => {
|
|
38
|
-
// CRITICAL: Clear all buffers to prevent test interference
|
|
39
|
-
client.clearAllBuffers();
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
// ==================================================================================
|
|
43
|
-
// TOOL AVAILABILITY AND SCHEMA VALIDATION
|
|
44
|
-
// ==================================================================================
|
|
45
|
-
describe('Tool Availability and Schema Validation', () => {
|
|
46
|
-
test('should have activate_code_version tool available in full mode', async () => {
|
|
47
|
-
const tools = await client.listTools();
|
|
48
|
-
const activateTool = tools.find(tool => tool.name === 'activate_code_version');
|
|
49
|
-
|
|
50
|
-
assert.ok(activateTool, 'activate_code_version tool should be available');
|
|
51
|
-
assert.equal(activateTool.name, 'activate_code_version');
|
|
52
|
-
assert.ok(activateTool.description.includes('Activate a code version'));
|
|
53
|
-
|
|
54
|
-
// Validate input schema
|
|
55
|
-
assert.equal(activateTool.inputSchema.type, 'object');
|
|
56
|
-
assert.ok(activateTool.inputSchema.properties.codeVersionId);
|
|
57
|
-
assert.equal(activateTool.inputSchema.properties.codeVersionId.type, 'string');
|
|
58
|
-
assert.ok(Array.isArray(activateTool.inputSchema.required));
|
|
59
|
-
assert.ok(activateTool.inputSchema.required.includes('codeVersionId'));
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
test('should have companion get_code_versions tool for workflow integration', async () => {
|
|
63
|
-
const tools = await client.listTools();
|
|
64
|
-
const getCodeVersionsTool = tools.find(tool => tool.name === 'get_code_versions');
|
|
65
|
-
|
|
66
|
-
assert.ok(getCodeVersionsTool, 'get_code_versions tool should be available for workflow integration');
|
|
67
|
-
assert.equal(getCodeVersionsTool.inputSchema.type, 'object');
|
|
68
|
-
});
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
// ==================================================================================
|
|
72
|
-
// COMPREHENSIVE PARAMETER VALIDATION
|
|
73
|
-
// ==================================================================================
|
|
74
|
-
describe('Comprehensive Parameter Validation', () => {
|
|
75
|
-
test('should validate codeVersionId parameter types and formats', async () => {
|
|
76
|
-
// Test missing parameter
|
|
77
|
-
const missingResult = await client.callTool('activate_code_version', {});
|
|
78
|
-
assert.equal(missingResult.isError, true);
|
|
79
|
-
assert.ok(missingResult.content[0].text.includes('codeVersionId must be a non-empty string'));
|
|
80
|
-
|
|
81
|
-
// Test empty string
|
|
82
|
-
const emptyResult = await client.callTool('activate_code_version', { codeVersionId: '' });
|
|
83
|
-
assert.equal(emptyResult.isError, true);
|
|
84
|
-
assert.ok(emptyResult.content[0].text.includes('codeVersionId must be a non-empty string'));
|
|
85
|
-
|
|
86
|
-
// Test null value
|
|
87
|
-
const nullResult = await client.callTool('activate_code_version', { codeVersionId: null });
|
|
88
|
-
assert.equal(nullResult.isError, true);
|
|
89
|
-
assert.ok(nullResult.content[0].text.includes('codeVersionId must be a non-empty string'));
|
|
90
|
-
|
|
91
|
-
// Test undefined value
|
|
92
|
-
const undefinedResult = await client.callTool('activate_code_version', { codeVersionId: undefined });
|
|
93
|
-
assert.equal(undefinedResult.isError, true);
|
|
94
|
-
assert.ok(undefinedResult.content[0].text.includes('codeVersionId must be a non-empty string'));
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
test('should handle various invalid codeVersionId formats gracefully', async () => {
|
|
98
|
-
const invalidFormats = [
|
|
99
|
-
123, // number
|
|
100
|
-
true, // boolean
|
|
101
|
-
[], // array
|
|
102
|
-
{}, // object
|
|
103
|
-
' ', // whitespace only
|
|
104
|
-
'\n\t', // whitespace characters
|
|
105
|
-
];
|
|
106
|
-
|
|
107
|
-
for (const invalidFormat of invalidFormats) {
|
|
108
|
-
const result = await client.callTool('activate_code_version', { codeVersionId: invalidFormat });
|
|
109
|
-
assert.equal(result.isError, true, `Should reject ${typeof invalidFormat}: ${JSON.stringify(invalidFormat)}`);
|
|
110
|
-
assert.ok(result.content[0].text.includes('codeVersionId must be a non-empty string'));
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
test('should handle edge case codeVersionId values', async () => {
|
|
115
|
-
// Edge cases that pass client-side validation (valid format but non-existent)
|
|
116
|
-
// These should reach the SFCC API and get 404 errors
|
|
117
|
-
const validFormatEdgeCases = [
|
|
118
|
-
'a'.repeat(100), // Long but valid ID
|
|
119
|
-
'UPPERCASE-VERSION', // Case variations (valid)
|
|
120
|
-
'version_nonexistent_test', // Non-existent version (valid format)
|
|
121
|
-
'version.with.dots', // Dots (valid)
|
|
122
|
-
'123-numeric-start', // Starting with numbers (valid)
|
|
123
|
-
];
|
|
124
|
-
|
|
125
|
-
for (const edgeCase of validFormatEdgeCases) {
|
|
126
|
-
const result = await client.callTool('activate_code_version', { codeVersionId: edgeCase });
|
|
127
|
-
assert.equal(result.isError, true, `Should handle edge case: ${edgeCase}`);
|
|
128
|
-
|
|
129
|
-
// Should get 404 or similar SFCC error for valid-format but non-existent versions
|
|
130
|
-
assert.ok(
|
|
131
|
-
result.content[0].text.includes('404') ||
|
|
132
|
-
result.content[0].text.includes('not found') ||
|
|
133
|
-
result.content[0].text.includes('InvalidParameterException'),
|
|
134
|
-
`Should get SFCC API error for edge case: ${edgeCase}, got: ${result.content[0].text}`
|
|
135
|
-
);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
// Edge cases that fail client-side validation (invalid characters)
|
|
139
|
-
// These should be caught early with validation errors for security
|
|
140
|
-
const invalidFormatEdgeCases = [
|
|
141
|
-
'test-version-with-special-chars!@#$%^&*()', // Special characters
|
|
142
|
-
'version with spaces', // Spaces
|
|
143
|
-
'unicode-测试-version', // Unicode characters
|
|
144
|
-
];
|
|
145
|
-
|
|
146
|
-
for (const edgeCase of invalidFormatEdgeCases) {
|
|
147
|
-
const result = await client.callTool('activate_code_version', { codeVersionId: edgeCase });
|
|
148
|
-
assert.equal(result.isError, true, `Should reject invalid format: ${edgeCase}`);
|
|
149
|
-
|
|
150
|
-
// Should get client-side validation error for invalid format
|
|
151
|
-
assert.ok(
|
|
152
|
-
result.content[0].text.includes('Invalid code version ID format'),
|
|
153
|
-
`Should get validation error for invalid format: ${edgeCase}, got: ${result.content[0].text}`
|
|
154
|
-
);
|
|
155
|
-
}
|
|
156
|
-
});
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
// ==================================================================================
|
|
160
|
-
// SFCC API ERROR HANDLING AND RESPONSE PARSING
|
|
161
|
-
// ==================================================================================
|
|
162
|
-
describe('SFCC API Error Handling and Response Parsing', () => {
|
|
163
|
-
test('should parse and format SFCC API errors correctly', async () => {
|
|
164
|
-
const result = await client.callTool('activate_code_version', {
|
|
165
|
-
codeVersionId: 'nonexistent-test-version-12345'
|
|
166
|
-
});
|
|
167
|
-
|
|
168
|
-
assert.equal(result.isError, true);
|
|
169
|
-
assert.equal(result.content.length, 1);
|
|
170
|
-
assert.equal(result.content[0].type, 'text');
|
|
171
|
-
|
|
172
|
-
const errorText = result.content[0].text;
|
|
173
|
-
assert.ok(errorText.startsWith('Error:'), 'Error should start with Error:');
|
|
174
|
-
|
|
175
|
-
// Should contain SFCC fault information
|
|
176
|
-
assert.ok(
|
|
177
|
-
errorText.includes('404') ||
|
|
178
|
-
errorText.includes('not found') ||
|
|
179
|
-
errorText.includes('InvalidParameterException'),
|
|
180
|
-
`Should contain SFCC fault info, got: ${errorText}`
|
|
181
|
-
);
|
|
182
|
-
});
|
|
183
|
-
|
|
184
|
-
test('should handle different types of SFCC API errors consistently', async () => {
|
|
185
|
-
const testVersions = [
|
|
186
|
-
'definitely-nonexistent-version',
|
|
187
|
-
'another-invalid-version-name',
|
|
188
|
-
'test-error-scenario-version'
|
|
189
|
-
];
|
|
190
|
-
|
|
191
|
-
const errorResponses = [];
|
|
192
|
-
|
|
193
|
-
for (const versionId of testVersions) {
|
|
194
|
-
const result = await client.callTool('activate_code_version', { codeVersionId: versionId });
|
|
195
|
-
assert.equal(result.isError, true);
|
|
196
|
-
errorResponses.push(result.content[0].text);
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
// All errors should follow similar format
|
|
200
|
-
errorResponses.forEach(errorText => {
|
|
201
|
-
assert.ok(errorText.startsWith('Error:'), 'All errors should start with Error:');
|
|
202
|
-
assert.ok(errorText.length > 20, 'Error messages should be reasonably detailed');
|
|
203
|
-
});
|
|
204
|
-
});
|
|
205
|
-
|
|
206
|
-
test('should handle malformed SFCC API responses gracefully', async () => {
|
|
207
|
-
// Test with version ID that might cause unusual API responses
|
|
208
|
-
const result = await client.callTool('activate_code_version', {
|
|
209
|
-
codeVersionId: 'test-malformed-response-handling'
|
|
210
|
-
});
|
|
211
|
-
|
|
212
|
-
assert.equal(result.isError, true);
|
|
213
|
-
assert.ok(result.content, 'Should always return content array');
|
|
214
|
-
assert.ok(result.content[0].text, 'Should always return text content');
|
|
215
|
-
assert.equal(typeof result.content[0].text, 'string', 'Error text should be string');
|
|
216
|
-
});
|
|
217
|
-
});
|
|
218
|
-
|
|
219
|
-
// ==================================================================================
|
|
220
|
-
// INTEGRATION WITH GET_CODE_VERSIONS WORKFLOW
|
|
221
|
-
// ==================================================================================
|
|
222
|
-
describe('Integration with get_code_versions Workflow', () => {
|
|
223
|
-
test('should integrate with get_code_versions for complete workflow', async () => {
|
|
224
|
-
// Step 1: Get list of available code versions
|
|
225
|
-
const versionsResult = await client.callTool('get_code_versions', {});
|
|
226
|
-
assert.equal(versionsResult.isError, false, 'get_code_versions should succeed');
|
|
227
|
-
|
|
228
|
-
// Parse the response to understand available versions
|
|
229
|
-
const versionsText = versionsResult.content[0].text;
|
|
230
|
-
assert.ok(versionsText.length > 0, 'Should return version information');
|
|
231
|
-
|
|
232
|
-
// Step 2: Try to activate a clearly non-existent version
|
|
233
|
-
const activateResult = await client.callTool('activate_code_version', {
|
|
234
|
-
codeVersionId: 'workflow-test-nonexistent-version'
|
|
235
|
-
});
|
|
236
|
-
assert.equal(activateResult.isError, true, 'Should fail for non-existent version');
|
|
237
|
-
|
|
238
|
-
// Step 3: Verify error handling doesn't affect subsequent get_code_versions calls
|
|
239
|
-
const versionsResult2 = await client.callTool('get_code_versions', {});
|
|
240
|
-
assert.equal(versionsResult2.isError, false, 'get_code_versions should still work after failed activation');
|
|
241
|
-
});
|
|
242
|
-
|
|
243
|
-
test('should maintain consistent state across multiple tool calls', async () => {
|
|
244
|
-
const operations = [
|
|
245
|
-
{ tool: 'get_code_versions', args: {} },
|
|
246
|
-
{ tool: 'activate_code_version', args: { codeVersionId: 'test-state-consistency-1' } },
|
|
247
|
-
{ tool: 'get_code_versions', args: {} },
|
|
248
|
-
{ tool: 'activate_code_version', args: { codeVersionId: 'test-state-consistency-2' } },
|
|
249
|
-
{ tool: 'get_code_versions', args: {} },
|
|
250
|
-
];
|
|
251
|
-
|
|
252
|
-
const results = [];
|
|
253
|
-
|
|
254
|
-
for (const operation of operations) {
|
|
255
|
-
const result = await client.callTool(operation.tool, operation.args);
|
|
256
|
-
results.push({ operation, result });
|
|
257
|
-
|
|
258
|
-
// Each operation should return proper response structure
|
|
259
|
-
assert.ok(result.content, `${operation.tool} should return content`);
|
|
260
|
-
assert.ok(Array.isArray(result.content), `${operation.tool} content should be array`);
|
|
261
|
-
assert.equal(typeof result.isError, 'boolean', `${operation.tool} should have isError boolean`);
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
// Verify get_code_versions calls succeeded while activate calls failed (expected for non-existent versions)
|
|
265
|
-
const getVersionsResults = results.filter(r => r.operation.tool === 'get_code_versions');
|
|
266
|
-
const activateResults = results.filter(r => r.operation.tool === 'activate_code_version');
|
|
267
|
-
|
|
268
|
-
getVersionsResults.forEach((r, index) => {
|
|
269
|
-
assert.equal(r.result.isError, false, `get_code_versions call ${index + 1} should succeed`);
|
|
270
|
-
});
|
|
271
|
-
|
|
272
|
-
activateResults.forEach((r, index) => {
|
|
273
|
-
assert.equal(r.result.isError, true, `activate_code_version call ${index + 1} should fail for non-existent version`);
|
|
274
|
-
});
|
|
275
|
-
});
|
|
276
|
-
});
|
|
277
|
-
|
|
278
|
-
// ==================================================================================
|
|
279
|
-
// ERROR RECOVERY AND RESILIENCE TESTING
|
|
280
|
-
// ==================================================================================
|
|
281
|
-
describe('Error Recovery and Resilience Testing', () => {
|
|
282
|
-
test('should recover gracefully from various error scenarios', async () => {
|
|
283
|
-
const errorScenarios = [
|
|
284
|
-
{ description: 'Empty codeVersionId', args: { codeVersionId: '' } },
|
|
285
|
-
{ description: 'Very long codeVersionId', args: { codeVersionId: 'x'.repeat(500) } },
|
|
286
|
-
{ description: 'Special characters', args: { codeVersionId: '!@#$%^&*()_+{}|:"<>?[]\\;\',./' } },
|
|
287
|
-
{ description: 'Unicode characters', args: { codeVersionId: '测试版本号码' } },
|
|
288
|
-
{ description: 'SQL injection attempt', args: { codeVersionId: "'; DROP TABLE versions; --" } },
|
|
289
|
-
];
|
|
290
|
-
|
|
291
|
-
for (const scenario of errorScenarios) {
|
|
292
|
-
const result = await client.callTool('activate_code_version', scenario.args);
|
|
293
|
-
|
|
294
|
-
// Should handle all scenarios gracefully without throwing
|
|
295
|
-
assert.equal(result.isError, true, `${scenario.description} should return error`);
|
|
296
|
-
assert.ok(result.content, `${scenario.description} should return content`);
|
|
297
|
-
assert.ok(result.content[0].text, `${scenario.description} should return error text`);
|
|
298
|
-
|
|
299
|
-
// Verify server is still responsive after error
|
|
300
|
-
const recoveryTest = await client.listTools();
|
|
301
|
-
assert.ok(recoveryTest.length > 0, `Server should be responsive after ${scenario.description}`);
|
|
302
|
-
}
|
|
303
|
-
});
|
|
304
|
-
|
|
305
|
-
test('should handle rapid sequential activation attempts', async () => {
|
|
306
|
-
const rapidRequests = Array.from({ length: 10 }, (_, i) => ({
|
|
307
|
-
codeVersionId: `rapid-test-version-${i}`
|
|
308
|
-
}));
|
|
309
|
-
|
|
310
|
-
const results = [];
|
|
311
|
-
|
|
312
|
-
// Execute requests sequentially (MCP doesn't support concurrent requests)
|
|
313
|
-
for (const request of rapidRequests) {
|
|
314
|
-
const result = await client.callTool('activate_code_version', request);
|
|
315
|
-
results.push(result);
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
// All requests should be handled properly
|
|
319
|
-
results.forEach((result, index) => {
|
|
320
|
-
assert.equal(result.isError, true, `Rapid request ${index} should fail for non-existent version`);
|
|
321
|
-
assert.ok(result.content[0].text.length > 0, `Rapid request ${index} should have error message`);
|
|
322
|
-
});
|
|
323
|
-
|
|
324
|
-
// Server should still be responsive
|
|
325
|
-
const finalTest = await client.listTools();
|
|
326
|
-
assert.ok(finalTest.length > 0, 'Server should be responsive after rapid requests');
|
|
327
|
-
});
|
|
328
|
-
|
|
329
|
-
test('should maintain error isolation between requests', async () => {
|
|
330
|
-
// Generate error
|
|
331
|
-
const errorResult = await client.callTool('activate_code_version', { codeVersionId: '' });
|
|
332
|
-
assert.equal(errorResult.isError, true);
|
|
333
|
-
|
|
334
|
-
// Verify normal operation still works
|
|
335
|
-
const normalResult = await client.callTool('get_code_versions', {});
|
|
336
|
-
assert.equal(normalResult.isError, false, 'Normal operations should work after errors');
|
|
337
|
-
|
|
338
|
-
// Generate different error
|
|
339
|
-
const errorResult2 = await client.callTool('activate_code_version', { codeVersionId: 'another-error-test' });
|
|
340
|
-
assert.equal(errorResult2.isError, true);
|
|
341
|
-
|
|
342
|
-
// Verify isolation - errors should be different
|
|
343
|
-
assert.notEqual(errorResult.content[0].text, errorResult2.content[0].text, 'Different errors should produce different messages');
|
|
344
|
-
});
|
|
345
|
-
});
|
|
346
|
-
|
|
347
|
-
// ==================================================================================
|
|
348
|
-
// RESPONSE FORMAT AND STRUCTURE VALIDATION
|
|
349
|
-
// ==================================================================================
|
|
350
|
-
describe('Response Format and Structure Validation', () => {
|
|
351
|
-
test('should return consistent response structure across all scenarios', async () => {
|
|
352
|
-
const testScenarios = [
|
|
353
|
-
{ name: 'missing parameter', args: {} },
|
|
354
|
-
{ name: 'empty parameter', args: { codeVersionId: '' } },
|
|
355
|
-
{ name: 'valid format nonexistent version', args: { codeVersionId: 'test-structure-validation' } },
|
|
356
|
-
{ name: 'special characters', args: { codeVersionId: 'test!@#$' } },
|
|
357
|
-
];
|
|
358
|
-
|
|
359
|
-
for (const scenario of testScenarios) {
|
|
360
|
-
const result = await client.callTool('activate_code_version', scenario.args);
|
|
361
|
-
|
|
362
|
-
// Validate MCP response structure
|
|
363
|
-
assert.ok('content' in result, `${scenario.name}: Should have content property`);
|
|
364
|
-
assert.ok('isError' in result, `${scenario.name}: Should have isError property`);
|
|
365
|
-
assert.ok(Array.isArray(result.content), `${scenario.name}: Content should be array`);
|
|
366
|
-
assert.equal(typeof result.isError, 'boolean', `${scenario.name}: isError should be boolean`);
|
|
367
|
-
|
|
368
|
-
// Validate content structure
|
|
369
|
-
assert.equal(result.content.length, 1, `${scenario.name}: Should have exactly one content item`);
|
|
370
|
-
assert.equal(result.content[0].type, 'text', `${scenario.name}: Content should be text type`);
|
|
371
|
-
assert.ok(typeof result.content[0].text === 'string', `${scenario.name}: Text should be string`);
|
|
372
|
-
assert.ok(result.content[0].text.length > 0, `${scenario.name}: Text should not be empty`);
|
|
373
|
-
|
|
374
|
-
// All test scenarios should return errors for these test cases
|
|
375
|
-
assert.equal(result.isError, true, `${scenario.name}: Should be error for test cases`);
|
|
376
|
-
}
|
|
377
|
-
});
|
|
378
|
-
|
|
379
|
-
test('should format error messages consistently', async () => {
|
|
380
|
-
const results = [];
|
|
381
|
-
|
|
382
|
-
// Collect various error responses
|
|
383
|
-
const errorCases = [
|
|
384
|
-
'format-test-version-1',
|
|
385
|
-
'format-test-version-2',
|
|
386
|
-
'format-test-version-3'
|
|
387
|
-
];
|
|
388
|
-
|
|
389
|
-
for (const versionId of errorCases) {
|
|
390
|
-
const result = await client.callTool('activate_code_version', { codeVersionId: versionId });
|
|
391
|
-
results.push(result.content[0].text);
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
// All errors should start with "Error:"
|
|
395
|
-
results.forEach((errorText, index) => {
|
|
396
|
-
assert.ok(errorText.startsWith('Error:'), `Error ${index + 1} should start with 'Error:'`);
|
|
397
|
-
assert.ok(errorText.length > 10, `Error ${index + 1} should be reasonably detailed`);
|
|
398
|
-
});
|
|
399
|
-
});
|
|
400
|
-
});
|
|
401
|
-
|
|
402
|
-
// ==================================================================================
|
|
403
|
-
// BUSINESS LOGIC AND WORKFLOW VALIDATION
|
|
404
|
-
// ==================================================================================
|
|
405
|
-
describe('Business Logic and Workflow Validation', () => {
|
|
406
|
-
test('should enforce code version management business rules', async () => {
|
|
407
|
-
// Test that we get appropriate error for non-existent versions
|
|
408
|
-
const result = await client.callTool('activate_code_version', {
|
|
409
|
-
codeVersionId: 'business-logic-test-version'
|
|
410
|
-
});
|
|
411
|
-
|
|
412
|
-
assert.equal(result.isError, true);
|
|
413
|
-
|
|
414
|
-
// Error should indicate version not found, not generic failure
|
|
415
|
-
const errorText = result.content[0].text.toLowerCase();
|
|
416
|
-
assert.ok(
|
|
417
|
-
errorText.includes('not found') ||
|
|
418
|
-
errorText.includes('404') ||
|
|
419
|
-
errorText.includes('does not exist') ||
|
|
420
|
-
errorText.includes('invalidparameterexception'),
|
|
421
|
-
`Error should indicate version not found: ${result.content[0].text}`
|
|
422
|
-
);
|
|
423
|
-
});
|
|
424
|
-
|
|
425
|
-
test('should validate code version activation preconditions', async () => {
|
|
426
|
-
// According to tool description: "Only inactive code versions can be activated"
|
|
427
|
-
// For non-existent versions, we should get appropriate error
|
|
428
|
-
|
|
429
|
-
const result = await client.callTool('activate_code_version', {
|
|
430
|
-
codeVersionId: 'precondition-test-version'
|
|
431
|
-
});
|
|
432
|
-
|
|
433
|
-
assert.equal(result.isError, true);
|
|
434
|
-
|
|
435
|
-
// Should get proper SFCC API error about version not existing
|
|
436
|
-
assert.ok(result.content[0].text.includes('Error:'));
|
|
437
|
-
});
|
|
438
|
-
|
|
439
|
-
test('should provide informative error messages for troubleshooting', async () => {
|
|
440
|
-
const result = await client.callTool('activate_code_version', {
|
|
441
|
-
codeVersionId: 'troubleshooting-test-version'
|
|
442
|
-
});
|
|
443
|
-
|
|
444
|
-
assert.equal(result.isError, true);
|
|
445
|
-
|
|
446
|
-
const errorText = result.content[0].text;
|
|
447
|
-
|
|
448
|
-
// Error should be helpful for developers
|
|
449
|
-
assert.ok(errorText.length > 30, 'Error message should be detailed enough for troubleshooting');
|
|
450
|
-
assert.ok(errorText.includes('Error:'), 'Should clearly indicate this is an error');
|
|
451
|
-
|
|
452
|
-
// Should contain either version-specific info or general API error info
|
|
453
|
-
assert.ok(
|
|
454
|
-
errorText.includes('version') ||
|
|
455
|
-
errorText.includes('404') ||
|
|
456
|
-
errorText.includes('not found') ||
|
|
457
|
-
errorText.includes('Request failed'),
|
|
458
|
-
'Should contain helpful error context'
|
|
459
|
-
);
|
|
460
|
-
});
|
|
461
|
-
});
|
|
462
|
-
|
|
463
|
-
// ==================================================================================
|
|
464
|
-
// PERFORMANCE AND RELIABILITY CHARACTERISTICS
|
|
465
|
-
// ==================================================================================
|
|
466
|
-
describe('Performance and Reliability Characteristics', () => {
|
|
467
|
-
test('should handle operations within reasonable time bounds', async () => {
|
|
468
|
-
const startTime = Date.now();
|
|
469
|
-
|
|
470
|
-
const result = await client.callTool('activate_code_version', {
|
|
471
|
-
codeVersionId: 'performance-test-version'
|
|
472
|
-
});
|
|
473
|
-
|
|
474
|
-
const duration = Date.now() - startTime;
|
|
475
|
-
|
|
476
|
-
// Should complete within reasonable time (lenient for CI environments)
|
|
477
|
-
assert.ok(duration < 10000, `Operation should complete within 10 seconds, took ${duration}ms`);
|
|
478
|
-
|
|
479
|
-
// Should still return proper response
|
|
480
|
-
assert.ok(result.content, 'Should return response even under timing constraints');
|
|
481
|
-
});
|
|
482
|
-
|
|
483
|
-
test('should maintain consistent response times across multiple calls', async () => {
|
|
484
|
-
const durations = [];
|
|
485
|
-
const testCalls = 5;
|
|
486
|
-
|
|
487
|
-
for (let i = 0; i < testCalls; i++) {
|
|
488
|
-
const startTime = Date.now();
|
|
489
|
-
|
|
490
|
-
await client.callTool('activate_code_version', {
|
|
491
|
-
codeVersionId: `consistency-test-${i}`
|
|
492
|
-
});
|
|
493
|
-
|
|
494
|
-
durations.push(Date.now() - startTime);
|
|
495
|
-
}
|
|
496
|
-
|
|
497
|
-
// All calls should complete within reasonable bounds
|
|
498
|
-
durations.forEach((duration, index) => {
|
|
499
|
-
assert.ok(duration < 10000, `Call ${index + 1} should complete within 10 seconds, took ${duration}ms`);
|
|
500
|
-
});
|
|
501
|
-
|
|
502
|
-
// Calculate variance (should not be extreme)
|
|
503
|
-
const maxVariation = Math.max(...durations) / Math.min(...durations);
|
|
504
|
-
|
|
505
|
-
// Lenient variance check for CI environments
|
|
506
|
-
assert.ok(maxVariation < 50, `Response time variation should be reasonable, got ${maxVariation}x variation`);
|
|
507
|
-
});
|
|
508
|
-
|
|
509
|
-
test('should handle stress scenarios gracefully', async () => {
|
|
510
|
-
// Test with various payload sizes and complexity
|
|
511
|
-
const stressTests = [
|
|
512
|
-
{ name: 'Long version ID', codeVersionId: 'stress-test-' + 'x'.repeat(200) },
|
|
513
|
-
{ name: 'Complex characters', codeVersionId: 'stress-测试-🔥-version-!@#$%^&*()' },
|
|
514
|
-
{ name: 'JSON-like string', codeVersionId: '{"version": "test", "data": [1,2,3]}' },
|
|
515
|
-
{ name: 'XML-like string', codeVersionId: '<version>test</version><data>stress</data>' },
|
|
516
|
-
];
|
|
517
|
-
|
|
518
|
-
for (const stressTest of stressTests) {
|
|
519
|
-
const result = await client.callTool('activate_code_version', {
|
|
520
|
-
codeVersionId: stressTest.codeVersionId
|
|
521
|
-
});
|
|
522
|
-
|
|
523
|
-
// Should handle gracefully without crashing
|
|
524
|
-
assert.ok(result.content, `${stressTest.name}: Should return content`);
|
|
525
|
-
assert.equal(typeof result.isError, 'boolean', `${stressTest.name}: Should return boolean isError`);
|
|
526
|
-
|
|
527
|
-
// Server should remain responsive
|
|
528
|
-
const healthCheck = await client.listTools();
|
|
529
|
-
assert.ok(healthCheck.length > 0, `${stressTest.name}: Server should remain responsive`);
|
|
530
|
-
}
|
|
531
|
-
});
|
|
532
|
-
});
|
|
533
|
-
|
|
534
|
-
// ==================================================================================
|
|
535
|
-
// EDGE CASES AND BOUNDARY CONDITIONS
|
|
536
|
-
// ==================================================================================
|
|
537
|
-
describe('Edge Cases and Boundary Conditions', () => {
|
|
538
|
-
test('should handle maximum length version IDs', async () => {
|
|
539
|
-
// Test various length boundaries
|
|
540
|
-
const lengthTests = [
|
|
541
|
-
{ length: 100, name: '100 characters' },
|
|
542
|
-
{ length: 255, name: '255 characters (common limit)' },
|
|
543
|
-
{ length: 500, name: '500 characters' },
|
|
544
|
-
{ length: 1000, name: '1000 characters' },
|
|
545
|
-
];
|
|
546
|
-
|
|
547
|
-
for (const lengthTest of lengthTests) {
|
|
548
|
-
const longVersionId = 'test-' + 'x'.repeat(lengthTest.length - 5);
|
|
549
|
-
|
|
550
|
-
const result = await client.callTool('activate_code_version', {
|
|
551
|
-
codeVersionId: longVersionId
|
|
552
|
-
});
|
|
553
|
-
|
|
554
|
-
// Should handle gracefully (expect error for non-existent version)
|
|
555
|
-
assert.equal(result.isError, true, `${lengthTest.name}: Should handle long version ID`);
|
|
556
|
-
assert.ok(result.content[0].text.length > 0, `${lengthTest.name}: Should return error message`);
|
|
557
|
-
}
|
|
558
|
-
});
|
|
559
|
-
|
|
560
|
-
test('should handle unusual character encodings and formats', async () => {
|
|
561
|
-
const encodingTests = [
|
|
562
|
-
{ name: 'Unicode characters', value: 'version-测试-版本-号码' },
|
|
563
|
-
{ name: 'Emoji characters', value: 'version-🚀-💻-🔥' },
|
|
564
|
-
{ name: 'Control characters', value: 'version\n\t\r\b\f' },
|
|
565
|
-
{ name: 'High unicode', value: 'version-𝕧𝕖𝕣𝕤𝕚𝕠𝕟' },
|
|
566
|
-
{ name: 'Mixed scripts', value: 'version-αβγ-أبج-中文-🌍' },
|
|
567
|
-
];
|
|
568
|
-
|
|
569
|
-
for (const encodingTest of encodingTests) {
|
|
570
|
-
const result = await client.callTool('activate_code_version', {
|
|
571
|
-
codeVersionId: encodingTest.value
|
|
572
|
-
});
|
|
573
|
-
|
|
574
|
-
// Should handle without server errors
|
|
575
|
-
assert.ok(result.content, `${encodingTest.name}: Should return content`);
|
|
576
|
-
assert.equal(typeof result.isError, 'boolean', `${encodingTest.name}: Should return boolean isError`);
|
|
577
|
-
|
|
578
|
-
// Check server responsiveness
|
|
579
|
-
const healthCheck = await client.listTools();
|
|
580
|
-
assert.ok(healthCheck.length > 0, `${encodingTest.name}: Server should remain responsive`);
|
|
581
|
-
}
|
|
582
|
-
});
|
|
583
|
-
|
|
584
|
-
test('should validate parameter completeness and format', async () => {
|
|
585
|
-
// Test various parameter scenarios
|
|
586
|
-
const parameterTests = [
|
|
587
|
-
{ name: 'Extra parameters', args: { codeVersionId: 'test', extraParam: 'should-be-ignored' } },
|
|
588
|
-
{ name: 'Case variations', args: { CodeVersionId: 'test-case' } }, // Wrong case
|
|
589
|
-
{ name: 'Nested object', args: { codeVersionId: { nested: 'test' } } },
|
|
590
|
-
{ name: 'Array value', args: { codeVersionId: ['test', 'array'] } },
|
|
591
|
-
];
|
|
592
|
-
|
|
593
|
-
for (const paramTest of parameterTests) {
|
|
594
|
-
const result = await client.callTool('activate_code_version', paramTest.args);
|
|
595
|
-
|
|
596
|
-
// Should handle parameter variations appropriately
|
|
597
|
-
assert.ok(result.content, `${paramTest.name}: Should return content`);
|
|
598
|
-
assert.equal(typeof result.isError, 'boolean', `${paramTest.name}: Should return boolean isError`);
|
|
599
|
-
|
|
600
|
-
if (paramTest.name === 'Extra parameters') {
|
|
601
|
-
// Extra parameters might be acceptable if codeVersionId is valid string
|
|
602
|
-
// We expect error because version doesn't exist, not parameter error
|
|
603
|
-
assert.ok(
|
|
604
|
-
result.content[0].text.includes('404') ||
|
|
605
|
-
result.content[0].text.includes('not found') ||
|
|
606
|
-
result.content[0].text.includes('codeVersionId must be a non-empty string'),
|
|
607
|
-
`${paramTest.name}: Should handle extra parameters gracefully`
|
|
608
|
-
);
|
|
609
|
-
} else {
|
|
610
|
-
// Other cases should fail parameter validation
|
|
611
|
-
assert.equal(result.isError, true, `${paramTest.name}: Should fail validation`);
|
|
612
|
-
}
|
|
613
|
-
}
|
|
614
|
-
});
|
|
615
|
-
});
|
|
616
|
-
|
|
617
|
-
// ==================================================================================
|
|
618
|
-
// MOCK VALIDATION AND TESTING ENVIRONMENT
|
|
619
|
-
// ==================================================================================
|
|
620
|
-
describe('Mock Validation and Testing Environment', () => {
|
|
621
|
-
test('should validate we are testing against mock/sandbox environment', async () => {
|
|
622
|
-
// Ensure we're not accidentally testing against production
|
|
623
|
-
const result = await client.callTool('activate_code_version', {
|
|
624
|
-
codeVersionId: 'PRODUCTION-SAFETY-CHECK-DO-NOT-ACTIVATE'
|
|
625
|
-
});
|
|
626
|
-
|
|
627
|
-
// Should fail (which is expected for non-existent version in sandbox)
|
|
628
|
-
assert.equal(result.isError, true, 'Should fail for test version in sandbox environment');
|
|
629
|
-
|
|
630
|
-
// Verify we get sandbox-appropriate error (not production access denied)
|
|
631
|
-
const errorText = result.content[0].text.toLowerCase();
|
|
632
|
-
assert.ok(
|
|
633
|
-
errorText.includes('not found') ||
|
|
634
|
-
errorText.includes('404') ||
|
|
635
|
-
errorText.includes('invalidparameterexception'),
|
|
636
|
-
`Should get sandbox error, not production access error: ${result.content[0].text}`
|
|
637
|
-
);
|
|
638
|
-
});
|
|
639
|
-
|
|
640
|
-
test('should have consistent mock behavior across test runs', async () => {
|
|
641
|
-
const testVersion = 'consistent-mock-test-version';
|
|
642
|
-
|
|
643
|
-
// Call the same operation multiple times
|
|
644
|
-
const results = [];
|
|
645
|
-
for (let i = 0; i < 3; i++) {
|
|
646
|
-
const result = await client.callTool('activate_code_version', {
|
|
647
|
-
codeVersionId: testVersion
|
|
648
|
-
});
|
|
649
|
-
results.push(result);
|
|
650
|
-
}
|
|
651
|
-
|
|
652
|
-
// All results should be consistent
|
|
653
|
-
results.forEach((result, index) => {
|
|
654
|
-
assert.equal(result.isError, true, `Call ${index + 1}: Should consistently return error`);
|
|
655
|
-
assert.ok(result.content[0].text.length > 0, `Call ${index + 1}: Should have error message`);
|
|
656
|
-
});
|
|
657
|
-
|
|
658
|
-
// Error messages should be similar (allowing for some variation in timing/IDs)
|
|
659
|
-
const errorTexts = results.map(r => r.content[0].text);
|
|
660
|
-
|
|
661
|
-
errorTexts.forEach((errorText, index) => {
|
|
662
|
-
assert.ok(
|
|
663
|
-
errorText.startsWith('Error:'),
|
|
664
|
-
`Call ${index + 1}: Should have consistent error format`
|
|
665
|
-
);
|
|
666
|
-
});
|
|
667
|
-
});
|
|
668
|
-
});
|
|
669
|
-
});
|