@sfdxy/mule-lint 1.18.1 → 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 (230) 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 +2 -2
  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 +1 -1
  12. package/dist/src/core/MetricsAggregator.js.map +1 -1
  13. package/dist/src/core/MetricsCollector.d.ts.map +1 -1
  14. package/dist/src/core/MetricsCollector.js +1 -2
  15. package/dist/src/core/MetricsCollector.js.map +1 -1
  16. package/dist/src/core/QualityGateEvaluator.d.ts.map +1 -1
  17. package/dist/src/core/QualityGateEvaluator.js.map +1 -1
  18. package/dist/src/core/XPathHelper.d.ts.map +1 -1
  19. package/dist/src/core/XPathHelper.js +0 -1
  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.map +1 -1
  28. package/dist/src/formatter/MuleXmlFormatter.d.ts.map +1 -1
  29. package/dist/src/formatter/MuleXmlFormatter.js +7 -1
  30. package/dist/src/formatter/MuleXmlFormatter.js.map +1 -1
  31. package/dist/src/formatter/index.d.ts +2 -2
  32. package/dist/src/formatter/index.d.ts.map +1 -1
  33. package/dist/src/formatter/index.js.map +1 -1
  34. package/dist/src/formatters/CsvFormatter.js.map +1 -1
  35. package/dist/src/formatters/HtmlFormatter.js +0 -1
  36. package/dist/src/formatters/HtmlFormatter.js.map +1 -1
  37. package/dist/src/formatters/JsonFormatter.d.ts.map +1 -1
  38. package/dist/src/formatters/JsonFormatter.js.map +1 -1
  39. package/dist/src/formatters/SarifFormatter.js.map +1 -1
  40. package/dist/src/formatters/TableFormatter.js.map +1 -1
  41. package/dist/src/formatters/html/components/Icons.js +1 -1
  42. package/dist/src/formatters/html/components/Icons.js.map +1 -1
  43. package/dist/src/formatters/html/components/MetricCard.d.ts.map +1 -1
  44. package/dist/src/formatters/html/components/MetricCard.js.map +1 -1
  45. package/dist/src/formatters/html/components/Modal.d.ts.map +1 -1
  46. package/dist/src/formatters/html/components/Modal.js.map +1 -1
  47. package/dist/src/formatters/html/components/RatingBadge.d.ts.map +1 -1
  48. package/dist/src/formatters/html/components/RatingBadge.js +6 -6
  49. package/dist/src/formatters/html/components/RatingBadge.js.map +1 -1
  50. package/dist/src/formatters/html/index.d.ts +2 -2
  51. package/dist/src/formatters/html/index.d.ts.map +1 -1
  52. package/dist/src/formatters/html/index.js.map +1 -1
  53. package/dist/src/formatters/html/scripts/charts.d.ts.map +1 -1
  54. package/dist/src/formatters/html/scripts/charts.js +45 -12
  55. package/dist/src/formatters/html/scripts/charts.js.map +1 -1
  56. package/dist/src/formatters/html/scripts/index.d.ts.map +1 -1
  57. package/dist/src/formatters/html/scripts/index.js.map +1 -1
  58. package/dist/src/formatters/html/scripts/renderer.d.ts.map +1 -1
  59. package/dist/src/formatters/html/scripts/renderer.js +175 -35
  60. package/dist/src/formatters/html/scripts/renderer.js.map +1 -1
  61. package/dist/src/formatters/html/sections/Header.d.ts.map +1 -1
  62. package/dist/src/formatters/html/sections/Header.js.map +1 -1
  63. package/dist/src/formatters/html/sections/LintSummary.d.ts.map +1 -1
  64. package/dist/src/formatters/html/sections/LintSummary.js.map +1 -1
  65. package/dist/src/formatters/html/sections/QualityRatings.js.map +1 -1
  66. package/dist/src/formatters/html/sections/Sidebar.d.ts.map +1 -1
  67. package/dist/src/formatters/html/sections/Sidebar.js.map +1 -1
  68. package/dist/src/formatters/html/styles/badges.d.ts.map +1 -1
  69. package/dist/src/formatters/html/styles/badges.js.map +1 -1
  70. package/dist/src/formatters/html/styles/index.d.ts.map +1 -1
  71. package/dist/src/formatters/html/styles/index.js.map +1 -1
  72. package/dist/src/formatters/html/theme.js.map +1 -1
  73. package/dist/src/formatters/html/views/Dashboard.js +5 -5
  74. package/dist/src/formatters/html/views/Dashboard.js.map +1 -1
  75. package/dist/src/formatters/html/views/IssuesView.d.ts.map +1 -1
  76. package/dist/src/formatters/html/views/IssuesView.js.map +1 -1
  77. package/dist/src/formatters/index.js.map +1 -1
  78. package/dist/src/mcp/index.d.ts.map +1 -1
  79. package/dist/src/mcp/index.js +0 -1
  80. package/dist/src/mcp/index.js.map +1 -1
  81. package/dist/src/mcp/prompts/index.js.map +1 -1
  82. package/dist/src/mcp/resources/index.js +30 -7
  83. package/dist/src/mcp/resources/index.js.map +1 -1
  84. package/dist/src/mcp/tools/formatMuleXml.d.ts.map +1 -1
  85. package/dist/src/mcp/tools/formatMuleXml.js +4 -13
  86. package/dist/src/mcp/tools/formatMuleXml.js.map +1 -1
  87. package/dist/src/mcp/tools/getRuleDetails.d.ts.map +1 -1
  88. package/dist/src/mcp/tools/getRuleDetails.js +1 -3
  89. package/dist/src/mcp/tools/getRuleDetails.js.map +1 -1
  90. package/dist/src/mcp/tools/runLintAnalysis.js +9 -9
  91. package/dist/src/mcp/tools/runLintAnalysis.js.map +1 -1
  92. package/dist/src/mcp/tools/validateSnippet.d.ts.map +1 -1
  93. package/dist/src/mcp/tools/validateSnippet.js.map +1 -1
  94. package/dist/src/quality/calculator.d.ts.map +1 -1
  95. package/dist/src/quality/calculator.js +1 -1
  96. package/dist/src/quality/calculator.js.map +1 -1
  97. package/dist/src/quality/index.d.ts.map +1 -1
  98. package/dist/src/quality/index.js.map +1 -1
  99. package/dist/src/quality/thresholds.js.map +1 -1
  100. package/dist/src/quality/types.d.ts.map +1 -1
  101. package/dist/src/rules/api-led/ApiLedRules.d.ts.map +1 -1
  102. package/dist/src/rules/api-led/ApiLedRules.js +6 -2
  103. package/dist/src/rules/api-led/ApiLedRules.js.map +1 -1
  104. package/dist/src/rules/api-led/SingleSystemSapiRule.d.ts.map +1 -1
  105. package/dist/src/rules/api-led/SingleSystemSapiRule.js.map +1 -1
  106. package/dist/src/rules/base/BaseRule.d.ts.map +1 -1
  107. package/dist/src/rules/base/BaseRule.js.map +1 -1
  108. package/dist/src/rules/base/ProjectRule.d.ts.map +1 -1
  109. package/dist/src/rules/base/ProjectRule.js.map +1 -1
  110. package/dist/src/rules/complexity/FlowComplexityRule.d.ts.map +1 -1
  111. package/dist/src/rules/complexity/FlowComplexityRule.js.map +1 -1
  112. package/dist/src/rules/dataweave/DataWeaveRules.d.ts.map +1 -1
  113. package/dist/src/rules/dataweave/DataWeaveRules.js +1 -3
  114. package/dist/src/rules/dataweave/DataWeaveRules.js.map +1 -1
  115. package/dist/src/rules/dataweave/Java17DWErrorHandlingRule.d.ts.map +1 -1
  116. package/dist/src/rules/dataweave/Java17DWErrorHandlingRule.js.map +1 -1
  117. package/dist/src/rules/documentation/DisplayNameRule.d.ts.map +1 -1
  118. package/dist/src/rules/documentation/DisplayNameRule.js.map +1 -1
  119. package/dist/src/rules/documentation/FlowDescriptionRule.d.ts.map +1 -1
  120. package/dist/src/rules/documentation/FlowDescriptionRule.js.map +1 -1
  121. package/dist/src/rules/documentation/MissingDocNameRule.d.ts.map +1 -1
  122. package/dist/src/rules/documentation/MissingDocNameRule.js.map +1 -1
  123. package/dist/src/rules/error-handling/CorrelationIdRule.d.ts.map +1 -1
  124. package/dist/src/rules/error-handling/CorrelationIdRule.js.map +1 -1
  125. package/dist/src/rules/error-handling/GenericErrorRule.d.ts.map +1 -1
  126. package/dist/src/rules/error-handling/GenericErrorRule.js.map +1 -1
  127. package/dist/src/rules/error-handling/GlobalErrorHandlerRule.d.ts.map +1 -1
  128. package/dist/src/rules/error-handling/GlobalErrorHandlerRule.js.map +1 -1
  129. package/dist/src/rules/error-handling/HttpStatusRule.d.ts.map +1 -1
  130. package/dist/src/rules/error-handling/HttpStatusRule.js.map +1 -1
  131. package/dist/src/rules/error-handling/MissingErrorHandlerRule.d.ts.map +1 -1
  132. package/dist/src/rules/error-handling/MissingErrorHandlerRule.js.map +1 -1
  133. package/dist/src/rules/error-handling/TryScopeRule.d.ts.map +1 -1
  134. package/dist/src/rules/error-handling/TryScopeRule.js.map +1 -1
  135. package/dist/src/rules/experimental/ExperimentalRules.d.ts.map +1 -1
  136. package/dist/src/rules/experimental/ExperimentalRules.js +6 -2
  137. package/dist/src/rules/experimental/ExperimentalRules.js.map +1 -1
  138. package/dist/src/rules/governance/GovernanceRules.d.ts.map +1 -1
  139. package/dist/src/rules/governance/GovernanceRules.js.map +1 -1
  140. package/dist/src/rules/http/HttpContentTypeRule.d.ts.map +1 -1
  141. package/dist/src/rules/http/HttpContentTypeRule.js.map +1 -1
  142. package/dist/src/rules/http/HttpTimeoutRule.d.ts.map +1 -1
  143. package/dist/src/rules/http/HttpTimeoutRule.js.map +1 -1
  144. package/dist/src/rules/http/HttpUserAgentRule.d.ts.map +1 -1
  145. package/dist/src/rules/http/HttpUserAgentRule.js.map +1 -1
  146. package/dist/src/rules/index.js.map +1 -1
  147. package/dist/src/rules/logging/ExcessiveLoggersRule.d.ts.map +1 -1
  148. package/dist/src/rules/logging/ExcessiveLoggersRule.js.map +1 -1
  149. package/dist/src/rules/logging/LoggerCategoryRule.d.ts.map +1 -1
  150. package/dist/src/rules/logging/LoggerCategoryRule.js.map +1 -1
  151. package/dist/src/rules/logging/LoggerInUntilSuccessfulRule.d.ts.map +1 -1
  152. package/dist/src/rules/logging/LoggerInUntilSuccessfulRule.js.map +1 -1
  153. package/dist/src/rules/logging/LoggerPayloadRule.d.ts.map +1 -1
  154. package/dist/src/rules/logging/LoggerPayloadRule.js.map +1 -1
  155. package/dist/src/rules/logging/NewLoggingRules.d.ts.map +1 -1
  156. package/dist/src/rules/logging/NewLoggingRules.js.map +1 -1
  157. package/dist/src/rules/naming/FlowCasingRule.d.ts.map +1 -1
  158. package/dist/src/rules/naming/FlowCasingRule.js.map +1 -1
  159. package/dist/src/rules/naming/FlowNamingRule.d.ts.map +1 -1
  160. package/dist/src/rules/naming/FlowNamingRule.js +3 -1
  161. package/dist/src/rules/naming/FlowNamingRule.js.map +1 -1
  162. package/dist/src/rules/naming/VariableNamingRule.d.ts.map +1 -1
  163. package/dist/src/rules/naming/VariableNamingRule.js.map +1 -1
  164. package/dist/src/rules/operations/CommentedCodeRule.d.ts.map +1 -1
  165. package/dist/src/rules/operations/CommentedCodeRule.js.map +1 -1
  166. package/dist/src/rules/operations/UnusedFlowRule.d.ts.map +1 -1
  167. package/dist/src/rules/operations/UnusedFlowRule.js.map +1 -1
  168. package/dist/src/rules/performance/AsyncErrorHandlerRule.d.ts.map +1 -1
  169. package/dist/src/rules/performance/AsyncErrorHandlerRule.js.map +1 -1
  170. package/dist/src/rules/performance/ConnectionPoolingRule.d.ts.map +1 -1
  171. package/dist/src/rules/performance/ConnectionPoolingRule.js.map +1 -1
  172. package/dist/src/rules/performance/LargeChoiceBlockRule.d.ts.map +1 -1
  173. package/dist/src/rules/performance/LargeChoiceBlockRule.js.map +1 -1
  174. package/dist/src/rules/performance/ReconnectionStrategyRule.d.ts.map +1 -1
  175. package/dist/src/rules/performance/ReconnectionStrategyRule.js.map +1 -1
  176. package/dist/src/rules/performance/ScatterGatherRoutesRule.d.ts.map +1 -1
  177. package/dist/src/rules/performance/ScatterGatherRoutesRule.js.map +1 -1
  178. package/dist/src/rules/security/EncryptionKeyInLogsRule.d.ts.map +1 -1
  179. package/dist/src/rules/security/EncryptionKeyInLogsRule.js.map +1 -1
  180. package/dist/src/rules/security/HardcodedCredentialsRule.d.ts.map +1 -1
  181. package/dist/src/rules/security/HardcodedCredentialsRule.js.map +1 -1
  182. package/dist/src/rules/security/HardcodedHttpRule.d.ts.map +1 -1
  183. package/dist/src/rules/security/HardcodedHttpRule.js +1 -9
  184. package/dist/src/rules/security/HardcodedHttpRule.js.map +1 -1
  185. package/dist/src/rules/security/InputValidationRule.d.ts.map +1 -1
  186. package/dist/src/rules/security/InputValidationRule.js +1 -3
  187. package/dist/src/rules/security/InputValidationRule.js.map +1 -1
  188. package/dist/src/rules/security/InsecureTlsRule.d.ts.map +1 -1
  189. package/dist/src/rules/security/InsecureTlsRule.js.map +1 -1
  190. package/dist/src/rules/security/RateLimitingRule.d.ts.map +1 -1
  191. package/dist/src/rules/security/RateLimitingRule.js.map +1 -1
  192. package/dist/src/rules/security/TlsVersionRule.d.ts.map +1 -1
  193. package/dist/src/rules/security/TlsVersionRule.js.map +1 -1
  194. package/dist/src/rules/standards/ApiKitValidationRule.d.ts.map +1 -1
  195. package/dist/src/rules/standards/ApiKitValidationRule.js.map +1 -1
  196. package/dist/src/rules/standards/AutoDiscoveryRule.d.ts.map +1 -1
  197. package/dist/src/rules/standards/AutoDiscoveryRule.js.map +1 -1
  198. package/dist/src/rules/standards/ChoiceAntiPatternRule.d.ts.map +1 -1
  199. package/dist/src/rules/standards/ChoiceAntiPatternRule.js.map +1 -1
  200. package/dist/src/rules/standards/CronExternalizedRule.d.ts.map +1 -1
  201. package/dist/src/rules/standards/CronExternalizedRule.js.map +1 -1
  202. package/dist/src/rules/standards/DeprecatedComponentRule.d.ts.map +1 -1
  203. package/dist/src/rules/standards/DeprecatedComponentRule.js.map +1 -1
  204. package/dist/src/rules/standards/DwlStandardsRule.d.ts.map +1 -1
  205. package/dist/src/rules/standards/DwlStandardsRule.js.map +1 -1
  206. package/dist/src/rules/standards/HttpPortPlaceholderRule.d.ts.map +1 -1
  207. package/dist/src/rules/standards/HttpPortPlaceholderRule.js.map +1 -1
  208. package/dist/src/rules/structure/StructureRules.d.ts.map +1 -1
  209. package/dist/src/rules/structure/StructureRules.js.map +1 -1
  210. package/dist/src/rules/yaml/YamlRules.d.ts.map +1 -1
  211. package/dist/src/rules/yaml/YamlRules.js +2 -7
  212. package/dist/src/rules/yaml/YamlRules.js.map +1 -1
  213. package/dist/src/types/Config.d.ts.map +1 -1
  214. package/dist/src/types/Config.js.map +1 -1
  215. package/dist/src/types/QualityGate.d.ts.map +1 -1
  216. package/dist/src/types/QualityGate.js.map +1 -1
  217. package/dist/src/types/Report.d.ts.map +1 -1
  218. package/dist/src/types/Rule.d.ts.map +1 -1
  219. package/docs/README.md +27 -27
  220. package/docs/best-practices/documentation-standards.md +20 -11
  221. package/docs/best-practices/folder-structure.md +16 -10
  222. package/docs/best-practices/mulesoft-best-practices.md +96 -94
  223. package/docs/best-practices/rules-catalog.md +316 -287
  224. package/docs/linter/architecture.md +70 -64
  225. package/docs/linter/extending.md +137 -128
  226. package/docs/linter/folder-structure.md +39 -38
  227. package/docs/linter/naming-conventions.md +80 -78
  228. package/docs/linter/rule-engine.md +306 -306
  229. package/docs/mcp-design.md +35 -21
  230. package/package.json +84 -73
@@ -1,50 +1,58 @@
1
1
  # Mule Lint MCP Server Design
2
2
 
3
3
  ## Executive Summary
4
+
4
5
  This document outlines the strategy for exposing `mule-lint` capabilities via the Model Context Protocol (MCP). By wrapping the linter in an MCP server, we enable AI agents (like Claude, IDE assistants, etc.) to autonomously discover linting rules, validate MuleSoft projects, and retrieve detailed rule documentation without needing to shell out or parse CLI text output.
5
6
 
6
7
  ## Architecture Decision: Monorepo vs. Separate Repo
8
+
7
9
  **Recommendation: Same Repo (Monorepo)**
8
10
 
9
11
  We should implement the MCP server directly in the `mule-lint` repository, likely under `src/mcp` or as a separate package if this was a workspace.
10
- * **Pros**: Direct access to `src/core`, `src/rules`, and types without publishing/installing packages. Easier to keep rule definitions and agent-exposed descriptions in sync.
11
- * **Cons**: Adds a dependency on `@modelcontextprotocol/sdk` to the main repo (or requires a build split).
12
+
13
+ - **Pros**: Direct access to `src/core`, `src/rules`, and types without publishing/installing packages. Easier to keep rule definitions and agent-exposed descriptions in sync.
14
+ - **Cons**: Adds a dependency on `@modelcontextprotocol/sdk` to the main repo (or requires a build split).
12
15
 
13
16
  ## Features & Capabilities
14
17
 
15
18
  ### 1. Tools
19
+
16
20
  Tools allow the agent to perform actions.
17
21
 
18
- | Tool Name | Arguments | Description |
19
- | :--- | :--- | :--- |
20
- | `run_lint_analysis` | `projectPath` (string) | Runs the scanning engine on a specified directory. Returns a JSON summary of errors, warnings, and code references. |
21
- | `validate_snippet` | `code` (string), `type` (xml/dwl) | quickly validates a small chunk of code without a full project structure. Useful for agents generating code on the fly. |
22
- | `get_rule_details` | `ruleId` (string) | Returns the full documentation, examples, and rationale for a specific rule (e.g., `MULE-001`). |
22
+ | Tool Name | Arguments | Description |
23
+ | :------------------ | :-------------------------------- | :---------------------------------------------------------------------------------------------------------------------- |
24
+ | `run_lint_analysis` | `projectPath` (string) | Runs the scanning engine on a specified directory. Returns a JSON summary of errors, warnings, and code references. |
25
+ | `validate_snippet` | `code` (string), `type` (xml/dwl) | quickly validates a small chunk of code without a full project structure. Useful for agents generating code on the fly. |
26
+ | `get_rule_details` | `ruleId` (string) | Returns the full documentation, examples, and rationale for a specific rule (e.g., `MULE-001`). |
23
27
 
24
28
  ### 2. Resources
29
+
25
30
  Resources allow the agent to read context.
26
31
 
27
- | Resource URI | Description |
28
- | :--- | :--- |
29
- | `mule-lint://rules` | A JSON list of all registered rules, their categories, and severity levels. |
30
- | `mule-lint://config/schema` | The JSON schema for `.mule-lintrc` to help agents author valid configurations. |
31
- | `mule-lint://docs/{slug}` | Access internal documentation (e.g., `best-practices`, `architecture`, `naming`). |
32
+ | Resource URI | Description |
33
+ | :-------------------------- | :-------------------------------------------------------------------------------- |
34
+ | `mule-lint://rules` | A JSON list of all registered rules, their categories, and severity levels. |
35
+ | `mule-lint://config/schema` | The JSON schema for `.mule-lintrc` to help agents author valid configurations. |
36
+ | `mule-lint://docs/{slug}` | Access internal documentation (e.g., `best-practices`, `architecture`, `naming`). |
32
37
 
33
38
  ### 3. Prompts
39
+
34
40
  Pre-defined prompts to help users interacting with the agent.
35
41
 
36
- | Prompt Name | Description |
37
- | :--- | :--- |
38
- | `analyze_current_project` | "Run a comprehensive analysis on this project and summarize the top 3 critical issues." |
39
- | `explain_violation` | "Here is an error I found: {{ErrorString}}. Explain why this is bad and how to fix it using `get_rule_details`." |
42
+ | Prompt Name | Description |
43
+ | :------------------------ | :--------------------------------------------------------------------------------------------------------------- |
44
+ | `analyze_current_project` | "Run a comprehensive analysis on this project and summarize the top 3 critical issues." |
45
+ | `explain_violation` | "Here is an error I found: {{ErrorString}}. Explain why this is bad and how to fix it using `get_rule_details`." |
40
46
 
41
47
  ## Implementation Phases
42
48
 
43
49
  ### Phase 1: Foundation (The "Reader" Agent)
50
+
44
51
  > [!NOTE]
45
52
  > **Status**: Completed. Available on NPM as `@sfdxy/mule-lint`.
46
53
 
47
- *Goal: Allow an agent to see what rules exist and run a scan.*
54
+ _Goal: Allow an agent to see what rules exist and run a scan._
55
+
48
56
  - [x] Install `@modelcontextprotocol/sdk`.
49
57
  - [x] Create `McpServer` class in `src/mcp/index.ts`.
50
58
  - [x] Implement `mule-lint://rules` resource.
@@ -52,28 +60,34 @@ Pre-defined prompts to help users interacting with the agent.
52
60
  - [x] Add `stdio` transport for local running.
53
61
 
54
62
  ### Phase 2: Interactive Context (The "Helper" Agent)
63
+
55
64
  > [!NOTE]
56
65
  > **Status**: Completed.
57
66
 
58
67
  *Goal: Allow the agent to understand *why* things failed.*
68
+
59
69
  - [x] Implement `get_rule_details` tool.
60
70
  - [x] Expose internal documentation of rules via MCP.
61
71
  - [x] Add `validate_snippet` for real-time code generation checks.
62
72
 
63
73
  ### Phase 3: Remediation (The "Fixer" Agent)
74
+
64
75
  > [!NOTE]
65
76
  > **Status**: Partially Completed. `apply_fix` deferred. Enhanced reporting added.
66
77
 
67
- *Goal: Allow the agent to automatically fix issues.*
78
+ _Goal: Allow the agent to automatically fix issues._
79
+
68
80
  - [ ] Implement `apply_fix` tool (Deferred: requires AST write support).
69
81
  - [x] Enhanced error reporting with precise range/location data (Added column/suggestion).
70
82
 
71
83
  ## Libraries & Dependencies
72
- * **Core**: `@modelcontextprotocol/sdk`
73
- * **Transport**: Stdio (standard input/output) for local CLI integration.
74
- * **Runtime**: Node.js (uses existing project runtime).
84
+
85
+ - **Core**: `@modelcontextprotocol/sdk`
86
+ - **Transport**: Stdio (standard input/output) for local CLI integration.
87
+ - **Runtime**: Node.js (uses existing project runtime).
75
88
 
76
89
  ## Agent Workflow Example
90
+
77
91
  1. **Discovery**: Agent connects and reads `mule-lint://rules` to know what it is looking for.
78
92
  2. **Action**: User asks "Check my code". Agent calls `run_lint_analysis(cwd)`.
79
93
  3. **Context**: Agent sees error `DW-004`. Agent calls `get_rule_details("DW-004")` to read the "Java 17 DataWeave" docs.
package/package.json CHANGED
@@ -1,75 +1,86 @@
1
1
  {
2
- "name": "@sfdxy/mule-lint",
3
- "version": "1.18.1",
4
- "description": "Static analysis tool for MuleSoft applications - supports humans, AI agents, and CI/CD pipelines",
5
- "author": "Avinava",
6
- "license": "MIT",
7
- "keywords": [
8
- "mulesoft",
9
- "mule",
10
- "lint",
11
- "static-analysis",
12
- "xml",
13
- "sarif",
14
- "cli"
15
- ],
16
- "bin": {
17
- "mule-lint": "./dist/bin/mule-lint.js",
18
- "mule-lint-mcp": "./dist/bin/mule-lint-mcp.js"
19
- },
20
- "main": "./dist/index.js",
21
- "types": "./dist/index.d.ts",
22
- "files": [
23
- "dist",
24
- "README.md",
25
- "LICENSE",
26
- "docs"
27
- ],
28
- "scripts": {
29
- "build": "tsc",
30
- "build:watch": "tsc --watch",
31
- "test": "NODE_OPTIONS='--experimental-vm-modules' jest",
32
- "test:watch": "NODE_OPTIONS='--experimental-vm-modules' jest --watch",
33
- "test:coverage": "NODE_OPTIONS='--experimental-vm-modules' jest --coverage",
34
- "lint": "eslint src/ --ext .ts",
35
- "lint:fix": "eslint src/ --ext .ts --fix",
36
- "format": "prettier --write \"src/**/*.{ts,js,json,md}\"",
37
- "clean": "rm -rf dist",
38
- "prepublishOnly": "npm run clean && npm run build && npm test",
39
- "release": "git tag v$(node -p 'require(\"./package.json\").version') && git push origin v$(node -p 'require(\"./package.json\").version')"
40
- },
41
- "dependencies": {
42
- "@modelcontextprotocol/sdk": "^1.25.2",
43
- "@prettier/plugin-xml": "^3.4.2",
44
- "@xmldom/xmldom": "^0.8.10",
45
- "chalk": "^4.1.2",
46
- "commander": "^11.1.0",
47
- "fast-glob": "^3.3.2",
48
- "js-yaml": "^4.1.1",
49
- "prettier": "^3.8.1",
50
- "xpath": "^0.0.34",
51
- "zod": "^3.25.0"
52
- },
53
- "devDependencies": {
54
- "@types/jest": "^29.5.11",
55
- "@types/js-yaml": "^4.0.9",
56
- "@types/node": "^20.19.27",
57
- "@typescript-eslint/eslint-plugin": "^6.15.0",
58
- "@typescript-eslint/parser": "^6.15.0",
59
- "eslint": "^8.56.0",
60
- "jest": "^29.7.0",
61
- "ts-jest": "^29.1.1",
62
- "typescript": "^5.3.3"
63
- },
64
- "engines": {
65
- "node": ">=18.0.0"
66
- },
67
- "repository": {
68
- "type": "git",
69
- "url": "https://github.com/Avinava/mule-lint.git"
70
- },
71
- "bugs": {
72
- "url": "https://github.com/Avinava/mule-lint/issues"
73
- },
74
- "homepage": "https://github.com/Avinava/mule-lint#readme"
2
+ "name": "@sfdxy/mule-lint",
3
+ "version": "1.19.0",
4
+ "description": "Static analysis tool for MuleSoft applications - supports humans, AI agents, and CI/CD pipelines",
5
+ "author": "Avinava",
6
+ "license": "MIT",
7
+ "keywords": [
8
+ "mulesoft",
9
+ "mule",
10
+ "lint",
11
+ "static-analysis",
12
+ "xml",
13
+ "sarif",
14
+ "cli"
15
+ ],
16
+ "bin": {
17
+ "mule-lint": "./dist/bin/mule-lint.js",
18
+ "mule-lint-mcp": "./dist/bin/mule-lint-mcp.js"
19
+ },
20
+ "main": "./dist/index.js",
21
+ "types": "./dist/index.d.ts",
22
+ "files": [
23
+ "dist",
24
+ "README.md",
25
+ "LICENSE",
26
+ "docs"
27
+ ],
28
+ "scripts": {
29
+ "build": "tsc",
30
+ "build:watch": "tsc --watch",
31
+ "typecheck": "tsc --noEmit",
32
+ "test": "vitest run",
33
+ "test:watch": "vitest watch",
34
+ "test:coverage": "vitest run --coverage",
35
+ "lint": "eslint 'src/**/*.ts'",
36
+ "lint:unused": "knip",
37
+ "format": "prettier --write \"src/**/*.{ts,js,json,md}\"",
38
+ "prettier:check": "prettier --check '**/*.{ts,js,json,md,yml}'",
39
+ "prettier:fix": "prettier --write '**/*.{ts,js,json,md,yml}'",
40
+ "clean": "rm -rf dist",
41
+ "prepublishOnly": "npm run clean && npm run build && npm test",
42
+ "release": "git tag v$(node -p 'require(\"./package.json\").version') && git push origin v$(node -p 'require(\"./package.json\").version')",
43
+ "prepare": "lefthook install"
44
+ },
45
+ "lint-staged": {
46
+ "*.{ts,tsx,js,jsx,mjs,cjs,json,md,css,html,yml,yaml}": "prettier --write"
47
+ },
48
+ "dependencies": {
49
+ "@modelcontextprotocol/sdk": "^1.25.2",
50
+ "@prettier/plugin-xml": "^3.4.2",
51
+ "@xmldom/xmldom": "^0.8.10",
52
+ "chalk": "^4.1.2",
53
+ "commander": "^11.1.0",
54
+ "fast-glob": "^3.3.2",
55
+ "js-yaml": "^4.1.1",
56
+ "prettier": "^3.8.1",
57
+ "xpath": "^0.0.34",
58
+ "zod": "^3.25.0"
59
+ },
60
+ "devDependencies": {
61
+ "@commitlint/cli": "^19.0.0",
62
+ "@commitlint/config-conventional": "^19.0.0",
63
+ "@types/js-yaml": "^4.0.9",
64
+ "@types/node": "^20.19.27",
65
+ "eslint": "^9.0.0",
66
+ "eslint-config-prettier": "^10.0.0",
67
+ "knip": "^5.0.0",
68
+ "lefthook": "^1.10.0",
69
+ "lint-staged": "^15.0.0",
70
+ "publint": "^0.3.0",
71
+ "typescript": "^5.7.0",
72
+ "typescript-eslint": "^8.0.0",
73
+ "vitest": "^3.0.0"
74
+ },
75
+ "engines": {
76
+ "node": ">=20.0.0"
77
+ },
78
+ "repository": {
79
+ "type": "git",
80
+ "url": "https://github.com/Avinava/mule-lint.git"
81
+ },
82
+ "bugs": {
83
+ "url": "https://github.com/Avinava/mule-lint/issues"
84
+ },
85
+ "homepage": "https://github.com/Avinava/mule-lint#readme"
75
86
  }