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,203 @@
1
+ /**
2
+ * Incremental Validation
3
+ *
4
+ * Validates only what changed since last validation, making iterative
5
+ * development much faster. Inspired by Augment Code's edit event tracking.
6
+ *
7
+ * @format
8
+ */
9
+ import { logger } from "../utils/logger.js";
10
+ class IncrementalValidationClass {
11
+ snapshots = new Map();
12
+ MAX_SNAPSHOTS = 10;
13
+ SNAPSHOT_TTL_MS = 30 * 60 * 1000; // 30 minutes
14
+ /**
15
+ * Save validation snapshot for incremental validation
16
+ */
17
+ saveSnapshot(sessionId, code, issues, deadCode) {
18
+ const hash = this.hashCode(code);
19
+ const snapshot = {
20
+ code,
21
+ timestamp: Date.now(),
22
+ issues,
23
+ deadCode,
24
+ hash,
25
+ };
26
+ this.snapshots.set(sessionId, snapshot);
27
+ // Cleanup old snapshots
28
+ if (this.snapshots.size > this.MAX_SNAPSHOTS) {
29
+ const oldest = Array.from(this.snapshots.entries())
30
+ .sort((a, b) => a[1].timestamp - b[1].timestamp)[0];
31
+ this.snapshots.delete(oldest[0]);
32
+ }
33
+ // Cleanup expired snapshots
34
+ this.cleanupExpiredSnapshots();
35
+ }
36
+ /**
37
+ * Get previous snapshot for comparison
38
+ */
39
+ getSnapshot(sessionId) {
40
+ const snapshot = this.snapshots.get(sessionId);
41
+ if (!snapshot)
42
+ return null;
43
+ // Check if expired
44
+ if (Date.now() - snapshot.timestamp > this.SNAPSHOT_TTL_MS) {
45
+ this.snapshots.delete(sessionId);
46
+ return null;
47
+ }
48
+ return snapshot;
49
+ }
50
+ /**
51
+ * Detect what changed between two code versions
52
+ */
53
+ detectChanges(oldCode, newCode) {
54
+ const oldLines = oldCode.split("\n");
55
+ const newLines = newCode.split("\n");
56
+ const changes = [];
57
+ // Simple line-by-line diff
58
+ let i = 0;
59
+ let j = 0;
60
+ while (i < oldLines.length || j < newLines.length) {
61
+ if (i >= oldLines.length) {
62
+ // Addition at end
63
+ changes.push({
64
+ type: "addition",
65
+ startLine: j + 1,
66
+ endLine: newLines.length,
67
+ newContent: newLines.slice(j).join("\n"),
68
+ });
69
+ break;
70
+ }
71
+ if (j >= newLines.length) {
72
+ // Deletion at end
73
+ changes.push({
74
+ type: "deletion",
75
+ startLine: i + 1,
76
+ endLine: oldLines.length,
77
+ oldContent: oldLines.slice(i).join("\n"),
78
+ });
79
+ break;
80
+ }
81
+ if (oldLines[i] === newLines[j]) {
82
+ // No change
83
+ i++;
84
+ j++;
85
+ continue;
86
+ }
87
+ // Find next matching line
88
+ const nextMatchOld = this.findNextMatch(oldLines, i, newLines[j]);
89
+ const nextMatchNew = this.findNextMatch(newLines, j, oldLines[i]);
90
+ if (nextMatchOld !== -1 && nextMatchOld < nextMatchNew) {
91
+ // Deletion
92
+ changes.push({
93
+ type: "deletion",
94
+ startLine: i + 1,
95
+ endLine: nextMatchOld,
96
+ oldContent: oldLines.slice(i, nextMatchOld).join("\n"),
97
+ });
98
+ i = nextMatchOld;
99
+ }
100
+ else if (nextMatchNew !== -1) {
101
+ // Addition
102
+ changes.push({
103
+ type: "addition",
104
+ startLine: j + 1,
105
+ endLine: nextMatchNew,
106
+ newContent: newLines.slice(j, nextMatchNew).join("\n"),
107
+ });
108
+ j = nextMatchNew;
109
+ }
110
+ else {
111
+ // Modification
112
+ changes.push({
113
+ type: "modification",
114
+ startLine: i + 1,
115
+ endLine: i + 1,
116
+ oldContent: oldLines[i],
117
+ newContent: newLines[j],
118
+ });
119
+ i++;
120
+ j++;
121
+ }
122
+ }
123
+ return changes;
124
+ }
125
+ /**
126
+ * Check if validation can be incremental
127
+ */
128
+ canUseIncremental(sessionId, newCode) {
129
+ const snapshot = this.getSnapshot(sessionId);
130
+ if (!snapshot) {
131
+ return { canUse: false };
132
+ }
133
+ // Check if code is too different (> 30% changed)
134
+ const changes = this.detectChanges(snapshot.code, newCode);
135
+ const totalLines = newCode.split("\n").length;
136
+ const changedLines = changes.reduce((sum, change) => sum + (change.endLine - change.startLine + 1), 0);
137
+ if (changedLines / totalLines > 0.3) {
138
+ logger.debug(`Too many changes (${changedLines}/${totalLines} lines), full validation needed`);
139
+ return { canUse: false };
140
+ }
141
+ return { canUse: true, snapshot, changes };
142
+ }
143
+ /**
144
+ * Filter issues to only those affected by changes
145
+ */
146
+ filterAffectedIssues(oldIssues, changes) {
147
+ const affectedLines = new Set();
148
+ for (const change of changes) {
149
+ for (let line = change.startLine; line <= change.endLine; line++) {
150
+ affectedLines.add(line);
151
+ }
152
+ }
153
+ // Keep issues that are NOT in affected lines (they're still valid)
154
+ return oldIssues.filter((issue) => {
155
+ if (!issue.line)
156
+ return true; // Keep issues without line numbers
157
+ return !affectedLines.has(issue.line);
158
+ });
159
+ }
160
+ /**
161
+ * Clear all snapshots
162
+ */
163
+ clear() {
164
+ this.snapshots.clear();
165
+ }
166
+ /**
167
+ * Simple hash function for code
168
+ */
169
+ hashCode(str) {
170
+ let hash = 0;
171
+ for (let i = 0; i < str.length; i++) {
172
+ const char = str.charCodeAt(i);
173
+ hash = (hash << 5) - hash + char;
174
+ hash = hash & hash; // Convert to 32bit integer
175
+ }
176
+ return hash.toString(36);
177
+ }
178
+ /**
179
+ * Find next matching line
180
+ */
181
+ findNextMatch(lines, start, target) {
182
+ for (let i = start; i < Math.min(start + 10, lines.length); i++) {
183
+ if (lines[i] === target) {
184
+ return i;
185
+ }
186
+ }
187
+ return -1;
188
+ }
189
+ /**
190
+ * Cleanup expired snapshots
191
+ */
192
+ cleanupExpiredSnapshots() {
193
+ const now = Date.now();
194
+ for (const [sessionId, snapshot] of this.snapshots.entries()) {
195
+ if (now - snapshot.timestamp > this.SNAPSHOT_TTL_MS) {
196
+ this.snapshots.delete(sessionId);
197
+ }
198
+ }
199
+ }
200
+ }
201
+ // Singleton instance
202
+ export const incrementalValidation = new IncrementalValidationClass();
203
+ //# sourceMappingURL=incrementalValidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incrementalValidation.js","sourceRoot":"","sources":["../../src/tools/incrementalValidation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * CodeGuardian MCP - Focused Tool Set
3
+ *
4
+ * 6 TOOLS - Each with clear, unique value:
5
+ *
6
+ * 1. validate_code - THE flagship: catches hallucinations + dead code (for snippets/small files)
7
+ * 2. start_validation - Submit async validation job for large codebases (no timeout limits)
8
+ * 3. get_validation_status - Check async job progress
9
+ * 4. get_validation_results - Retrieve async job results
10
+ * 5. build_context - Makes validation fast (auto-called, but can force rebuild)
11
+ * 6. get_dependency_graph - "What breaks if I change this?"
12
+ * 7. start_guardian - Activate the Guardian Agent (proactive validation)
13
+ * 8. stop_guardian - Stop the Guardian Agent
14
+ * 9. get_guardian_alerts - Get pending validation alerts
15
+ * 10. get_guardian_status - Check Guardian status
16
+ *
17
+ * @format
18
+ */
19
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
20
+ /**
21
+ * Register all tools with the MCP server
22
+ */
23
+ export declare function registerTools(server: Server): void;
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AA6BnE;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,QA4F3C"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * CodeGuardian MCP - Focused Tool Set
3
+ *
4
+ * 6 TOOLS - Each with clear, unique value:
5
+ *
6
+ * 1. validate_code - THE flagship: catches hallucinations + dead code (for snippets/small files)
7
+ * 2. start_validation - Submit async validation job for large codebases (no timeout limits)
8
+ * 3. get_validation_status - Check async job progress
9
+ * 4. get_validation_results - Retrieve async job results
10
+ * 5. build_context - Makes validation fast (auto-called, but can force rebuild)
11
+ * 6. get_dependency_graph - "What breaks if I change this?"
12
+ * 7. start_guardian - Activate the Guardian Agent (proactive validation)
13
+ * 8. stop_guardian - Stop the Guardian Agent
14
+ * 9. get_guardian_alerts - Get pending validation alerts
15
+ * 10. get_guardian_status - Check Guardian status
16
+ *
17
+ * @format
18
+ */
19
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
20
+ import { logger } from "../utils/logger.js";
21
+ // Core tools only
22
+ import { buildContextTool } from "./buildContext.js";
23
+ import { validateCodeTool } from "./validateCode.js";
24
+ import { getDependencyGraphTool } from "./getDependencyGraph.js";
25
+ // Async validation tools
26
+ import { startValidationTool, getValidationStatusTool, getValidationResultsTool, } from "./asyncValidation.js";
27
+ // Guardian tools - proactive real-time validation
28
+ import { startGuardianTool, stopGuardianTool, getGuardianAlertsTool, getGuardianStatusTool, validateApiContractsTool, getApiContractReportTool, } from "../agent/agentTools.js";
29
+ /**
30
+ * Register all tools with the MCP server
31
+ */
32
+ export function registerTools(server) {
33
+ // List all available tools
34
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
35
+ return {
36
+ tools: [
37
+ // Primary tool - hallucination + dead code detection
38
+ validateCodeTool.definition,
39
+ // Async validation - for large codebases (no timeout limits)
40
+ startValidationTool.definition,
41
+ getValidationStatusTool.definition,
42
+ getValidationResultsTool.definition,
43
+ // Context management (forceRebuild replaces invalidate_context)
44
+ buildContextTool.definition,
45
+ // Impact analysis - what breaks if I change this?
46
+ getDependencyGraphTool.definition,
47
+ // Guardian Mode - real-time proactive validation
48
+ startGuardianTool.definition,
49
+ stopGuardianTool.definition,
50
+ getGuardianAlertsTool.definition,
51
+ getGuardianStatusTool.definition,
52
+ // API Contract Guardian - validate frontend/backend contracts
53
+ validateApiContractsTool.definition,
54
+ getApiContractReportTool.definition,
55
+ ],
56
+ };
57
+ });
58
+ // Handle tool execution
59
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
60
+ const { name, arguments: args } = request.params;
61
+ logger.info(`Executing tool: ${name}`);
62
+ try {
63
+ switch (name) {
64
+ case "validate_code":
65
+ return await validateCodeTool.handler(args);
66
+ case "start_validation":
67
+ return await startValidationTool.handler(args);
68
+ case "get_validation_status":
69
+ return await getValidationStatusTool.handler(args);
70
+ case "get_validation_results":
71
+ return await getValidationResultsTool.handler(args);
72
+ case "build_context":
73
+ return await buildContextTool.handler(args);
74
+ case "get_dependency_graph":
75
+ return await getDependencyGraphTool.handler(args);
76
+ case "start_guardian":
77
+ return await startGuardianTool.handler(args);
78
+ case "stop_guardian":
79
+ return await stopGuardianTool.handler(args);
80
+ case "get_guardian_alerts":
81
+ return await getGuardianAlertsTool.handler(args);
82
+ case "get_guardian_status":
83
+ return await getGuardianStatusTool.handler(args);
84
+ case "validate_api_contracts":
85
+ return await validateApiContractsTool.handler(args);
86
+ case "get_api_contract_report":
87
+ return await getApiContractReportTool.handler(args);
88
+ default:
89
+ throw new Error(`Unknown tool: ${name}`);
90
+ }
91
+ }
92
+ catch (error) {
93
+ logger.error(`Error executing tool ${name}:`, error);
94
+ return {
95
+ content: [
96
+ {
97
+ type: "text",
98
+ text: `Error: ${error instanceof Error ? error.message : String(error)}`,
99
+ },
100
+ ],
101
+ isError: true,
102
+ };
103
+ }
104
+ });
105
+ }
106
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Validate Code Tool - Unified AST-Based Validator
3
+ *
4
+ * THE UNIFIED AI CODE VALIDATOR
5
+ *
6
+ * Catches THREE types of AI mistakes:
7
+ * 1. HALLUCINATIONS - References to things that don't exist
8
+ * 2. DEPENDENCY HALLUCINATIONS - Imports from packages not in manifest
9
+ * 3. DEAD CODE - Code that nothing uses (AI over-generation)
10
+ *
11
+ * Uses Tree-sitter AST parsing for accurate, production-grade validation.
12
+ *
13
+ * @format
14
+ */
15
+ import { ToolDefinition } from "../types/tools.js";
16
+ export declare const validateCodeTool: ToolDefinition;
17
+ //# sourceMappingURL=validateCode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateCode.d.ts","sourceRoot":"","sources":["../../src/tools/validateCode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAkDnD,eAAO,MAAM,gBAAgB,EAAE,cA2Z9B,CAAC"}