codeguardian-mcp 1.0.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 (335) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +348 -0
  3. package/dist/agent/agentTools.d.ts +26 -0
  4. package/dist/agent/agentTools.d.ts.map +1 -0
  5. package/dist/agent/agentTools.js +699 -0
  6. package/dist/agent/agentTools.js.map +1 -0
  7. package/dist/agent/autoValidator.d.ts +110 -0
  8. package/dist/agent/autoValidator.d.ts.map +1 -0
  9. package/dist/agent/autoValidator.js +964 -0
  10. package/dist/agent/autoValidator.js.map +1 -0
  11. package/dist/agent/fileWatcher.d.ts +28 -0
  12. package/dist/agent/fileWatcher.d.ts.map +1 -0
  13. package/dist/agent/fileWatcher.js +88 -0
  14. package/dist/agent/fileWatcher.js.map +1 -0
  15. package/dist/agent/guardianPersistence.d.ts +98 -0
  16. package/dist/agent/guardianPersistence.d.ts.map +1 -0
  17. package/dist/agent/guardianPersistence.js +296 -0
  18. package/dist/agent/guardianPersistence.js.map +1 -0
  19. package/dist/agent/mcpNotifications.d.ts +38 -0
  20. package/dist/agent/mcpNotifications.d.ts.map +1 -0
  21. package/dist/agent/mcpNotifications.js +81 -0
  22. package/dist/agent/mcpNotifications.js.map +1 -0
  23. package/dist/analyzers/aiPatterns.d.ts +16 -0
  24. package/dist/analyzers/aiPatterns.d.ts.map +1 -0
  25. package/dist/analyzers/aiPatterns.js +103 -0
  26. package/dist/analyzers/aiPatterns.js.map +1 -0
  27. package/dist/analyzers/antiPatterns.d.ts +60 -0
  28. package/dist/analyzers/antiPatterns.d.ts.map +1 -0
  29. package/dist/analyzers/antiPatterns.js +198 -0
  30. package/dist/analyzers/antiPatterns.js.map +1 -0
  31. package/dist/analyzers/builtinTypes.d.ts +18 -0
  32. package/dist/analyzers/builtinTypes.d.ts.map +1 -0
  33. package/dist/analyzers/builtinTypes.js +1275 -0
  34. package/dist/analyzers/builtinTypes.js.map +1 -0
  35. package/dist/analyzers/complexity.d.ts +14 -0
  36. package/dist/analyzers/complexity.d.ts.map +1 -0
  37. package/dist/analyzers/complexity.js +610 -0
  38. package/dist/analyzers/complexity.js.map +1 -0
  39. package/dist/analyzers/findingVerifier.d.ts +59 -0
  40. package/dist/analyzers/findingVerifier.d.ts.map +1 -0
  41. package/dist/analyzers/findingVerifier.js +1169 -0
  42. package/dist/analyzers/findingVerifier.js.map +1 -0
  43. package/dist/analyzers/impactAnalyzer.d.ts +53 -0
  44. package/dist/analyzers/impactAnalyzer.d.ts.map +1 -0
  45. package/dist/analyzers/impactAnalyzer.js +152 -0
  46. package/dist/analyzers/impactAnalyzer.js.map +1 -0
  47. package/dist/analyzers/languageDetector.d.ts +48 -0
  48. package/dist/analyzers/languageDetector.d.ts.map +1 -0
  49. package/dist/analyzers/languageDetector.js +404 -0
  50. package/dist/analyzers/languageDetector.js.map +1 -0
  51. package/dist/analyzers/parsers/incrementalParser.d.ts +53 -0
  52. package/dist/analyzers/parsers/incrementalParser.d.ts.map +1 -0
  53. package/dist/analyzers/parsers/incrementalParser.js +193 -0
  54. package/dist/analyzers/parsers/incrementalParser.js.map +1 -0
  55. package/dist/analyzers/parsers/scopeResolver.d.ts +92 -0
  56. package/dist/analyzers/parsers/scopeResolver.d.ts.map +1 -0
  57. package/dist/analyzers/parsers/scopeResolver.js +324 -0
  58. package/dist/analyzers/parsers/scopeResolver.js.map +1 -0
  59. package/dist/analyzers/parsers/semanticIndex.d.ts +127 -0
  60. package/dist/analyzers/parsers/semanticIndex.d.ts.map +1 -0
  61. package/dist/analyzers/parsers/semanticIndex.js +429 -0
  62. package/dist/analyzers/parsers/semanticIndex.js.map +1 -0
  63. package/dist/analyzers/parsers/sessionDiffAnalyzer.d.ts +42 -0
  64. package/dist/analyzers/parsers/sessionDiffAnalyzer.d.ts.map +1 -0
  65. package/dist/analyzers/parsers/sessionDiffAnalyzer.js +233 -0
  66. package/dist/analyzers/parsers/sessionDiffAnalyzer.js.map +1 -0
  67. package/dist/analyzers/parsers/treeSitterParser.d.ts +76 -0
  68. package/dist/analyzers/parsers/treeSitterParser.d.ts.map +1 -0
  69. package/dist/analyzers/parsers/treeSitterParser.js +709 -0
  70. package/dist/analyzers/parsers/treeSitterParser.js.map +1 -0
  71. package/dist/analyzers/relevanceScorer.d.ts +43 -0
  72. package/dist/analyzers/relevanceScorer.d.ts.map +1 -0
  73. package/dist/analyzers/relevanceScorer.js +200 -0
  74. package/dist/analyzers/relevanceScorer.js.map +1 -0
  75. package/dist/analyzers/standardLibrary.d.ts +22 -0
  76. package/dist/analyzers/standardLibrary.d.ts.map +1 -0
  77. package/dist/analyzers/standardLibrary.js +211 -0
  78. package/dist/analyzers/standardLibrary.js.map +1 -0
  79. package/dist/analyzers/symbolGraph.d.ts +30 -0
  80. package/dist/analyzers/symbolGraph.d.ts.map +1 -0
  81. package/dist/analyzers/symbolGraph.js +380 -0
  82. package/dist/analyzers/symbolGraph.js.map +1 -0
  83. package/dist/analyzers/symbolTable.d.ts +18 -0
  84. package/dist/analyzers/symbolTable.d.ts.map +1 -0
  85. package/dist/analyzers/symbolTable.js +176 -0
  86. package/dist/analyzers/symbolTable.js.map +1 -0
  87. package/dist/analyzers/typeChecker.d.ts +13 -0
  88. package/dist/analyzers/typeChecker.d.ts.map +1 -0
  89. package/dist/analyzers/typeChecker.js +580 -0
  90. package/dist/analyzers/typeChecker.js.map +1 -0
  91. package/dist/analyzers/usagePatterns.d.ts +42 -0
  92. package/dist/analyzers/usagePatterns.d.ts.map +1 -0
  93. package/dist/analyzers/usagePatterns.js +75 -0
  94. package/dist/analyzers/usagePatterns.js.map +1 -0
  95. package/dist/api-contract/context/backend.d.ts +19 -0
  96. package/dist/api-contract/context/backend.d.ts.map +1 -0
  97. package/dist/api-contract/context/backend.js +64 -0
  98. package/dist/api-contract/context/backend.js.map +1 -0
  99. package/dist/api-contract/context/contract.d.ts +34 -0
  100. package/dist/api-contract/context/contract.d.ts.map +1 -0
  101. package/dist/api-contract/context/contract.js +306 -0
  102. package/dist/api-contract/context/contract.js.map +1 -0
  103. package/dist/api-contract/context/frontend.d.ts +19 -0
  104. package/dist/api-contract/context/frontend.d.ts.map +1 -0
  105. package/dist/api-contract/context/frontend.js +64 -0
  106. package/dist/api-contract/context/frontend.js.map +1 -0
  107. package/dist/api-contract/detector.d.ts +28 -0
  108. package/dist/api-contract/detector.d.ts.map +1 -0
  109. package/dist/api-contract/detector.js +393 -0
  110. package/dist/api-contract/detector.js.map +1 -0
  111. package/dist/api-contract/extractors/python.d.ts +32 -0
  112. package/dist/api-contract/extractors/python.d.ts.map +1 -0
  113. package/dist/api-contract/extractors/python.js +521 -0
  114. package/dist/api-contract/extractors/python.js.map +1 -0
  115. package/dist/api-contract/extractors/pythonAstUtils.d.ts +44 -0
  116. package/dist/api-contract/extractors/pythonAstUtils.d.ts.map +1 -0
  117. package/dist/api-contract/extractors/pythonAstUtils.js +489 -0
  118. package/dist/api-contract/extractors/pythonAstUtils.js.map +1 -0
  119. package/dist/api-contract/extractors/tsAstUtils.d.ts +47 -0
  120. package/dist/api-contract/extractors/tsAstUtils.d.ts.map +1 -0
  121. package/dist/api-contract/extractors/tsAstUtils.js +173 -0
  122. package/dist/api-contract/extractors/tsAstUtils.js.map +1 -0
  123. package/dist/api-contract/extractors/typescript.d.ts +32 -0
  124. package/dist/api-contract/extractors/typescript.d.ts.map +1 -0
  125. package/dist/api-contract/extractors/typescript.js +666 -0
  126. package/dist/api-contract/extractors/typescript.js.map +1 -0
  127. package/dist/api-contract/index.d.ts +104 -0
  128. package/dist/api-contract/index.d.ts.map +1 -0
  129. package/dist/api-contract/index.js +232 -0
  130. package/dist/api-contract/index.js.map +1 -0
  131. package/dist/api-contract/types.d.ts +151 -0
  132. package/dist/api-contract/types.d.ts.map +1 -0
  133. package/dist/api-contract/types.js +19 -0
  134. package/dist/api-contract/types.js.map +1 -0
  135. package/dist/api-contract/validators/endpoint.d.ts +21 -0
  136. package/dist/api-contract/validators/endpoint.d.ts.map +1 -0
  137. package/dist/api-contract/validators/endpoint.js +224 -0
  138. package/dist/api-contract/validators/endpoint.js.map +1 -0
  139. package/dist/api-contract/validators/index.d.ts +40 -0
  140. package/dist/api-contract/validators/index.d.ts.map +1 -0
  141. package/dist/api-contract/validators/index.js +875 -0
  142. package/dist/api-contract/validators/index.js.map +1 -0
  143. package/dist/api-contract/validators/parameter.d.ts +17 -0
  144. package/dist/api-contract/validators/parameter.d.ts.map +1 -0
  145. package/dist/api-contract/validators/parameter.js +250 -0
  146. package/dist/api-contract/validators/parameter.js.map +1 -0
  147. package/dist/api-contract/validators/type.d.ts +38 -0
  148. package/dist/api-contract/validators/type.d.ts.map +1 -0
  149. package/dist/api-contract/validators/type.js +244 -0
  150. package/dist/api-contract/validators/type.js.map +1 -0
  151. package/dist/context/apiContract/complexTypeSupport.d.ts +83 -0
  152. package/dist/context/apiContract/complexTypeSupport.d.ts.map +1 -0
  153. package/dist/context/apiContract/complexTypeSupport.js +665 -0
  154. package/dist/context/apiContract/complexTypeSupport.js.map +1 -0
  155. package/dist/context/apiContract/graphqlSupport.d.ts +105 -0
  156. package/dist/context/apiContract/graphqlSupport.d.ts.map +1 -0
  157. package/dist/context/apiContract/graphqlSupport.js +671 -0
  158. package/dist/context/apiContract/graphqlSupport.js.map +1 -0
  159. package/dist/context/apiContract/index.d.ts +14 -0
  160. package/dist/context/apiContract/index.d.ts.map +1 -0
  161. package/dist/context/apiContract/index.js +17 -0
  162. package/dist/context/apiContract/index.js.map +1 -0
  163. package/dist/context/apiContract/webSocketSupport.d.ts +104 -0
  164. package/dist/context/apiContract/webSocketSupport.d.ts.map +1 -0
  165. package/dist/context/apiContract/webSocketSupport.js +465 -0
  166. package/dist/context/apiContract/webSocketSupport.js.map +1 -0
  167. package/dist/context/apiContractContext.d.ts +15 -0
  168. package/dist/context/apiContractContext.d.ts.map +1 -0
  169. package/dist/context/apiContractContext.js +979 -0
  170. package/dist/context/apiContractContext.js.map +1 -0
  171. package/dist/context/apiContractExtraction.d.ts +52 -0
  172. package/dist/context/apiContractExtraction.d.ts.map +1 -0
  173. package/dist/context/apiContractExtraction.js +438 -0
  174. package/dist/context/apiContractExtraction.js.map +1 -0
  175. package/dist/context/contextLineage.d.ts +79 -0
  176. package/dist/context/contextLineage.d.ts.map +1 -0
  177. package/dist/context/contextLineage.js +259 -0
  178. package/dist/context/contextLineage.js.map +1 -0
  179. package/dist/context/contextOrchestrator.d.ts +57 -0
  180. package/dist/context/contextOrchestrator.d.ts.map +1 -0
  181. package/dist/context/contextOrchestrator.js +162 -0
  182. package/dist/context/contextOrchestrator.js.map +1 -0
  183. package/dist/context/intentTracker.d.ts +73 -0
  184. package/dist/context/intentTracker.d.ts.map +1 -0
  185. package/dist/context/intentTracker.js +168 -0
  186. package/dist/context/intentTracker.js.map +1 -0
  187. package/dist/context/projectContext.d.ts +219 -0
  188. package/dist/context/projectContext.d.ts.map +1 -0
  189. package/dist/context/projectContext.js +1984 -0
  190. package/dist/context/projectContext.js.map +1 -0
  191. package/dist/prompts/index.d.ts +17 -0
  192. package/dist/prompts/index.d.ts.map +1 -0
  193. package/dist/prompts/index.js +260 -0
  194. package/dist/prompts/index.js.map +1 -0
  195. package/dist/prompts/library.d.ts +51 -0
  196. package/dist/prompts/library.d.ts.map +1 -0
  197. package/dist/prompts/library.js +65 -0
  198. package/dist/prompts/library.js.map +1 -0
  199. package/dist/prompts/templates.d.ts +44 -0
  200. package/dist/prompts/templates.d.ts.map +1 -0
  201. package/dist/prompts/templates.js +97 -0
  202. package/dist/prompts/templates.js.map +1 -0
  203. package/dist/queue/jobPersistence.d.ts +46 -0
  204. package/dist/queue/jobPersistence.d.ts.map +1 -0
  205. package/dist/queue/jobPersistence.js +158 -0
  206. package/dist/queue/jobPersistence.js.map +1 -0
  207. package/dist/queue/jobQueue.d.ts +116 -0
  208. package/dist/queue/jobQueue.d.ts.map +1 -0
  209. package/dist/queue/jobQueue.js +275 -0
  210. package/dist/queue/jobQueue.js.map +1 -0
  211. package/dist/queue/validationJob.d.ts +69 -0
  212. package/dist/queue/validationJob.d.ts.map +1 -0
  213. package/dist/queue/validationJob.js +435 -0
  214. package/dist/queue/validationJob.js.map +1 -0
  215. package/dist/resources/index.d.ts +15 -0
  216. package/dist/resources/index.d.ts.map +1 -0
  217. package/dist/resources/index.js +328 -0
  218. package/dist/resources/index.js.map +1 -0
  219. package/dist/resources/validationReportStore.d.ts +170 -0
  220. package/dist/resources/validationReportStore.d.ts.map +1 -0
  221. package/dist/resources/validationReportStore.js +515 -0
  222. package/dist/resources/validationReportStore.js.map +1 -0
  223. package/dist/server.d.ts +12 -0
  224. package/dist/server.d.ts.map +1 -0
  225. package/dist/server.js +102 -0
  226. package/dist/server.js.map +1 -0
  227. package/dist/tools/asyncValidation.d.ts +19 -0
  228. package/dist/tools/asyncValidation.d.ts.map +1 -0
  229. package/dist/tools/asyncValidation.js +346 -0
  230. package/dist/tools/asyncValidation.js.map +1 -0
  231. package/dist/tools/buildContext.d.ts +17 -0
  232. package/dist/tools/buildContext.d.ts.map +1 -0
  233. package/dist/tools/buildContext.js +188 -0
  234. package/dist/tools/buildContext.js.map +1 -0
  235. package/dist/tools/getDependencyGraph.d.ts +16 -0
  236. package/dist/tools/getDependencyGraph.d.ts.map +1 -0
  237. package/dist/tools/getDependencyGraph.js +436 -0
  238. package/dist/tools/getDependencyGraph.js.map +1 -0
  239. package/dist/tools/incrementalValidation.d.ts +71 -0
  240. package/dist/tools/incrementalValidation.d.ts.map +1 -0
  241. package/dist/tools/incrementalValidation.js +203 -0
  242. package/dist/tools/incrementalValidation.js.map +1 -0
  243. package/dist/tools/index.d.ts +24 -0
  244. package/dist/tools/index.d.ts.map +1 -0
  245. package/dist/tools/index.js +106 -0
  246. package/dist/tools/index.js.map +1 -0
  247. package/dist/tools/validateCode.d.ts +17 -0
  248. package/dist/tools/validateCode.d.ts.map +1 -0
  249. package/dist/tools/validateCode.js +368 -0
  250. package/dist/tools/validateCode.js.map +1 -0
  251. package/dist/tools/validateCodeLite.d.ts +2 -0
  252. package/dist/tools/validateCodeLite.d.ts.map +1 -0
  253. package/dist/tools/validateCodeLite.js +2 -0
  254. package/dist/tools/validateCodeLite.js.map +1 -0
  255. package/dist/tools/validation/builtins.d.ts +92 -0
  256. package/dist/tools/validation/builtins.d.ts.map +1 -0
  257. package/dist/tools/validation/builtins.js +2184 -0
  258. package/dist/tools/validation/builtins.js.map +1 -0
  259. package/dist/tools/validation/contextualNaming.d.ts +99 -0
  260. package/dist/tools/validation/contextualNaming.d.ts.map +1 -0
  261. package/dist/tools/validation/contextualNaming.js +959 -0
  262. package/dist/tools/validation/contextualNaming.js.map +1 -0
  263. package/dist/tools/validation/deadCode.d.ts +115 -0
  264. package/dist/tools/validation/deadCode.d.ts.map +1 -0
  265. package/dist/tools/validation/deadCode.js +861 -0
  266. package/dist/tools/validation/deadCode.js.map +1 -0
  267. package/dist/tools/validation/extractors/index.d.ts +131 -0
  268. package/dist/tools/validation/extractors/index.d.ts.map +1 -0
  269. package/dist/tools/validation/extractors/index.js +233 -0
  270. package/dist/tools/validation/extractors/index.js.map +1 -0
  271. package/dist/tools/validation/extractors/javascript.d.ts +73 -0
  272. package/dist/tools/validation/extractors/javascript.d.ts.map +1 -0
  273. package/dist/tools/validation/extractors/javascript.js +1841 -0
  274. package/dist/tools/validation/extractors/javascript.js.map +1 -0
  275. package/dist/tools/validation/extractors/python.d.ts +93 -0
  276. package/dist/tools/validation/extractors/python.d.ts.map +1 -0
  277. package/dist/tools/validation/extractors/python.js +799 -0
  278. package/dist/tools/validation/extractors/python.js.map +1 -0
  279. package/dist/tools/validation/manifest.d.ts +45 -0
  280. package/dist/tools/validation/manifest.d.ts.map +1 -0
  281. package/dist/tools/validation/manifest.js +719 -0
  282. package/dist/tools/validation/manifest.js.map +1 -0
  283. package/dist/tools/validation/parser.d.ts +58 -0
  284. package/dist/tools/validation/parser.d.ts.map +1 -0
  285. package/dist/tools/validation/parser.js +232 -0
  286. package/dist/tools/validation/parser.js.map +1 -0
  287. package/dist/tools/validation/registry.d.ts +15 -0
  288. package/dist/tools/validation/registry.d.ts.map +1 -0
  289. package/dist/tools/validation/registry.js +169 -0
  290. package/dist/tools/validation/registry.js.map +1 -0
  291. package/dist/tools/validation/scoring.d.ts +54 -0
  292. package/dist/tools/validation/scoring.d.ts.map +1 -0
  293. package/dist/tools/validation/scoring.js +242 -0
  294. package/dist/tools/validation/scoring.js.map +1 -0
  295. package/dist/tools/validation/types.d.ts +120 -0
  296. package/dist/tools/validation/types.d.ts.map +1 -0
  297. package/dist/tools/validation/types.js +11 -0
  298. package/dist/tools/validation/types.js.map +1 -0
  299. package/dist/tools/validation/unusedLocals.d.ts +36 -0
  300. package/dist/tools/validation/unusedLocals.d.ts.map +1 -0
  301. package/dist/tools/validation/unusedLocals.js +333 -0
  302. package/dist/tools/validation/unusedLocals.js.map +1 -0
  303. package/dist/tools/validation/validation.d.ts +98 -0
  304. package/dist/tools/validation/validation.d.ts.map +1 -0
  305. package/dist/tools/validation/validation.js +1837 -0
  306. package/dist/tools/validation/validation.js.map +1 -0
  307. package/dist/types/codeGraph.d.ts +163 -0
  308. package/dist/types/codeGraph.d.ts.map +1 -0
  309. package/dist/types/codeGraph.js +9 -0
  310. package/dist/types/codeGraph.js.map +1 -0
  311. package/dist/types/symbolGraph.d.ts +68 -0
  312. package/dist/types/symbolGraph.d.ts.map +1 -0
  313. package/dist/types/symbolGraph.js +10 -0
  314. package/dist/types/symbolGraph.js.map +1 -0
  315. package/dist/types/tools.d.ts +43 -0
  316. package/dist/types/tools.d.ts.map +1 -0
  317. package/dist/types/tools.js +7 -0
  318. package/dist/types/tools.js.map +1 -0
  319. package/dist/utils/fileFilter.d.ts +37 -0
  320. package/dist/utils/fileFilter.d.ts.map +1 -0
  321. package/dist/utils/fileFilter.js +91 -0
  322. package/dist/utils/fileFilter.js.map +1 -0
  323. package/dist/utils/gitUtils.d.ts +28 -0
  324. package/dist/utils/gitUtils.d.ts.map +1 -0
  325. package/dist/utils/gitUtils.js +81 -0
  326. package/dist/utils/gitUtils.js.map +1 -0
  327. package/dist/utils/logger.d.ts +15 -0
  328. package/dist/utils/logger.d.ts.map +1 -0
  329. package/dist/utils/logger.js +38 -0
  330. package/dist/utils/logger.js.map +1 -0
  331. package/dist/utils/serialization.d.ts +25 -0
  332. package/dist/utils/serialization.d.ts.map +1 -0
  333. package/dist/utils/serialization.js +53 -0
  334. package/dist/utils/serialization.js.map +1 -0
  335. package/package.json +90 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/tools/validation/manifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Parser Module - Tree-sitter Parser Initialization and Management
3
+ *
4
+ * This module manages Tree-sitter parser instances for different programming languages.
5
+ * It provides parser caching for performance and validates language support.
6
+ *
7
+ * Responsibilities:
8
+ * - Initialize Tree-sitter parsers for supported languages (Python, JavaScript, TypeScript)
9
+ * - Cache parser instances for reuse (performance optimization)
10
+ * - Validate language support before parsing
11
+ * - Handle parser configuration and language grammar loading
12
+ *
13
+ * @format
14
+ */
15
+ import type ParserT from "tree-sitter";
16
+ declare const SUPPORTED_LANGUAGES: Set<string>;
17
+ /**
18
+ * Clear all parser and AST caches.
19
+ *
20
+ * Primarily intended for tests to avoid cross-suite interference.
21
+ */
22
+ export declare function clearParserCaches(): void;
23
+ /**
24
+ * Get or create a parser for the specified language.
25
+ * Parsers are cached at module level for performance.
26
+ *
27
+ * @param language - The programming language to parse (typescript, javascript, python)
28
+ * @returns Parser instance configured for the specified language
29
+ * @throws Error if language is not supported (falls back to TypeScript parser with warning)
30
+ */
31
+ export declare function getParser(language: string): ParserT;
32
+ /**
33
+ * Parse code with a small in-memory cache.
34
+ *
35
+ * Primary goal: avoid repeated `parser.parse(...)` calls for the same `code`
36
+ * string within a single validation run (imports/usages/type refs/symbols).
37
+ *
38
+ * If `filePath` is provided, we additionally keep a per-file last-tree cache
39
+ * and pass the previous tree as `oldTree` to Tree-sitter for potential speedups.
40
+ */
41
+ export declare function parseCodeCached(code: string, language: string, options?: {
42
+ filePath?: string;
43
+ cacheKey?: string;
44
+ useCache?: boolean;
45
+ }): ParserT.Tree;
46
+ export declare function clearParseCaches(): void;
47
+ /**
48
+ * Check if a language is supported by the AST validator.
49
+ *
50
+ * @param language - The programming language to check
51
+ * @returns true if the language is supported, false otherwise
52
+ */
53
+ export declare function isSupportedLanguage(language: string): boolean;
54
+ /**
55
+ * Export the set of supported languages for external use.
56
+ */
57
+ export { SUPPORTED_LANGUAGES };
58
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/tools/validation/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,OAAO,MAAM,aAAa,CAAC;AAevC,QAAA,MAAM,mBAAmB,aAAkD,CAAC;AAqC5E;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAMxC;AAmFD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAiCnD;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GACzE,OAAO,CAAC,IAAI,CA0Dd;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;GAEG;AACH,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,232 @@
1
+ /**
2
+ * Parser Module - Tree-sitter Parser Initialization and Management
3
+ *
4
+ * This module manages Tree-sitter parser instances for different programming languages.
5
+ * It provides parser caching for performance and validates language support.
6
+ *
7
+ * Responsibilities:
8
+ * - Initialize Tree-sitter parsers for supported languages (Python, JavaScript, TypeScript)
9
+ * - Cache parser instances for reuse (performance optimization)
10
+ * - Validate language support before parsing
11
+ * - Handle parser configuration and language grammar loading
12
+ *
13
+ * @format
14
+ */
15
+ import { createRequire } from "module";
16
+ import { logger } from "../../utils/logger.js";
17
+ import * as crypto from "crypto";
18
+ const require = createRequire(import.meta.url);
19
+ // IMPORTANT: Use CJS `require(...)` so these native modules are loaded via the
20
+ // same loader/cache across Jest VM contexts.
21
+ const ParserRuntime = require("tree-sitter");
22
+ const TypeScriptLangs = require("tree-sitter-typescript");
23
+ const JavaScriptLang = require("tree-sitter-javascript");
24
+ const PythonLang = require("tree-sitter-python");
25
+ // Supported languages for explicit validation
26
+ const SUPPORTED_LANGUAGES = new Set(["typescript", "javascript", "python"]);
27
+ // Initialize parsers once (module-level cache for performance)
28
+ const parsers = {};
29
+ // Jest executes each test file in its own VM context inside a worker process.
30
+ // Native Tree-sitter objects created in one VM context can behave
31
+ // inconsistently if reused in another, so we disable parser/tree caching under
32
+ // Jest for test isolation.
33
+ const CACHE_PARSER_INSTANCES = typeof process !== "undefined" && !process.env.JEST_WORKER_ID;
34
+ const CACHE_PARSED_TREES = typeof process !== "undefined" && !process.env.JEST_WORKER_ID;
35
+ // Content-hash based cache (best for: repeated passes over the same code string)
36
+ const treeCache = new Map();
37
+ // File-path based cache (best for: watcher-driven re-validations of a file)
38
+ // Note: we attempt to pass the previous tree as `oldTree` to Tree-sitter.
39
+ // True incremental parsing requires precise `tree.edit(...)` ranges; we do not
40
+ // compute them here to avoid behavioral risk.
41
+ const fileTreeCache = new Map();
42
+ const DEFAULT_TREE_CACHE_MAX_ENTRIES = 250;
43
+ const DEFAULT_TREE_CACHE_TTL_MS = 2 * 60 * 1000; // 2 minutes
44
+ /**
45
+ * Clear all parser and AST caches.
46
+ *
47
+ * Primarily intended for tests to avoid cross-suite interference.
48
+ */
49
+ export function clearParserCaches() {
50
+ for (const key of Object.keys(parsers)) {
51
+ delete parsers[key];
52
+ }
53
+ treeCache.clear();
54
+ fileTreeCache.clear();
55
+ }
56
+ function computeContentHash(content) {
57
+ return crypto.createHash("sha256").update(content).digest("hex");
58
+ }
59
+ function computePoint(code, index) {
60
+ // Tree-sitter Point uses zero-based row/column.
61
+ let row = 0;
62
+ let lastNewlineIndex = -1;
63
+ // Fast path: scan up to index
64
+ for (let i = 0; i < index; i++) {
65
+ if (code.charCodeAt(i) === 10 /* \n */) {
66
+ row++;
67
+ lastNewlineIndex = i;
68
+ }
69
+ }
70
+ return { row, column: index - (lastNewlineIndex + 1) };
71
+ }
72
+ function computeSingleEdit(oldCode, newCode) {
73
+ let startIndex = 0;
74
+ const oldLen = oldCode.length;
75
+ const newLen = newCode.length;
76
+ // Common prefix
77
+ while (startIndex < oldLen &&
78
+ startIndex < newLen &&
79
+ oldCode.charCodeAt(startIndex) === newCode.charCodeAt(startIndex)) {
80
+ startIndex++;
81
+ }
82
+ // Common suffix
83
+ let oldEndIndex = oldLen;
84
+ let newEndIndex = newLen;
85
+ while (oldEndIndex > startIndex &&
86
+ newEndIndex > startIndex &&
87
+ oldCode.charCodeAt(oldEndIndex - 1) === newCode.charCodeAt(newEndIndex - 1)) {
88
+ oldEndIndex--;
89
+ newEndIndex--;
90
+ }
91
+ return {
92
+ startIndex,
93
+ oldEndIndex,
94
+ newEndIndex,
95
+ startPosition: computePoint(oldCode, startIndex),
96
+ oldEndPosition: computePoint(oldCode, oldEndIndex),
97
+ newEndPosition: computePoint(newCode, newEndIndex),
98
+ };
99
+ }
100
+ function pruneCache(cache) {
101
+ const now = Date.now();
102
+ // TTL pruning
103
+ for (const [key, entry] of cache.entries()) {
104
+ if (now - entry.timestamp > DEFAULT_TREE_CACHE_TTL_MS) {
105
+ cache.delete(key);
106
+ }
107
+ }
108
+ // Size pruning (remove oldest entries first)
109
+ if (cache.size <= DEFAULT_TREE_CACHE_MAX_ENTRIES)
110
+ return;
111
+ const entries = Array.from(cache.entries()).sort((a, b) => a[1].timestamp - b[1].timestamp);
112
+ const overflow = cache.size - DEFAULT_TREE_CACHE_MAX_ENTRIES;
113
+ for (let i = 0; i < overflow; i++) {
114
+ cache.delete(entries[i][0]);
115
+ }
116
+ }
117
+ /**
118
+ * Get or create a parser for the specified language.
119
+ * Parsers are cached at module level for performance.
120
+ *
121
+ * @param language - The programming language to parse (typescript, javascript, python)
122
+ * @returns Parser instance configured for the specified language
123
+ * @throws Error if language is not supported (falls back to TypeScript parser with warning)
124
+ */
125
+ export function getParser(language) {
126
+ if (CACHE_PARSER_INSTANCES && parsers[language])
127
+ return parsers[language];
128
+ if (!SUPPORTED_LANGUAGES.has(language)) {
129
+ logger.warn(`Unsupported language "${language}", falling back to TypeScript parser`);
130
+ }
131
+ const parser = new ParserRuntime();
132
+ switch (language) {
133
+ case "typescript":
134
+ // Always use TSX for TypeScript as it's a superset and handles JSX/TSX files
135
+ parser.setLanguage((TypeScriptLangs.tsx ?? TypeScriptLangs.typescript ?? TypeScriptLangs));
136
+ break;
137
+ case "javascript":
138
+ // JavaScript parser handles JSX by default in tree-sitter-javascript
139
+ parser.setLanguage(JavaScriptLang);
140
+ break;
141
+ case "python":
142
+ parser.setLanguage(PythonLang);
143
+ break;
144
+ default:
145
+ parser.setLanguage((TypeScriptLangs.typescript ?? TypeScriptLangs));
146
+ }
147
+ if (CACHE_PARSER_INSTANCES) {
148
+ parsers[language] = parser;
149
+ }
150
+ return parser;
151
+ }
152
+ /**
153
+ * Parse code with a small in-memory cache.
154
+ *
155
+ * Primary goal: avoid repeated `parser.parse(...)` calls for the same `code`
156
+ * string within a single validation run (imports/usages/type refs/symbols).
157
+ *
158
+ * If `filePath` is provided, we additionally keep a per-file last-tree cache
159
+ * and pass the previous tree as `oldTree` to Tree-sitter for potential speedups.
160
+ */
161
+ export function parseCodeCached(code, language, options = {}) {
162
+ const { filePath, cacheKey, useCache = CACHE_PARSED_TREES } = options;
163
+ const parser = getParser(language);
164
+ if (!useCache)
165
+ return parser.parse(code);
166
+ pruneCache(treeCache);
167
+ pruneCache(fileTreeCache);
168
+ const hash = computeContentHash(code);
169
+ // Cache key strategy:
170
+ // - If caller provides `cacheKey`, treat it as a stable identity (session/file).
171
+ // - Else if `filePath` is provided, use a stable per-file key so we don't keep
172
+ // multiple stale entries for the same file content across edits.
173
+ // - Else fall back to content hash.
174
+ //
175
+ // IMPORTANT: Always namespace by language to avoid cross-language collisions.
176
+ const contentKey = cacheKey ? `${language}:key:${cacheKey}`
177
+ : filePath ? `${language}:file:${filePath}`
178
+ : `${language}:hash:${hash}`;
179
+ const cached = treeCache.get(contentKey);
180
+ if (cached && cached.hash === hash) {
181
+ cached.timestamp = Date.now();
182
+ return cached.tree;
183
+ }
184
+ // Optional per-file cache (attempts to leverage Tree-sitter's oldTree reuse)
185
+ let tree;
186
+ if (filePath) {
187
+ const fileKey = `${language}:${filePath}`;
188
+ const previous = fileTreeCache.get(fileKey);
189
+ // Best-effort incremental parsing:
190
+ // - Only enabled when we have the previous code string.
191
+ // - We apply a single "replace range" edit to the previous tree.
192
+ // - If anything fails, we fall back to a full parse.
193
+ if (previous?.tree && typeof previous.code === "string") {
194
+ try {
195
+ const edit = computeSingleEdit(previous.code, code);
196
+ previous.tree.edit(edit);
197
+ tree = parser.parse(code, previous.tree);
198
+ }
199
+ catch {
200
+ tree = parser.parse(code);
201
+ }
202
+ }
203
+ else {
204
+ tree = parser.parse(code);
205
+ }
206
+ fileTreeCache.set(fileKey, { tree, hash, timestamp: Date.now(), code });
207
+ }
208
+ else {
209
+ tree = parser.parse(code);
210
+ }
211
+ treeCache.set(contentKey, { tree, hash, timestamp: Date.now() });
212
+ return tree;
213
+ }
214
+ export function clearParseCaches() {
215
+ treeCache.clear();
216
+ fileTreeCache.clear();
217
+ logger.debug("AST parse caches cleared");
218
+ }
219
+ /**
220
+ * Check if a language is supported by the AST validator.
221
+ *
222
+ * @param language - The programming language to check
223
+ * @returns true if the language is supported, false otherwise
224
+ */
225
+ export function isSupportedLanguage(language) {
226
+ return SUPPORTED_LANGUAGES.has(language);
227
+ }
228
+ /**
229
+ * Export the set of supported languages for external use.
230
+ */
231
+ export { SUPPORTED_LANGUAGES };
232
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/tools/validation/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Package Registry Lookup Module
3
+ *
4
+ * Verifies if a package exists in public registries (NPM, PyPI).
5
+ * Used to distinguish between "Missing Dependency" (exists online) and "Hallucination" (doesn't exist).
6
+ */
7
+ /**
8
+ * Check if a package exists in the public registry.
9
+ *
10
+ * @param pkgName - The package name to check
11
+ * @param language - The programming language ('javascript', 'typescript', 'python', 'go')
12
+ * @returns Promise<boolean> - true if package exists, false otherwise
13
+ */
14
+ export declare function checkPackageRegistry(pkgName: string, language: string): Promise<boolean>;
15
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/tools/validation/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAyBH;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAwC9F"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * Package Registry Lookup Module
3
+ *
4
+ * Verifies if a package exists in public registries (NPM, PyPI).
5
+ * Used to distinguish between "Missing Dependency" (exists online) and "Hallucination" (doesn't exist).
6
+ */
7
+ import { logger } from "../../utils/logger.js";
8
+ // Cache registry results to avoid redundant network requests
9
+ const registryCache = new Map();
10
+ function isLikelyHallucinatedPackageName(pkgName) {
11
+ const name = (pkgName || "").toLowerCase();
12
+ if (!name)
13
+ return false;
14
+ // Common test/fixture names and obvious hallucination markers.
15
+ const patterns = [
16
+ /^fake(?:[-_]|$)/,
17
+ /non[-_]?existent/,
18
+ /does[-_]?not[-_]?exist/,
19
+ /totally[-_]?fake/,
20
+ /phantom/,
21
+ /hallucinat/,
22
+ /xyz\d*/,
23
+ ];
24
+ return patterns.some((p) => p.test(name));
25
+ }
26
+ /**
27
+ * Check if a package exists in the public registry.
28
+ *
29
+ * @param pkgName - The package name to check
30
+ * @param language - The programming language ('javascript', 'typescript', 'python', 'go')
31
+ * @returns Promise<boolean> - true if package exists, false otherwise
32
+ */
33
+ export async function checkPackageRegistry(pkgName, language) {
34
+ const cacheKey = `${language}:${pkgName}`;
35
+ if (registryCache.has(cacheKey)) {
36
+ return registryCache.get(cacheKey);
37
+ }
38
+ // Common built-in or known false positives?
39
+ // (validation.ts already filters Node built-ins)
40
+ try {
41
+ let exists = false;
42
+ // Normalize language
43
+ const lang = language.toLowerCase();
44
+ if (lang === 'javascript' || lang === 'typescript') {
45
+ exists = await checkNPM(pkgName);
46
+ }
47
+ else if (lang === 'python') {
48
+ exists = await checkPyPI(pkgName);
49
+ }
50
+ else if (lang === 'go') {
51
+ // Go uses git repos, can check proxy.golang.org
52
+ exists = await checkGoProxy(pkgName);
53
+ }
54
+ else {
55
+ // Unknown language - assume true to be safe (avoid false criticals)
56
+ exists = true;
57
+ }
58
+ registryCache.set(cacheKey, exists);
59
+ return exists;
60
+ }
61
+ catch (error) {
62
+ logger.warn(`Failed to check registry for ${pkgName}:`, error);
63
+ // If registry check fails (network error), we generally fail open (assume it exists)
64
+ // to avoid blocking development or showing false critical errors.
65
+ // HOWEVER, for obviously hallucinated names (common in tests/fixtures), fail closed
66
+ // so validation remains deterministic.
67
+ const exists = !isLikelyHallucinatedPackageName(pkgName);
68
+ registryCache.set(cacheKey, exists);
69
+ return exists;
70
+ }
71
+ }
72
+ async function checkNPM(pkgName) {
73
+ // Use a HEAD request if possible to save bandwidth, but registry.npmjs.org supports GET
74
+ // We use the abbreviated metadata endpoint if possible, or just the root
75
+ // https://github.com/npm/registry/blob/master/docs/responses/package-metadata.md
76
+ // Note: Unscoped packages are at root. Scoped packages are also reachable.
77
+ // We use the public registry.
78
+ const url = `https://registry.npmjs.org/${encodeURIComponent(pkgName)}`;
79
+ const controller = new AbortController();
80
+ const timeoutId = setTimeout(() => controller.abort(), 2000); // 2s timeout
81
+ try {
82
+ const response = await fetch(url, {
83
+ method: 'HEAD', // Try HEAD first
84
+ signal: controller.signal
85
+ });
86
+ if (response.status === 200)
87
+ return true;
88
+ if (response.status === 404)
89
+ return false;
90
+ // If Method Not Allowed (some proxies blocking HEAD), try GET
91
+ if (response.status === 405) {
92
+ const getResponse = await fetch(url, {
93
+ method: 'GET',
94
+ headers: { 'Accept': 'application/vnd.npm.install-v1+json' }, // lighter response
95
+ signal: controller.signal
96
+ });
97
+ return getResponse.status === 200;
98
+ }
99
+ return false;
100
+ }
101
+ finally {
102
+ clearTimeout(timeoutId);
103
+ }
104
+ }
105
+ // Known import name -> PyPI package name mappings
106
+ // Used when the import name differs from the PyPI package name
107
+ const IMPORT_TO_PYPI = {
108
+ dateutil: "python-dateutil",
109
+ pythonjsonlogger: "python-json-logger",
110
+ yaml: "pyyaml",
111
+ cv2: "opencv-python",
112
+ PIL: "pillow",
113
+ bs4: "beautifulsoup4",
114
+ sklearn: "scikit-learn",
115
+ dotenv: "python-dotenv",
116
+ jose: "python-jose",
117
+ decouple: "python-decouple",
118
+ attr: "attrs",
119
+ gi: "pygobject",
120
+ serial: "pyserial",
121
+ usb: "pyusb",
122
+ wx: "wxpython",
123
+ sentry_sdk: "sentry-sdk",
124
+ };
125
+ async function checkPyPI(pkgName) {
126
+ // Try the direct name first
127
+ const namesToTry = [pkgName];
128
+ // If there's a known mapping, try the real PyPI name too
129
+ const mapped = IMPORT_TO_PYPI[pkgName];
130
+ if (mapped)
131
+ namesToTry.push(mapped);
132
+ // Also try with python- prefix (common pattern)
133
+ if (!pkgName.startsWith("python-"))
134
+ namesToTry.push(`python-${pkgName}`);
135
+ for (const name of namesToTry) {
136
+ const url = `https://pypi.org/pypi/${name}/json`;
137
+ const controller = new AbortController();
138
+ const timeoutId = setTimeout(() => controller.abort(), 2000);
139
+ try {
140
+ const response = await fetch(url, {
141
+ method: 'HEAD',
142
+ signal: controller.signal
143
+ });
144
+ if (response.status === 200)
145
+ return true;
146
+ }
147
+ finally {
148
+ clearTimeout(timeoutId);
149
+ }
150
+ }
151
+ return false;
152
+ }
153
+ async function checkGoProxy(pkgName) {
154
+ // Go proxy protocol: https://proxy.golang.org/${pkgName}/@v/list
155
+ const url = `https://proxy.golang.org/${pkgName}/@v/list`;
156
+ const controller = new AbortController();
157
+ const timeoutId = setTimeout(() => controller.abort(), 2000); // 2s timeout
158
+ try {
159
+ const response = await fetch(url, {
160
+ method: 'GET',
161
+ signal: controller.signal
162
+ });
163
+ return response.status === 200;
164
+ }
165
+ finally {
166
+ clearTimeout(timeoutId);
167
+ }
168
+ }
169
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/tools/validation/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,6DAA6D;AAC7D,MAAM,aAAa,GAAG,IAAI,GAAG,EAAmB,CAAC;AAEjD,SAAS,+BAA+B,CAAC,OAAe;IACtD,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3C,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAExB,+DAA+D;IAC/D,MAAM,QAAQ,GAAa;QACzB,iBAAiB;QACjB,kBAAkB;QAClB,wBAAwB;QACxB,kBAAkB;QAClB,SAAS;QACT,YAAY;QACZ,QAAQ;KACT,CAAC;IAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAAe,EAAE,QAAgB;IAC1E,MAAM,QAAQ,GAAG,GAAG,QAAQ,IAAI,OAAO,EAAE,CAAC;IAC1C,IAAI,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,OAAO,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;IACtC,CAAC;IAED,4CAA4C;IAC5C,iDAAiD;IAEjD,IAAI,CAAC;QACH,IAAI,MAAM,GAAG,KAAK,CAAC;QAEnB,qBAAqB;QACrB,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QAEpC,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YACnD,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;aAAM,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACzB,gDAAgD;YAChD,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,oEAAoE;YACpE,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;QAED,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,gCAAgC,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC;QAE/D,qFAAqF;QACrF,kEAAkE;QAClE,oFAAoF;QACpF,uCAAuC;QACvC,MAAM,MAAM,GAAG,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC;QACzD,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,OAAe;IACrC,wFAAwF;IACxF,yEAAyE;IACzE,iFAAiF;IAEjF,2EAA2E;IAC3E,8BAA8B;IAE9B,MAAM,GAAG,GAAG,8BAA8B,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;IAExE,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa;IAE3E,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM,EAAE,iBAAiB;YACjC,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QACzC,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,KAAK,CAAC;QAE1C,8DAA8D;QAC9D,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC3B,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBACnC,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,EAAE,QAAQ,EAAE,qCAAqC,EAAE,EAAE,mBAAmB;gBACjF,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YACH,OAAO,WAAW,CAAC,MAAM,KAAK,GAAG,CAAC;QACrC,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,kDAAkD;AAClD,+DAA+D;AAC/D,MAAM,cAAc,GAA2B;IAC7C,QAAQ,EAAE,iBAAiB;IAC3B,gBAAgB,EAAE,oBAAoB;IACtC,IAAI,EAAE,QAAQ;IACd,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,gBAAgB;IACrB,OAAO,EAAE,cAAc;IACvB,MAAM,EAAE,eAAe;IACvB,IAAI,EAAE,aAAa;IACnB,QAAQ,EAAE,iBAAiB;IAC3B,IAAI,EAAE,OAAO;IACb,EAAE,EAAE,WAAW;IACf,MAAM,EAAE,UAAU;IAClB,GAAG,EAAE,OAAO;IACZ,EAAE,EAAE,UAAU;IACd,UAAU,EAAE,YAAY;CACzB,CAAC;AAEF,KAAK,UAAU,SAAS,CAAC,OAAe;IACtC,4BAA4B;IAC5B,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7B,yDAAyD;IACzD,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,MAAM;QAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,gDAAgD;IAChD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,UAAU,CAAC,IAAI,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;IAEzE,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,yBAAyB,IAAI,OAAO,CAAC;QAEjD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;QAE7D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAChC,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;gBAAE,OAAO,IAAI,CAAC;QAC3C,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,OAAe;IACzC,iEAAiE;IACjE,MAAM,GAAG,GAAG,4BAA4B,OAAO,UAAU,CAAC;IAE1D,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa;IAE3E,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC;IACjC,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Scoring and Fuzzy Matching Module
3
+ *
4
+ * This module provides scoring algorithms and fuzzy matching for generating
5
+ * suggestions and recommendations in the validation system.
6
+ *
7
+ * Responsibilities:
8
+ * - Calculate overall code quality scores (0-100) based on issue severity
9
+ * - Generate actionable recommendations (REJECT, REVIEW, CAUTION, ACCEPT, CLEAN_UP)
10
+ * - Implement Jaro-Winkler similarity for fuzzy string matching
11
+ * - Suggest similar symbols using multiple matching strategies
12
+ * - Detect structural similarity (camelCase, snake_case patterns)
13
+ * - Extract symbol names from suggestion strings
14
+ *
15
+ * @format
16
+ */
17
+ import type { ValidationIssue, DeadCodeIssue } from "./types.js";
18
+ /**
19
+ * Represents a recommendation for code quality
20
+ */
21
+ export interface Recommendation {
22
+ verdict: "REJECT" | "REVIEW" | "CAUTION" | "ACCEPT" | "CLEAN_UP";
23
+ riskLevel: "critical" | "high" | "medium" | "low";
24
+ message: string;
25
+ action: string;
26
+ }
27
+ /**
28
+ * Calculate Jaro-Winkler similarity between two strings.
29
+ * Returns a value between 0 and 1, where 1 is an exact match.
30
+ * Better than Levenshtein for typo detection.
31
+ */
32
+ export declare function jaroWinklerSimilarity(s1: string, s2: string): number;
33
+ /**
34
+ * Check if two strings have similar structure (camelCase, snake_case patterns).
35
+ */
36
+ export declare function hasSimilarStructure(s1: string, s2: string): boolean;
37
+ /**
38
+ * Suggest similar symbols using multiple matching strategies.
39
+ * Combines Jaro-Winkler similarity, substring matching, and structural similarity.
40
+ */
41
+ export declare function suggestSimilar(target: string, available: string[]): string;
42
+ /**
43
+ * Extract similar symbol names from a suggestion string
44
+ */
45
+ export declare function extractSimilarSymbols(suggestion: string): string[];
46
+ /**
47
+ * Calculate overall code quality score (0-100) based on issue severity
48
+ */
49
+ export declare function calculateScore(issues: ValidationIssue[], deadCode?: DeadCodeIssue[]): number;
50
+ /**
51
+ * Generate actionable recommendation based on score and issues
52
+ */
53
+ export declare function generateRecommendation(score: number, issues: ValidationIssue[], deadCode?: DeadCodeIssue[]): Recommendation;
54
+ //# sourceMappingURL=scoring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoring.d.ts","sourceRoot":"","sources":["../../../src/tools/validation/scoring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAMjE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;IACjE,SAAS,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAmDpE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAkBnE;AAaD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAkD1E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAOlE;AAMD;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,eAAe,EAAE,EACzB,QAAQ,GAAE,aAAa,EAAO,GAC7B,MAAM,CAeR;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,eAAe,EAAE,EACzB,QAAQ,GAAE,aAAa,EAAO,GAC7B,cAAc,CAsEhB"}