@sfdxy/mule-lint 1.18.0 → 1.19.0

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 (245) hide show
  1. package/README.md +154 -150
  2. package/dist/bin/mule-lint-mcp.js.map +1 -1
  3. package/dist/bin/mule-lint.js +4 -3
  4. package/dist/bin/mule-lint.js.map +1 -1
  5. package/dist/package.json +26 -15
  6. package/dist/src/core/ComplexityCalculator.d.ts.map +1 -1
  7. package/dist/src/core/ComplexityCalculator.js.map +1 -1
  8. package/dist/src/core/FileScanner.d.ts.map +1 -1
  9. package/dist/src/core/FileScanner.js.map +1 -1
  10. package/dist/src/core/MetricsAggregator.d.ts.map +1 -1
  11. package/dist/src/core/MetricsAggregator.js.map +1 -1
  12. package/dist/src/core/MetricsCollector.d.ts.map +1 -1
  13. package/dist/src/core/MetricsCollector.js +1 -2
  14. package/dist/src/core/MetricsCollector.js.map +1 -1
  15. package/dist/src/core/QualityGateEvaluator.d.ts.map +1 -1
  16. package/dist/src/core/QualityGateEvaluator.js.map +1 -1
  17. package/dist/src/core/XPathHelper.d.ts +9 -1
  18. package/dist/src/core/XPathHelper.d.ts.map +1 -1
  19. package/dist/src/core/XPathHelper.js +4 -9
  20. package/dist/src/core/XPathHelper.js.map +1 -1
  21. package/dist/src/core/XmlParser.d.ts.map +1 -1
  22. package/dist/src/core/XmlParser.js.map +1 -1
  23. package/dist/src/core/YamlParser.d.ts.map +1 -1
  24. package/dist/src/core/YamlParser.js.map +1 -1
  25. package/dist/src/core/errors.js.map +1 -1
  26. package/dist/src/engine/LintEngine.d.ts.map +1 -1
  27. package/dist/src/engine/LintEngine.js +2 -4
  28. package/dist/src/engine/LintEngine.js.map +1 -1
  29. package/dist/src/formatter/MuleXmlFormatter.d.ts.map +1 -1
  30. package/dist/src/formatter/MuleXmlFormatter.js +7 -1
  31. package/dist/src/formatter/MuleXmlFormatter.js.map +1 -1
  32. package/dist/src/formatter/index.d.ts +2 -2
  33. package/dist/src/formatter/index.d.ts.map +1 -1
  34. package/dist/src/formatter/index.js.map +1 -1
  35. package/dist/src/formatters/CsvFormatter.js.map +1 -1
  36. package/dist/src/formatters/HtmlFormatter.js +0 -1
  37. package/dist/src/formatters/HtmlFormatter.js.map +1 -1
  38. package/dist/src/formatters/JsonFormatter.d.ts.map +1 -1
  39. package/dist/src/formatters/JsonFormatter.js.map +1 -1
  40. package/dist/src/formatters/SarifFormatter.js.map +1 -1
  41. package/dist/src/formatters/TableFormatter.js.map +1 -1
  42. package/dist/src/formatters/html/components/Icons.js +1 -1
  43. package/dist/src/formatters/html/components/Icons.js.map +1 -1
  44. package/dist/src/formatters/html/components/MetricCard.d.ts.map +1 -1
  45. package/dist/src/formatters/html/components/MetricCard.js.map +1 -1
  46. package/dist/src/formatters/html/components/Modal.d.ts.map +1 -1
  47. package/dist/src/formatters/html/components/Modal.js.map +1 -1
  48. package/dist/src/formatters/html/components/RatingBadge.d.ts.map +1 -1
  49. package/dist/src/formatters/html/components/RatingBadge.js +6 -6
  50. package/dist/src/formatters/html/components/RatingBadge.js.map +1 -1
  51. package/dist/src/formatters/html/index.d.ts +2 -2
  52. package/dist/src/formatters/html/index.d.ts.map +1 -1
  53. package/dist/src/formatters/html/index.js.map +1 -1
  54. package/dist/src/formatters/html/scripts/charts.d.ts.map +1 -1
  55. package/dist/src/formatters/html/scripts/charts.js +45 -12
  56. package/dist/src/formatters/html/scripts/charts.js.map +1 -1
  57. package/dist/src/formatters/html/scripts/index.d.ts.map +1 -1
  58. package/dist/src/formatters/html/scripts/index.js.map +1 -1
  59. package/dist/src/formatters/html/scripts/renderer.d.ts.map +1 -1
  60. package/dist/src/formatters/html/scripts/renderer.js +175 -35
  61. package/dist/src/formatters/html/scripts/renderer.js.map +1 -1
  62. package/dist/src/formatters/html/sections/Header.d.ts.map +1 -1
  63. package/dist/src/formatters/html/sections/Header.js.map +1 -1
  64. package/dist/src/formatters/html/sections/LintSummary.d.ts.map +1 -1
  65. package/dist/src/formatters/html/sections/LintSummary.js.map +1 -1
  66. package/dist/src/formatters/html/sections/QualityRatings.js.map +1 -1
  67. package/dist/src/formatters/html/sections/Sidebar.d.ts.map +1 -1
  68. package/dist/src/formatters/html/sections/Sidebar.js.map +1 -1
  69. package/dist/src/formatters/html/styles/badges.d.ts.map +1 -1
  70. package/dist/src/formatters/html/styles/badges.js.map +1 -1
  71. package/dist/src/formatters/html/styles/index.d.ts.map +1 -1
  72. package/dist/src/formatters/html/styles/index.js.map +1 -1
  73. package/dist/src/formatters/html/theme.js.map +1 -1
  74. package/dist/src/formatters/html/views/Dashboard.js +5 -5
  75. package/dist/src/formatters/html/views/Dashboard.js.map +1 -1
  76. package/dist/src/formatters/html/views/IssuesView.d.ts.map +1 -1
  77. package/dist/src/formatters/html/views/IssuesView.js.map +1 -1
  78. package/dist/src/formatters/index.js.map +1 -1
  79. package/dist/src/mcp/index.d.ts.map +1 -1
  80. package/dist/src/mcp/index.js +12 -511
  81. package/dist/src/mcp/index.js.map +1 -1
  82. package/dist/src/mcp/prompts/index.d.ts +6 -0
  83. package/dist/src/mcp/prompts/index.d.ts.map +1 -0
  84. package/dist/src/mcp/prompts/index.js +87 -0
  85. package/dist/src/mcp/prompts/index.js.map +1 -0
  86. package/dist/src/mcp/resources/index.d.ts +6 -0
  87. package/dist/src/mcp/resources/index.d.ts.map +1 -0
  88. package/dist/src/mcp/resources/index.js +189 -0
  89. package/dist/src/mcp/resources/index.js.map +1 -0
  90. package/dist/src/mcp/tools/formatMuleXml.d.ts +6 -0
  91. package/dist/src/mcp/tools/formatMuleXml.d.ts.map +1 -0
  92. package/dist/src/mcp/tools/formatMuleXml.js +133 -0
  93. package/dist/src/mcp/tools/formatMuleXml.js.map +1 -0
  94. package/dist/src/mcp/tools/getRuleDetails.d.ts +6 -0
  95. package/dist/src/mcp/tools/getRuleDetails.d.ts.map +1 -0
  96. package/dist/src/mcp/tools/getRuleDetails.js +44 -0
  97. package/dist/src/mcp/tools/getRuleDetails.js.map +1 -0
  98. package/dist/src/mcp/tools/runLintAnalysis.d.ts +7 -0
  99. package/dist/src/mcp/tools/runLintAnalysis.d.ts.map +1 -0
  100. package/dist/src/mcp/tools/runLintAnalysis.js +76 -0
  101. package/dist/src/mcp/tools/runLintAnalysis.js.map +1 -0
  102. package/dist/src/mcp/tools/validateSnippet.d.ts +6 -0
  103. package/dist/src/mcp/tools/validateSnippet.d.ts.map +1 -0
  104. package/dist/src/mcp/tools/validateSnippet.js +59 -0
  105. package/dist/src/mcp/tools/validateSnippet.js.map +1 -0
  106. package/dist/src/quality/calculator.d.ts.map +1 -1
  107. package/dist/src/quality/calculator.js +1 -1
  108. package/dist/src/quality/calculator.js.map +1 -1
  109. package/dist/src/quality/index.d.ts.map +1 -1
  110. package/dist/src/quality/index.js.map +1 -1
  111. package/dist/src/quality/thresholds.js.map +1 -1
  112. package/dist/src/quality/types.d.ts.map +1 -1
  113. package/dist/src/rules/api-led/ApiLedRules.d.ts.map +1 -1
  114. package/dist/src/rules/api-led/ApiLedRules.js +6 -2
  115. package/dist/src/rules/api-led/ApiLedRules.js.map +1 -1
  116. package/dist/src/rules/api-led/SingleSystemSapiRule.d.ts.map +1 -1
  117. package/dist/src/rules/api-led/SingleSystemSapiRule.js.map +1 -1
  118. package/dist/src/rules/base/BaseRule.d.ts.map +1 -1
  119. package/dist/src/rules/base/BaseRule.js.map +1 -1
  120. package/dist/src/rules/base/ProjectRule.d.ts.map +1 -1
  121. package/dist/src/rules/base/ProjectRule.js.map +1 -1
  122. package/dist/src/rules/complexity/FlowComplexityRule.d.ts.map +1 -1
  123. package/dist/src/rules/complexity/FlowComplexityRule.js.map +1 -1
  124. package/dist/src/rules/dataweave/DataWeaveRules.d.ts.map +1 -1
  125. package/dist/src/rules/dataweave/DataWeaveRules.js +1 -3
  126. package/dist/src/rules/dataweave/DataWeaveRules.js.map +1 -1
  127. package/dist/src/rules/dataweave/Java17DWErrorHandlingRule.d.ts.map +1 -1
  128. package/dist/src/rules/dataweave/Java17DWErrorHandlingRule.js.map +1 -1
  129. package/dist/src/rules/documentation/DisplayNameRule.d.ts.map +1 -1
  130. package/dist/src/rules/documentation/DisplayNameRule.js.map +1 -1
  131. package/dist/src/rules/documentation/FlowDescriptionRule.d.ts.map +1 -1
  132. package/dist/src/rules/documentation/FlowDescriptionRule.js.map +1 -1
  133. package/dist/src/rules/documentation/MissingDocNameRule.d.ts.map +1 -1
  134. package/dist/src/rules/documentation/MissingDocNameRule.js.map +1 -1
  135. package/dist/src/rules/error-handling/CorrelationIdRule.d.ts.map +1 -1
  136. package/dist/src/rules/error-handling/CorrelationIdRule.js.map +1 -1
  137. package/dist/src/rules/error-handling/GenericErrorRule.d.ts.map +1 -1
  138. package/dist/src/rules/error-handling/GenericErrorRule.js.map +1 -1
  139. package/dist/src/rules/error-handling/GlobalErrorHandlerRule.d.ts.map +1 -1
  140. package/dist/src/rules/error-handling/GlobalErrorHandlerRule.js.map +1 -1
  141. package/dist/src/rules/error-handling/HttpStatusRule.d.ts.map +1 -1
  142. package/dist/src/rules/error-handling/HttpStatusRule.js.map +1 -1
  143. package/dist/src/rules/error-handling/MissingErrorHandlerRule.d.ts.map +1 -1
  144. package/dist/src/rules/error-handling/MissingErrorHandlerRule.js.map +1 -1
  145. package/dist/src/rules/error-handling/TryScopeRule.d.ts.map +1 -1
  146. package/dist/src/rules/error-handling/TryScopeRule.js.map +1 -1
  147. package/dist/src/rules/experimental/ExperimentalRules.d.ts.map +1 -1
  148. package/dist/src/rules/experimental/ExperimentalRules.js +6 -2
  149. package/dist/src/rules/experimental/ExperimentalRules.js.map +1 -1
  150. package/dist/src/rules/governance/GovernanceRules.d.ts +2 -2
  151. package/dist/src/rules/governance/GovernanceRules.d.ts.map +1 -1
  152. package/dist/src/rules/governance/GovernanceRules.js +2 -2
  153. package/dist/src/rules/governance/GovernanceRules.js.map +1 -1
  154. package/dist/src/rules/http/HttpContentTypeRule.d.ts.map +1 -1
  155. package/dist/src/rules/http/HttpContentTypeRule.js.map +1 -1
  156. package/dist/src/rules/http/HttpTimeoutRule.d.ts.map +1 -1
  157. package/dist/src/rules/http/HttpTimeoutRule.js.map +1 -1
  158. package/dist/src/rules/http/HttpUserAgentRule.d.ts.map +1 -1
  159. package/dist/src/rules/http/HttpUserAgentRule.js.map +1 -1
  160. package/dist/src/rules/index.js.map +1 -1
  161. package/dist/src/rules/logging/ExcessiveLoggersRule.d.ts.map +1 -1
  162. package/dist/src/rules/logging/ExcessiveLoggersRule.js.map +1 -1
  163. package/dist/src/rules/logging/LoggerCategoryRule.d.ts.map +1 -1
  164. package/dist/src/rules/logging/LoggerCategoryRule.js.map +1 -1
  165. package/dist/src/rules/logging/LoggerInUntilSuccessfulRule.d.ts.map +1 -1
  166. package/dist/src/rules/logging/LoggerInUntilSuccessfulRule.js.map +1 -1
  167. package/dist/src/rules/logging/LoggerPayloadRule.d.ts.map +1 -1
  168. package/dist/src/rules/logging/LoggerPayloadRule.js.map +1 -1
  169. package/dist/src/rules/logging/NewLoggingRules.d.ts.map +1 -1
  170. package/dist/src/rules/logging/NewLoggingRules.js.map +1 -1
  171. package/dist/src/rules/naming/FlowCasingRule.d.ts.map +1 -1
  172. package/dist/src/rules/naming/FlowCasingRule.js.map +1 -1
  173. package/dist/src/rules/naming/FlowNamingRule.d.ts.map +1 -1
  174. package/dist/src/rules/naming/FlowNamingRule.js +3 -1
  175. package/dist/src/rules/naming/FlowNamingRule.js.map +1 -1
  176. package/dist/src/rules/naming/VariableNamingRule.d.ts.map +1 -1
  177. package/dist/src/rules/naming/VariableNamingRule.js.map +1 -1
  178. package/dist/src/rules/operations/CommentedCodeRule.d.ts.map +1 -1
  179. package/dist/src/rules/operations/CommentedCodeRule.js.map +1 -1
  180. package/dist/src/rules/operations/UnusedFlowRule.d.ts.map +1 -1
  181. package/dist/src/rules/operations/UnusedFlowRule.js.map +1 -1
  182. package/dist/src/rules/performance/AsyncErrorHandlerRule.d.ts.map +1 -1
  183. package/dist/src/rules/performance/AsyncErrorHandlerRule.js.map +1 -1
  184. package/dist/src/rules/performance/ConnectionPoolingRule.d.ts.map +1 -1
  185. package/dist/src/rules/performance/ConnectionPoolingRule.js.map +1 -1
  186. package/dist/src/rules/performance/LargeChoiceBlockRule.d.ts.map +1 -1
  187. package/dist/src/rules/performance/LargeChoiceBlockRule.js.map +1 -1
  188. package/dist/src/rules/performance/ReconnectionStrategyRule.d.ts.map +1 -1
  189. package/dist/src/rules/performance/ReconnectionStrategyRule.js.map +1 -1
  190. package/dist/src/rules/performance/ScatterGatherRoutesRule.d.ts.map +1 -1
  191. package/dist/src/rules/performance/ScatterGatherRoutesRule.js.map +1 -1
  192. package/dist/src/rules/security/EncryptionKeyInLogsRule.d.ts.map +1 -1
  193. package/dist/src/rules/security/EncryptionKeyInLogsRule.js.map +1 -1
  194. package/dist/src/rules/security/HardcodedCredentialsRule.d.ts.map +1 -1
  195. package/dist/src/rules/security/HardcodedCredentialsRule.js.map +1 -1
  196. package/dist/src/rules/security/HardcodedHttpRule.d.ts.map +1 -1
  197. package/dist/src/rules/security/HardcodedHttpRule.js +1 -9
  198. package/dist/src/rules/security/HardcodedHttpRule.js.map +1 -1
  199. package/dist/src/rules/security/InputValidationRule.d.ts.map +1 -1
  200. package/dist/src/rules/security/InputValidationRule.js +1 -3
  201. package/dist/src/rules/security/InputValidationRule.js.map +1 -1
  202. package/dist/src/rules/security/InsecureTlsRule.d.ts.map +1 -1
  203. package/dist/src/rules/security/InsecureTlsRule.js.map +1 -1
  204. package/dist/src/rules/security/RateLimitingRule.d.ts.map +1 -1
  205. package/dist/src/rules/security/RateLimitingRule.js.map +1 -1
  206. package/dist/src/rules/security/TlsVersionRule.d.ts.map +1 -1
  207. package/dist/src/rules/security/TlsVersionRule.js.map +1 -1
  208. package/dist/src/rules/standards/ApiKitValidationRule.d.ts.map +1 -1
  209. package/dist/src/rules/standards/ApiKitValidationRule.js.map +1 -1
  210. package/dist/src/rules/standards/AutoDiscoveryRule.d.ts.map +1 -1
  211. package/dist/src/rules/standards/AutoDiscoveryRule.js.map +1 -1
  212. package/dist/src/rules/standards/ChoiceAntiPatternRule.d.ts.map +1 -1
  213. package/dist/src/rules/standards/ChoiceAntiPatternRule.js.map +1 -1
  214. package/dist/src/rules/standards/CronExternalizedRule.d.ts.map +1 -1
  215. package/dist/src/rules/standards/CronExternalizedRule.js.map +1 -1
  216. package/dist/src/rules/standards/DeprecatedComponentRule.d.ts.map +1 -1
  217. package/dist/src/rules/standards/DeprecatedComponentRule.js.map +1 -1
  218. package/dist/src/rules/standards/DwlStandardsRule.d.ts.map +1 -1
  219. package/dist/src/rules/standards/DwlStandardsRule.js.map +1 -1
  220. package/dist/src/rules/standards/HttpPortPlaceholderRule.d.ts.map +1 -1
  221. package/dist/src/rules/standards/HttpPortPlaceholderRule.js.map +1 -1
  222. package/dist/src/rules/structure/StructureRules.d.ts.map +1 -1
  223. package/dist/src/rules/structure/StructureRules.js.map +1 -1
  224. package/dist/src/rules/yaml/YamlRules.d.ts.map +1 -1
  225. package/dist/src/rules/yaml/YamlRules.js +2 -7
  226. package/dist/src/rules/yaml/YamlRules.js.map +1 -1
  227. package/dist/src/types/Config.d.ts.map +1 -1
  228. package/dist/src/types/Config.js.map +1 -1
  229. package/dist/src/types/QualityGate.d.ts.map +1 -1
  230. package/dist/src/types/QualityGate.js.map +1 -1
  231. package/dist/src/types/Report.d.ts.map +1 -1
  232. package/dist/src/types/Rule.d.ts +1 -1
  233. package/dist/src/types/Rule.d.ts.map +1 -1
  234. package/docs/README.md +27 -27
  235. package/docs/best-practices/documentation-standards.md +20 -11
  236. package/docs/best-practices/folder-structure.md +16 -10
  237. package/docs/best-practices/mulesoft-best-practices.md +96 -94
  238. package/docs/best-practices/rules-catalog.md +316 -287
  239. package/docs/linter/architecture.md +70 -64
  240. package/docs/linter/extending.md +137 -128
  241. package/docs/linter/folder-structure.md +39 -38
  242. package/docs/linter/naming-conventions.md +80 -78
  243. package/docs/linter/rule-engine.md +306 -306
  244. package/docs/mcp-design.md +35 -21
  245. package/package.json +84 -73
@@ -1,48 +1,16 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  Object.defineProperty(exports, "__esModule", { value: true });
36
3
  exports.MuleLintMcpServer = void 0;
37
4
  const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
38
5
  const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
39
- const zod_1 = require("zod");
40
- const errors_1 = require("../core/errors");
41
6
  const LintEngine_1 = require("../engine/LintEngine");
42
7
  const rules_1 = require("../rules");
43
- const path = __importStar(require("path"));
44
- const fs = __importStar(require("fs"));
45
- const XmlParser_1 = require("../core/XmlParser");
8
+ const runLintAnalysis_1 = require("./tools/runLintAnalysis");
9
+ const getRuleDetails_1 = require("./tools/getRuleDetails");
10
+ const validateSnippet_1 = require("./tools/validateSnippet");
11
+ const formatMuleXml_1 = require("./tools/formatMuleXml");
12
+ const resources_1 = require("./resources");
13
+ const prompts_1 = require("./prompts");
46
14
  /**
47
15
  * Mule Lint MCP Server
48
16
  * Exposes linting capabilities via Model Context Protocol.
@@ -51,7 +19,6 @@ class MuleLintMcpServer {
51
19
  server;
52
20
  engine;
53
21
  constructor() {
54
- // eslint-disable-next-line @typescript-eslint/no-var-requires
55
22
  const packageJson = require('../../package.json');
56
23
  this.server = new mcp_js_1.McpServer({
57
24
  name: 'mule-lint',
@@ -60,12 +27,9 @@ class MuleLintMcpServer {
60
27
  // Initialize engine with partial config - let LintEngine apply DEFAULT_CONFIG for include/exclude
61
28
  const defaultConfig = {
62
29
  rules: {},
63
- // Do NOT set include/exclude to empty arrays - that overrides the defaults
64
- // LintEngine will use DEFAULT_CONFIG: include: ['src/main/mule/**/*.xml']
65
30
  defaultFormatter: 'json',
66
31
  failOnWarning: false,
67
32
  };
68
- // LintEngine takes EngineOptions, not just config
69
33
  this.engine = new LintEngine_1.LintEngine({
70
34
  rules: rules_1.ALL_RULES,
71
35
  config: defaultConfig,
@@ -75,479 +39,16 @@ class MuleLintMcpServer {
75
39
  this.setupPrompts();
76
40
  }
77
41
  setupTools() {
78
- // Tool: run_lint_analysis
79
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- MCP SDK generic type inference exceeds TS depth limits (TS2589)
80
- this.server.tool('run_lint_analysis', 'USE THIS TOOL FIRST to analyze a MuleSoft project. It scans the codebase for best practice violations, security issues (secure:: properties), and potential runtime errors. Returns a comprehensive report needed to identify what needs fixing.', {
81
- projectPath: zod_1.z
82
- .string()
83
- .describe('Absolute path to the MuleSoft project directory to scan'),
84
- }, async ({ projectPath }) => {
85
- try {
86
- const report = await this.engine.scan(projectPath);
87
- const summary = {
88
- totalFiles: report.summary.totalFiles,
89
- totalIssues: report.summary.bySeverity.error +
90
- report.summary.bySeverity.warning +
91
- report.summary.bySeverity.info,
92
- errors: report.summary.bySeverity.error,
93
- warnings: report.summary.bySeverity.warning,
94
- // Include quality metrics if available
95
- qualityMetrics: report.metrics ? {
96
- complexity: report.metrics.complexity,
97
- maintainability: report.metrics.maintainability,
98
- reliability: report.metrics.reliability,
99
- security: report.metrics.security,
100
- } : undefined,
101
- issues: report.files
102
- .map((r) => ({
103
- file: r.relativePath,
104
- issues: r.issues.map((i) => {
105
- // Get issueType from rule metadata
106
- const rule = (0, rules_1.getRuleById)(i.ruleId);
107
- return {
108
- ruleId: i.ruleId,
109
- message: i.message,
110
- line: i.line,
111
- column: i.column,
112
- severity: i.severity,
113
- issueType: rule?.issueType ?? 'code-smell',
114
- suggestion: i.suggestion,
115
- codeSnippet: i.codeSnippet,
116
- };
117
- }),
118
- }))
119
- .filter((r) => r.issues.length > 0),
120
- };
121
- return {
122
- content: [
123
- {
124
- type: 'text',
125
- text: JSON.stringify(summary, null, 2),
126
- },
127
- ],
128
- };
129
- }
130
- catch (error) {
131
- const errorMessage = (0, errors_1.getErrorMessage)(error);
132
- return {
133
- content: [
134
- {
135
- type: 'text',
136
- text: `Analysis failed: ${errorMessage}`,
137
- },
138
- ],
139
- isError: true,
140
- };
141
- }
142
- });
143
- // Tool: get_rule_details
144
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- MCP SDK generic type inference exceeds TS depth limits (TS2589)
145
- this.server.tool('get_rule_details', 'Retrieve detailed documentation for a specific linting rule ID (e.g., MULE-001). Use this to understand WHY a rule failed and HOW to fix it properly according to best practices.', {
146
- ruleId: zod_1.z
147
- .string()
148
- .describe('The ID of the rule to retrieve (e.g., "MULE-001", "DW-004")'),
149
- }, ({ ruleId }) => {
150
- const rule = (0, rules_1.getRuleById)(ruleId);
151
- if (!rule) {
152
- return {
153
- content: [
154
- {
155
- type: 'text',
156
- text: `Rule not found: ${ruleId}`,
157
- },
158
- ],
159
- isError: true,
160
- };
161
- }
162
- return {
163
- content: [
164
- {
165
- type: 'text',
166
- text: JSON.stringify({
167
- id: rule.id,
168
- name: rule.name,
169
- description: rule.description,
170
- category: rule.category,
171
- severity: rule.severity,
172
- issueType: rule.issueType ?? 'code-smell',
173
- }, null, 2),
174
- },
175
- ],
176
- };
177
- });
178
- // Tool: validate_snippet
179
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- MCP SDK generic type inference exceeds TS depth limits (TS2589)
180
- this.server.tool('validate_snippet', 'Validates a small XML or DataWeave code snippet in isolation. Use this to check syntax and basic rules on generated code BEFORE suggesting it to the user.', {
181
- code: zod_1.z.string().describe('The code snippet to validate'),
182
- type: zod_1.z.enum(['xml', 'dwl']).describe('The type of code (xml or dwl)'),
183
- }, ({ code, type }) => {
184
- try {
185
- // Create minimal context
186
- const context = {
187
- filePath: 'snippet.xml',
188
- relativePath: 'snippet.xml',
189
- projectRoot: '/tmp',
190
- config: { enabled: true, severity: 'info', options: {} },
191
- };
192
- // Filter relevant rules
193
- const applicableRules = rules_1.ALL_RULES.filter((r) => {
194
- if (type === 'dwl') {
195
- return r.category === 'dataweave';
196
- }
197
- return r.category !== 'dataweave'; // Approximate, XML rules
198
- });
199
- const issues = [];
200
- if (type === 'xml') {
201
- const result = (0, XmlParser_1.parseXml)(code, 'snippet.xml');
202
- if (!result.success || !result.document) {
203
- throw new Error(result.error ?? 'XML Parse Error');
204
- }
205
- for (const rule of applicableRules) {
206
- if (rule.validate) {
207
- issues.push(...rule.validate(result.document, context));
208
- }
209
- }
210
- }
211
- else if (type === 'dwl') {
212
- return {
213
- content: [
214
- {
215
- type: 'text',
216
- text: 'DWL snippet validation currently requires file context.',
217
- },
218
- ],
219
- };
220
- }
221
- return {
222
- content: [
223
- {
224
- type: 'text',
225
- text: JSON.stringify(issues, null, 2),
226
- },
227
- ],
228
- };
229
- }
230
- catch (error) {
231
- return {
232
- content: [
233
- {
234
- type: 'text',
235
- text: `Validation failed: ${(0, errors_1.getErrorMessage)(error)}`,
236
- },
237
- ],
238
- isError: true,
239
- };
240
- }
241
- });
242
- // Tool: format_mule_xml
243
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- MCP SDK generic type inference exceeds TS depth limits (TS2589)
244
- this.server.tool('format_mule_xml', 'Format Mule XML files using Prettier with Anypoint Studio-compatible defaults (4-space indent, 140 width, single-quote safe). Accepts a project path to format all XML files, a single file path, or raw XML content for inline formatting.', {
245
- projectPath: zod_1.z
246
- .string()
247
- .optional()
248
- .describe('Absolute path to a MuleSoft project directory — formats all XML in src/main/mule/'),
249
- filePath: zod_1.z
250
- .string()
251
- .optional()
252
- .describe('Absolute path to a single Mule XML file to format'),
253
- content: zod_1.z
254
- .string()
255
- .optional()
256
- .describe('Raw XML string to format inline (returns formatted text)'),
257
- check: zod_1.z
258
- .boolean()
259
- .optional()
260
- .describe('Dry-run mode: report which files need formatting without writing changes'),
261
- tabWidth: zod_1.z
262
- .number()
263
- .optional()
264
- .describe('Spaces per indent level (default: 4)'),
265
- printWidth: zod_1.z
266
- .number()
267
- .optional()
268
- .describe('Max line width before wrapping (default: 140)'),
269
- }, async ({ projectPath, filePath: singleFilePath, content, check, tabWidth, printWidth, }) => {
270
- try {
271
- const { formatXmlContent, formatFile, formatProject, } = await Promise.resolve().then(() => __importStar(require('../formatter/MuleXmlFormatter')));
272
- const options = { check, tabWidth, printWidth };
273
- // Mode 1: Inline content formatting
274
- if (content) {
275
- const result = await formatXmlContent(content, options);
276
- return {
277
- content: [
278
- {
279
- type: 'text',
280
- text: JSON.stringify({
281
- formatted: result.formatted,
282
- changed: result.changed,
283
- }, null, 2),
284
- },
285
- ],
286
- };
287
- }
288
- // Mode 2: Single file
289
- if (singleFilePath) {
290
- const result = await formatFile(singleFilePath, options);
291
- return {
292
- content: [
293
- {
294
- type: 'text',
295
- text: JSON.stringify(result, null, 2),
296
- },
297
- ],
298
- };
299
- }
300
- // Mode 3: Project
301
- if (projectPath) {
302
- const results = await formatProject(projectPath, options);
303
- const summary = {
304
- totalFiles: results.length,
305
- changed: results.filter((r) => r.changed).length,
306
- errors: results.filter((r) => r.error).length,
307
- files: results,
308
- };
309
- return {
310
- content: [
311
- {
312
- type: 'text',
313
- text: JSON.stringify(summary, null, 2),
314
- },
315
- ],
316
- };
317
- }
318
- return {
319
- content: [
320
- {
321
- type: 'text',
322
- text: 'Provide one of: projectPath, filePath, or content',
323
- },
324
- ],
325
- isError: true,
326
- };
327
- }
328
- catch (error) {
329
- const errorMessage = (0, errors_1.getErrorMessage)(error);
330
- return {
331
- content: [
332
- {
333
- type: 'text',
334
- text: `Formatting failed: ${errorMessage}`,
335
- },
336
- ],
337
- isError: true,
338
- };
339
- }
340
- });
42
+ (0, runLintAnalysis_1.registerRunLintAnalysis)(this.server, this.engine);
43
+ (0, getRuleDetails_1.registerGetRuleDetails)(this.server);
44
+ (0, validateSnippet_1.registerValidateSnippet)(this.server);
45
+ (0, formatMuleXml_1.registerFormatMuleXml)(this.server);
341
46
  }
342
47
  setupResources() {
343
- // Resource: rules
344
- this.server.registerResource('rules', 'mule-lint://rules', {
345
- description: 'A comprehensive catalog of all available linting rules. Read this to discover what rules are enforceable, their severity levels, and categories (e.g., Security, Performance, DataWeave).',
346
- mimeType: 'application/json',
347
- }, (uri) => {
348
- const rulesList = rules_1.ALL_RULES.map((r) => ({
349
- id: r.id,
350
- name: r.name,
351
- category: r.category,
352
- severity: r.severity,
353
- issueType: r.issueType ?? 'code-smell',
354
- description: r.description,
355
- }));
356
- return {
357
- contents: [
358
- {
359
- uri: uri.href,
360
- text: JSON.stringify(rulesList, null, 2),
361
- mimeType: 'application/json',
362
- },
363
- ],
364
- };
365
- });
366
- // Resource: docs
367
- this.server.registerResource('docs', new mcp_js_1.ResourceTemplate('mule-lint://docs/{slug}', {
368
- // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
369
- list: () => {
370
- return {
371
- resources: [
372
- {
373
- uri: 'mule-lint://docs/architecture',
374
- name: 'Architecture',
375
- mimeType: 'text/markdown',
376
- },
377
- {
378
- uri: 'mule-lint://docs/best-practices',
379
- name: 'Best Practices',
380
- mimeType: 'text/markdown',
381
- },
382
- {
383
- uri: 'mule-lint://docs/documentation-standards',
384
- name: 'Documentation Standards',
385
- mimeType: 'text/markdown',
386
- },
387
- {
388
- uri: 'mule-lint://docs/extending',
389
- name: 'Extending',
390
- mimeType: 'text/markdown',
391
- },
392
- {
393
- uri: 'mule-lint://docs/folder-structure',
394
- name: 'Folder Structure',
395
- mimeType: 'text/markdown',
396
- },
397
- {
398
- uri: 'mule-lint://docs/naming',
399
- name: 'Naming Conventions',
400
- mimeType: 'text/markdown',
401
- },
402
- {
403
- uri: 'mule-lint://docs/rules-catalog',
404
- name: 'Rules Catalog',
405
- mimeType: 'text/markdown',
406
- },
407
- ],
408
- };
409
- },
410
- }), {
411
- description: 'Access the official MuleSoft development best practices and internal documentation. Read these documents to ensure your generated code aligns with our architectural standards, naming conventions, and project structure.',
412
- mimeType: 'text/markdown',
413
- }, (uri, variables) => {
414
- const slug = variables.slug;
415
- const docsMap = {
416
- architecture: 'docs/linter/architecture.md',
417
- 'best-practices': 'docs/best-practices/mulesoft-best-practices.md',
418
- 'documentation-standards': 'docs/best-practices/documentation-standards.md',
419
- extending: 'docs/linter/extending.md',
420
- 'folder-structure': 'docs/best-practices/folder-structure.md',
421
- naming: 'docs/linter/naming-conventions.md',
422
- 'rules-catalog': 'docs/best-practices/rules-catalog.md',
423
- };
424
- const relativePath = docsMap[slug];
425
- if (!relativePath) {
426
- return {
427
- contents: [
428
- {
429
- uri: uri.href,
430
- text: `Document not found: ${slug}. Available: ${Object.keys(docsMap).join(', ')}`,
431
- mimeType: 'text/plain',
432
- },
433
- ],
434
- };
435
- }
436
- try {
437
- // Start looking from probable project root (cwd where server is started or package root)
438
- // Since we are running as a tool, we might be installed in node_modules or run locally.
439
- // Best effort: look relative to CWD if running locally, or handle package structure.
440
- // For now, assuming standard repo structure or npm package usage where docs are included.
441
- // CAUTION: 'docs' folder might not be in 'dist'. We need to ensure docs are shipped or read from repo.
442
- // Simple heuristic: try to find docs relative to process.cwd() first (local dev),
443
- // then relative to __dirname (installed package).
444
- let docPath = path.resolve(process.cwd(), relativePath);
445
- if (!fs.existsSync(docPath)) {
446
- // Try resolving from package root if we are in dist/bin
447
- // __dirname is dist/bin or src/mcp.
448
- // Go up 2 levels from dist/bin -> package root
449
- docPath = path.resolve(__dirname, '../../', relativePath);
450
- }
451
- if (fs.existsSync(docPath)) {
452
- const content = fs.readFileSync(docPath, 'utf-8');
453
- return {
454
- contents: [
455
- {
456
- uri: uri.href,
457
- text: content,
458
- mimeType: 'text/markdown',
459
- },
460
- ],
461
- };
462
- }
463
- else {
464
- return {
465
- contents: [
466
- {
467
- uri: uri.href,
468
- text: `Document file not found at: ${docPath}`,
469
- mimeType: 'text/plain',
470
- },
471
- ],
472
- };
473
- }
474
- }
475
- catch (error) {
476
- return {
477
- contents: [
478
- {
479
- uri: uri.href,
480
- text: `Error reading document: ${(0, errors_1.getErrorMessage)(error)}`,
481
- mimeType: 'text/plain',
482
- },
483
- ],
484
- };
485
- }
486
- });
48
+ (0, resources_1.registerResources)(this.server);
487
49
  }
488
50
  setupPrompts() {
489
- // Prompt: analyze-project
490
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- MCP SDK generic type inference exceeds TS depth limits (TS2589)
491
- this.server.registerPrompt('analyze-project', {
492
- description: 'Analyze the current project for MuleSoft best practice violations and linting issues.',
493
- argsSchema: {
494
- path: zod_1.z.string().describe('The absolute path to the project to analyze'),
495
- },
496
- }, ({ path }) => {
497
- return {
498
- messages: [
499
- {
500
- role: 'user',
501
- content: {
502
- type: 'text',
503
- text: `Please analyze the MuleSoft project at ${path}. Run the linting engine and summarize the key issues, focusing on severity:error and severity:warning. Group the findings by category (e.g., Security, Naming, Efficiency).`,
504
- },
505
- },
506
- ],
507
- };
508
- });
509
- // Prompt: explain-rule
510
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- MCP SDK generic type inference exceeds TS depth limits (TS2589)
511
- this.server.registerPrompt('explain-rule', {
512
- description: 'Explain a specific linting rule and provide examples of good vs bad code.',
513
- argsSchema: {
514
- ruleId: zod_1.z.string().describe('The ID of the rule to explain (e.g., MULE-001)'),
515
- },
516
- }, ({ ruleId }) => {
517
- return {
518
- messages: [
519
- {
520
- role: 'user',
521
- content: {
522
- type: 'text',
523
- text: `Can you explain the MuleSoft linting rule ${ruleId}? I need to understand the rationale behind it, potential side effects of ignoring it, and see code examples of both compliant and non-compliant usage.`,
524
- },
525
- },
526
- ],
527
- };
528
- });
529
- // Prompt: fix-issue
530
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- MCP SDK generic type inference exceeds TS depth limits (TS2589)
531
- this.server.registerPrompt('fix-issue', {
532
- description: 'Suggest a fix for a specific linting issue in a file.',
533
- argsSchema: {
534
- issue: zod_1.z.string().describe('The error message or rule description'),
535
- file: zod_1.z.string().describe('The file path where the issue occurred'),
536
- code: zod_1.z.string().describe('The specific code snippet causing the issue'),
537
- },
538
- }, ({ issue, file, code }) => {
539
- return {
540
- messages: [
541
- {
542
- role: 'user',
543
- content: {
544
- type: 'text',
545
- text: `I have a linting issue in file ${file}: "${issue}".\nThe problematic code is:\n\`\`\`xml\n${code}\n\`\`\`\nPlease analyze why this is an issue and provide a corrected version of the code that satisfies the rule.`,
546
- },
547
- },
548
- ],
549
- };
550
- });
51
+ (0, prompts_1.registerPrompts)(this.server);
551
52
  }
552
53
  async start() {
553
54
  const transport = new stdio_js_1.StdioServerTransport();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/index.ts"],"names":[],"mappings":";;;AAAA,oEAAoE;AACpE,wEAAiF;AAEjF,qDAAkD;AAElD,oCAAqC;AAErC,6DAAkE;AAClE,2DAAgE;AAChE,6DAAkE;AAClE,yDAA8D;AAC9D,2CAAgD;AAChD,uCAA4C;AAE5C;;;GAGG;AACH,MAAa,iBAAiB;IACpB,MAAM,CAAY;IAClB,MAAM,CAAa;IAE3B;QAEE,MAAM,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;QACzE,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAS,CAAC;YAC1B,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,WAAW,CAAC,OAAO;SAC7B,CAAC,CAAC;QAEH,kGAAkG;QAClG,MAAM,aAAa,GAAwB;YACzC,KAAK,EAAE,EAAE;YACT,gBAAgB,EAAE,MAAM;YACxB,aAAa,EAAE,KAAK;SACrB,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,IAAI,uBAAU,CAAC;YAC3B,KAAK,EAAE,iBAAS;YAChB,MAAM,EAAE,aAAa;SACtB,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEO,UAAU;QAChB,IAAA,yCAAuB,EAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,IAAA,uCAAsB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,IAAA,yCAAuB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,IAAA,qCAAqB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAEO,cAAc;QACpB,IAAA,6BAAiB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAEO,YAAY;QAClB,IAAA,yBAAe,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,MAAM,SAAS,GAAG,IAAI,+BAAoB,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;IACzD,CAAC;CACF;AAhDD,8CAgDC"}
@@ -0,0 +1,6 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ /**
3
+ * Register all MCP prompts (analyze-project, explain-rule, fix-issue)
4
+ */
5
+ export declare function registerPrompts(server: McpServer): void;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mcp/prompts/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAIvD"}