erosolar-cli 2.1.249 → 2.1.253

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 (470) hide show
  1. package/agents/general.rules.json +10 -133
  2. package/agents/general.rules.json.bak +278 -0
  3. package/agents/general.rules.json.bak2 +306 -0
  4. package/dist/bin/erosolar.js +9 -5
  5. package/dist/bin/erosolar.js.map +1 -1
  6. package/dist/capabilities/bidirectionalAuditCapability.d.ts +26 -0
  7. package/dist/capabilities/bidirectionalAuditCapability.d.ts.map +1 -0
  8. package/dist/capabilities/bidirectionalAuditCapability.js +44 -0
  9. package/dist/capabilities/bidirectionalAuditCapability.js.map +1 -0
  10. package/dist/capabilities/globCapability.d.ts +3 -6
  11. package/dist/capabilities/globCapability.d.ts.map +1 -1
  12. package/dist/capabilities/globCapability.js +6 -10
  13. package/dist/capabilities/globCapability.js.map +1 -1
  14. package/dist/capabilities/index.d.ts +1 -18
  15. package/dist/capabilities/index.d.ts.map +1 -1
  16. package/dist/capabilities/index.js +1 -18
  17. package/dist/capabilities/index.js.map +1 -1
  18. package/dist/capabilities/orchestrationCapability.d.ts +2 -0
  19. package/dist/capabilities/orchestrationCapability.d.ts.map +1 -1
  20. package/dist/capabilities/orchestrationCapability.js +980 -2
  21. package/dist/capabilities/orchestrationCapability.js.map +1 -1
  22. package/dist/capabilities/searchCapability.d.ts +8 -2
  23. package/dist/capabilities/searchCapability.d.ts.map +1 -1
  24. package/dist/capabilities/searchCapability.js +11 -6
  25. package/dist/capabilities/searchCapability.js.map +1 -1
  26. package/dist/contracts/tools.schema.json +9 -133
  27. package/dist/core/aiErrorFixer.d.ts +1 -14
  28. package/dist/core/aiErrorFixer.d.ts.map +1 -1
  29. package/dist/core/aiErrorFixer.js +51 -239
  30. package/dist/core/aiErrorFixer.js.map +1 -1
  31. package/dist/core/alphaZeroEngine.d.ts +16 -256
  32. package/dist/core/alphaZeroEngine.d.ts.map +1 -1
  33. package/dist/core/alphaZeroEngine.js +22 -513
  34. package/dist/core/alphaZeroEngine.js.map +1 -1
  35. package/dist/core/completeAttackOrchestrator.d.ts +102 -0
  36. package/dist/core/completeAttackOrchestrator.d.ts.map +1 -0
  37. package/dist/core/completeAttackOrchestrator.js +293 -0
  38. package/dist/core/completeAttackOrchestrator.js.map +1 -0
  39. package/dist/core/defensiveSecurityToolkit.d.ts +373 -0
  40. package/dist/core/defensiveSecurityToolkit.d.ts.map +1 -0
  41. package/dist/core/defensiveSecurityToolkit.js +1304 -0
  42. package/dist/core/defensiveSecurityToolkit.js.map +1 -0
  43. package/dist/core/errors/errorTypes.d.ts +30 -57
  44. package/dist/core/errors/errorTypes.d.ts.map +1 -1
  45. package/dist/core/errors/errorTypes.js +51 -228
  46. package/dist/core/errors/errorTypes.js.map +1 -1
  47. package/dist/core/errors/safetyValidator.d.ts +19 -3
  48. package/dist/core/errors/safetyValidator.d.ts.map +1 -1
  49. package/dist/core/errors/safetyValidator.js +33 -71
  50. package/dist/core/errors/safetyValidator.js.map +1 -1
  51. package/dist/core/failureRecovery.d.ts +4 -100
  52. package/dist/core/failureRecovery.d.ts.map +1 -1
  53. package/dist/core/failureRecovery.js +16 -440
  54. package/dist/core/failureRecovery.js.map +1 -1
  55. package/dist/core/intelligentTargetResearcher.d.ts +142 -0
  56. package/dist/core/intelligentTargetResearcher.d.ts.map +1 -0
  57. package/dist/core/intelligentTargetResearcher.js +367 -0
  58. package/dist/core/intelligentTargetResearcher.js.map +1 -0
  59. package/dist/core/intelligentTestFlows.d.ts +26 -107
  60. package/dist/core/intelligentTestFlows.d.ts.map +1 -1
  61. package/dist/core/intelligentTestFlows.js +15 -659
  62. package/dist/core/intelligentTestFlows.js.map +1 -1
  63. package/dist/core/learningPersistence.d.ts +45 -132
  64. package/dist/core/learningPersistence.d.ts.map +1 -1
  65. package/dist/core/learningPersistence.js +32 -463
  66. package/dist/core/learningPersistence.js.map +1 -1
  67. package/dist/core/metricsTracker.d.ts +22 -139
  68. package/dist/core/metricsTracker.d.ts.map +1 -1
  69. package/dist/core/metricsTracker.js +51 -241
  70. package/dist/core/metricsTracker.js.map +1 -1
  71. package/dist/core/performanceMonitor.d.ts +15 -109
  72. package/dist/core/performanceMonitor.d.ts.map +1 -1
  73. package/dist/core/performanceMonitor.js +27 -184
  74. package/dist/core/performanceMonitor.js.map +1 -1
  75. package/dist/core/reliabilityPrompt.d.ts.map +1 -1
  76. package/dist/core/reliabilityPrompt.js +14 -0
  77. package/dist/core/reliabilityPrompt.js.map +1 -1
  78. package/dist/core/resultVerification.d.ts +6 -100
  79. package/dist/core/resultVerification.d.ts.map +1 -1
  80. package/dist/core/resultVerification.js +31 -400
  81. package/dist/core/resultVerification.js.map +1 -1
  82. package/dist/core/selfEvolution.d.ts +32 -126
  83. package/dist/core/selfEvolution.d.ts.map +1 -1
  84. package/dist/core/selfEvolution.js +24 -967
  85. package/dist/core/selfEvolution.js.map +1 -1
  86. package/dist/core/selfImprovement.d.ts +50 -109
  87. package/dist/core/selfImprovement.d.ts.map +1 -1
  88. package/dist/core/selfImprovement.js +14 -689
  89. package/dist/core/selfImprovement.js.map +1 -1
  90. package/dist/core/sourceCodeManager.d.ts +89 -0
  91. package/dist/core/sourceCodeManager.d.ts.map +1 -0
  92. package/dist/core/sourceCodeManager.js +332 -0
  93. package/dist/core/sourceCodeManager.js.map +1 -0
  94. package/dist/core/unifiedOrchestrator.d.ts +88 -0
  95. package/dist/core/unifiedOrchestrator.d.ts.map +1 -0
  96. package/dist/core/unifiedOrchestrator.js +284 -0
  97. package/dist/core/unifiedOrchestrator.js.map +1 -0
  98. package/dist/core/userDefenseOrchestrator.d.ts +202 -0
  99. package/dist/core/userDefenseOrchestrator.d.ts.map +1 -0
  100. package/dist/core/userDefenseOrchestrator.js +1006 -0
  101. package/dist/core/userDefenseOrchestrator.js.map +1 -0
  102. package/dist/plugins/index.d.ts +1 -1
  103. package/dist/plugins/index.d.ts.map +1 -1
  104. package/dist/plugins/index.js +36 -26
  105. package/dist/plugins/index.js.map +1 -1
  106. package/dist/plugins/tools/bidirectionalAudit/bidirectionalAuditPlugin.d.ts +8 -0
  107. package/dist/plugins/tools/bidirectionalAudit/bidirectionalAuditPlugin.d.ts.map +1 -0
  108. package/dist/plugins/tools/bidirectionalAudit/bidirectionalAuditPlugin.js +17 -0
  109. package/dist/plugins/tools/bidirectionalAudit/bidirectionalAuditPlugin.js.map +1 -0
  110. package/dist/plugins/tools/nodeDefaults.d.ts +14 -0
  111. package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
  112. package/dist/plugins/tools/nodeDefaults.js +17 -54
  113. package/dist/plugins/tools/nodeDefaults.js.map +1 -1
  114. package/dist/plugins/tools/orchestration/orchestrationPlugin.d.ts +9 -0
  115. package/dist/plugins/tools/orchestration/orchestrationPlugin.d.ts.map +1 -0
  116. package/dist/plugins/tools/orchestration/orchestrationPlugin.js +18 -0
  117. package/dist/plugins/tools/orchestration/orchestrationPlugin.js.map +1 -0
  118. package/dist/shell/interactiveShell.d.ts +97 -2
  119. package/dist/shell/interactiveShell.d.ts.map +1 -1
  120. package/dist/shell/interactiveShell.js +1001 -6
  121. package/dist/shell/interactiveShell.js.map +1 -1
  122. package/dist/tools/appleExposureTools.d.ts +108 -0
  123. package/dist/tools/appleExposureTools.d.ts.map +1 -0
  124. package/dist/tools/appleExposureTools.js +850 -0
  125. package/dist/tools/appleExposureTools.js.map +1 -0
  126. package/dist/tools/bidirectionalAuditTools.d.ts +104 -0
  127. package/dist/tools/bidirectionalAuditTools.d.ts.map +1 -0
  128. package/dist/tools/bidirectionalAuditTools.js +1280 -0
  129. package/dist/tools/bidirectionalAuditTools.js.map +1 -0
  130. package/dist/tools/defensiveSecurityTools.d.ts +152 -0
  131. package/dist/tools/defensiveSecurityTools.d.ts.map +1 -0
  132. package/dist/tools/defensiveSecurityTools.js +576 -0
  133. package/dist/tools/defensiveSecurityTools.js.map +1 -0
  134. package/dist/tools/forwardAttackChainTracer.d.ts +73 -0
  135. package/dist/tools/forwardAttackChainTracer.d.ts.map +1 -0
  136. package/dist/tools/forwardAttackChainTracer.js +604 -0
  137. package/dist/tools/forwardAttackChainTracer.js.map +1 -0
  138. package/dist/tools/localExplore.d.ts +12 -199
  139. package/dist/tools/localExplore.d.ts.map +1 -1
  140. package/dist/tools/localExplore.js +18 -1352
  141. package/dist/tools/localExplore.js.map +1 -1
  142. package/dist/tools/offensiveTransparencyTools.d.ts +188 -0
  143. package/dist/tools/offensiveTransparencyTools.d.ts.map +1 -0
  144. package/dist/tools/offensiveTransparencyTools.js +890 -0
  145. package/dist/tools/offensiveTransparencyTools.js.map +1 -0
  146. package/dist/tools/planningTools.d.ts +8 -17
  147. package/dist/tools/planningTools.d.ts.map +1 -1
  148. package/dist/tools/planningTools.js +31 -141
  149. package/dist/tools/planningTools.js.map +1 -1
  150. package/dist/tools/searchTools.d.ts +9 -0
  151. package/dist/tools/searchTools.d.ts.map +1 -1
  152. package/dist/tools/searchTools.js +305 -189
  153. package/dist/tools/searchTools.js.map +1 -1
  154. package/dist/tools/skillTools.d.ts +7 -5
  155. package/dist/tools/skillTools.d.ts.map +1 -1
  156. package/dist/tools/skillTools.js +13 -155
  157. package/dist/tools/skillTools.js.map +1 -1
  158. package/dist/tools/threatIntelligenceTools.d.ts +128 -0
  159. package/dist/tools/threatIntelligenceTools.d.ts.map +1 -0
  160. package/dist/tools/threatIntelligenceTools.js +712 -0
  161. package/dist/tools/threatIntelligenceTools.js.map +1 -0
  162. package/dist/ui/PromptController.d.ts +4 -0
  163. package/dist/ui/PromptController.d.ts.map +1 -1
  164. package/dist/ui/PromptController.js +32 -11
  165. package/dist/ui/PromptController.js.map +1 -1
  166. package/dist/ui/UnifiedUIRenderer.d.ts +20 -0
  167. package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -1
  168. package/dist/ui/UnifiedUIRenderer.js +235 -28
  169. package/dist/ui/UnifiedUIRenderer.js.map +1 -1
  170. package/dist/ui/animatedStatus.d.ts +2 -0
  171. package/dist/ui/animatedStatus.d.ts.map +1 -1
  172. package/dist/ui/animatedStatus.js +36 -2
  173. package/dist/ui/animatedStatus.js.map +1 -1
  174. package/dist/ui/orchestration/StatusOrchestrator.d.ts +10 -0
  175. package/dist/ui/orchestration/StatusOrchestrator.d.ts.map +1 -1
  176. package/dist/ui/orchestration/StatusOrchestrator.js +36 -4
  177. package/dist/ui/orchestration/StatusOrchestrator.js.map +1 -1
  178. package/package.json +1 -1
  179. package/dist/capabilities/advancedTestGenerationCapability.d.ts +0 -17
  180. package/dist/capabilities/advancedTestGenerationCapability.d.ts.map +0 -1
  181. package/dist/capabilities/advancedTestGenerationCapability.js +0 -28
  182. package/dist/capabilities/advancedTestGenerationCapability.js.map +0 -1
  183. package/dist/capabilities/browserAutomationCapability.d.ts +0 -37
  184. package/dist/capabilities/browserAutomationCapability.d.ts.map +0 -1
  185. package/dist/capabilities/browserAutomationCapability.js +0 -49
  186. package/dist/capabilities/browserAutomationCapability.js.map +0 -1
  187. package/dist/capabilities/buildCapability.d.ts +0 -24
  188. package/dist/capabilities/buildCapability.d.ts.map +0 -1
  189. package/dist/capabilities/buildCapability.js +0 -25
  190. package/dist/capabilities/buildCapability.js.map +0 -1
  191. package/dist/capabilities/cloudCapability.d.ts +0 -13
  192. package/dist/capabilities/cloudCapability.d.ts.map +0 -1
  193. package/dist/capabilities/cloudCapability.js +0 -38
  194. package/dist/capabilities/cloudCapability.js.map +0 -1
  195. package/dist/capabilities/codeAnalysisCapability.d.ts +0 -13
  196. package/dist/capabilities/codeAnalysisCapability.d.ts.map +0 -1
  197. package/dist/capabilities/codeAnalysisCapability.js +0 -24
  198. package/dist/capabilities/codeAnalysisCapability.js.map +0 -1
  199. package/dist/capabilities/codeQualityCapability.d.ts +0 -13
  200. package/dist/capabilities/codeQualityCapability.d.ts.map +0 -1
  201. package/dist/capabilities/codeQualityCapability.js +0 -25
  202. package/dist/capabilities/codeQualityCapability.js.map +0 -1
  203. package/dist/capabilities/dependencySecurityCapability.d.ts +0 -13
  204. package/dist/capabilities/dependencySecurityCapability.d.ts.map +0 -1
  205. package/dist/capabilities/dependencySecurityCapability.js +0 -24
  206. package/dist/capabilities/dependencySecurityCapability.js.map +0 -1
  207. package/dist/capabilities/devCapability.d.ts +0 -13
  208. package/dist/capabilities/devCapability.d.ts.map +0 -1
  209. package/dist/capabilities/devCapability.js +0 -24
  210. package/dist/capabilities/devCapability.js.map +0 -1
  211. package/dist/capabilities/emailCapability.d.ts +0 -12
  212. package/dist/capabilities/emailCapability.d.ts.map +0 -1
  213. package/dist/capabilities/emailCapability.js +0 -22
  214. package/dist/capabilities/emailCapability.js.map +0 -1
  215. package/dist/capabilities/enhancedAnalysisCapability.d.ts +0 -13
  216. package/dist/capabilities/enhancedAnalysisCapability.d.ts.map +0 -1
  217. package/dist/capabilities/enhancedAnalysisCapability.js +0 -20
  218. package/dist/capabilities/enhancedAnalysisCapability.js.map +0 -1
  219. package/dist/capabilities/enhancedCodeIntelligenceCapability.d.ts +0 -17
  220. package/dist/capabilities/enhancedCodeIntelligenceCapability.d.ts.map +0 -1
  221. package/dist/capabilities/enhancedCodeIntelligenceCapability.js +0 -28
  222. package/dist/capabilities/enhancedCodeIntelligenceCapability.js.map +0 -1
  223. package/dist/capabilities/enhancedDevWorkflowCapability.d.ts +0 -17
  224. package/dist/capabilities/enhancedDevWorkflowCapability.d.ts.map +0 -1
  225. package/dist/capabilities/enhancedDevWorkflowCapability.js +0 -28
  226. package/dist/capabilities/enhancedDevWorkflowCapability.js.map +0 -1
  227. package/dist/capabilities/frontendTestingCapability.d.ts +0 -13
  228. package/dist/capabilities/frontendTestingCapability.d.ts.map +0 -1
  229. package/dist/capabilities/frontendTestingCapability.js +0 -28
  230. package/dist/capabilities/frontendTestingCapability.js.map +0 -1
  231. package/dist/capabilities/interactionCapability.d.ts +0 -12
  232. package/dist/capabilities/interactionCapability.d.ts.map +0 -1
  233. package/dist/capabilities/interactionCapability.js +0 -22
  234. package/dist/capabilities/interactionCapability.js.map +0 -1
  235. package/dist/capabilities/learnCapability.d.ts +0 -22
  236. package/dist/capabilities/learnCapability.d.ts.map +0 -1
  237. package/dist/capabilities/learnCapability.js +0 -37
  238. package/dist/capabilities/learnCapability.js.map +0 -1
  239. package/dist/capabilities/notebookCapability.d.ts +0 -17
  240. package/dist/capabilities/notebookCapability.d.ts.map +0 -1
  241. package/dist/capabilities/notebookCapability.js +0 -27
  242. package/dist/capabilities/notebookCapability.js.map +0 -1
  243. package/dist/capabilities/planningCapability.d.ts +0 -16
  244. package/dist/capabilities/planningCapability.d.ts.map +0 -1
  245. package/dist/capabilities/planningCapability.js +0 -26
  246. package/dist/capabilities/planningCapability.js.map +0 -1
  247. package/dist/capabilities/refactoringCapability.d.ts +0 -13
  248. package/dist/capabilities/refactoringCapability.d.ts.map +0 -1
  249. package/dist/capabilities/refactoringCapability.js +0 -25
  250. package/dist/capabilities/refactoringCapability.js.map +0 -1
  251. package/dist/capabilities/repoChecksCapability.d.ts +0 -10
  252. package/dist/capabilities/repoChecksCapability.d.ts.map +0 -1
  253. package/dist/capabilities/repoChecksCapability.js +0 -24
  254. package/dist/capabilities/repoChecksCapability.js.map +0 -1
  255. package/dist/capabilities/taskManagementCapability.d.ts +0 -12
  256. package/dist/capabilities/taskManagementCapability.d.ts.map +0 -1
  257. package/dist/capabilities/taskManagementCapability.js +0 -22
  258. package/dist/capabilities/taskManagementCapability.js.map +0 -1
  259. package/dist/capabilities/testingCapability.d.ts +0 -13
  260. package/dist/capabilities/testingCapability.d.ts.map +0 -1
  261. package/dist/capabilities/testingCapability.js +0 -25
  262. package/dist/capabilities/testingCapability.js.map +0 -1
  263. package/dist/capabilities/validationCapability.d.ts +0 -13
  264. package/dist/capabilities/validationCapability.d.ts.map +0 -1
  265. package/dist/capabilities/validationCapability.js +0 -24
  266. package/dist/capabilities/validationCapability.js.map +0 -1
  267. package/dist/capabilities/webCapability.d.ts +0 -12
  268. package/dist/capabilities/webCapability.d.ts.map +0 -1
  269. package/dist/capabilities/webCapability.js +0 -22
  270. package/dist/capabilities/webCapability.js.map +0 -1
  271. package/dist/core/deepBugAnalyzer.d.ts +0 -128
  272. package/dist/core/deepBugAnalyzer.d.ts.map +0 -1
  273. package/dist/core/deepBugAnalyzer.js +0 -406
  274. package/dist/core/deepBugAnalyzer.js.map +0 -1
  275. package/dist/core/hypothesisEngine.d.ts +0 -113
  276. package/dist/core/hypothesisEngine.d.ts.map +0 -1
  277. package/dist/core/hypothesisEngine.js +0 -264
  278. package/dist/core/hypothesisEngine.js.map +0 -1
  279. package/dist/core/productTestHarness.d.ts +0 -113
  280. package/dist/core/productTestHarness.d.ts.map +0 -1
  281. package/dist/core/productTestHarness.js +0 -351
  282. package/dist/core/productTestHarness.js.map +0 -1
  283. package/dist/core/validationRunner.d.ts +0 -106
  284. package/dist/core/validationRunner.d.ts.map +0 -1
  285. package/dist/core/validationRunner.js +0 -892
  286. package/dist/core/validationRunner.js.map +0 -1
  287. package/dist/plugins/tools/browser/browserAutomationPlugin.d.ts +0 -14
  288. package/dist/plugins/tools/browser/browserAutomationPlugin.d.ts.map +0 -1
  289. package/dist/plugins/tools/browser/browserAutomationPlugin.js +0 -26
  290. package/dist/plugins/tools/browser/browserAutomationPlugin.js.map +0 -1
  291. package/dist/plugins/tools/checks/localRepoChecksPlugin.d.ts +0 -3
  292. package/dist/plugins/tools/checks/localRepoChecksPlugin.d.ts.map +0 -1
  293. package/dist/plugins/tools/checks/localRepoChecksPlugin.js +0 -14
  294. package/dist/plugins/tools/checks/localRepoChecksPlugin.js.map +0 -1
  295. package/dist/plugins/tools/cloud/cloudPlugin.d.ts +0 -3
  296. package/dist/plugins/tools/cloud/cloudPlugin.d.ts.map +0 -1
  297. package/dist/plugins/tools/cloud/cloudPlugin.js +0 -14
  298. package/dist/plugins/tools/cloud/cloudPlugin.js.map +0 -1
  299. package/dist/plugins/tools/codeAnalysis/codeAnalysisPlugin.d.ts +0 -3
  300. package/dist/plugins/tools/codeAnalysis/codeAnalysisPlugin.d.ts.map +0 -1
  301. package/dist/plugins/tools/codeAnalysis/codeAnalysisPlugin.js +0 -14
  302. package/dist/plugins/tools/codeAnalysis/codeAnalysisPlugin.js.map +0 -1
  303. package/dist/plugins/tools/codeQuality/codeQualityPlugin.d.ts +0 -3
  304. package/dist/plugins/tools/codeQuality/codeQualityPlugin.d.ts.map +0 -1
  305. package/dist/plugins/tools/codeQuality/codeQualityPlugin.js +0 -14
  306. package/dist/plugins/tools/codeQuality/codeQualityPlugin.js.map +0 -1
  307. package/dist/plugins/tools/dependency/dependencyPlugin.d.ts +0 -3
  308. package/dist/plugins/tools/dependency/dependencyPlugin.d.ts.map +0 -1
  309. package/dist/plugins/tools/dependency/dependencyPlugin.js +0 -12
  310. package/dist/plugins/tools/dependency/dependencyPlugin.js.map +0 -1
  311. package/dist/plugins/tools/development/devPlugin.d.ts +0 -3
  312. package/dist/plugins/tools/development/devPlugin.d.ts.map +0 -1
  313. package/dist/plugins/tools/development/devPlugin.js +0 -14
  314. package/dist/plugins/tools/development/devPlugin.js.map +0 -1
  315. package/dist/plugins/tools/email/emailPlugin.d.ts +0 -3
  316. package/dist/plugins/tools/email/emailPlugin.d.ts.map +0 -1
  317. package/dist/plugins/tools/email/emailPlugin.js +0 -12
  318. package/dist/plugins/tools/email/emailPlugin.js.map +0 -1
  319. package/dist/plugins/tools/enhancedAnalysis/enhancedAnalysisPlugin.d.ts +0 -3
  320. package/dist/plugins/tools/enhancedAnalysis/enhancedAnalysisPlugin.d.ts.map +0 -1
  321. package/dist/plugins/tools/enhancedAnalysis/enhancedAnalysisPlugin.js +0 -14
  322. package/dist/plugins/tools/enhancedAnalysis/enhancedAnalysisPlugin.js.map +0 -1
  323. package/dist/plugins/tools/enhancedCodeIntelligence/enhancedCodeIntelligencePlugin.d.ts +0 -3
  324. package/dist/plugins/tools/enhancedCodeIntelligence/enhancedCodeIntelligencePlugin.d.ts.map +0 -1
  325. package/dist/plugins/tools/enhancedCodeIntelligence/enhancedCodeIntelligencePlugin.js +0 -12
  326. package/dist/plugins/tools/enhancedCodeIntelligence/enhancedCodeIntelligencePlugin.js.map +0 -1
  327. package/dist/plugins/tools/enhancedDevWorkflow/enhancedDevWorkflowPlugin.d.ts +0 -3
  328. package/dist/plugins/tools/enhancedDevWorkflow/enhancedDevWorkflowPlugin.d.ts.map +0 -1
  329. package/dist/plugins/tools/enhancedDevWorkflow/enhancedDevWorkflowPlugin.js +0 -12
  330. package/dist/plugins/tools/enhancedDevWorkflow/enhancedDevWorkflowPlugin.js.map +0 -1
  331. package/dist/plugins/tools/frontendTesting/frontendTestingPlugin.d.ts +0 -3
  332. package/dist/plugins/tools/frontendTesting/frontendTestingPlugin.d.ts.map +0 -1
  333. package/dist/plugins/tools/frontendTesting/frontendTestingPlugin.js +0 -14
  334. package/dist/plugins/tools/frontendTesting/frontendTestingPlugin.js.map +0 -1
  335. package/dist/plugins/tools/interaction/interactionPlugin.d.ts +0 -3
  336. package/dist/plugins/tools/interaction/interactionPlugin.d.ts.map +0 -1
  337. package/dist/plugins/tools/interaction/interactionPlugin.js +0 -12
  338. package/dist/plugins/tools/interaction/interactionPlugin.js.map +0 -1
  339. package/dist/plugins/tools/learn/learnPlugin.d.ts +0 -3
  340. package/dist/plugins/tools/learn/learnPlugin.d.ts.map +0 -1
  341. package/dist/plugins/tools/learn/learnPlugin.js +0 -14
  342. package/dist/plugins/tools/learn/learnPlugin.js.map +0 -1
  343. package/dist/plugins/tools/notebook/notebookPlugin.d.ts +0 -9
  344. package/dist/plugins/tools/notebook/notebookPlugin.d.ts.map +0 -1
  345. package/dist/plugins/tools/notebook/notebookPlugin.js +0 -15
  346. package/dist/plugins/tools/notebook/notebookPlugin.js.map +0 -1
  347. package/dist/plugins/tools/planning/planningPlugin.d.ts +0 -9
  348. package/dist/plugins/tools/planning/planningPlugin.d.ts.map +0 -1
  349. package/dist/plugins/tools/planning/planningPlugin.js +0 -15
  350. package/dist/plugins/tools/planning/planningPlugin.js.map +0 -1
  351. package/dist/plugins/tools/refactoring/refactoringPlugin.d.ts +0 -3
  352. package/dist/plugins/tools/refactoring/refactoringPlugin.d.ts.map +0 -1
  353. package/dist/plugins/tools/refactoring/refactoringPlugin.js +0 -12
  354. package/dist/plugins/tools/refactoring/refactoringPlugin.js.map +0 -1
  355. package/dist/plugins/tools/taskManagement/taskManagementPlugin.d.ts +0 -3
  356. package/dist/plugins/tools/taskManagement/taskManagementPlugin.d.ts.map +0 -1
  357. package/dist/plugins/tools/taskManagement/taskManagementPlugin.js +0 -12
  358. package/dist/plugins/tools/taskManagement/taskManagementPlugin.js.map +0 -1
  359. package/dist/plugins/tools/testing/testingPlugin.d.ts +0 -3
  360. package/dist/plugins/tools/testing/testingPlugin.d.ts.map +0 -1
  361. package/dist/plugins/tools/testing/testingPlugin.js +0 -12
  362. package/dist/plugins/tools/testing/testingPlugin.js.map +0 -1
  363. package/dist/plugins/tools/validation/validationPlugin.d.ts +0 -3
  364. package/dist/plugins/tools/validation/validationPlugin.d.ts.map +0 -1
  365. package/dist/plugins/tools/validation/validationPlugin.js +0 -14
  366. package/dist/plugins/tools/validation/validationPlugin.js.map +0 -1
  367. package/dist/plugins/tools/web/webPlugin.d.ts +0 -3
  368. package/dist/plugins/tools/web/webPlugin.d.ts.map +0 -1
  369. package/dist/plugins/tools/web/webPlugin.js +0 -12
  370. package/dist/plugins/tools/web/webPlugin.js.map +0 -1
  371. package/dist/tools/advancedTestGenerationTools.d.ts +0 -21
  372. package/dist/tools/advancedTestGenerationTools.d.ts.map +0 -1
  373. package/dist/tools/advancedTestGenerationTools.js +0 -304
  374. package/dist/tools/advancedTestGenerationTools.js.map +0 -1
  375. package/dist/tools/browserAutomationTools.d.ts +0 -23
  376. package/dist/tools/browserAutomationTools.d.ts.map +0 -1
  377. package/dist/tools/browserAutomationTools.js +0 -916
  378. package/dist/tools/browserAutomationTools.js.map +0 -1
  379. package/dist/tools/buildTools.d.ts +0 -9
  380. package/dist/tools/buildTools.d.ts.map +0 -1
  381. package/dist/tools/buildTools.js +0 -346
  382. package/dist/tools/buildTools.js.map +0 -1
  383. package/dist/tools/cloudTools.d.ts +0 -49
  384. package/dist/tools/cloudTools.d.ts.map +0 -1
  385. package/dist/tools/cloudTools.js +0 -1258
  386. package/dist/tools/cloudTools.js.map +0 -1
  387. package/dist/tools/codeAnalysisTools.d.ts +0 -74
  388. package/dist/tools/codeAnalysisTools.d.ts.map +0 -1
  389. package/dist/tools/codeAnalysisTools.js +0 -664
  390. package/dist/tools/codeAnalysisTools.js.map +0 -1
  391. package/dist/tools/codeGenerationTools.d.ts +0 -3
  392. package/dist/tools/codeGenerationTools.d.ts.map +0 -1
  393. package/dist/tools/codeGenerationTools.js +0 -439
  394. package/dist/tools/codeGenerationTools.js.map +0 -1
  395. package/dist/tools/codeQualityTools.d.ts +0 -3
  396. package/dist/tools/codeQualityTools.d.ts.map +0 -1
  397. package/dist/tools/codeQualityTools.js +0 -297
  398. package/dist/tools/codeQualityTools.js.map +0 -1
  399. package/dist/tools/dependencyTools.d.ts +0 -3
  400. package/dist/tools/dependencyTools.d.ts.map +0 -1
  401. package/dist/tools/dependencyTools.js +0 -284
  402. package/dist/tools/dependencyTools.js.map +0 -1
  403. package/dist/tools/devTools.d.ts +0 -10
  404. package/dist/tools/devTools.d.ts.map +0 -1
  405. package/dist/tools/devTools.js +0 -2126
  406. package/dist/tools/devTools.js.map +0 -1
  407. package/dist/tools/emailTools.d.ts +0 -21
  408. package/dist/tools/emailTools.d.ts.map +0 -1
  409. package/dist/tools/emailTools.js +0 -449
  410. package/dist/tools/emailTools.js.map +0 -1
  411. package/dist/tools/enhancedAnalysisTools.d.ts +0 -9
  412. package/dist/tools/enhancedAnalysisTools.d.ts.map +0 -1
  413. package/dist/tools/enhancedAnalysisTools.js +0 -370
  414. package/dist/tools/enhancedAnalysisTools.js.map +0 -1
  415. package/dist/tools/enhancedCodeIntelligenceTools.d.ts +0 -7
  416. package/dist/tools/enhancedCodeIntelligenceTools.d.ts.map +0 -1
  417. package/dist/tools/enhancedCodeIntelligenceTools.js +0 -540
  418. package/dist/tools/enhancedCodeIntelligenceTools.js.map +0 -1
  419. package/dist/tools/enhancedDevWorkflowTools.d.ts +0 -7
  420. package/dist/tools/enhancedDevWorkflowTools.d.ts.map +0 -1
  421. package/dist/tools/enhancedDevWorkflowTools.js +0 -432
  422. package/dist/tools/enhancedDevWorkflowTools.js.map +0 -1
  423. package/dist/tools/frontendTestingTools.d.ts +0 -35
  424. package/dist/tools/frontendTestingTools.d.ts.map +0 -1
  425. package/dist/tools/frontendTestingTools.js +0 -1258
  426. package/dist/tools/frontendTestingTools.js.map +0 -1
  427. package/dist/tools/globTools.d.ts +0 -15
  428. package/dist/tools/globTools.d.ts.map +0 -1
  429. package/dist/tools/globTools.js +0 -174
  430. package/dist/tools/globTools.js.map +0 -1
  431. package/dist/tools/grepTools.d.ts +0 -19
  432. package/dist/tools/grepTools.d.ts.map +0 -1
  433. package/dist/tools/grepTools.js +0 -411
  434. package/dist/tools/grepTools.js.map +0 -1
  435. package/dist/tools/interactionTools.d.ts +0 -6
  436. package/dist/tools/interactionTools.d.ts.map +0 -1
  437. package/dist/tools/interactionTools.js +0 -209
  438. package/dist/tools/interactionTools.js.map +0 -1
  439. package/dist/tools/learnTools.d.ts +0 -164
  440. package/dist/tools/learnTools.d.ts.map +0 -1
  441. package/dist/tools/learnTools.js +0 -2098
  442. package/dist/tools/learnTools.js.map +0 -1
  443. package/dist/tools/notebookEditTools.d.ts +0 -15
  444. package/dist/tools/notebookEditTools.d.ts.map +0 -1
  445. package/dist/tools/notebookEditTools.js +0 -197
  446. package/dist/tools/notebookEditTools.js.map +0 -1
  447. package/dist/tools/refactoringTools.d.ts +0 -3
  448. package/dist/tools/refactoringTools.d.ts.map +0 -1
  449. package/dist/tools/refactoringTools.js +0 -294
  450. package/dist/tools/refactoringTools.js.map +0 -1
  451. package/dist/tools/repoChecksTools.d.ts +0 -3
  452. package/dist/tools/repoChecksTools.d.ts.map +0 -1
  453. package/dist/tools/repoChecksTools.js +0 -276
  454. package/dist/tools/repoChecksTools.js.map +0 -1
  455. package/dist/tools/taskManagementTools.d.ts +0 -10
  456. package/dist/tools/taskManagementTools.d.ts.map +0 -1
  457. package/dist/tools/taskManagementTools.js +0 -133
  458. package/dist/tools/taskManagementTools.js.map +0 -1
  459. package/dist/tools/testingTools.d.ts +0 -3
  460. package/dist/tools/testingTools.d.ts.map +0 -1
  461. package/dist/tools/testingTools.js +0 -237
  462. package/dist/tools/testingTools.js.map +0 -1
  463. package/dist/tools/validationTools.d.ts +0 -7
  464. package/dist/tools/validationTools.d.ts.map +0 -1
  465. package/dist/tools/validationTools.js +0 -344
  466. package/dist/tools/validationTools.js.map +0 -1
  467. package/dist/tools/webTools.d.ts +0 -3
  468. package/dist/tools/webTools.d.ts.map +0 -1
  469. package/dist/tools/webTools.js +0 -502
  470. package/dist/tools/webTools.js.map +0 -1
@@ -1,664 +0,0 @@
1
- import { readFileSync, existsSync, statSync } from 'node:fs';
2
- import { join } from 'node:path';
3
- import ts from 'typescript';
4
- // Maximum file size for code analysis (2MB) to prevent memory exhaustion
5
- const MAX_ANALYSIS_FILE_SIZE = 2 * 1024 * 1024;
6
- export function createCodeAnalysisTools(workingDir) {
7
- return [
8
- {
9
- name: 'analyze_code_structure',
10
- description: 'Analyze TypeScript/JavaScript file structure and extract functions, classes, interfaces, imports, and exports',
11
- parameters: {
12
- type: 'object',
13
- properties: {
14
- path: {
15
- type: 'string',
16
- description: 'Path to the TypeScript/JavaScript file to analyze',
17
- },
18
- },
19
- required: ['path'],
20
- additionalProperties: false,
21
- },
22
- handler: async (args) => {
23
- try {
24
- const filePath = resolveFilePath(workingDir, args['path']);
25
- if (!existsSync(filePath)) {
26
- return `Error: File not found: ${filePath}`;
27
- }
28
- // Check file size to prevent memory exhaustion
29
- const stats = statSync(filePath);
30
- if (stats.size > MAX_ANALYSIS_FILE_SIZE) {
31
- return `Error: File too large (${(stats.size / 1024 / 1024).toFixed(1)}MB). Maximum: ${MAX_ANALYSIS_FILE_SIZE / 1024 / 1024}MB`;
32
- }
33
- const content = readFileSync(filePath, 'utf-8');
34
- const analysis = analyzeTypeScriptFile(content, filePath);
35
- return formatAnalysisResults(analysis);
36
- }
37
- catch (error) {
38
- return formatHandlerError('analyzing file', error);
39
- }
40
- },
41
- },
42
- {
43
- name: 'find_dependencies',
44
- description: 'Find all dependencies and imports in a TypeScript/JavaScript file',
45
- parameters: {
46
- type: 'object',
47
- properties: {
48
- path: {
49
- type: 'string',
50
- description: 'Path to the TypeScript/JavaScript file',
51
- },
52
- },
53
- required: ['path'],
54
- additionalProperties: false,
55
- },
56
- handler: async (args) => {
57
- try {
58
- const filePath = resolveFilePath(workingDir, args['path']);
59
- if (!existsSync(filePath)) {
60
- return `Error: File not found: ${filePath}`;
61
- }
62
- // Check file size to prevent memory exhaustion
63
- const stats = statSync(filePath);
64
- if (stats.size > MAX_ANALYSIS_FILE_SIZE) {
65
- return `Error: File too large (${(stats.size / 1024 / 1024).toFixed(1)}MB). Maximum: ${MAX_ANALYSIS_FILE_SIZE / 1024 / 1024}MB`;
66
- }
67
- const content = readFileSync(filePath, 'utf-8');
68
- const analysis = analyzeTypeScriptFile(content, filePath);
69
- return formatDependencies(analysis);
70
- }
71
- catch (error) {
72
- return formatHandlerError('analyzing dependencies', error);
73
- }
74
- },
75
- },
76
- {
77
- name: 'check_code_complexity',
78
- description: 'Analyze code complexity metrics (function length, parameter count, etc.)',
79
- parameters: {
80
- type: 'object',
81
- properties: {
82
- path: {
83
- type: 'string',
84
- description: 'Path to the TypeScript/JavaScript file',
85
- },
86
- },
87
- required: ['path'],
88
- additionalProperties: false,
89
- },
90
- handler: async (args) => {
91
- try {
92
- const filePath = resolveFilePath(workingDir, args['path']);
93
- if (!existsSync(filePath)) {
94
- return `Error: File not found: ${filePath}`;
95
- }
96
- // Check file size to prevent memory exhaustion
97
- const stats = statSync(filePath);
98
- if (stats.size > MAX_ANALYSIS_FILE_SIZE) {
99
- return `Error: File too large (${(stats.size / 1024 / 1024).toFixed(1)}MB). Maximum: ${MAX_ANALYSIS_FILE_SIZE / 1024 / 1024}MB`;
100
- }
101
- const content = readFileSync(filePath, 'utf-8');
102
- const analysis = analyzeTypeScriptFile(content, filePath);
103
- return formatComplexityMetrics(analysis);
104
- }
105
- catch (error) {
106
- return formatHandlerError('analyzing complexity', error);
107
- }
108
- },
109
- },
110
- {
111
- name: 'advanced_ast_analysis',
112
- description: 'Perform AST-based analysis with cyclomatic complexity scoring, call graph construction, and potential hotspot detection.',
113
- parameters: {
114
- type: 'object',
115
- properties: {
116
- path: {
117
- type: 'string',
118
- description: 'Path to the TypeScript/JavaScript file to inspect',
119
- },
120
- },
121
- required: ['path'],
122
- additionalProperties: false,
123
- },
124
- handler: async (args) => {
125
- try {
126
- const filePath = resolveFilePath(workingDir, args['path']);
127
- if (!existsSync(filePath)) {
128
- return `Error: File not found: ${filePath}`;
129
- }
130
- // Check file size to prevent memory exhaustion
131
- const stats = statSync(filePath);
132
- if (stats.size > MAX_ANALYSIS_FILE_SIZE) {
133
- return `Error: File too large (${(stats.size / 1024 / 1024).toFixed(1)}MB). Maximum: ${MAX_ANALYSIS_FILE_SIZE / 1024 / 1024}MB`;
134
- }
135
- const content = readFileSync(filePath, 'utf-8');
136
- const analysis = performAdvancedAstAnalysis(content, filePath);
137
- return formatAstAnalysis(analysis);
138
- }
139
- catch (error) {
140
- return formatHandlerError('performing AST analysis', error);
141
- }
142
- },
143
- },
144
- ];
145
- }
146
- function resolveFilePath(workingDir, path) {
147
- const normalized = validatePathArg(path);
148
- return normalized.startsWith('/') ? normalized : join(workingDir, normalized);
149
- }
150
- function validatePathArg(path) {
151
- if (typeof path !== 'string' || !path.trim()) {
152
- throw new Error('Path must be a non-empty string.');
153
- }
154
- return path.trim();
155
- }
156
- export function analyzeTypeScriptFile(content, filePath) {
157
- const lines = content.split('\n');
158
- const result = {
159
- file: filePath,
160
- functions: [],
161
- classes: [],
162
- interfaces: [],
163
- imports: [],
164
- exports: [],
165
- };
166
- lines.forEach((line, index) => {
167
- const lineNumber = index + 1;
168
- const trimmed = line.trim();
169
- // Parse imports
170
- if (trimmed.startsWith('import')) {
171
- const importInfo = parseImportStatement(trimmed, lineNumber);
172
- if (importInfo) {
173
- result.imports.push(importInfo);
174
- }
175
- }
176
- // Parse exports
177
- if (trimmed.startsWith('export')) {
178
- const exportInfo = parseExportStatement(trimmed, lineNumber);
179
- if (exportInfo) {
180
- result.exports.push(exportInfo);
181
- }
182
- }
183
- // Parse functions
184
- const functionMatch = trimmed.match(/^(?:export\s+)?(?:async\s+)?function\s+(\w+)\s*\(([^)]*)\)/);
185
- if (functionMatch) {
186
- const fnName = functionMatch[1] ?? '';
187
- const fnParams = functionMatch[2] ?? '';
188
- result.functions.push({
189
- name: fnName,
190
- line: lineNumber,
191
- parameters: parseParameters(fnParams),
192
- });
193
- }
194
- // Parse arrow functions
195
- const arrowFunctionMatch = trimmed.match(/^(?:export\s+)?(?:const|let|var)\s+(\w+)\s*=\s*(?:\(([^)]*)\)|(\w+))\s*=>/);
196
- if (arrowFunctionMatch) {
197
- const name = arrowFunctionMatch[1] ?? '';
198
- const params = arrowFunctionMatch[2] || arrowFunctionMatch[3] || '';
199
- result.functions.push({
200
- name,
201
- line: lineNumber,
202
- parameters: parseParameters(params),
203
- });
204
- }
205
- // Parse classes
206
- const classMatch = trimmed.match(/^(?:export\s+)?class\s+(\w+)/);
207
- if (classMatch) {
208
- const className = classMatch[1] ?? '';
209
- result.classes.push({
210
- name: className,
211
- line: lineNumber,
212
- methods: [],
213
- properties: [],
214
- });
215
- }
216
- // Parse interfaces
217
- const interfaceMatch = trimmed.match(/^(?:export\s+)?interface\s+(\w+)/);
218
- if (interfaceMatch) {
219
- const interfaceName = interfaceMatch[1] ?? '';
220
- result.interfaces.push({
221
- name: interfaceName,
222
- line: lineNumber,
223
- properties: [],
224
- methods: [],
225
- });
226
- }
227
- // Parse class methods and properties (simplified)
228
- if (trimmed.match(/^(?:public|private|protected|readonly)?\s*\w+\s*\([^)]*\)/)) {
229
- const methodMatch = trimmed.match(/^(?:public|private|protected)?\s*(\w+)\s*\(([^)]*)\)/);
230
- if (methodMatch && result.classes.length > 0) {
231
- const currentClass = result.classes[result.classes.length - 1];
232
- if (currentClass) {
233
- currentClass.methods.push({
234
- name: methodMatch[1] ?? '',
235
- line: lineNumber,
236
- parameters: parseParameters(methodMatch[2] ?? ''),
237
- });
238
- }
239
- }
240
- }
241
- // Parse interface properties
242
- if (trimmed.match(/^\w+\s*:/) && result.interfaces.length > 0) {
243
- const propMatch = trimmed.match(/^(\w+)\s*:/);
244
- if (propMatch) {
245
- const currentInterface = result.interfaces[result.interfaces.length - 1];
246
- if (currentInterface) {
247
- currentInterface.properties.push({
248
- name: propMatch[1] ?? '',
249
- line: lineNumber,
250
- });
251
- }
252
- }
253
- }
254
- });
255
- return result;
256
- }
257
- export function performAdvancedAstAnalysis(content, filePath) {
258
- const sourceFile = ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, true);
259
- const symbols = [];
260
- const callGraph = new Map();
261
- const issues = [];
262
- const symbolStack = [];
263
- const recordCall = (callee) => {
264
- if (!callee) {
265
- return;
266
- }
267
- const caller = symbolStack[symbolStack.length - 1];
268
- if (!caller) {
269
- return;
270
- }
271
- if (!callGraph.has(caller)) {
272
- callGraph.set(caller, new Map());
273
- }
274
- const targets = callGraph.get(caller);
275
- targets.set(callee, (targets.get(callee) ?? 0) + 1);
276
- };
277
- const registerSymbol = (info) => {
278
- symbols.push(info);
279
- if (info.statementCount > 50) {
280
- issues.push(`Large function detected: ${info.name} spans ${info.statementCount} statements.`);
281
- }
282
- if (info.cyclomaticComplexity > 10) {
283
- issues.push(`High complexity function: ${info.name} cyclomatic complexity is ${info.cyclomaticComplexity}.`);
284
- }
285
- };
286
- const visit = (node) => {
287
- if (ts.isFunctionDeclaration(node) && node.name) {
288
- const info = buildFunctionSymbol(node, node.name.text, 'function', sourceFile);
289
- registerSymbol(info);
290
- symbolStack.push(info.name);
291
- ts.forEachChild(node, visit);
292
- symbolStack.pop();
293
- return;
294
- }
295
- if (ts.isClassDeclaration(node) && node.name) {
296
- const info = buildClassSymbol(node, sourceFile);
297
- registerSymbol(info);
298
- ts.forEachChild(node, visit);
299
- return;
300
- }
301
- if ((ts.isMethodDeclaration(node) || ts.isGetAccessorDeclaration(node) || ts.isSetAccessorDeclaration(node)) &&
302
- ts.isClassLike(node.parent)) {
303
- const className = (node.parent.name && node.parent.name.getText(sourceFile)) || 'anonymous-class';
304
- const methodName = ts.isIdentifier(node.name) ? node.name.getText(sourceFile) : 'anonymous-method';
305
- const info = buildFunctionSymbol(node, `${className}.${methodName}`, 'method', sourceFile);
306
- registerSymbol(info);
307
- symbolStack.push(info.name);
308
- ts.forEachChild(node, visit);
309
- symbolStack.pop();
310
- return;
311
- }
312
- if (ts.isConstructorDeclaration(node) && ts.isClassLike(node.parent)) {
313
- const className = (node.parent.name && node.parent.name.getText(sourceFile)) || 'anonymous-class';
314
- const info = buildFunctionSymbol(node, `${className}.constructor`, 'method', sourceFile);
315
- registerSymbol(info);
316
- symbolStack.push(info.name);
317
- ts.forEachChild(node, visit);
318
- symbolStack.pop();
319
- return;
320
- }
321
- if (ts.isVariableDeclaration(node) &&
322
- node.initializer &&
323
- (ts.isArrowFunction(node.initializer) || ts.isFunctionExpression(node.initializer)) &&
324
- ts.isIdentifier(node.name)) {
325
- const kind = ts.isArrowFunction(node.initializer) ? 'arrow-function' : 'function';
326
- const info = buildFunctionSymbol(node.initializer, node.name.text, kind, sourceFile);
327
- registerSymbol(info);
328
- symbolStack.push(info.name);
329
- ts.forEachChild(node.initializer, visit);
330
- symbolStack.pop();
331
- return;
332
- }
333
- if (ts.isCallExpression(node) || ts.isNewExpression(node)) {
334
- const callee = extractCalleeName(node.expression);
335
- recordCall(callee);
336
- }
337
- ts.forEachChild(node, visit);
338
- };
339
- visit(sourceFile);
340
- const callGraphList = [];
341
- for (const [from, targets] of callGraph.entries()) {
342
- for (const [to, count] of targets.entries()) {
343
- callGraphList.push({ from, to, count });
344
- }
345
- }
346
- const totalCyclomaticComplexity = symbols.reduce((sum, symbol) => sum + symbol.cyclomaticComplexity, 0);
347
- return {
348
- file: filePath,
349
- symbols,
350
- callGraph: callGraphList,
351
- totalCyclomaticComplexity,
352
- issues,
353
- };
354
- }
355
- function buildFunctionSymbol(node, name, kind, sourceFile) {
356
- const startLine = sourceFile.getLineAndCharacterOfPosition(node.getStart()).line + 1;
357
- const endLine = sourceFile.getLineAndCharacterOfPosition(node.end).line + 1;
358
- const statementCount = countStatements(node);
359
- const cyclomaticComplexity = estimateCyclomaticComplexity(node);
360
- const parameters = node.parameters?.map((param) => param.name.getText(sourceFile)) ?? [];
361
- return {
362
- name,
363
- kind,
364
- startLine,
365
- endLine,
366
- parameters,
367
- statementCount,
368
- cyclomaticComplexity,
369
- };
370
- }
371
- function buildClassSymbol(node, sourceFile) {
372
- const name = (node.name && node.name.getText(sourceFile)) || 'AnonymousClass';
373
- const startLine = sourceFile.getLineAndCharacterOfPosition(node.getStart()).line + 1;
374
- const endLine = sourceFile.getLineAndCharacterOfPosition(node.end).line + 1;
375
- const statementCount = node.members.length;
376
- const cyclomaticComplexity = node.members.reduce((sum, member) => {
377
- if (ts.isMethodDeclaration(member) ||
378
- ts.isConstructorDeclaration(member) ||
379
- ts.isGetAccessorDeclaration(member) ||
380
- ts.isSetAccessorDeclaration(member)) {
381
- return sum + estimateCyclomaticComplexity(member);
382
- }
383
- return sum;
384
- }, 1);
385
- return {
386
- name,
387
- kind: 'class',
388
- startLine,
389
- endLine,
390
- parameters: [],
391
- statementCount,
392
- cyclomaticComplexity,
393
- };
394
- }
395
- function countStatements(node) {
396
- const body = node.body;
397
- if (!body) {
398
- return 0;
399
- }
400
- if (ts.isBlock(body)) {
401
- return body.statements.length;
402
- }
403
- return 1;
404
- }
405
- function estimateCyclomaticComplexity(node) {
406
- let complexity = 1;
407
- const visit = (child) => {
408
- if (ts.isIfStatement(child) ||
409
- ts.isForStatement(child) ||
410
- ts.isWhileStatement(child) ||
411
- ts.isForOfStatement(child) ||
412
- ts.isForInStatement(child) ||
413
- ts.isCaseClause(child) ||
414
- ts.isCatchClause(child)) {
415
- complexity += 1;
416
- }
417
- else if (ts.isConditionalExpression(child)) {
418
- complexity += 1;
419
- }
420
- else if (ts.isBinaryExpression(child) &&
421
- (child.operatorToken.kind === ts.SyntaxKind.AmpersandAmpersandToken ||
422
- child.operatorToken.kind === ts.SyntaxKind.BarBarToken)) {
423
- complexity += 1;
424
- }
425
- ts.forEachChild(child, visit);
426
- };
427
- ts.forEachChild(node, visit);
428
- return complexity;
429
- }
430
- function extractCalleeName(expression) {
431
- if (!expression) {
432
- return null;
433
- }
434
- if (ts.isIdentifier(expression)) {
435
- return expression.text;
436
- }
437
- if (ts.isPropertyAccessExpression(expression)) {
438
- return expression.name.text;
439
- }
440
- return null;
441
- }
442
- function formatAstAnalysis(result) {
443
- const output = [];
444
- output.push(`# Advanced AST Analysis: ${result.file}`);
445
- output.push('');
446
- output.push('## Symbol Metrics');
447
- if (result.symbols.length === 0) {
448
- output.push('No functions or classes detected.');
449
- }
450
- else {
451
- const sorted = [...result.symbols].sort((a, b) => b.cyclomaticComplexity - a.cyclomaticComplexity);
452
- for (const symbol of sorted) {
453
- output.push(`- ${symbol.name} (${symbol.kind}) lines ${symbol.startLine}-${symbol.endLine} | statements: ${symbol.statementCount} | CC: ${symbol.cyclomaticComplexity} | params: ${symbol.parameters.join(', ') || 'none'}`);
454
- }
455
- }
456
- output.push('');
457
- output.push('## Call Graph');
458
- if (result.callGraph.length === 0) {
459
- output.push('No function-to-function calls detected.');
460
- }
461
- else {
462
- for (const edge of result.callGraph) {
463
- output.push(`- ${edge.from} → ${edge.to} (x${edge.count})`);
464
- }
465
- }
466
- output.push('');
467
- output.push('## Hotspot Alerts');
468
- if (result.issues.length === 0) {
469
- output.push('No hotspots detected.');
470
- }
471
- else {
472
- for (const issue of result.issues) {
473
- output.push(`- ${issue}`);
474
- }
475
- }
476
- output.push('');
477
- const averageComplexity = result.symbols.length === 0 ? 0 : result.totalCyclomaticComplexity / result.symbols.length;
478
- output.push('## Aggregate Metrics');
479
- output.push(`- Total symbols analyzed: ${result.symbols.length}`);
480
- output.push(`- Total cyclomatic complexity: ${result.totalCyclomaticComplexity}`);
481
- output.push(`- Average cyclomatic complexity: ${averageComplexity.toFixed(2)}`);
482
- return output.join('\n');
483
- }
484
- function formatHandlerError(task, error) {
485
- const message = error instanceof Error ? error.message : String(error);
486
- return `Error ${task}: ${message}`;
487
- }
488
- function parseImportStatement(line, lineNumber) {
489
- // Simple import parsing - can be enhanced with proper AST parsing
490
- const importMatch = line.match(/import\s+(?:\*\s+as\s+(\w+)|\{([^}]+)\}|(\w+))\s+from\s+['"]([^'"]+)['"]/);
491
- if (importMatch) {
492
- let specifiers = [];
493
- if (importMatch[1]) {
494
- // namespace import
495
- specifiers = [`* as ${importMatch[1]}`];
496
- }
497
- else if (importMatch[2]) {
498
- // named imports
499
- specifiers = importMatch[2].split(',').map(s => s.trim()).filter(Boolean);
500
- }
501
- else if (importMatch[3]) {
502
- // default import
503
- specifiers = [importMatch[3]];
504
- }
505
- return {
506
- source: importMatch[4] ?? '',
507
- specifiers,
508
- line: lineNumber,
509
- };
510
- }
511
- return null;
512
- }
513
- function parseExportStatement(line, lineNumber) {
514
- if (line.includes('export default')) {
515
- const defaultMatch = line.match(/export\s+default\s+(\w+)/);
516
- if (defaultMatch) {
517
- return {
518
- name: defaultMatch[1] ?? '',
519
- type: 'default',
520
- line: lineNumber,
521
- };
522
- }
523
- }
524
- else if (line.includes('export {')) {
525
- const namedMatch = line.match(/export\s+\{\s*([^}]+)\s*\}/);
526
- if (namedMatch) {
527
- return {
528
- name: namedMatch[1] ?? '',
529
- type: 'named',
530
- line: lineNumber,
531
- };
532
- }
533
- }
534
- else {
535
- const exportMatch = line.match(/export\s+(?:class|function|interface|const|let|var)\s+(\w+)/);
536
- if (exportMatch) {
537
- return {
538
- name: exportMatch[1] ?? '',
539
- type: 'named',
540
- line: lineNumber,
541
- };
542
- }
543
- }
544
- return null;
545
- }
546
- function parseParameters(paramString) {
547
- return paramString
548
- .split(',')
549
- .map((p) => p.trim())
550
- .filter((p) => p.length > 0)
551
- .map((p) => {
552
- // Extract parameter name (ignore types for now)
553
- const nameMatch = p.match(/^(\w+)(?:\s*:\s*[^,]+)?$/);
554
- return nameMatch?.[1] ?? p;
555
- });
556
- }
557
- function formatAnalysisResults(analysis) {
558
- const output = [];
559
- output.push(`# Code Analysis: ${analysis.file}`);
560
- output.push('');
561
- if (analysis.imports.length > 0) {
562
- output.push('## Imports');
563
- analysis.imports.forEach(imp => {
564
- output.push(`- Line ${imp.line}: from "${imp.source}"`);
565
- if (imp.specifiers.length > 0) {
566
- output.push(` ${imp.specifiers.join(', ')}`);
567
- }
568
- });
569
- output.push('');
570
- }
571
- if (analysis.exports.length > 0) {
572
- output.push('## Exports');
573
- analysis.exports.forEach(exp => {
574
- output.push(`- Line ${exp.line}: ${exp.type} ${exp.name}`);
575
- });
576
- output.push('');
577
- }
578
- if (analysis.functions.length > 0) {
579
- output.push('## Functions');
580
- analysis.functions.forEach(func => {
581
- output.push(`- Line ${func.line}: ${func.name}(${func.parameters.join(', ')})`);
582
- });
583
- output.push('');
584
- }
585
- if (analysis.classes.length > 0) {
586
- output.push('## Classes');
587
- analysis.classes.forEach(cls => {
588
- output.push(`- Line ${cls.line}: ${cls.name}`);
589
- if (cls.methods.length > 0) {
590
- output.push(` Methods: ${cls.methods.map(m => m.name).join(', ')}`);
591
- }
592
- if (cls.properties.length > 0) {
593
- output.push(` Properties: ${cls.properties.map(p => p.name).join(', ')}`);
594
- }
595
- });
596
- output.push('');
597
- }
598
- if (analysis.interfaces.length > 0) {
599
- output.push('## Interfaces');
600
- analysis.interfaces.forEach(intf => {
601
- output.push(`- Line ${intf.line}: ${intf.name}`);
602
- if (intf.properties.length > 0) {
603
- output.push(` Properties: ${intf.properties.map(p => p.name).join(', ')}`);
604
- }
605
- if (intf.methods.length > 0) {
606
- output.push(` Methods: ${intf.methods.map(m => m.name).join(', ')}`);
607
- }
608
- });
609
- output.push('');
610
- }
611
- return output.join('\n');
612
- }
613
- function formatDependencies(analysis) {
614
- const output = [];
615
- output.push(`# Dependencies: ${analysis.file}`);
616
- output.push('');
617
- if (analysis.imports.length > 0) {
618
- output.push('## Imported Modules');
619
- analysis.imports.forEach(imp => {
620
- output.push(`- ${imp.source}`);
621
- if (imp.specifiers.length > 0) {
622
- output.push(` Used: ${imp.specifiers.join(', ')}`);
623
- }
624
- });
625
- }
626
- else {
627
- output.push('No imports found.');
628
- }
629
- return output.join('\n');
630
- }
631
- function formatComplexityMetrics(analysis) {
632
- const output = [];
633
- output.push(`# Code Complexity: ${analysis.file}`);
634
- output.push('');
635
- // Function complexity
636
- if (analysis.functions.length > 0) {
637
- output.push('## Function Complexity');
638
- analysis.functions.forEach(func => {
639
- const paramCount = func.parameters.length;
640
- const complexity = paramCount > 3 ? 'High' : paramCount > 1 ? 'Medium' : 'Low';
641
- output.push(`- ${func.name}: ${paramCount} parameters (${complexity})`);
642
- });
643
- }
644
- // Class complexity
645
- if (analysis.classes.length > 0) {
646
- output.push('## Class Complexity');
647
- analysis.classes.forEach(cls => {
648
- const methodCount = cls.methods.length;
649
- const propCount = cls.properties.length;
650
- const complexity = methodCount + propCount > 5 ? 'High' : methodCount + propCount > 2 ? 'Medium' : 'Low';
651
- output.push(`- ${cls.name}: ${methodCount} methods, ${propCount} properties (${complexity})`);
652
- });
653
- }
654
- // Overall metrics
655
- output.push('');
656
- output.push('## Overall Metrics');
657
- output.push(`- Total functions: ${analysis.functions.length}`);
658
- output.push(`- Total classes: ${analysis.classes.length}`);
659
- output.push(`- Total interfaces: ${analysis.interfaces.length}`);
660
- output.push(`- Total imports: ${analysis.imports.length}`);
661
- output.push(`- Total exports: ${analysis.exports.length}`);
662
- return output.join('\n');
663
- }
664
- //# sourceMappingURL=codeAnalysisTools.js.map