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,436 @@
1
+ /**
2
+ * Get Dependency Graph Tool (Improved Version)
3
+ *
4
+ * Returns the dependency graph for a file or directory.
5
+ *
6
+ * Improvements:
7
+ * 1. Refactored `findProjectRoot` for better readability and maintainability.
8
+ * 2. Improved `resolveTarget` to handle directory targets more accurately.
9
+ * 3. Centralized path normalization and handling.
10
+ * 4. Enhanced documentation and code structure.
11
+ *
12
+ * @format
13
+ */
14
+ import { logger } from "../utils/logger.js";
15
+ import { filterExcludedFiles, getExcludePatternsForPath, } from "../utils/fileFilter.js";
16
+ import { glob } from "glob";
17
+ import * as fs from "fs/promises";
18
+ import * as path from "path";
19
+ import { getProjectContext, } from "../context/projectContext.js";
20
+ import { impactAnalyzer } from "../analyzers/impactAnalyzer.js";
21
+ const EXTENSIONS = {
22
+ javascript: [".js", ".jsx", ".mjs", ".cjs"],
23
+ typescript: [".ts", ".tsx", ".mts", ".cts"],
24
+ python: [".py"],
25
+ go: [".go"],
26
+ };
27
+ const DEFAULT_EXCLUDES = [
28
+ "**/node_modules/**",
29
+ "**/venv/**",
30
+ "**/.venv/**",
31
+ "**/dist/**",
32
+ "**/build/**",
33
+ "**/__pycache__/**",
34
+ "**/.git/**",
35
+ ];
36
+ export const getDependencyGraphTool = {
37
+ definition: {
38
+ name: "get_dependency_graph",
39
+ description: `The Ultimate Impact Analysis tool for Vibe Coders.
40
+ Analyzes what files or symbols depend on a target. Use this to understand the "blast radius" of your changes.
41
+ If you provide a 'symbol', it traces semantic call chains.
42
+ Set 'includeSource: true' to get a bundled Markdown of all affected code, perfect for pasting into an AI prompt for safe refactoring.`,
43
+ inputSchema: {
44
+ type: "object",
45
+ properties: {
46
+ target: {
47
+ type: "string",
48
+ description: "File path or directory to analyze",
49
+ },
50
+ language: {
51
+ type: "string",
52
+ enum: ["javascript", "typescript", "python", "go"],
53
+ description: "Programming language",
54
+ },
55
+ depth: {
56
+ type: "number",
57
+ description: "How many levels deep to trace (default: 2, max: 5)",
58
+ default: 2,
59
+ },
60
+ direction: {
61
+ type: "string",
62
+ enum: ["both", "imports", "importedBy"],
63
+ description: "Which direction to trace (default: both)",
64
+ default: "both",
65
+ },
66
+ symbol: {
67
+ type: "string",
68
+ description: "Optional: A specific symbol (function, class) to trace impact for",
69
+ },
70
+ includeSource: {
71
+ type: "boolean",
72
+ description: "Optional: If true, returns a Markdown bundle of all affected source code for AI prompts",
73
+ default: false,
74
+ },
75
+ showHubs: {
76
+ type: "boolean",
77
+ description: "Optional: If true, identifies the 'Center of the Universe' (most central) symbols in the project",
78
+ default: false,
79
+ },
80
+ },
81
+ required: ["target", "language"],
82
+ },
83
+ },
84
+ async handler(args) {
85
+ const startTime = Date.now();
86
+ const { target, language, depth = 2, direction = "both" } = args;
87
+ logger.info(`Building dependency graph for: ${target}`);
88
+ try {
89
+ const projectDir = await findProjectRoot(target);
90
+ let graph;
91
+ let usedContext = false;
92
+ let sharedContext = null;
93
+ try {
94
+ const context = await getProjectContext(projectDir, {
95
+ language: language === "all" ? "all" : language,
96
+ includeTests: true,
97
+ });
98
+ sharedContext = context;
99
+ if (context && context.files.size > 0) {
100
+ graph = buildGraphFromContext(context, projectDir);
101
+ usedContext = true;
102
+ logger.info(`Using shared context for dependency graph (${context.files.size} files)`);
103
+ }
104
+ else {
105
+ graph = await buildDependencyGraph(projectDir, language);
106
+ }
107
+ }
108
+ catch (err) {
109
+ logger.debug(`Falling back to direct analysis: ${err}`);
110
+ graph = await buildDependencyGraph(projectDir, language);
111
+ }
112
+ const targetFiles = await resolveTarget(target, projectDir, graph);
113
+ // --- SECTION: Symbol-Level Impact & AI Bundling (Secret #6 & #7) ---
114
+ let symbolImpact = null;
115
+ let aiBundle = null;
116
+ let projectHubs = null;
117
+ // When symbol-level features are requested, allow returning results even if
118
+ // the target didn't resolve to concrete files (e.g., mocked contexts in tests
119
+ // or directory targets with empty graphs).
120
+ const allowGraphlessTarget = Boolean(args.symbol) || Boolean(args.showHubs);
121
+ const getContextForExtras = async () => {
122
+ if (sharedContext)
123
+ return sharedContext;
124
+ return getProjectContext(projectDir, { language });
125
+ };
126
+ if (args.showHubs) {
127
+ const context = await getContextForExtras();
128
+ if (context.symbolGraph) {
129
+ projectHubs = impactAnalyzer.getProjectHubs(context.symbolGraph, 5);
130
+ }
131
+ }
132
+ if (args.symbol) {
133
+ const context = await getContextForExtras();
134
+ if (context.symbolGraph) {
135
+ symbolImpact = impactAnalyzer.traceBlastRadius(args.symbol, context.symbolGraph, Math.min(depth, 5));
136
+ if (args.includeSource) {
137
+ aiBundle = await impactAnalyzer.bundleAffectedSource(symbolImpact, projectDir);
138
+ }
139
+ }
140
+ }
141
+ else if (args.includeSource && targetFiles.length > 0) {
142
+ // Handle file-level bundling
143
+ const blast = {
144
+ target,
145
+ affectedFiles: targetFiles,
146
+ severity: targetFiles.length > 5 ? "high" : "medium",
147
+ impactedSymbols: []
148
+ };
149
+ aiBundle = await impactAnalyzer.bundleAffectedSource(blast, projectDir);
150
+ }
151
+ if (targetFiles.length === 0 && !allowGraphlessTarget) {
152
+ return formatResponse({
153
+ success: false,
154
+ target,
155
+ error: `No matching files found for target: ${target}`,
156
+ });
157
+ }
158
+ const result = targetFiles.length > 0
159
+ ? extractSubgraph(graph, targetFiles, Math.min(depth, 5), direction)
160
+ : {
161
+ files: {},
162
+ summary: {
163
+ totalFiles: 0,
164
+ totalImports: 0,
165
+ totalImportedBy: 0,
166
+ externalDeps: [],
167
+ },
168
+ circularDependencies: [],
169
+ };
170
+ const elapsed = Date.now() - startTime;
171
+ return formatResponse({
172
+ success: true,
173
+ target,
174
+ files: targetFiles,
175
+ graph: result,
176
+ symbolImpact,
177
+ aiBundle,
178
+ projectHubs,
179
+ stats: {
180
+ totalProjectFiles: graph.nodes.size,
181
+ analysisTimeMs: elapsed,
182
+ usedContext,
183
+ },
184
+ });
185
+ }
186
+ catch (error) {
187
+ logger.error("Error building dependency graph:", error);
188
+ return formatResponse({
189
+ success: false,
190
+ error: error instanceof Error ? error.message : String(error),
191
+ });
192
+ }
193
+ },
194
+ };
195
+ /**
196
+ * Refactored: Find project root by looking for marker files.
197
+ */
198
+ async function findProjectRoot(target) {
199
+ const markers = [
200
+ "package.json",
201
+ "pyproject.toml",
202
+ "requirements.txt",
203
+ "setup.py",
204
+ "go.mod",
205
+ ".git",
206
+ ];
207
+ let currentDir = path.dirname(path.resolve(target));
208
+ const maxLevels = 5;
209
+ for (let i = 0; i < maxLevels; i++) {
210
+ for (const marker of markers) {
211
+ try {
212
+ await fs.access(path.join(currentDir, marker));
213
+ return currentDir;
214
+ }
215
+ catch {
216
+ // Continue to next marker
217
+ }
218
+ }
219
+ const parentDir = path.dirname(currentDir);
220
+ if (parentDir === currentDir)
221
+ break;
222
+ currentDir = parentDir;
223
+ }
224
+ return path.dirname(path.resolve(target));
225
+ }
226
+ /**
227
+ * Improved: Resolve target path to specific files in the graph.
228
+ */
229
+ async function resolveTarget(target, projectDir, graph) {
230
+ const allFiles = Array.from(graph.nodes.keys());
231
+ const normalizedTarget = target.replace(/\\/g, "/");
232
+ // Calculate target relative to project root
233
+ const absoluteTarget = path.resolve(normalizedTarget);
234
+ const absoluteProjectDir = path.resolve(projectDir);
235
+ const relativeTarget = absoluteTarget.startsWith(absoluteProjectDir) ?
236
+ path.relative(absoluteProjectDir, absoluteTarget).replace(/\\/g, "/")
237
+ : normalizedTarget;
238
+ // 1. Exact match (relative to project root)
239
+ if (graph.nodes.has(relativeTarget))
240
+ return [relativeTarget];
241
+ if (graph.nodes.has(normalizedTarget))
242
+ return [normalizedTarget];
243
+ // 2. Directory match - check both relative and original target
244
+ const filesInDir = allFiles.filter((f) => f.startsWith(relativeTarget + "/") ||
245
+ f.startsWith(normalizedTarget + "/"));
246
+ if (filesInDir.length > 0)
247
+ return filesInDir.slice(0, 20);
248
+ // 3. Fuzzy match (basename or partial path)
249
+ const targetBasename = path.basename(normalizedTarget);
250
+ const fuzzyMatches = allFiles.filter((f) => f.endsWith(normalizedTarget) || path.basename(f) === targetBasename);
251
+ return fuzzyMatches.slice(0, 10);
252
+ }
253
+ /**
254
+ * Build dependency graph from shared project context.
255
+ */
256
+ function buildGraphFromContext(context, projectDir) {
257
+ const graph = {
258
+ nodes: new Map(),
259
+ entryPoints: [],
260
+ leafNodes: [],
261
+ circularDeps: [],
262
+ };
263
+ for (const fileInfo of context.files.values()) {
264
+ const relPath = fileInfo.relativePath;
265
+ graph.nodes.set(relPath, {
266
+ file: relPath,
267
+ imports: [],
268
+ importedBy: [],
269
+ externalDeps: fileInfo.imports
270
+ .filter((imp) => imp.isExternal)
271
+ .map((imp) => imp.source),
272
+ });
273
+ }
274
+ for (const [filePath, imports] of context.importGraph) {
275
+ const relPath = path.relative(projectDir, filePath);
276
+ const node = graph.nodes.get(relPath);
277
+ if (node) {
278
+ node.imports = imports.map((imp) => path.relative(projectDir, imp));
279
+ }
280
+ }
281
+ for (const [filePath, importers] of context.reverseImportGraph) {
282
+ const relPath = path.relative(projectDir, filePath);
283
+ const node = graph.nodes.get(relPath);
284
+ if (node) {
285
+ node.importedBy = importers.map((imp) => path.relative(projectDir, imp));
286
+ }
287
+ }
288
+ for (const [filePath, node] of graph.nodes) {
289
+ if (node.importedBy.length === 0)
290
+ graph.entryPoints.push(filePath);
291
+ if (node.imports.length === 0)
292
+ graph.leafNodes.push(filePath);
293
+ }
294
+ graph.circularDeps = detectCircularDeps(graph);
295
+ return graph;
296
+ }
297
+ /**
298
+ * Fallback: Build dependency graph by scanning files directly.
299
+ */
300
+ async function buildDependencyGraph(projectDir, language) {
301
+ const extensions = EXTENSIONS[language] || EXTENSIONS.typescript;
302
+ const patterns = extensions.map((ext) => `${projectDir}/**/*${ext}`);
303
+ const excludes = [
304
+ ...DEFAULT_EXCLUDES,
305
+ ...getExcludePatternsForPath(projectDir),
306
+ ];
307
+ let files = await glob(patterns, {
308
+ ignore: excludes,
309
+ nodir: true,
310
+ absolute: true,
311
+ });
312
+ files = filterExcludedFiles(files);
313
+ const graph = {
314
+ nodes: new Map(),
315
+ entryPoints: [],
316
+ leafNodes: [],
317
+ circularDeps: [],
318
+ };
319
+ // First pass: extract imports
320
+ for (const file of files) {
321
+ try {
322
+ const content = await fs.readFile(file, "utf-8");
323
+ const relPath = path.relative(projectDir, file);
324
+ // Note: extractImports is assumed to be available in the environment
325
+ const { localImports, externalDeps } = global.extractImports(content, file, language);
326
+ graph.nodes.set(relPath, {
327
+ file: relPath,
328
+ imports: localImports,
329
+ importedBy: [],
330
+ externalDeps,
331
+ });
332
+ }
333
+ catch {
334
+ // Skip files that can't be read
335
+ }
336
+ }
337
+ // Second pass: resolve paths and build reverse graph
338
+ for (const [filePath, node] of graph.nodes) {
339
+ const resolvedImports = [];
340
+ for (const imp of node.imports) {
341
+ const resolved = global.resolveImportPath(imp, filePath, projectDir, Array.from(graph.nodes.keys()));
342
+ if (resolved) {
343
+ resolvedImports.push(resolved);
344
+ graph.nodes.get(resolved)?.importedBy.push(filePath);
345
+ }
346
+ }
347
+ node.imports = resolvedImports;
348
+ }
349
+ for (const [filePath, node] of graph.nodes) {
350
+ if (node.importedBy.length === 0)
351
+ graph.entryPoints.push(filePath);
352
+ if (node.imports.length === 0)
353
+ graph.leafNodes.push(filePath);
354
+ }
355
+ graph.circularDeps = detectCircularDeps(graph);
356
+ return graph;
357
+ }
358
+ /**
359
+ * Detect circular dependencies using DFS.
360
+ */
361
+ function detectCircularDeps(graph) {
362
+ const circular = [];
363
+ const visited = new Set();
364
+ const recursionStack = new Set();
365
+ function dfs(file, currentPath) {
366
+ if (recursionStack.has(file)) {
367
+ const cycleStart = currentPath.indexOf(file);
368
+ circular.push(currentPath.slice(cycleStart));
369
+ return;
370
+ }
371
+ if (visited.has(file))
372
+ return;
373
+ visited.add(file);
374
+ recursionStack.add(file);
375
+ const node = graph.nodes.get(file);
376
+ if (node) {
377
+ for (const imp of node.imports) {
378
+ dfs(imp, [...currentPath, file]);
379
+ }
380
+ }
381
+ recursionStack.delete(file);
382
+ }
383
+ for (const file of graph.nodes.keys()) {
384
+ dfs(file, []);
385
+ }
386
+ return circular;
387
+ }
388
+ /**
389
+ * Extract a subgraph centered around target files.
390
+ */
391
+ function extractSubgraph(graph, targetFiles, depth, direction) {
392
+ const result = {
393
+ files: {},
394
+ summary: {
395
+ totalFiles: 0,
396
+ totalImports: 0,
397
+ totalImportedBy: 0,
398
+ externalDeps: new Set(),
399
+ },
400
+ };
401
+ const visited = new Set();
402
+ function traverse(file, currentDepth) {
403
+ if (visited.has(file) || currentDepth > depth)
404
+ return;
405
+ visited.add(file);
406
+ const node = graph.nodes.get(file);
407
+ if (!node)
408
+ return;
409
+ result.files[file] = {
410
+ imports: direction !== "importedBy" ? node.imports : [],
411
+ importedBy: direction !== "imports" ? node.importedBy : [],
412
+ externalDeps: node.externalDeps,
413
+ };
414
+ result.summary.totalFiles++;
415
+ result.summary.totalImports += node.imports.length;
416
+ result.summary.totalImportedBy += node.importedBy.length;
417
+ node.externalDeps.forEach((d) => result.summary.externalDeps.add(d));
418
+ if (direction !== "importedBy") {
419
+ for (const imp of node.imports)
420
+ traverse(imp, currentDepth + 1);
421
+ }
422
+ if (direction !== "imports") {
423
+ for (const importer of node.importedBy)
424
+ traverse(importer, currentDepth + 1);
425
+ }
426
+ }
427
+ for (const target of targetFiles)
428
+ traverse(target, 0);
429
+ result.summary.externalDeps = Array.from(result.summary.externalDeps);
430
+ result.circularDependencies = graph.circularDeps.filter((cycle) => cycle.some((f) => targetFiles.includes(f)));
431
+ return result;
432
+ }
433
+ function formatResponse(data) {
434
+ return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
435
+ }
436
+ //# sourceMappingURL=getDependencyGraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getDependencyGraph.js","sourceRoot":"","sources":["../../src/tools/getDependencyGraph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
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 type { ValidationIssue, DeadCodeIssue } from "./validation/types.js";
10
+ export interface ValidationSnapshot {
11
+ code: string;
12
+ timestamp: number;
13
+ issues: ValidationIssue[];
14
+ deadCode: DeadCodeIssue[];
15
+ hash: string;
16
+ }
17
+ export interface CodeChange {
18
+ type: "addition" | "modification" | "deletion";
19
+ startLine: number;
20
+ endLine: number;
21
+ oldContent?: string;
22
+ newContent?: string;
23
+ }
24
+ declare class IncrementalValidationClass {
25
+ private snapshots;
26
+ private readonly MAX_SNAPSHOTS;
27
+ private readonly SNAPSHOT_TTL_MS;
28
+ /**
29
+ * Save validation snapshot for incremental validation
30
+ */
31
+ saveSnapshot(sessionId: string, code: string, issues: ValidationIssue[], deadCode: DeadCodeIssue[]): void;
32
+ /**
33
+ * Get previous snapshot for comparison
34
+ */
35
+ getSnapshot(sessionId: string): ValidationSnapshot | null;
36
+ /**
37
+ * Detect what changed between two code versions
38
+ */
39
+ detectChanges(oldCode: string, newCode: string): CodeChange[];
40
+ /**
41
+ * Check if validation can be incremental
42
+ */
43
+ canUseIncremental(sessionId: string, newCode: string): {
44
+ canUse: boolean;
45
+ snapshot?: ValidationSnapshot;
46
+ changes?: CodeChange[];
47
+ };
48
+ /**
49
+ * Filter issues to only those affected by changes
50
+ */
51
+ filterAffectedIssues(oldIssues: ValidationIssue[], changes: CodeChange[]): ValidationIssue[];
52
+ /**
53
+ * Clear all snapshots
54
+ */
55
+ clear(): void;
56
+ /**
57
+ * Simple hash function for code
58
+ */
59
+ private hashCode;
60
+ /**
61
+ * Find next matching line
62
+ */
63
+ private findNextMatch;
64
+ /**
65
+ * Cleanup expired snapshots
66
+ */
67
+ private cleanupExpiredSnapshots;
68
+ }
69
+ export declare const incrementalValidation: IncrementalValidationClass;
70
+ export {};
71
+ //# sourceMappingURL=incrementalValidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incrementalValidation.d.ts","sourceRoot":"","sources":["../../src/tools/incrementalValidation.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE5E,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,GAAG,cAAc,GAAG,UAAU,CAAC;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,cAAM,0BAA0B;IAC9B,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAM;IACpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAElD;;OAEG;IACH,YAAY,CACV,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,eAAe,EAAE,EACzB,QAAQ,EAAE,aAAa,EAAE,GACxB,IAAI;IAuBP;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAazD;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IA8E7D;;OAEG;IACH,iBAAiB,CACf,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;QAAC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAA;KAAE;IAwB7E;;OAEG;IACH,oBAAoB,CAClB,SAAS,EAAE,eAAe,EAAE,EAC5B,OAAO,EAAE,UAAU,EAAE,GACpB,eAAe,EAAE;IAgBpB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,OAAO,CAAC,QAAQ;IAUhB;;OAEG;IACH,OAAO,CAAC,aAAa;IAarB;;OAEG;IACH,OAAO,CAAC,uBAAuB;CAQhC;AAGD,eAAO,MAAM,qBAAqB,4BAAmC,CAAC"}