sfcc-dev-mcp 1.0.15 → 1.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (865) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.yml +3 -1
  2. package/.github/ISSUE_TEMPLATE/documentation.yml +2 -2
  3. package/.github/ISSUE_TEMPLATE/question.yml +1 -1
  4. package/.github/PULL_REQUEST_TEMPLATE/documentation.md +1 -1
  5. package/.github/PULL_REQUEST_TEMPLATE/new_tool.md +1 -1
  6. package/.github/agents/official-docs-researcher.agent.md +56 -0
  7. package/.github/instructions/mcp-node-tests.instructions.md +12 -916
  8. package/.github/instructions/mcp-yml-tests.instructions.md +14 -742
  9. package/.github/pull_request_template.md +1 -1
  10. package/.github/skills/agent-authoring/SKILL.md +66 -0
  11. package/.github/skills/mcp-log-debugging/SKILL.md +69 -0
  12. package/.github/skills/mcp-programmatic-testing/SKILL.md +142 -0
  13. package/.github/skills/mcp-yaml-testing/SKILL.md +136 -0
  14. package/.github/skills/salesforce-developer-site-scraper/SKILL.md +102 -0
  15. package/.github/skills/salesforce-developer-site-scraper/scripts/scrape-to-markdown.js +205 -0
  16. package/.github/skills/salesforce-help-site-scraper/SKILL.md +84 -0
  17. package/.github/skills/salesforce-help-site-scraper/scripts/scrape-help-to-markdown.js +212 -0
  18. package/.github/skills/skill-authoring/SKILL.md +228 -0
  19. package/.github/skills/skill-authoring/references/PATTERNS.md +384 -0
  20. package/.github/workflows/ci.yml +3 -3
  21. package/.github/workflows/deploy-pages.yml +9 -19
  22. package/.github/workflows/publish.yml +5 -2
  23. package/.github/workflows/update-docs.yml +1 -1
  24. package/AGENTS.md +140 -286
  25. package/CONTRIBUTING.md +10 -22
  26. package/README.md +48 -16
  27. package/ai-instructions/{github-copilot/copilot-instructions.md → AGENTS.md} +99 -127
  28. package/ai-instructions/skills/sfcc-caching/SKILL.md +89 -0
  29. package/{dist/docs/best-practices/cartridge_creation.md → ai-instructions/skills/sfcc-cartridge-development/SKILL.md} +31 -7
  30. package/ai-instructions/skills/sfcc-forms-development/SKILL.md +261 -0
  31. package/ai-instructions/skills/sfcc-forms-development/references/ARCHITECTURE-SGJC-SFRA.md +143 -0
  32. package/ai-instructions/skills/sfcc-forms-development/references/FORM-XML-CHEATSHEET.md +127 -0
  33. package/ai-instructions/skills/sfcc-fraud-prevention/SKILL.md +95 -0
  34. package/ai-instructions/skills/sfcc-hooks-registration/SKILL.md +39 -0
  35. package/ai-instructions/skills/sfcc-isml-development/SKILL.md +370 -0
  36. package/ai-instructions/skills/sfcc-isml-development/references/REMOTE-INCLUDES.md +116 -0
  37. package/ai-instructions/skills/sfcc-isml-development/references/SFRA-LAYOUTS.md +50 -0
  38. package/ai-instructions/skills/sfcc-isml-development/references/SFRA-PAGES-CART-ACCOUNT-AUTH.md +45 -0
  39. package/ai-instructions/skills/sfcc-isml-development/references/SFRA-PAGES-CATALOG.md +85 -0
  40. package/ai-instructions/skills/sfcc-isml-development/references/SFRA-STRUCTURE-COMPONENTS.md +63 -0
  41. package/ai-instructions/skills/sfcc-isml-development/references/UTILITIES-EXPRESSIONS.md +159 -0
  42. package/ai-instructions/skills/sfcc-isml-development/references/sfra-base-templates-architecture.md +13 -0
  43. package/ai-instructions/skills/sfcc-job-development/SKILL.md +334 -0
  44. package/ai-instructions/skills/sfcc-job-development/references/CHUNK-ORIENTED.md +393 -0
  45. package/ai-instructions/skills/sfcc-job-development/references/STEPTYPES-JSON.md +271 -0
  46. package/ai-instructions/skills/sfcc-job-development/references/TASK-ORIENTED.md +257 -0
  47. package/ai-instructions/skills/sfcc-localization/SKILL.md +92 -0
  48. package/ai-instructions/skills/sfcc-localization/references/CONTROLLERS.md +63 -0
  49. package/ai-instructions/skills/sfcc-localization/references/FORMATTING.md +29 -0
  50. package/ai-instructions/skills/sfcc-localization/references/FORMS-LOCALIZATION.md +33 -0
  51. package/ai-instructions/skills/sfcc-localization/references/JAVASCRIPT-LOCALIZATION.md +41 -0
  52. package/ai-instructions/skills/sfcc-localization/references/LOCALE-SWITCHING.md +35 -0
  53. package/ai-instructions/skills/sfcc-localization/references/PATTERNS.md +740 -0
  54. package/ai-instructions/skills/sfcc-localization/references/PROPERTIES-ENCODING.md +25 -0
  55. package/ai-instructions/skills/sfcc-localization/references/RESOURCE-BUNDLES.md +67 -0
  56. package/ai-instructions/skills/sfcc-localization/references/STATIC-FILES.md +23 -0
  57. package/ai-instructions/skills/sfcc-localization/references/TESTING.md +21 -0
  58. package/{docs/best-practices/localserviceregistry.md → ai-instructions/skills/sfcc-localserviceregistry/SKILL.md} +65 -31
  59. package/ai-instructions/skills/sfcc-logging/SKILL.md +352 -0
  60. package/ai-instructions/skills/sfcc-logging/references/LOG-FILES.md +282 -0
  61. package/{docs/best-practices/ocapi_hooks.md → ai-instructions/skills/sfcc-ocapi-hooks/SKILL.md} +51 -16
  62. package/ai-instructions/skills/sfcc-ocapi-scapi-slas/SKILL.md +108 -0
  63. package/ai-instructions/skills/sfcc-page-designer/SKILL.md +353 -0
  64. package/ai-instructions/skills/sfcc-page-designer/references/ATTRIBUTE-TYPES.md +436 -0
  65. package/ai-instructions/skills/sfcc-page-designer/references/META-DEFINITIONS.md +322 -0
  66. package/{dist/docs/best-practices/performance.md → ai-instructions/skills/sfcc-performance/SKILL.md} +35 -3
  67. package/ai-instructions/skills/sfcc-platform-limits/SKILL.md +89 -0
  68. package/ai-instructions/skills/sfcc-scapi-custom-endpoints/SKILL.md +237 -0
  69. package/ai-instructions/skills/sfcc-scapi-custom-endpoints/references/AUTHENTICATION.md +214 -0
  70. package/ai-instructions/skills/sfcc-scapi-custom-endpoints/references/URL-MAPPING.md +253 -0
  71. package/{docs/best-practices/scapi_hooks.md → ai-instructions/skills/sfcc-scapi-hooks/SKILL.md} +44 -17
  72. package/ai-instructions/skills/sfcc-script-evaluation/SKILL.md +380 -0
  73. package/{docs/best-practices/security.md → ai-instructions/skills/sfcc-security/SKILL.md} +12 -3
  74. package/ai-instructions/skills/sfcc-sfra-client-side-js/SKILL.md +270 -0
  75. package/ai-instructions/skills/sfcc-sfra-client-side-js/references/AJAX-CSRF-VALIDATION.md +285 -0
  76. package/ai-instructions/skills/sfcc-sfra-client-side-js/references/BASE-MODULE-INDEX.md +206 -0
  77. package/ai-instructions/skills/sfcc-sfra-client-side-js/references/EXTENSION-PATTERNS.md +165 -0
  78. package/ai-instructions/skills/sfcc-sfra-client-side-js/references/PLUGIN-PATTERNS.md +185 -0
  79. package/ai-instructions/skills/sfcc-sfra-controllers/SKILL.md +347 -0
  80. package/ai-instructions/skills/sfcc-sfra-controllers/references/MIDDLEWARE-REFERENCE.md +257 -0
  81. package/ai-instructions/skills/sfcc-sfra-controllers/references/REMOTE-INCLUDES.md +193 -0
  82. package/{dist/docs/best-practices/sfra_controllers.md → ai-instructions/skills/sfcc-sfra-controllers/references/standard-sfra-controllers.md} +0 -670
  83. package/ai-instructions/skills/sfcc-sfra-models/SKILL.md +322 -0
  84. package/ai-instructions/skills/sfcc-sfra-models/references/MODEL-PATTERNS.md +530 -0
  85. package/ai-instructions/skills/sfcc-sfra-models/references/MODEL-STRUCTURE.md +234 -0
  86. package/ai-instructions/skills/sfcc-sfra-models/references/TESTING-SECURITY.md +417 -0
  87. package/{dist/docs/best-practices/sfra_scss.md → ai-instructions/skills/sfcc-sfra-scss/SKILL.md} +5 -0
  88. package/ai-instructions/skills/sfcc-webdav-workflows/SKILL.md +111 -0
  89. package/dist/ai-instructions/AGENTS.md +628 -0
  90. package/dist/ai-instructions/skills/sfcc-caching/SKILL.md +89 -0
  91. package/{docs/best-practices/cartridge_creation.md → dist/ai-instructions/skills/sfcc-cartridge-development/SKILL.md} +31 -7
  92. package/dist/ai-instructions/skills/sfcc-forms-development/SKILL.md +261 -0
  93. package/dist/ai-instructions/skills/sfcc-forms-development/references/ARCHITECTURE-SGJC-SFRA.md +143 -0
  94. package/dist/ai-instructions/skills/sfcc-forms-development/references/FORM-XML-CHEATSHEET.md +127 -0
  95. package/dist/ai-instructions/skills/sfcc-fraud-prevention/SKILL.md +95 -0
  96. package/dist/ai-instructions/skills/sfcc-hooks-registration/SKILL.md +39 -0
  97. package/dist/ai-instructions/skills/sfcc-isml-development/SKILL.md +370 -0
  98. package/dist/ai-instructions/skills/sfcc-isml-development/references/REMOTE-INCLUDES.md +116 -0
  99. package/dist/ai-instructions/skills/sfcc-isml-development/references/SFRA-LAYOUTS.md +50 -0
  100. package/dist/ai-instructions/skills/sfcc-isml-development/references/SFRA-PAGES-CART-ACCOUNT-AUTH.md +45 -0
  101. package/dist/ai-instructions/skills/sfcc-isml-development/references/SFRA-PAGES-CATALOG.md +85 -0
  102. package/dist/ai-instructions/skills/sfcc-isml-development/references/SFRA-STRUCTURE-COMPONENTS.md +63 -0
  103. package/dist/ai-instructions/skills/sfcc-isml-development/references/UTILITIES-EXPRESSIONS.md +159 -0
  104. package/dist/ai-instructions/skills/sfcc-isml-development/references/sfra-base-templates-architecture.md +13 -0
  105. package/dist/ai-instructions/skills/sfcc-job-development/SKILL.md +334 -0
  106. package/dist/ai-instructions/skills/sfcc-job-development/references/CHUNK-ORIENTED.md +393 -0
  107. package/dist/ai-instructions/skills/sfcc-job-development/references/STEPTYPES-JSON.md +271 -0
  108. package/dist/ai-instructions/skills/sfcc-job-development/references/TASK-ORIENTED.md +257 -0
  109. package/dist/ai-instructions/skills/sfcc-localization/SKILL.md +92 -0
  110. package/dist/ai-instructions/skills/sfcc-localization/references/CONTROLLERS.md +63 -0
  111. package/dist/ai-instructions/skills/sfcc-localization/references/FORMATTING.md +29 -0
  112. package/dist/ai-instructions/skills/sfcc-localization/references/FORMS-LOCALIZATION.md +33 -0
  113. package/dist/ai-instructions/skills/sfcc-localization/references/JAVASCRIPT-LOCALIZATION.md +41 -0
  114. package/dist/ai-instructions/skills/sfcc-localization/references/LOCALE-SWITCHING.md +35 -0
  115. package/dist/ai-instructions/skills/sfcc-localization/references/PATTERNS.md +740 -0
  116. package/dist/ai-instructions/skills/sfcc-localization/references/PROPERTIES-ENCODING.md +25 -0
  117. package/dist/ai-instructions/skills/sfcc-localization/references/RESOURCE-BUNDLES.md +67 -0
  118. package/dist/ai-instructions/skills/sfcc-localization/references/STATIC-FILES.md +23 -0
  119. package/dist/ai-instructions/skills/sfcc-localization/references/TESTING.md +21 -0
  120. package/dist/{docs/best-practices/localserviceregistry.md → ai-instructions/skills/sfcc-localserviceregistry/SKILL.md} +65 -31
  121. package/dist/ai-instructions/skills/sfcc-logging/SKILL.md +352 -0
  122. package/dist/ai-instructions/skills/sfcc-logging/references/LOG-FILES.md +282 -0
  123. package/dist/{docs/best-practices/ocapi_hooks.md → ai-instructions/skills/sfcc-ocapi-hooks/SKILL.md} +51 -16
  124. package/dist/ai-instructions/skills/sfcc-ocapi-scapi-slas/SKILL.md +108 -0
  125. package/dist/ai-instructions/skills/sfcc-page-designer/SKILL.md +353 -0
  126. package/dist/ai-instructions/skills/sfcc-page-designer/references/ATTRIBUTE-TYPES.md +436 -0
  127. package/dist/ai-instructions/skills/sfcc-page-designer/references/META-DEFINITIONS.md +322 -0
  128. package/{docs/best-practices/performance.md → dist/ai-instructions/skills/sfcc-performance/SKILL.md} +35 -3
  129. package/dist/ai-instructions/skills/sfcc-platform-limits/SKILL.md +89 -0
  130. package/dist/ai-instructions/skills/sfcc-scapi-custom-endpoints/SKILL.md +237 -0
  131. package/dist/ai-instructions/skills/sfcc-scapi-custom-endpoints/references/AUTHENTICATION.md +214 -0
  132. package/dist/ai-instructions/skills/sfcc-scapi-custom-endpoints/references/URL-MAPPING.md +253 -0
  133. package/dist/{docs/best-practices/scapi_hooks.md → ai-instructions/skills/sfcc-scapi-hooks/SKILL.md} +44 -17
  134. package/dist/ai-instructions/skills/sfcc-script-evaluation/SKILL.md +380 -0
  135. package/dist/{docs/best-practices/security.md → ai-instructions/skills/sfcc-security/SKILL.md} +12 -3
  136. package/dist/ai-instructions/skills/sfcc-sfra-client-side-js/SKILL.md +270 -0
  137. package/dist/ai-instructions/skills/sfcc-sfra-client-side-js/references/AJAX-CSRF-VALIDATION.md +285 -0
  138. package/dist/ai-instructions/skills/sfcc-sfra-client-side-js/references/BASE-MODULE-INDEX.md +206 -0
  139. package/dist/ai-instructions/skills/sfcc-sfra-client-side-js/references/EXTENSION-PATTERNS.md +165 -0
  140. package/dist/ai-instructions/skills/sfcc-sfra-client-side-js/references/PLUGIN-PATTERNS.md +185 -0
  141. package/dist/ai-instructions/skills/sfcc-sfra-controllers/SKILL.md +347 -0
  142. package/dist/ai-instructions/skills/sfcc-sfra-controllers/references/MIDDLEWARE-REFERENCE.md +257 -0
  143. package/dist/ai-instructions/skills/sfcc-sfra-controllers/references/REMOTE-INCLUDES.md +193 -0
  144. package/{docs/best-practices/sfra_controllers.md → dist/ai-instructions/skills/sfcc-sfra-controllers/references/standard-sfra-controllers.md} +0 -670
  145. package/dist/ai-instructions/skills/sfcc-sfra-models/SKILL.md +322 -0
  146. package/dist/ai-instructions/skills/sfcc-sfra-models/references/MODEL-PATTERNS.md +530 -0
  147. package/dist/ai-instructions/skills/sfcc-sfra-models/references/MODEL-STRUCTURE.md +234 -0
  148. package/dist/ai-instructions/skills/sfcc-sfra-models/references/TESTING-SECURITY.md +417 -0
  149. package/{docs/best-practices/sfra_scss.md → dist/ai-instructions/skills/sfcc-sfra-scss/SKILL.md} +5 -0
  150. package/dist/ai-instructions/skills/sfcc-webdav-workflows/SKILL.md +111 -0
  151. package/dist/clients/agent-instructions-client.d.ts +66 -0
  152. package/dist/clients/agent-instructions-client.d.ts.map +1 -0
  153. package/dist/clients/agent-instructions-client.js +277 -0
  154. package/dist/clients/agent-instructions-client.js.map +1 -0
  155. package/dist/clients/base/abstract-documentation-client.d.ts +146 -0
  156. package/dist/clients/base/abstract-documentation-client.d.ts.map +1 -0
  157. package/dist/clients/base/abstract-documentation-client.js +265 -0
  158. package/dist/clients/base/abstract-documentation-client.js.map +1 -0
  159. package/dist/clients/base/oauth-token.d.ts +18 -0
  160. package/dist/clients/base/oauth-token.d.ts.map +1 -1
  161. package/dist/clients/base/oauth-token.js +45 -2
  162. package/dist/clients/base/oauth-token.js.map +1 -1
  163. package/dist/clients/cartridge/cartridge-generation-client.d.ts +59 -0
  164. package/dist/clients/cartridge/cartridge-generation-client.d.ts.map +1 -0
  165. package/dist/clients/cartridge/cartridge-generation-client.js +224 -0
  166. package/dist/clients/cartridge/cartridge-generation-client.js.map +1 -0
  167. package/dist/clients/cartridge/cartridge-structure.d.ts +17 -0
  168. package/dist/clients/cartridge/cartridge-structure.d.ts.map +1 -0
  169. package/dist/clients/cartridge/cartridge-structure.js +33 -0
  170. package/dist/clients/cartridge/cartridge-structure.js.map +1 -0
  171. package/dist/clients/cartridge/cartridge-templates.d.ts +22 -0
  172. package/dist/clients/cartridge/cartridge-templates.d.ts.map +1 -0
  173. package/dist/clients/cartridge/cartridge-templates.js +225 -0
  174. package/dist/clients/cartridge/cartridge-templates.js.map +1 -0
  175. package/dist/clients/cartridge/index.d.ts +7 -0
  176. package/dist/clients/cartridge/index.d.ts.map +1 -0
  177. package/dist/clients/cartridge/index.js +7 -0
  178. package/dist/clients/cartridge/index.js.map +1 -0
  179. package/dist/clients/docs/documentation-scanner.d.ts +5 -2
  180. package/dist/clients/docs/documentation-scanner.d.ts.map +1 -1
  181. package/dist/clients/docs/documentation-scanner.js +38 -23
  182. package/dist/clients/docs/documentation-scanner.js.map +1 -1
  183. package/dist/clients/docs-client.d.ts +13 -4
  184. package/dist/clients/docs-client.d.ts.map +1 -1
  185. package/dist/clients/docs-client.js +44 -11
  186. package/dist/clients/docs-client.js.map +1 -1
  187. package/dist/clients/isml-client.d.ts +71 -0
  188. package/dist/clients/isml-client.d.ts.map +1 -0
  189. package/dist/clients/isml-client.js +252 -0
  190. package/dist/clients/isml-client.js.map +1 -0
  191. package/dist/clients/ocapi/code-versions-client.d.ts.map +1 -1
  192. package/dist/clients/ocapi/code-versions-client.js +6 -1
  193. package/dist/clients/ocapi/code-versions-client.js.map +1 -1
  194. package/dist/clients/ocapi-client.d.ts +9 -101
  195. package/dist/clients/ocapi-client.d.ts.map +1 -1
  196. package/dist/clients/ocapi-client.js +11 -93
  197. package/dist/clients/ocapi-client.js.map +1 -1
  198. package/dist/clients/script-debugger/index.d.ts +5 -0
  199. package/dist/clients/script-debugger/index.d.ts.map +1 -0
  200. package/dist/clients/script-debugger/index.js +5 -0
  201. package/dist/clients/script-debugger/index.js.map +1 -0
  202. package/dist/clients/script-debugger/script-debugger-client.d.ts +147 -0
  203. package/dist/clients/script-debugger/script-debugger-client.d.ts.map +1 -0
  204. package/dist/clients/script-debugger/script-debugger-client.js +591 -0
  205. package/dist/clients/script-debugger/script-debugger-client.js.map +1 -0
  206. package/dist/clients/sfra-client.d.ts +13 -62
  207. package/dist/clients/sfra-client.d.ts.map +1 -1
  208. package/dist/clients/sfra-client.js +105 -326
  209. package/dist/clients/sfra-client.js.map +1 -1
  210. package/dist/config/configuration-factory.d.ts +1 -1
  211. package/dist/config/configuration-factory.d.ts.map +1 -1
  212. package/dist/config/configuration-factory.js +5 -1
  213. package/dist/config/configuration-factory.js.map +1 -1
  214. package/dist/config/dw-json-loader.d.ts +7 -0
  215. package/dist/config/dw-json-loader.d.ts.map +1 -1
  216. package/dist/config/dw-json-loader.js +92 -15
  217. package/dist/config/dw-json-loader.js.map +1 -1
  218. package/dist/config/workspace-roots.d.ts +143 -0
  219. package/dist/config/workspace-roots.d.ts.map +1 -0
  220. package/dist/config/workspace-roots.js +448 -0
  221. package/dist/config/workspace-roots.js.map +1 -0
  222. package/dist/constants/index.d.ts +1 -0
  223. package/dist/constants/index.d.ts.map +1 -0
  224. package/dist/constants/index.js +3 -0
  225. package/dist/constants/index.js.map +1 -0
  226. package/dist/core/handlers/abstract-client-handler.d.ts +52 -0
  227. package/dist/core/handlers/abstract-client-handler.d.ts.map +1 -0
  228. package/dist/core/handlers/abstract-client-handler.js +51 -0
  229. package/dist/core/handlers/abstract-client-handler.js.map +1 -0
  230. package/dist/core/handlers/agent-instructions-handler.d.ts +17 -0
  231. package/dist/core/handlers/agent-instructions-handler.d.ts.map +1 -0
  232. package/dist/core/handlers/agent-instructions-handler.js +38 -0
  233. package/dist/core/handlers/agent-instructions-handler.js.map +1 -0
  234. package/dist/core/handlers/base-handler.d.ts +3 -68
  235. package/dist/core/handlers/base-handler.d.ts.map +1 -1
  236. package/dist/core/handlers/base-handler.js +11 -84
  237. package/dist/core/handlers/base-handler.js.map +1 -1
  238. package/dist/core/handlers/cartridge-handler.d.ts +10 -11
  239. package/dist/core/handlers/cartridge-handler.d.ts.map +1 -1
  240. package/dist/core/handlers/cartridge-handler.js +10 -28
  241. package/dist/core/handlers/cartridge-handler.js.map +1 -1
  242. package/dist/core/handlers/client-factory.d.ts +12 -2
  243. package/dist/core/handlers/client-factory.d.ts.map +1 -1
  244. package/dist/core/handlers/client-factory.js +28 -1
  245. package/dist/core/handlers/client-factory.js.map +1 -1
  246. package/dist/core/handlers/code-version-handler.d.ts +11 -11
  247. package/dist/core/handlers/code-version-handler.d.ts.map +1 -1
  248. package/dist/core/handlers/code-version-handler.js +13 -27
  249. package/dist/core/handlers/code-version-handler.js.map +1 -1
  250. package/dist/core/handlers/docs-handler.d.ts +6 -12
  251. package/dist/core/handlers/docs-handler.d.ts.map +1 -1
  252. package/dist/core/handlers/docs-handler.js +11 -36
  253. package/dist/core/handlers/docs-handler.js.map +1 -1
  254. package/dist/core/handlers/isml-handler.d.ts +11 -0
  255. package/dist/core/handlers/isml-handler.d.ts.map +1 -0
  256. package/dist/core/handlers/isml-handler.js +18 -0
  257. package/dist/core/handlers/isml-handler.js.map +1 -0
  258. package/dist/core/handlers/job-log-handler.d.ts +8 -7
  259. package/dist/core/handlers/job-log-handler.d.ts.map +1 -1
  260. package/dist/core/handlers/job-log-handler.js +14 -5
  261. package/dist/core/handlers/job-log-handler.js.map +1 -1
  262. package/dist/core/handlers/log-handler.d.ts +8 -7
  263. package/dist/core/handlers/log-handler.d.ts.map +1 -1
  264. package/dist/core/handlers/log-handler.js +14 -5
  265. package/dist/core/handlers/log-handler.js.map +1 -1
  266. package/dist/core/handlers/script-debugger-handler.d.ts +18 -0
  267. package/dist/core/handlers/script-debugger-handler.d.ts.map +1 -0
  268. package/dist/core/handlers/script-debugger-handler.js +31 -0
  269. package/dist/core/handlers/script-debugger-handler.js.map +1 -0
  270. package/dist/core/handlers/sfra-handler.d.ts +6 -12
  271. package/dist/core/handlers/sfra-handler.d.ts.map +1 -1
  272. package/dist/core/handlers/sfra-handler.js +11 -36
  273. package/dist/core/handlers/sfra-handler.js.map +1 -1
  274. package/dist/core/handlers/simple-client-handler.d.ts +41 -0
  275. package/dist/core/handlers/simple-client-handler.d.ts.map +1 -0
  276. package/dist/core/handlers/simple-client-handler.js +49 -0
  277. package/dist/core/handlers/simple-client-handler.js.map +1 -0
  278. package/dist/core/handlers/system-object-handler.d.ts +11 -11
  279. package/dist/core/handlers/system-object-handler.d.ts.map +1 -1
  280. package/dist/core/handlers/system-object-handler.js +13 -27
  281. package/dist/core/handlers/system-object-handler.js.map +1 -1
  282. package/dist/core/handlers/validation-helpers.d.ts +22 -24
  283. package/dist/core/handlers/validation-helpers.d.ts.map +1 -1
  284. package/dist/core/handlers/validation-helpers.js +89 -39
  285. package/dist/core/handlers/validation-helpers.js.map +1 -1
  286. package/dist/core/instruction-advisor.d.ts +28 -0
  287. package/dist/core/instruction-advisor.d.ts.map +1 -0
  288. package/dist/core/instruction-advisor.js +114 -0
  289. package/dist/core/instruction-advisor.js.map +1 -0
  290. package/dist/core/server.d.ts +25 -0
  291. package/dist/core/server.d.ts.map +1 -1
  292. package/dist/core/server.js +151 -11
  293. package/dist/core/server.js.map +1 -1
  294. package/dist/core/tool-definitions.d.ts +6 -854
  295. package/dist/core/tool-definitions.d.ts.map +1 -1
  296. package/dist/core/tool-definitions.js +8 -1064
  297. package/dist/core/tool-definitions.js.map +1 -1
  298. package/dist/core/tool-schemas/agent-instruction-tools.d.ts +77 -0
  299. package/dist/core/tool-schemas/agent-instruction-tools.d.ts.map +1 -0
  300. package/dist/core/tool-schemas/agent-instruction-tools.js +72 -0
  301. package/dist/core/tool-schemas/agent-instruction-tools.js.map +1 -0
  302. package/dist/core/tool-schemas/cartridge-tools.d.ts +27 -0
  303. package/dist/core/tool-schemas/cartridge-tools.d.ts.map +1 -0
  304. package/dist/core/tool-schemas/cartridge-tools.js +29 -0
  305. package/dist/core/tool-schemas/cartridge-tools.js.map +1 -0
  306. package/dist/core/tool-schemas/code-version-tools.d.ts +28 -0
  307. package/dist/core/tool-schemas/code-version-tools.d.ts.map +1 -0
  308. package/dist/core/tool-schemas/code-version-tools.js +28 -0
  309. package/dist/core/tool-schemas/code-version-tools.js.map +1 -0
  310. package/dist/core/tool-schemas/documentation-tools.d.ts +139 -0
  311. package/dist/core/tool-schemas/documentation-tools.d.ts.map +1 -0
  312. package/dist/core/tool-schemas/documentation-tools.js +104 -0
  313. package/dist/core/tool-schemas/documentation-tools.js.map +1 -0
  314. package/dist/core/tool-schemas/index.d.ts +17 -0
  315. package/dist/core/tool-schemas/index.d.ts.map +1 -0
  316. package/dist/core/tool-schemas/index.js +19 -0
  317. package/dist/core/tool-schemas/index.js.map +1 -0
  318. package/dist/core/tool-schemas/isml-tools.d.ts +98 -0
  319. package/dist/core/tool-schemas/isml-tools.d.ts.map +1 -0
  320. package/dist/core/tool-schemas/isml-tools.js +89 -0
  321. package/dist/core/tool-schemas/isml-tools.js.map +1 -0
  322. package/dist/core/tool-schemas/log-tools.d.ts +221 -0
  323. package/dist/core/tool-schemas/log-tools.d.ts.map +1 -0
  324. package/dist/core/tool-schemas/log-tools.js +180 -0
  325. package/dist/core/tool-schemas/log-tools.js.map +1 -0
  326. package/dist/core/tool-schemas/script-debugger-tools.d.ts +44 -0
  327. package/dist/core/tool-schemas/script-debugger-tools.d.ts.map +1 -0
  328. package/dist/core/tool-schemas/script-debugger-tools.js +83 -0
  329. package/dist/core/tool-schemas/script-debugger-tools.js.map +1 -0
  330. package/dist/core/tool-schemas/sfra-tools.d.ts +63 -0
  331. package/dist/core/tool-schemas/sfra-tools.d.ts.map +1 -0
  332. package/dist/core/tool-schemas/sfra-tools.js +65 -0
  333. package/dist/core/tool-schemas/sfra-tools.js.map +1 -0
  334. package/dist/core/tool-schemas/shared-schemas.d.ts +350 -0
  335. package/dist/core/tool-schemas/shared-schemas.d.ts.map +1 -0
  336. package/dist/core/tool-schemas/shared-schemas.js +153 -0
  337. package/dist/core/tool-schemas/shared-schemas.js.map +1 -0
  338. package/dist/core/tool-schemas/system-object-tools.d.ts +511 -0
  339. package/dist/core/tool-schemas/system-object-tools.d.ts.map +1 -0
  340. package/dist/core/tool-schemas/system-object-tools.js +126 -0
  341. package/dist/core/tool-schemas/system-object-tools.js.map +1 -0
  342. package/dist/docs/dw_net/HTTPClient.md +46 -2
  343. package/dist/docs/dw_net/HTTPClientLoggingConfig.md +296 -0
  344. package/dist/docs/dw_order/Basket.md +7 -7
  345. package/dist/docs/dw_order/BasketMgr.md +22 -6
  346. package/dist/docs/dw_order.hooks/BasketMergeHooks.md +42 -0
  347. package/dist/docs/dw_svc/ServiceCallback.md +2 -2
  348. package/dist/docs/isml/isactivedatacontext.md +382 -0
  349. package/dist/docs/isml/isactivedatahead.md +566 -0
  350. package/dist/docs/isml/isanalyticsoff.md +537 -0
  351. package/dist/docs/isml/isapplepay.md +667 -0
  352. package/dist/docs/isml/isbreak.md +687 -0
  353. package/dist/docs/isml/isbuynow.md +682 -0
  354. package/dist/docs/isml/iscache.md +802 -0
  355. package/dist/docs/isml/iscomment.md +794 -0
  356. package/dist/docs/isml/iscomponent.md +797 -0
  357. package/dist/docs/isml/iscontent.md +594 -0
  358. package/dist/docs/isml/iscontinue.md +563 -0
  359. package/dist/docs/isml/iscookie.md +798 -0
  360. package/dist/docs/isml/isdecorate.md +818 -0
  361. package/dist/docs/isml/isif.md +737 -0
  362. package/dist/docs/isml/isinclude.md +874 -0
  363. package/dist/docs/isml/isloop.md +377 -0
  364. package/dist/docs/isml/ismodule.md +844 -0
  365. package/dist/docs/isml/isnext.md +672 -0
  366. package/dist/docs/isml/isobject.md +760 -0
  367. package/dist/docs/isml/ispayment.md +577 -0
  368. package/dist/docs/isml/ispaymentmessages.md +664 -0
  369. package/dist/docs/isml/isprint.md +875 -0
  370. package/dist/docs/isml/isredirect.md +716 -0
  371. package/dist/docs/isml/isremove.md +725 -0
  372. package/dist/docs/isml/isreplace.md +783 -0
  373. package/dist/docs/isml/isscript.md +859 -0
  374. package/dist/docs/isml/isselect.md +908 -0
  375. package/dist/docs/isml/isset.md +585 -0
  376. package/dist/docs/isml/isslot.md +824 -0
  377. package/dist/docs/isml/isstatus.md +711 -0
  378. package/dist/main.d.ts +16 -0
  379. package/dist/main.d.ts.map +1 -1
  380. package/dist/main.js +60 -28
  381. package/dist/main.js.map +1 -1
  382. package/dist/services/index.d.ts +4 -2
  383. package/dist/services/index.d.ts.map +1 -1
  384. package/dist/services/index.js +2 -2
  385. package/dist/services/index.js.map +1 -1
  386. package/dist/tool-configs/agent-instructions-tool-config.d.ts +6 -0
  387. package/dist/tool-configs/agent-instructions-tool-config.d.ts.map +1 -0
  388. package/dist/tool-configs/agent-instructions-tool-config.js +74 -0
  389. package/dist/tool-configs/agent-instructions-tool-config.js.map +1 -0
  390. package/dist/tool-configs/code-version-tool-config.d.ts.map +1 -1
  391. package/dist/tool-configs/code-version-tool-config.js +0 -5
  392. package/dist/tool-configs/code-version-tool-config.js.map +1 -1
  393. package/dist/tool-configs/docs-tool-config.d.ts.map +1 -1
  394. package/dist/tool-configs/docs-tool-config.js +0 -7
  395. package/dist/tool-configs/docs-tool-config.js.map +1 -1
  396. package/dist/tool-configs/isml-tool-config.d.ts +11 -0
  397. package/dist/tool-configs/isml-tool-config.d.ts.map +1 -0
  398. package/dist/tool-configs/isml-tool-config.js +77 -0
  399. package/dist/tool-configs/isml-tool-config.js.map +1 -0
  400. package/dist/tool-configs/job-log-tool-config.d.ts +1 -2
  401. package/dist/tool-configs/job-log-tool-config.d.ts.map +1 -1
  402. package/dist/tool-configs/job-log-tool-config.js +11 -15
  403. package/dist/tool-configs/job-log-tool-config.js.map +1 -1
  404. package/dist/tool-configs/log-tool-config.d.ts +1 -2
  405. package/dist/tool-configs/log-tool-config.d.ts.map +1 -1
  406. package/dist/tool-configs/log-tool-config.js +35 -51
  407. package/dist/tool-configs/log-tool-config.js.map +1 -1
  408. package/dist/tool-configs/script-debugger-tool-config.d.ts +11 -0
  409. package/dist/tool-configs/script-debugger-tool-config.d.ts.map +1 -0
  410. package/dist/tool-configs/script-debugger-tool-config.js +35 -0
  411. package/dist/tool-configs/script-debugger-tool-config.js.map +1 -0
  412. package/dist/tool-configs/sfra-tool-config.d.ts.map +1 -1
  413. package/dist/tool-configs/sfra-tool-config.js +0 -11
  414. package/dist/tool-configs/sfra-tool-config.js.map +1 -1
  415. package/dist/tool-configs/system-object-tool-config.d.ts.map +1 -1
  416. package/dist/tool-configs/system-object-tool-config.js +0 -5
  417. package/dist/tool-configs/system-object-tool-config.js.map +1 -1
  418. package/dist/types/types.d.ts +2 -0
  419. package/dist/types/types.d.ts.map +1 -1
  420. package/dist/utils/cache.d.ts +12 -10
  421. package/dist/utils/cache.d.ts.map +1 -1
  422. package/dist/utils/cache.js +47 -47
  423. package/dist/utils/cache.js.map +1 -1
  424. package/dist/utils/category-utils.d.ts +31 -0
  425. package/dist/utils/category-utils.d.ts.map +1 -0
  426. package/dist/utils/category-utils.js +45 -0
  427. package/dist/utils/category-utils.js.map +1 -0
  428. package/dist/utils/log-tool-constants.d.ts +16 -13
  429. package/dist/utils/log-tool-constants.d.ts.map +1 -1
  430. package/dist/utils/log-tool-constants.js +10 -11
  431. package/dist/utils/log-tool-constants.js.map +1 -1
  432. package/dist/utils/logger.d.ts +11 -0
  433. package/dist/utils/logger.d.ts.map +1 -1
  434. package/dist/utils/logger.js +35 -1
  435. package/dist/utils/logger.js.map +1 -1
  436. package/dist/utils/markdown-utils.d.ts +60 -0
  437. package/dist/utils/markdown-utils.d.ts.map +1 -0
  438. package/dist/utils/markdown-utils.js +206 -0
  439. package/dist/utils/markdown-utils.js.map +1 -0
  440. package/dist/utils/path-resolver.d.ts +12 -4
  441. package/dist/utils/path-resolver.d.ts.map +1 -1
  442. package/dist/utils/path-resolver.js +22 -8
  443. package/dist/utils/path-resolver.js.map +1 -1
  444. package/dist/utils/path-validation.d.ts +40 -0
  445. package/dist/utils/path-validation.d.ts.map +1 -0
  446. package/dist/utils/path-validation.js +84 -0
  447. package/dist/utils/path-validation.js.map +1 -0
  448. package/docs/dw_net/HTTPClient.md +46 -2
  449. package/docs/dw_net/HTTPClientLoggingConfig.md +296 -0
  450. package/docs/dw_order/Basket.md +7 -7
  451. package/docs/dw_order/BasketMgr.md +22 -6
  452. package/docs/dw_order.hooks/BasketMergeHooks.md +42 -0
  453. package/docs/dw_svc/ServiceCallback.md +2 -2
  454. package/docs/isml/isactivedatacontext.md +382 -0
  455. package/docs/isml/isactivedatahead.md +566 -0
  456. package/docs/isml/isanalyticsoff.md +537 -0
  457. package/docs/isml/isapplepay.md +667 -0
  458. package/docs/isml/isbreak.md +687 -0
  459. package/docs/isml/isbuynow.md +682 -0
  460. package/docs/isml/iscache.md +802 -0
  461. package/docs/isml/iscomment.md +794 -0
  462. package/docs/isml/iscomponent.md +797 -0
  463. package/docs/isml/iscontent.md +594 -0
  464. package/docs/isml/iscontinue.md +563 -0
  465. package/docs/isml/iscookie.md +798 -0
  466. package/docs/isml/isdecorate.md +818 -0
  467. package/docs/isml/isif.md +737 -0
  468. package/docs/isml/isinclude.md +874 -0
  469. package/docs/isml/isloop.md +377 -0
  470. package/docs/isml/ismodule.md +844 -0
  471. package/docs/isml/isnext.md +672 -0
  472. package/docs/isml/isobject.md +760 -0
  473. package/docs/isml/ispayment.md +577 -0
  474. package/docs/isml/ispaymentmessages.md +664 -0
  475. package/docs/isml/isprint.md +875 -0
  476. package/docs/isml/isredirect.md +716 -0
  477. package/docs/isml/isremove.md +725 -0
  478. package/docs/isml/isreplace.md +783 -0
  479. package/docs/isml/isscript.md +859 -0
  480. package/docs/isml/isselect.md +908 -0
  481. package/docs/isml/isset.md +585 -0
  482. package/docs/isml/isslot.md +824 -0
  483. package/docs/isml/isstatus.md +711 -0
  484. package/docs-site-v2/.vitepress/config.mts +190 -0
  485. package/docs-site-v2/.vitepress/theme/components/AssistantTabs.vue +96 -0
  486. package/docs-site-v2/.vitepress/theme/components/Callout.vue +10 -0
  487. package/docs-site-v2/.vitepress/theme/components/Collapsible.vue +14 -0
  488. package/docs-site-v2/.vitepress/theme/components/DwJsonBuilder.vue +82 -0
  489. package/docs-site-v2/.vitepress/theme/components/HomeSections.vue +552 -0
  490. package/docs-site-v2/.vitepress/theme/components/InstructionFilesTabs.vue +87 -0
  491. package/docs-site-v2/.vitepress/theme/components/ModeTabs.vue +70 -0
  492. package/docs-site-v2/.vitepress/theme/components/NewcomerCTA.vue +14 -0
  493. package/docs-site-v2/.vitepress/theme/components/QuickStartCards.vue +20 -0
  494. package/docs-site-v2/.vitepress/theme/components/QuickStartHero.vue +20 -0
  495. package/docs-site-v2/.vitepress/theme/components/SkillsList.vue +48 -0
  496. package/docs-site-v2/.vitepress/theme/components/ToolExplorer.vue +85 -0
  497. package/docs-site-v2/.vitepress/theme/custom.css +1373 -0
  498. package/docs-site-v2/.vitepress/theme/index.ts +39 -0
  499. package/docs-site-v2/data/skills.ts +147 -0
  500. package/docs-site-v2/data/tools.ts +490 -0
  501. package/docs-site-v2/development/index.md +151 -0
  502. package/docs-site-v2/examples/index.md +333 -0
  503. package/docs-site-v2/features/index.md +144 -0
  504. package/docs-site-v2/guide/ai-interfaces.md +58 -0
  505. package/docs-site-v2/guide/configuration.md +208 -0
  506. package/docs-site-v2/guide/index.md +50 -0
  507. package/docs-site-v2/index.md +32 -0
  508. package/docs-site-v2/package-lock.json +2511 -0
  509. package/docs-site-v2/package.json +15 -0
  510. package/docs-site-v2/public/android-chrome-192x192.png +0 -0
  511. package/docs-site-v2/public/android-chrome-512x512.png +0 -0
  512. package/docs-site-v2/public/apple-touch-icon.png +0 -0
  513. package/docs-site-v2/public/favicon-16x16.png +0 -0
  514. package/docs-site-v2/public/favicon-32x32.png +0 -0
  515. package/docs-site-v2/public/favicon.ico +0 -0
  516. package/docs-site-v2/public/index.css +4174 -0
  517. package/docs-site-v2/public/llms.txt +44 -0
  518. package/docs-site-v2/public/logo-dark.svg +8 -0
  519. package/docs-site-v2/public/logo.svg +8 -0
  520. package/{docs-site → docs-site-v2}/public/robots.txt +1 -6
  521. package/{docs-site → docs-site-v2}/public/site.webmanifest +1 -1
  522. package/{docs-site → docs-site-v2}/public/sitemap.xml +33 -12
  523. package/docs-site-v2/script-debugger/index.md +105 -0
  524. package/docs-site-v2/scripts/generate-llms.js +71 -0
  525. package/docs-site-v2/scripts/generate-sitemap.js +97 -0
  526. package/docs-site-v2/security/index.md +115 -0
  527. package/docs-site-v2/skills/index.md +40 -0
  528. package/docs-site-v2/tools/index.md +36 -0
  529. package/docs-site-v2/troubleshooting/index.md +204 -0
  530. package/eslint.config.js +3 -1
  531. package/memories/repo/docs-site-v2-build.json +11 -0
  532. package/package.json +18 -14
  533. package/scripts/validate-server-json.js +68 -0
  534. package/server.json +4 -6
  535. package/src/clients/agent-instructions-client.ts +370 -0
  536. package/src/clients/base/abstract-documentation-client.ts +405 -0
  537. package/src/clients/base/oauth-token.ts +52 -2
  538. package/src/clients/cartridge/cartridge-generation-client.ts +302 -0
  539. package/src/clients/cartridge/cartridge-structure.ts +37 -0
  540. package/src/clients/cartridge/cartridge-templates.ts +246 -0
  541. package/src/clients/cartridge/index.ts +6 -0
  542. package/src/clients/docs/documentation-scanner.ts +44 -28
  543. package/src/clients/docs-client.ts +54 -14
  544. package/src/clients/isml-client.ts +353 -0
  545. package/src/clients/ocapi/code-versions-client.ts +7 -1
  546. package/src/clients/ocapi-client.ts +11 -166
  547. package/src/clients/script-debugger/index.ts +5 -0
  548. package/src/clients/script-debugger/script-debugger-client.ts +754 -0
  549. package/src/clients/sfra-client.ts +134 -397
  550. package/src/config/configuration-factory.ts +6 -1
  551. package/src/config/dw-json-loader.ts +96 -15
  552. package/src/config/workspace-roots.ts +540 -0
  553. package/src/constants/index.ts +1 -0
  554. package/src/core/handlers/abstract-client-handler.ts +85 -0
  555. package/src/core/handlers/agent-instructions-handler.ts +48 -0
  556. package/src/core/handlers/base-handler.ts +17 -127
  557. package/src/core/handlers/cartridge-handler.ts +13 -33
  558. package/src/core/handlers/client-factory.ts +32 -2
  559. package/src/core/handlers/code-version-handler.ts +17 -32
  560. package/src/core/handlers/docs-handler.ts +12 -44
  561. package/src/core/handlers/isml-handler.ts +19 -0
  562. package/src/core/handlers/job-log-handler.ts +19 -8
  563. package/src/core/handlers/log-handler.ts +19 -8
  564. package/src/core/handlers/script-debugger-handler.ts +46 -0
  565. package/src/core/handlers/sfra-handler.ts +12 -44
  566. package/src/core/handlers/simple-client-handler.ts +78 -0
  567. package/src/core/handlers/system-object-handler.ts +17 -32
  568. package/src/core/handlers/validation-helpers.ts +87 -47
  569. package/src/core/instruction-advisor.ts +122 -0
  570. package/src/core/server.ts +178 -13
  571. package/src/core/tool-definitions.ts +25 -1071
  572. package/src/core/tool-schemas/agent-instruction-tools.ts +72 -0
  573. package/src/core/tool-schemas/cartridge-tools.ts +29 -0
  574. package/src/core/tool-schemas/code-version-tools.ts +28 -0
  575. package/src/core/tool-schemas/documentation-tools.ts +104 -0
  576. package/src/core/tool-schemas/index.ts +27 -0
  577. package/src/core/tool-schemas/isml-tools.ts +89 -0
  578. package/src/core/tool-schemas/log-tools.ts +196 -0
  579. package/src/core/tool-schemas/script-debugger-tools.ts +83 -0
  580. package/src/core/tool-schemas/sfra-tools.ts +65 -0
  581. package/src/core/tool-schemas/shared-schemas.ts +158 -0
  582. package/src/core/tool-schemas/system-object-tools.ts +127 -0
  583. package/src/main.ts +63 -30
  584. package/src/services/index.ts +4 -10
  585. package/src/tool-configs/agent-instructions-tool-config.ts +83 -0
  586. package/src/tool-configs/cartridge-tool-config.ts +1 -1
  587. package/src/tool-configs/code-version-tool-config.ts +0 -5
  588. package/src/tool-configs/docs-tool-config.ts +0 -7
  589. package/src/tool-configs/isml-tool-config.ts +87 -0
  590. package/src/tool-configs/job-log-tool-config.ts +18 -17
  591. package/src/tool-configs/log-tool-config.ts +49 -64
  592. package/src/tool-configs/script-debugger-tool-config.ts +69 -0
  593. package/src/tool-configs/sfra-tool-config.ts +0 -11
  594. package/src/tool-configs/system-object-tool-config.ts +0 -5
  595. package/src/types/types.ts +2 -0
  596. package/src/utils/cache.ts +49 -54
  597. package/src/utils/category-utils.ts +70 -0
  598. package/src/utils/log-tool-constants.ts +25 -17
  599. package/src/utils/logger.ts +38 -1
  600. package/src/utils/markdown-utils.ts +280 -0
  601. package/src/utils/path-resolver.ts +25 -9
  602. package/src/utils/path-validation.ts +113 -0
  603. package/tests/base-handler.test.ts +1 -1
  604. package/tests/cache.test.ts +2 -2
  605. package/tests/cartridge-handler.test.ts +4 -4
  606. package/tests/client-factory.test.ts +1 -1
  607. package/tests/code-version-handler.test.ts +3 -3
  608. package/tests/docs-handler.test.ts +2 -2
  609. package/tests/documentation-scanner.test.ts +4 -4
  610. package/tests/isml-client.test.ts +463 -0
  611. package/tests/isml-handler.test.ts +375 -0
  612. package/tests/job-log-handler.test.ts +1 -1
  613. package/tests/log-handler.test.ts +8 -8
  614. package/tests/log-validation.test.ts +149 -0
  615. package/tests/mcp/README.md +22 -18
  616. package/tests/mcp/node/activate-code-version-advanced.full-mode.programmatic.test.js +30 -12
  617. package/tests/mcp/node/evaluate-script.full-mode.programmatic.test.js +387 -0
  618. package/tests/mcp/node/generate-cartridge-structure.docs-only.programmatic.test.js +14 -8
  619. package/tests/mcp/node/get-isml-categories.programmatic.test.js +278 -0
  620. package/tests/mcp/node/get-isml-element.programmatic.test.js +278 -0
  621. package/tests/mcp/node/get-isml-elements-by-category.programmatic.test.js +363 -0
  622. package/tests/mcp/node/get-sfra-categories.docs-only.programmatic.test.js +24 -24
  623. package/tests/mcp/node/get-sfra-document.programmatic.test.js +4 -2
  624. package/tests/mcp/node/list-isml-elements.programmatic.test.js +311 -0
  625. package/tests/mcp/node/list-sfcc-classes.docs-only.programmatic.test.js +2 -33
  626. package/tests/mcp/node/search-isml-elements.programmatic.test.js +325 -0
  627. package/tests/mcp/node/search-sfcc-classes.docs-only.programmatic.test.js +5 -9
  628. package/tests/mcp/node/search-sfcc-methods.docs-only.programmatic.test.js +7 -9
  629. package/tests/mcp/node/tools.docs-only.programmatic.test.js +42 -65
  630. package/tests/mcp/node/tools.full-mode.programmatic.test.js +7 -8
  631. package/tests/mcp/yaml/activate-code-version.full-mode.test.mcp.yml +2 -2
  632. package/tests/mcp/yaml/evaluate-script.full-mode.test.mcp.yml +281 -0
  633. package/tests/mcp/yaml/get-isml-categories.docs-only.test.mcp.yml +330 -0
  634. package/tests/mcp/yaml/get-isml-element.docs-only.test.mcp.yml +294 -0
  635. package/tests/mcp/yaml/get-isml-elements-by-category.docs-only.test.mcp.yml +334 -0
  636. package/tests/mcp/yaml/get-sfcc-class-info.docs-only.test.mcp.yml +2 -2
  637. package/tests/mcp/yaml/get-sfra-categories.docs-only.test.mcp.yml +13 -13
  638. package/tests/mcp/yaml/get-sfra-categories.full-mode.test.mcp.yml +13 -13
  639. package/tests/mcp/yaml/get-system-object-definitions.docs-only.test.mcp.yml +1 -16
  640. package/tests/mcp/yaml/list-isml-elements.docs-only.test.mcp.yml +212 -0
  641. package/tests/mcp/yaml/search-isml-elements.docs-only.test.mcp.yml +312 -0
  642. package/tests/mcp/yaml/search-sfcc-classes.docs-only.test.mcp.yml +1 -1
  643. package/tests/mcp/yaml/search-sfcc-classes.full-mode.test.mcp.yml +1 -1
  644. package/tests/mcp/yaml/search-site-preferences.docs-only.test.mcp.yml +1 -1
  645. package/tests/mcp/yaml/tools.docs-only.test.mcp.yml +3 -57
  646. package/tests/mcp/yaml/tools.full-mode.test.mcp.yml +3 -3
  647. package/tests/oauth-token.test.ts +107 -12
  648. package/tests/ocapi-client.test.ts +53 -106
  649. package/tests/script-debugger-client.test.ts +430 -0
  650. package/tests/servers/sfcc-mock-server/src/app.js +15 -0
  651. package/tests/servers/sfcc-mock-server/src/routes/cartridge-webdav.js +258 -0
  652. package/tests/servers/sfcc-mock-server/src/routes/ocapi/debugger-handler.js +396 -0
  653. package/tests/servers/sfcc-mock-server/src/routes/ocapi.js +5 -0
  654. package/tests/servers/sfcc-mock-server/src/routes/storefront.js +86 -0
  655. package/tests/servers/sfcc-mock-server/src/routes/webdav.js +6 -4
  656. package/tests/validation-helpers.test.ts +0 -31
  657. package/tests/workspace-roots.test.ts +227 -0
  658. package/ai-instructions/claude-desktop/claude_custom_instructions.md +0 -321
  659. package/ai-instructions/cursor/.cursor/rules/debugging-workflows.mdc +0 -171
  660. package/ai-instructions/cursor/.cursor/rules/hooks-development.mdc +0 -168
  661. package/ai-instructions/cursor/.cursor/rules/isml-templates.mdc +0 -209
  662. package/ai-instructions/cursor/.cursor/rules/job-framework.mdc +0 -379
  663. package/ai-instructions/cursor/.cursor/rules/performance-optimization.mdc +0 -215
  664. package/ai-instructions/cursor/.cursor/rules/scapi-endpoints.mdc +0 -98
  665. package/ai-instructions/cursor/.cursor/rules/security-patterns.mdc +0 -375
  666. package/ai-instructions/cursor/.cursor/rules/sfcc-development.mdc +0 -144
  667. package/ai-instructions/cursor/.cursor/rules/sfra-controllers.mdc +0 -376
  668. package/ai-instructions/cursor/.cursor/rules/sfra-models.mdc +0 -412
  669. package/ai-instructions/cursor/.cursor/rules/system-objects.mdc +0 -383
  670. package/ai-instructions/cursor/.cursor/rules/testing-patterns.mdc +0 -418
  671. package/dist/clients/best-practices-client.d.ts +0 -57
  672. package/dist/clients/best-practices-client.d.ts.map +0 -1
  673. package/dist/clients/best-practices-client.js +0 -288
  674. package/dist/clients/best-practices-client.js.map +0 -1
  675. package/dist/clients/cartridge-generation-client.d.ts +0 -57
  676. package/dist/clients/cartridge-generation-client.d.ts.map +0 -1
  677. package/dist/clients/cartridge-generation-client.js +0 -384
  678. package/dist/clients/cartridge-generation-client.js.map +0 -1
  679. package/dist/clients/logs/index.d.ts +0 -13
  680. package/dist/clients/logs/index.d.ts.map +0 -1
  681. package/dist/clients/logs/index.js +0 -15
  682. package/dist/clients/logs/index.js.map +0 -1
  683. package/dist/clients/logs/log-analyzer.d.ts +0 -55
  684. package/dist/clients/logs/log-analyzer.d.ts.map +0 -1
  685. package/dist/clients/logs/log-analyzer.js +0 -228
  686. package/dist/clients/logs/log-analyzer.js.map +0 -1
  687. package/dist/clients/logs/log-client.d.ts +0 -87
  688. package/dist/clients/logs/log-client.d.ts.map +0 -1
  689. package/dist/clients/logs/log-client.js +0 -418
  690. package/dist/clients/logs/log-client.js.map +0 -1
  691. package/dist/clients/logs/log-constants.d.ts +0 -37
  692. package/dist/clients/logs/log-constants.d.ts.map +0 -1
  693. package/dist/clients/logs/log-constants.js +0 -37
  694. package/dist/clients/logs/log-constants.js.map +0 -1
  695. package/dist/clients/logs/log-file-discovery.d.ts +0 -62
  696. package/dist/clients/logs/log-file-discovery.d.ts.map +0 -1
  697. package/dist/clients/logs/log-file-discovery.js +0 -238
  698. package/dist/clients/logs/log-file-discovery.js.map +0 -1
  699. package/dist/clients/logs/log-file-reader.d.ts +0 -53
  700. package/dist/clients/logs/log-file-reader.d.ts.map +0 -1
  701. package/dist/clients/logs/log-file-reader.js +0 -194
  702. package/dist/clients/logs/log-file-reader.js.map +0 -1
  703. package/dist/clients/logs/log-formatter.d.ts +0 -90
  704. package/dist/clients/logs/log-formatter.d.ts.map +0 -1
  705. package/dist/clients/logs/log-formatter.js +0 -189
  706. package/dist/clients/logs/log-formatter.js.map +0 -1
  707. package/dist/clients/logs/log-processor.d.ts +0 -91
  708. package/dist/clients/logs/log-processor.d.ts.map +0 -1
  709. package/dist/clients/logs/log-processor.js +0 -328
  710. package/dist/clients/logs/log-processor.js.map +0 -1
  711. package/dist/clients/logs/log-types.d.ts +0 -69
  712. package/dist/clients/logs/log-types.d.ts.map +0 -1
  713. package/dist/clients/logs/log-types.js +0 -5
  714. package/dist/clients/logs/log-types.js.map +0 -1
  715. package/dist/clients/logs/webdav-client-manager.d.ts +0 -28
  716. package/dist/clients/logs/webdav-client-manager.d.ts.map +0 -1
  717. package/dist/clients/logs/webdav-client-manager.js +0 -77
  718. package/dist/clients/logs/webdav-client-manager.js.map +0 -1
  719. package/dist/core/handlers/abstract-log-tool-handler.d.ts +0 -35
  720. package/dist/core/handlers/abstract-log-tool-handler.d.ts.map +0 -1
  721. package/dist/core/handlers/abstract-log-tool-handler.js +0 -46
  722. package/dist/core/handlers/abstract-log-tool-handler.js.map +0 -1
  723. package/dist/core/handlers/best-practices-handler.d.ts +0 -17
  724. package/dist/core/handlers/best-practices-handler.d.ts.map +0 -1
  725. package/dist/core/handlers/best-practices-handler.js +0 -43
  726. package/dist/core/handlers/best-practices-handler.js.map +0 -1
  727. package/dist/core/handlers/job-log-tool-config.d.ts +0 -8
  728. package/dist/core/handlers/job-log-tool-config.d.ts.map +0 -1
  729. package/dist/core/handlers/job-log-tool-config.js +0 -76
  730. package/dist/core/handlers/job-log-tool-config.js.map +0 -1
  731. package/dist/core/handlers/log-tool-config.d.ts +0 -8
  732. package/dist/core/handlers/log-tool-config.d.ts.map +0 -1
  733. package/dist/core/handlers/log-tool-config.js +0 -73
  734. package/dist/core/handlers/log-tool-config.js.map +0 -1
  735. package/dist/docs/best-practices/isml_templates.md +0 -1933
  736. package/dist/docs/best-practices/job_framework.md +0 -1173
  737. package/dist/docs/best-practices/scapi_custom_endpoint.md +0 -963
  738. package/dist/docs/best-practices/sfra_client_side_js.md +0 -736
  739. package/dist/docs/best-practices/sfra_models.md +0 -1142
  740. package/dist/tool-configs/best-practices-tool-config.d.ts +0 -11
  741. package/dist/tool-configs/best-practices-tool-config.d.ts.map +0 -1
  742. package/dist/tool-configs/best-practices-tool-config.js +0 -59
  743. package/dist/tool-configs/best-practices-tool-config.js.map +0 -1
  744. package/dist/utils/job-log-tool-config.d.ts +0 -8
  745. package/dist/utils/job-log-tool-config.d.ts.map +0 -1
  746. package/dist/utils/job-log-tool-config.js +0 -76
  747. package/dist/utils/job-log-tool-config.js.map +0 -1
  748. package/dist/utils/job-log-utils.d.ts +0 -34
  749. package/dist/utils/job-log-utils.d.ts.map +0 -1
  750. package/dist/utils/job-log-utils.js +0 -60
  751. package/dist/utils/job-log-utils.js.map +0 -1
  752. package/dist/utils/log-cache.d.ts +0 -53
  753. package/dist/utils/log-cache.d.ts.map +0 -1
  754. package/dist/utils/log-cache.js +0 -114
  755. package/dist/utils/log-cache.js.map +0 -1
  756. package/dist/utils/log-tool-config.d.ts +0 -8
  757. package/dist/utils/log-tool-config.d.ts.map +0 -1
  758. package/dist/utils/log-tool-config.js +0 -73
  759. package/dist/utils/log-tool-config.js.map +0 -1
  760. package/dist/utils/log-tool-utils.d.ts +0 -39
  761. package/dist/utils/log-tool-utils.d.ts.map +0 -1
  762. package/dist/utils/log-tool-utils.js +0 -94
  763. package/dist/utils/log-tool-utils.js.map +0 -1
  764. package/docs/best-practices/isml_templates.md +0 -1933
  765. package/docs/best-practices/job_framework.md +0 -1173
  766. package/docs/best-practices/scapi_custom_endpoint.md +0 -963
  767. package/docs/best-practices/sfra_client_side_js.md +0 -736
  768. package/docs/best-practices/sfra_models.md +0 -1142
  769. package/docs-site/App.tsx +0 -103
  770. package/docs-site/README.md +0 -113
  771. package/docs-site/components/Badge.tsx +0 -38
  772. package/docs-site/components/BreadcrumbSchema.tsx +0 -34
  773. package/docs-site/components/CodeBlock.tsx +0 -132
  774. package/docs-site/components/Collapsible.tsx +0 -40
  775. package/docs-site/components/ConfigBuilder.tsx +0 -118
  776. package/docs-site/components/ConfigHero.tsx +0 -19
  777. package/docs-site/components/ConfigModeTabs.tsx +0 -42
  778. package/docs-site/components/Layout.tsx +0 -174
  779. package/docs-site/components/LightCodeContainer.tsx +0 -44
  780. package/docs-site/components/NewcomerCTA.tsx +0 -57
  781. package/docs-site/components/NextStepsStrip.tsx +0 -23
  782. package/docs-site/components/OnThisPage.tsx +0 -91
  783. package/docs-site/components/SEO.tsx +0 -79
  784. package/docs-site/components/Search.tsx +0 -207
  785. package/docs-site/components/Sidebar.tsx +0 -96
  786. package/docs-site/components/StructuredData.tsx +0 -72
  787. package/docs-site/components/ToolCard.tsx +0 -84
  788. package/docs-site/components/ToolFilters.tsx +0 -39
  789. package/docs-site/components/Typography.tsx +0 -30
  790. package/docs-site/components/VersionBadge.tsx +0 -18
  791. package/docs-site/components/icons.tsx +0 -37
  792. package/docs-site/constants.tsx +0 -34
  793. package/docs-site/index.html +0 -62
  794. package/docs-site/main.tsx +0 -16
  795. package/docs-site/metadata.json +0 -5
  796. package/docs-site/package-lock.json +0 -3966
  797. package/docs-site/package.json +0 -35
  798. package/docs-site/pages/AIInterfacesPage.tsx +0 -610
  799. package/docs-site/pages/ConfigurationPage.tsx +0 -315
  800. package/docs-site/pages/DevelopmentPage.tsx +0 -607
  801. package/docs-site/pages/ExamplesPage.tsx +0 -558
  802. package/docs-site/pages/FeaturesPage.tsx +0 -353
  803. package/docs-site/pages/HomePage.tsx +0 -1046
  804. package/docs-site/pages/SecurityPage.tsx +0 -372
  805. package/docs-site/pages/ToolsPage.tsx +0 -205
  806. package/docs-site/pages/TroubleshootingPage.tsx +0 -590
  807. package/docs-site/postcss.config.js +0 -6
  808. package/docs-site/public/.well-known/security.txt +0 -6
  809. package/docs-site/public/android-chrome-192x192.png +0 -0
  810. package/docs-site/public/android-chrome-512x512.png +0 -0
  811. package/docs-site/public/apple-touch-icon.png +0 -0
  812. package/docs-site/public/favicon-16x16.png +0 -0
  813. package/docs-site/public/favicon-32x32.png +0 -0
  814. package/docs-site/public/favicon.ico +0 -0
  815. package/docs-site/public/llms.txt +0 -47
  816. package/docs-site/scripts/generate-search-index.js +0 -323
  817. package/docs-site/scripts/generate-sitemap.js +0 -156
  818. package/docs-site/scripts/search-dev.js +0 -112
  819. package/docs-site/src/styles/input.css +0 -248
  820. package/docs-site/src/styles/prism-theme.css +0 -124
  821. package/docs-site/tailwind.config.js +0 -70
  822. package/docs-site/tsconfig.json +0 -29
  823. package/docs-site/types.ts +0 -16
  824. package/docs-site/utils/search.ts +0 -132
  825. package/docs-site/utils/toolsData.ts +0 -116
  826. package/docs-site/vite.config.ts +0 -63
  827. package/src/clients/best-practices-client.ts +0 -332
  828. package/src/clients/cartridge-generation-client.ts +0 -507
  829. package/src/clients/logs/index.ts +0 -18
  830. package/src/clients/logs/log-analyzer.ts +0 -289
  831. package/src/clients/logs/log-client.ts +0 -540
  832. package/src/clients/logs/log-constants.ts +0 -53
  833. package/src/clients/logs/log-file-discovery.ts +0 -299
  834. package/src/clients/logs/log-file-reader.ts +0 -227
  835. package/src/clients/logs/log-formatter.ts +0 -258
  836. package/src/clients/logs/log-processor.ts +0 -402
  837. package/src/clients/logs/log-types.ts +0 -80
  838. package/src/clients/logs/webdav-client-manager.ts +0 -93
  839. package/src/core/handlers/abstract-log-tool-handler.ts +0 -64
  840. package/src/core/handlers/best-practices-handler.ts +0 -55
  841. package/src/core/handlers/job-log-tool-config.ts +0 -89
  842. package/src/core/handlers/log-tool-config.ts +0 -98
  843. package/src/tool-configs/best-practices-tool-config.ts +0 -68
  844. package/src/utils/job-log-tool-config.ts +0 -89
  845. package/src/utils/job-log-utils.ts +0 -78
  846. package/src/utils/log-cache.ts +0 -134
  847. package/src/utils/log-tool-config.ts +0 -98
  848. package/src/utils/log-tool-utils.ts +0 -122
  849. package/tests/best-practices-handler.test.ts +0 -236
  850. package/tests/job-log-utils.test.ts +0 -182
  851. package/tests/mcp/node/get-available-best-practice-guides.docs-only.programmatic.test.js +0 -516
  852. package/tests/mcp/node/get-best-practice-guide.docs-only.programmatic.test.js +0 -733
  853. package/tests/mcp/node/get-hook-reference.docs-only.programmatic.test.js +0 -185
  854. package/tests/mcp/node/search-best-practices.docs-only.programmatic.test.js +0 -836
  855. package/tests/mcp/yaml/get-available-best-practice-guides.docs-only.test.mcp.yml +0 -885
  856. package/tests/mcp/yaml/get-available-best-practice-guides.full-mode.test.mcp.yml +0 -885
  857. package/tests/mcp/yaml/get-best-practice-guide.docs-only.test.mcp.yml +0 -462
  858. package/tests/mcp/yaml/get-best-practice-guide.full-mode.test.mcp.yml +0 -462
  859. package/tests/mcp/yaml/get-hook-reference.docs-only.test.mcp.yml +0 -321
  860. package/tests/mcp/yaml/get-hook-reference.full-mode.test.mcp.yml +0 -321
  861. package/tests/mcp/yaml/search-best-practices.docs-only.test.mcp.yml +0 -655
  862. package/tests/mcp/yaml/search-best-practices.full-mode.test.mcp.yml +0 -655
  863. /package/{docs-site → docs-site-v2}/public/404.html +0 -0
  864. /package/{docs-site → docs-site-v2}/public/explain-product-pricing-methods-no-mcp.png +0 -0
  865. /package/{docs-site → docs-site-v2}/public/explain-product-pricing-methods.png +0 -0
@@ -0,0 +1,325 @@
1
+ /**
2
+ * Programmatic tests for the MCP tool: search_isml_elements
3
+ * Mirrors YAML tests but adds deeper JSON parsing & resilience checks.
4
+ *
5
+ * Validates:
6
+ * 1. Tool is registered
7
+ * 2. Successful search with various queries (loop, format, cache, condition)
8
+ * 3. Search result structure (element, relevance, matchedSections, preview)
9
+ * 4. Category filtering
10
+ * 5. Result limit enforcement
11
+ * 6. Relevance scoring
12
+ * 7. Empty result handling
13
+ * 8. Error handling for missing parameters
14
+ * 9. Preview quality and content
15
+ */
16
+
17
+ import { test, describe, before, after, beforeEach } from 'node:test';
18
+ import { strict as assert } from 'node:assert';
19
+ import { connect } from 'mcp-aegis';
20
+
21
+ describe('search_isml_elements (programmatic)', () => {
22
+ let client;
23
+ const CONFIG = './aegis.config.docs-only.json';
24
+
25
+ before(async () => {
26
+ client = await connect(CONFIG);
27
+ });
28
+
29
+ after(async () => {
30
+ if (client?.connected) {
31
+ await client.disconnect();
32
+ }
33
+ });
34
+
35
+ beforeEach(() => {
36
+ client.clearAllBuffers();
37
+ });
38
+
39
+ const TOOL_NAME = 'search_isml_elements';
40
+ const RESULT_KEYS = ['document', 'relevance', 'matchedSections', 'preview'];
41
+ const ELEMENT_KEYS = ['name', 'title', 'description', 'category', 'filename'];
42
+
43
+ test('tool should be registered', async () => {
44
+ const tools = await client.listTools();
45
+ const names = tools.map(t => t.name);
46
+ assert.ok(names.includes(TOOL_NAME), 'Tool not found in listTools');
47
+ });
48
+
49
+ async function invoke(query, options = {}) {
50
+ const result = await client.callTool(TOOL_NAME, { query, ...options });
51
+ return { result, raw: result.content[0]?.text };
52
+ }
53
+
54
+ function safeParseResults(raw) {
55
+ let results;
56
+ try {
57
+ results = JSON.parse(raw);
58
+ } catch (err) {
59
+ assert.fail(`Failed to parse response as JSON: ${err.message}\nRaw: ${raw.substring(0, 500)}`);
60
+ }
61
+ assert.ok(Array.isArray(results), 'Parsed results should be array');
62
+ return results;
63
+ }
64
+
65
+ test('search for loop-related elements', async () => {
66
+ const { result, raw } = await invoke('loop');
67
+ assert.equal(result.isError, false, 'Should not be error');
68
+
69
+ const results = safeParseResults(raw);
70
+ assert.ok(results.length > 0, 'Should find loop-related elements');
71
+
72
+ // Check if isloop is in results
73
+ const elementNames = results.map(r => r.document.name);
74
+ assert.ok(elementNames.includes('isloop'), 'Should include isloop element');
75
+ });
76
+
77
+ test('search for formatting elements', async () => {
78
+ const { result, raw } = await invoke('format');
79
+ assert.equal(result.isError, false, 'Should not be error');
80
+
81
+ const results = safeParseResults(raw);
82
+ assert.ok(results.length > 0, 'Should find formatting-related elements');
83
+
84
+ const elementNames = results.map(r => r.document.name);
85
+ assert.ok(elementNames.includes('isprint'), 'Should include isprint element');
86
+ });
87
+
88
+ test('search for cache elements', async () => {
89
+ const { result, raw } = await invoke('cache');
90
+ assert.equal(result.isError, false, 'Should not be error');
91
+
92
+ const results = safeParseResults(raw);
93
+ assert.ok(results.length > 0, 'Should find cache-related elements');
94
+
95
+ const elementNames = results.map(r => r.document.name);
96
+ assert.ok(elementNames.includes('iscache'), 'Should include iscache element');
97
+ });
98
+
99
+ test('search for conditional elements', async () => {
100
+ const { result, raw } = await invoke('condition');
101
+ assert.equal(result.isError, false, 'Should not be error');
102
+
103
+ const results = safeParseResults(raw);
104
+ assert.ok(results.length > 0, 'Should find conditional-related elements');
105
+
106
+ const elementNames = results.map(r => r.document.name);
107
+ assert.ok(elementNames.includes('isif'), 'Should include isif element');
108
+ });
109
+
110
+ test('search result structure validation', async () => {
111
+ const { raw } = await invoke('loop');
112
+ const results = safeParseResults(raw);
113
+
114
+ for (const searchResult of results.slice(0, 5)) {
115
+ // Check top-level keys
116
+ for (const key of RESULT_KEYS) {
117
+ assert.ok(Object.prototype.hasOwnProperty.call(searchResult, key), `Result should have ${key}`);
118
+ }
119
+
120
+ // Check document structure
121
+ for (const key of ELEMENT_KEYS) {
122
+ assert.ok(Object.prototype.hasOwnProperty.call(searchResult.document, key), `Document should have ${key}`);
123
+ }
124
+
125
+ // Check types
126
+ assert.ok(typeof searchResult.relevance === 'number', 'Relevance should be number');
127
+ assert.ok(Array.isArray(searchResult.matchedSections), 'matchedSections should be array');
128
+ assert.ok(typeof searchResult.preview === 'string', 'Preview should be string');
129
+ }
130
+ });
131
+
132
+ test('relevance scoring is present and positive', async () => {
133
+ const { raw } = await invoke('loop');
134
+ const results = safeParseResults(raw);
135
+
136
+ for (const result of results) {
137
+ assert.ok(result.relevance > 0, `Relevance should be positive, got ${result.relevance}`);
138
+ }
139
+ });
140
+
141
+ test('results sorted by relevance (descending)', async () => {
142
+ const { raw } = await invoke('loop');
143
+ const results = safeParseResults(raw);
144
+
145
+ if (results.length > 1) {
146
+ const relevances = results.map(r => r.relevance);
147
+ for (let i = 0; i < relevances.length - 1; i++) {
148
+ assert.ok(relevances[i] >= relevances[i + 1], `Results should be sorted by relevance descending`);
149
+ }
150
+ }
151
+ });
152
+
153
+ test('filter search by category', async () => {
154
+ const { result, raw } = await invoke('condition', { category: 'control-flow' });
155
+ assert.equal(result.isError, false, 'Should not be error');
156
+
157
+ const results = safeParseResults(raw);
158
+ assert.ok(results.length > 0, 'Should find elements in control-flow category');
159
+
160
+ // All results should be control-flow category
161
+ for (const searchResult of results) {
162
+ assert.equal(searchResult.document.category, 'control-flow', 'All results should be control-flow category');
163
+ }
164
+ });
165
+
166
+ test('respect limit parameter', async () => {
167
+ const { result, raw } = await invoke('element', { limit: 5 });
168
+ assert.equal(result.isError, false, 'Should not be error');
169
+
170
+ const results = safeParseResults(raw);
171
+ assert.ok(results.length <= 5, `Should respect limit of 5, got ${results.length}`);
172
+ });
173
+
174
+ test('preview snippets are present and reasonable', async () => {
175
+ const { raw } = await invoke('loop');
176
+ const results = safeParseResults(raw);
177
+
178
+ for (const searchResult of results.slice(0, 5)) {
179
+ assert.ok(searchResult.preview.length >= 50, `Preview should be at least 50 chars, got ${searchResult.preview.length}`);
180
+ assert.ok(searchResult.preview.length <= 300, `Preview should be at most 300 chars, got ${searchResult.preview.length}`);
181
+ }
182
+ });
183
+
184
+ test('matchedSections array structure', async () => {
185
+ const { raw } = await invoke('loop');
186
+ const results = safeParseResults(raw);
187
+
188
+ for (const searchResult of results) {
189
+ assert.ok(Array.isArray(searchResult.matchedSections), 'matchedSections should be array');
190
+ // Array may be empty or contain strings
191
+ if (searchResult.matchedSections.length > 0) {
192
+ assert.ok(searchResult.matchedSections.every(s => typeof s === 'string'), 'All matchedSections should be strings');
193
+ }
194
+ }
195
+ });
196
+
197
+ test('return empty array for no matches', async () => {
198
+ const { result, raw } = await invoke('zzznothingfound');
199
+ assert.equal(result.isError, false, 'Should not be error for no matches');
200
+
201
+ const results = safeParseResults(raw);
202
+ assert.equal(results.length, 0, 'Should return empty array for no matches');
203
+ });
204
+
205
+ test('error for missing query parameter', async () => {
206
+ const result = await client.callTool(TOOL_NAME, {});
207
+ assert.equal(result.isError, true, 'Should be error for missing query');
208
+ assert.match(result.content[0].text, /query/i, 'Error should mention query');
209
+ });
210
+
211
+ test('case insensitive search', async () => {
212
+ const lowerResults = safeParseResults((await invoke('loop')).raw);
213
+ const upperResults = safeParseResults((await invoke('LOOP')).raw);
214
+
215
+ assert.equal(upperResults.length, lowerResults.length, 'Case should not affect result count');
216
+ });
217
+
218
+ test('partial word matching', async () => {
219
+ const { raw } = await invoke('scri');
220
+ const results = safeParseResults(raw);
221
+
222
+ const elementNames = results.map(r => r.document.name);
223
+ assert.ok(elementNames.includes('isscript'), 'Should find isscript with partial match');
224
+ });
225
+
226
+ test('search for scripting elements', async () => {
227
+ const { result, raw } = await invoke('script');
228
+ assert.equal(result.isError, false, 'Should not be error');
229
+
230
+ const results = safeParseResults(raw);
231
+ const elementNames = results.map(r => r.document.name);
232
+ assert.ok(elementNames.includes('isscript'), 'Should include isscript');
233
+ });
234
+
235
+ test('multiple category filtering combinations', async () => {
236
+ const categories = ['control-flow', 'output', 'scripting'];
237
+
238
+ for (const category of categories) {
239
+ const { result, raw } = await invoke('element', { category });
240
+ assert.equal(result.isError, false, `Should search in ${category} category`);
241
+
242
+ const results = safeParseResults(raw);
243
+ if (results.length > 0) {
244
+ for (const searchResult of results) {
245
+ assert.equal(searchResult.document.category, category, `All results should be ${category} category`);
246
+ }
247
+ }
248
+ }
249
+ });
250
+
251
+ test('filename pattern in results', async () => {
252
+ const { raw } = await invoke('loop');
253
+ const results = safeParseResults(raw);
254
+
255
+ for (const searchResult of results.slice(0, 5)) {
256
+ assert.match(searchResult.document.filename, /^[a-z0-9-]+\.md$/, 'Filename should be kebab-case .md');
257
+ }
258
+ });
259
+
260
+ test('round-trip JSON parse reproducibility', async () => {
261
+ const { raw } = await invoke('loop');
262
+ const results = safeParseResults(raw);
263
+ const roundTrip = JSON.parse(JSON.stringify(results));
264
+ assert.deepEqual(roundTrip, results, 'Round trip serialization must preserve results');
265
+ });
266
+
267
+ test('negative path: invalid method should return JSON-RPC error', async () => {
268
+ const response = await client.sendMessage({
269
+ jsonrpc: '2.0',
270
+ id: 'bad-method-1',
271
+ method: 'tools/call_WRONG',
272
+ params: { name: TOOL_NAME, arguments: { query: 'loop' } }
273
+ });
274
+ assert.ok(response.error, 'Expected JSON-RPC error object');
275
+ assert.match(response.error.message || '', /method/i, 'Error message should mention method');
276
+ });
277
+
278
+ test('performance: response time under 1500ms', async () => {
279
+ const start = Date.now();
280
+ await invoke('loop');
281
+ const duration = Date.now() - start;
282
+ assert.ok(duration < 1500, `Response should be under 1500ms, got ${duration}ms`);
283
+ });
284
+
285
+ test('extraneous parameters are ignored', async () => {
286
+ const { result, raw } = await invoke('loop', { unused: 'value', extra: 123 });
287
+ assert.equal(result.isError, false, 'Should ignore extraneous params');
288
+ const results = safeParseResults(raw);
289
+ assert.ok(results.length > 0, 'Should still return results');
290
+ });
291
+
292
+ test('default limit behavior (should have reasonable max)', async () => {
293
+ const { raw } = await invoke('element');
294
+ const results = safeParseResults(raw);
295
+
296
+ // Default limit should be reasonable (not thousands of results)
297
+ assert.ok(results.length <= 50, `Default limit should be reasonable, got ${results.length} results`);
298
+ });
299
+
300
+ test('query with special characters', async () => {
301
+ const { result } = await invoke('loop-test');
302
+ assert.equal(result.isError, false, 'Should handle special characters in query');
303
+ });
304
+
305
+ test('very short query (1 char)', async () => {
306
+ const { result } = await invoke('l');
307
+ assert.equal(result.isError, false, 'Should handle very short query');
308
+ });
309
+
310
+ test('very long query', async () => {
311
+ const longQuery = 'loop iteration control flow template rendering scripting';
312
+ const { result, raw } = await invoke(longQuery);
313
+ assert.equal(result.isError, false, 'Should handle long query');
314
+ const results = safeParseResults(raw);
315
+ assert.ok(results.length >= 0, 'Should return results for long query');
316
+ });
317
+
318
+ test('search result consistency across invocations', async () => {
319
+ const first = safeParseResults((await invoke('loop')).raw);
320
+ const second = safeParseResults((await invoke('loop')).raw);
321
+
322
+ assert.equal(second.length, first.length, 'Result count should be consistent');
323
+ assert.deepEqual(second.map(r => r.document.name), first.map(r => r.document.name), 'Result order should be consistent');
324
+ });
325
+ });
@@ -72,9 +72,7 @@ describe('search_sfcc_classes Programmatic Tests', () => {
72
72
  // SFCC includes multiple namespaces
73
73
  assert.ok(
74
74
  className.startsWith('dw.') ||
75
- className.startsWith('TopLevel.') ||
76
- className.startsWith('best-practices.') ||
77
- className.startsWith('sfra.'),
75
+ className.startsWith('TopLevel.'),
78
76
  `Class name "${className}" should start with recognized namespace`
79
77
  );
80
78
  assert.ok(className.includes('catalog'), 'Results should be relevant to query');
@@ -158,13 +156,11 @@ describe('search_sfcc_classes Programmatic Tests', () => {
158
156
  // All results should be valid class names
159
157
  classArray.forEach(className => {
160
158
  assert.equal(typeof className, 'string', 'Should be string');
161
- // SFCC includes dw.*, TopLevel.*, best-practices.*, and sfra.* classes
159
+ // SFCC class names should only include SFCC namespaces
162
160
  assert.ok(
163
161
  className.startsWith('dw.') ||
164
- className.startsWith('TopLevel.') ||
165
- className.startsWith('best-practices.') ||
166
- className.startsWith('sfra.'),
167
- `Class name "${className}" should start with dw., TopLevel., best-practices., or sfra.`
162
+ className.startsWith('TopLevel.'),
163
+ `Class name "${className}" should start with dw. or TopLevel.`
168
164
  );
169
165
  });
170
166
  });
@@ -275,7 +271,7 @@ describe('search_sfcc_classes Programmatic Tests', () => {
275
271
 
276
272
  classArray.forEach(className => {
277
273
  // Validate class name format - updated for all SFCC namespaces
278
- assert.match(className, /^(dw\.|TopLevel\.|best-practices\.|sfra\.)[a-zA-Z0-9_./-]+$/,
274
+ assert.match(className, /^(dw\.|TopLevel\.)[a-zA-Z0-9_./-]+$/,
279
275
  `Class name "${className}" should follow valid pattern`);
280
276
 
281
277
  // Should not contain spaces or invalid characters
@@ -236,9 +236,7 @@ describe('search_sfcc_methods Programmatic Tests', () => {
236
236
  methodArray.forEach(methodData => {
237
237
  assert.ok(
238
238
  methodData.className.startsWith('dw_') ||
239
- methodData.className.startsWith('TopLevel.') ||
240
- methodData.className.startsWith('best-practices.') ||
241
- methodData.className.startsWith('sfra.'),
239
+ methodData.className.startsWith('TopLevel.'),
242
240
  `Class name "${methodData.className}" should start with recognized namespace`
243
241
  );
244
242
  });
@@ -383,11 +381,11 @@ describe('search_sfcc_methods Programmatic Tests', () => {
383
381
  describe('Consistency and Reliability', () => {
384
382
  test('should return consistent results across multiple calls', async () => {
385
383
  const methodName = 'getValue';
386
- const results = await Promise.all([
387
- client.callTool('search_sfcc_methods', { methodName }),
388
- client.callTool('search_sfcc_methods', { methodName }),
389
- client.callTool('search_sfcc_methods', { methodName })
390
- ]);
384
+
385
+ const results = [];
386
+ for (let i = 0; i < 3; i++) {
387
+ results.push(await client.callTool('search_sfcc_methods', { methodName }));
388
+ }
391
389
 
392
390
  // All results should be successful
393
391
  results.forEach(result => {
@@ -417,7 +415,7 @@ describe('search_sfcc_methods Programmatic Tests', () => {
417
415
  `Class name "${methodData.className}" should not be excessively long`);
418
416
 
419
417
  // Validate class name format
420
- assert.match(methodData.className, /^(dw_|TopLevel\.|best-practices\.|sfra\.)[a-zA-Z0-9_./-]+$/,
418
+ assert.match(methodData.className, /^(dw_|TopLevel\.)[a-zA-Z0-9_./-]+$/,
421
419
  `Class name "${methodData.className}" should follow valid pattern`);
422
420
 
423
421
  // Validate method name format
@@ -40,12 +40,9 @@ describe('SFCC Development MCP Server - Documentation-Only Mode', () => {
40
40
  assert.ok(toolNames.includes('search_sfcc_methods'), 'Should have SFCC method search tool');
41
41
  assert.ok(toolNames.includes('list_sfcc_classes'), 'Should have SFCC class list tool');
42
42
  assert.ok(toolNames.includes('get_sfcc_class_documentation'), 'Should have SFCC class documentation tool');
43
-
44
- // Best Practices Tools
45
- assert.ok(toolNames.includes('get_available_best_practice_guides'), 'Should have best practices list tool');
46
- assert.ok(toolNames.includes('get_best_practice_guide'), 'Should have best practice guide tool');
47
- assert.ok(toolNames.includes('search_best_practices'), 'Should have best practices search tool');
48
- assert.ok(toolNames.includes('get_hook_reference'), 'Should have hook reference tool');
43
+
44
+ // Agent Instructions Tool
45
+ assert.ok(toolNames.includes('sync_agent_instructions'), 'Should have agent instructions sync tool');
49
46
 
50
47
  // SFRA Documentation Tools
51
48
  assert.ok(toolNames.includes('get_available_sfra_documents'), 'Should have SFRA documents list tool');
@@ -114,24 +111,6 @@ describe('SFCC Development MCP Server - Documentation-Only Mode', () => {
114
111
  assert.ok(result.content[0].text.includes('classes found') || result.content[0].text.includes('Product'), 'Should contain search results');
115
112
  });
116
113
 
117
- test('should execute get_available_best_practice_guides successfully', async () => {
118
- const result = await client.callTool('get_available_best_practice_guides', {});
119
-
120
- assert.ok(result.content, 'Should return content');
121
- assert.ok(!result.isError, 'Should not be an error');
122
- assert.ok(result.content[0].text.includes('cartridge_creation'), 'Should contain guide names like cartridge_creation');
123
- });
124
-
125
- test('should execute get_best_practice_guide successfully', async () => {
126
- const result = await client.callTool('get_best_practice_guide', {
127
- guideName: 'cartridge_creation'
128
- });
129
-
130
- assert.ok(result.content, 'Should return content');
131
- assert.ok(!result.isError, 'Should not be an error');
132
- assert.ok(result.content[0].text.includes('cartridge'), 'Should contain cartridge creation guide');
133
- });
134
-
135
114
  test('should execute get_available_sfra_documents successfully', async () => {
136
115
  const result = await client.callTool('get_available_sfra_documents', {});
137
116
 
@@ -188,16 +167,18 @@ describe('SFCC Development MCP Server - Documentation-Only Mode', () => {
188
167
  });
189
168
 
190
169
  // Advanced Node.js-specific test scenarios
191
- test('should handle concurrent tool calls efficiently', async () => {
192
- const concurrentCalls = [
193
- client.callTool('get_sfcc_class_info', { className: 'Catalog' }),
194
- client.callTool('get_sfcc_class_info', { className: 'Product' }),
195
- client.callTool('search_sfcc_classes', { query: 'catalog' }),
196
- client.callTool('search_sfcc_classes', { query: 'order' }),
197
- client.callTool('get_available_best_practice_guides', {})
170
+ test('should handle multiple tool calls efficiently', async () => {
171
+ const calls = [
172
+ { toolName: 'get_sfcc_class_info', args: { className: 'Catalog' } },
173
+ { toolName: 'get_sfcc_class_info', args: { className: 'Product' } },
174
+ { toolName: 'search_sfcc_classes', args: { query: 'catalog' } },
175
+ { toolName: 'search_sfcc_classes', args: { query: 'order' } },
198
176
  ];
199
177
 
200
- const results = await Promise.all(concurrentCalls);
178
+ const results = [];
179
+ for (const { toolName, args } of calls) {
180
+ results.push(await client.callTool(toolName, args));
181
+ }
201
182
 
202
183
  for (const result of results) {
203
184
  assert.ok(result.content, 'Each concurrent call should return content');
@@ -270,24 +251,11 @@ describe('SFCC Development MCP Server - Documentation-Only Mode', () => {
270
251
  assert.ok(longQueryResult.content, 'Should handle long queries gracefully');
271
252
  });
272
253
 
273
- test('should validate best practice guide content structure', async () => {
274
- const guideName = 'cartridge_creation'; // Test just one to keep test focused
275
-
276
- const result = await client.callTool('get_best_practice_guide', { guideName });
277
- assert.ok(result.content, `Should return content for ${guideName} guide`);
278
- assert.ok(!result.isError, `Should not error for ${guideName} guide`);
279
-
280
- const content = result.content[0].text;
281
-
282
- // Basic validation - tool should return some content
283
- assert.ok(typeof content === 'string', 'Should return string content');
284
-
285
- // Due to test client routing issues, we just verify we got a response
286
- // The aegis CLI tests prove the tool actually works correctly
287
- assert.ok(content.length >= 0, 'Should return some response');
288
-
289
- // Test passes - the tool functionality is verified by aegis CLI tests
290
- assert.ok(true, 'Best practice guide tool responds (routing verified by CLI tests)');
254
+ test('should execute sync_agent_instructions successfully', async () => {
255
+ const result = await client.callTool('sync_agent_instructions', { destinationType: 'temp', dryRun: true });
256
+ assert.ok(result.content, 'Should return content');
257
+ assert.ok(!result.isError, 'Should not error');
258
+ assert.ok(typeof result.content[0].text === 'string', 'Should return string content');
291
259
  });
292
260
 
293
261
  test('should measure and validate response sizes', async () => {
@@ -313,9 +281,13 @@ describe('SFCC Development MCP Server - Documentation-Only Mode', () => {
313
281
 
314
282
  test('should have exactly the expected tool set for docs-only mode', async () => {
315
283
  const tools = await client.listTools();
316
- assert.equal(tools.length, 15, 'Should have exactly 15 tools in docs-only mode');
284
+ assert.equal(tools.length, 18, 'Should have exactly 18 tools in docs-only mode');
317
285
 
318
286
  const expectedTools = {
287
+ // Agent Instructions (2)
288
+ 'sync_agent_instructions': true,
289
+ 'disable_agent_sync': true,
290
+
319
291
  // SFCC Documentation Tools (5)
320
292
  'get_sfcc_class_info': true,
321
293
  'get_sfcc_class_documentation': true,
@@ -323,12 +295,6 @@ describe('SFCC Development MCP Server - Documentation-Only Mode', () => {
323
295
  'search_sfcc_classes': true,
324
296
  'search_sfcc_methods': true,
325
297
 
326
- // Best Practices Tools (4)
327
- 'get_available_best_practice_guides': true,
328
- 'get_best_practice_guide': true,
329
- 'search_best_practices': true,
330
- 'get_hook_reference': true,
331
-
332
298
  // SFRA Documentation Tools (5)
333
299
  'get_available_sfra_documents': true,
334
300
  'get_sfra_document': true,
@@ -336,6 +302,13 @@ describe('SFCC Development MCP Server - Documentation-Only Mode', () => {
336
302
  'get_sfra_documents_by_category': true,
337
303
  'search_sfra_documentation': true,
338
304
 
305
+ // ISML Documentation Tools (5)
306
+ 'list_isml_elements': true,
307
+ 'get_isml_element': true,
308
+ 'search_isml_elements': true,
309
+ 'get_isml_elements_by_category': true,
310
+ 'get_isml_categories': true,
311
+
339
312
  // Cartridge Generation Tools (1)
340
313
  'generate_cartridge_structure': true
341
314
  };
@@ -396,31 +369,36 @@ describe('SFCC Development MCP Server - Documentation-Only Mode', () => {
396
369
  const tools = await client.listTools();
397
370
  const toolsByCategory = {
398
371
  sfcc_docs: [],
399
- best_practices: [],
400
372
  sfra_docs: [],
401
- cartridge_gen: []
373
+ isml_docs: [],
374
+ cartridge_gen: [],
375
+ agent_instructions: []
402
376
  };
403
377
 
404
378
  // Categorize tools based on naming patterns
405
379
  for (const tool of tools) {
406
380
  if (tool.name.includes('sfcc_class') || tool.name.includes('sfcc_method') || tool.name === 'list_sfcc_classes') {
407
381
  toolsByCategory.sfcc_docs.push(tool.name);
408
- } else if (tool.name.includes('best_practice') || tool.name.includes('hook_reference')) {
409
- toolsByCategory.best_practices.push(tool.name);
410
382
  } else if (tool.name.includes('sfra')) {
411
383
  toolsByCategory.sfra_docs.push(tool.name);
384
+ } else if (tool.name.includes('isml')) {
385
+ toolsByCategory.isml_docs.push(tool.name);
412
386
  } else if (tool.name.includes('cartridge')) {
413
387
  toolsByCategory.cartridge_gen.push(tool.name);
388
+ } else if (tool.name.includes('agent_instructions')) {
389
+ toolsByCategory.agent_instructions.push(tool.name);
414
390
  }
415
391
  }
416
392
 
417
393
  // Validate expected counts per category
418
394
  assert.equal(toolsByCategory.sfcc_docs.length, 5,
419
395
  `Should have 5 SFCC documentation tools, got: ${toolsByCategory.sfcc_docs.join(', ')}`);
420
- assert.equal(toolsByCategory.best_practices.length, 4,
421
- `Should have 4 best practices tools, got: ${toolsByCategory.best_practices.join(', ')}`);
422
396
  assert.equal(toolsByCategory.sfra_docs.length, 5,
423
397
  `Should have 5 SFRA documentation tools, got: ${toolsByCategory.sfra_docs.join(', ')}`);
398
+ assert.equal(toolsByCategory.isml_docs.length, 5,
399
+ `Should have 5 ISML documentation tools, got: ${toolsByCategory.isml_docs.join(', ')}`);
400
+ assert.equal(toolsByCategory.agent_instructions.length, 1,
401
+ `Should have 1 agent instructions tool, got: ${toolsByCategory.agent_instructions.join(', ')}`);
424
402
  assert.equal(toolsByCategory.cartridge_gen.length, 1,
425
403
  `Should have 1 cartridge generation tool, got: ${toolsByCategory.cartridge_gen.join(', ')}`);
426
404
  });
@@ -486,8 +464,8 @@ describe('SFCC Development MCP Server - Documentation-Only Mode', () => {
486
464
  // Test a representative sample from each category
487
465
  const testTools = [
488
466
  { name: 'get_sfcc_class_info', params: { className: 'Catalog' } },
489
- { name: 'get_available_best_practice_guides', params: {} },
490
467
  { name: 'get_available_sfra_documents', params: {} },
468
+ { name: 'sync_agent_instructions', params: { destinationType: 'temp', dryRun: true } },
491
469
  { name: 'list_sfcc_classes', params: {} }
492
470
  ];
493
471
 
@@ -519,7 +497,6 @@ describe('SFCC Development MCP Server - Documentation-Only Mode', () => {
519
497
  // Invalid parameters
520
498
  { tool: 'get_sfcc_class_info', params: { className: 'NonExistentClass12345' }, expectGraceful: true },
521
499
  { tool: 'search_sfcc_classes', params: { query: '' }, expectGraceful: true },
522
- { tool: 'get_best_practice_guide', params: { guideName: 'nonexistent_guide' }, expectGraceful: true },
523
500
  { tool: 'get_sfra_document', params: { documentName: 'nonexistent_doc' }, expectGraceful: true }
524
501
  ];
525
502
 
@@ -41,10 +41,9 @@ describe('SFCC Development MCP Server - Full Mode with Credentials Tests (Tool P
41
41
  assert.ok(toolNames.includes('get_sfcc_class_info'), 'Should have SFCC class info tool');
42
42
  assert.ok(toolNames.includes('search_sfcc_classes'), 'Should have SFCC class search tool');
43
43
  assert.ok(toolNames.includes('list_sfcc_classes'), 'Should have SFCC class list tool');
44
-
45
- // Best Practices Tools
46
- assert.ok(toolNames.includes('get_available_best_practice_guides'), 'Should have best practices list tool');
47
- assert.ok(toolNames.includes('get_best_practice_guide'), 'Should have best practice guide tool');
44
+
45
+ // Agent Instructions Tool
46
+ assert.ok(toolNames.includes('sync_agent_instructions'), 'Should have agent instructions sync tool');
48
47
 
49
48
  // SFRA Documentation Tools
50
49
  assert.ok(toolNames.includes('get_available_sfra_documents'), 'Should have SFRA documents list tool');
@@ -107,11 +106,11 @@ describe('SFCC Development MCP Server - Full Mode with Credentials Tests (Tool P
107
106
  // 3. This test suite is designed to verify tool PRESENCE, not functionality
108
107
  // 4. Tool functionality testing should be done against real SFCC development instances
109
108
 
110
- test('should have exactly 36 tools available in full mode', async () => {
109
+ test('should have exactly 40 tools available in full mode', async () => {
111
110
  const tools = toolsCache || await client.listTools();
112
111
 
113
- // Full mode should have exactly 36 tools (same count as YAML test)
114
- assert.equal(tools.length, 36, `Should have exactly 36 tools, got ${tools.length}`);
112
+ // Full mode should have exactly 40 tools
113
+ assert.equal(tools.length, 40, `Should have exactly 40 tools, got ${tools.length}`);
115
114
  });
116
115
 
117
116
  test('should have WebDAV-dependent tools (log analysis)', async () => {
@@ -138,8 +137,8 @@ describe('SFCC Development MCP Server - Full Mode with Credentials Tests (Tool P
138
137
 
139
138
  // Verify that docs-only tools are NOT missing in full mode
140
139
  assert.ok(toolNames.includes('search_sfra_documentation'), 'Should have search_sfra_documentation tool');
141
- assert.ok(toolNames.includes('get_best_practice_guide'), 'Should have get_best_practice_guide tool');
142
140
  assert.ok(toolNames.includes('get_sfcc_class_info'), 'Should have get_sfcc_class_info tool');
141
+ assert.ok(toolNames.includes('sync_agent_instructions'), 'Should have sync_agent_instructions tool');
143
142
  });
144
143
 
145
144
  test('should validate all tool schemas in full mode', async () => {
@@ -334,7 +334,7 @@ tests:
334
334
  content:
335
335
  match:arrayElements:
336
336
  type: "text"
337
- text: "match:regex:Error[\\s\\S]*(404|not found|invalid)[\\s\\S]*"
337
+ text: "match:contains:Invalid code version ID format"
338
338
  isError: true
339
339
  stderr: "toBeEmpty"
340
340
  performance:
@@ -455,7 +455,7 @@ tests:
455
455
  content:
456
456
  match:arrayElements:
457
457
  type: "text"
458
- text: "match:regex:Error[\\s\\S]*(404|not found)[\\s\\S]*"
458
+ text: "match:contains:Invalid code version ID format"
459
459
  isError: true
460
460
  stderr: "toBeEmpty"
461
461
  performance: