couchloop-eq-mcp 1.0.3 → 1.0.5

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 (285) hide show
  1. package/README.md +24 -11
  2. package/dist/clients/shrinkChatClient.js +1 -1
  3. package/dist/clients/shrinkChatClient.js.map +1 -1
  4. package/dist/developer/analyzers/bloat-detector.d.ts +89 -0
  5. package/dist/developer/analyzers/bloat-detector.d.ts.map +1 -0
  6. package/dist/developer/analyzers/bloat-detector.js +483 -0
  7. package/dist/developer/analyzers/bloat-detector.js.map +1 -0
  8. package/dist/developer/backup/auto-backup.d.ts +96 -0
  9. package/dist/developer/backup/auto-backup.d.ts.map +1 -0
  10. package/dist/developer/backup/auto-backup.js +346 -0
  11. package/dist/developer/backup/auto-backup.js.map +1 -0
  12. package/dist/developer/blockers/package-blocker.d.ts +33 -0
  13. package/dist/developer/blockers/package-blocker.d.ts.map +1 -0
  14. package/dist/developer/blockers/package-blocker.js +224 -0
  15. package/dist/developer/blockers/package-blocker.js.map +1 -0
  16. package/dist/developer/evaluators/ai-error-preventer.d.ts +54 -0
  17. package/dist/developer/evaluators/ai-error-preventer.d.ts.map +1 -0
  18. package/dist/developer/evaluators/ai-error-preventer.js +270 -0
  19. package/dist/developer/evaluators/ai-error-preventer.js.map +1 -0
  20. package/dist/developer/evaluators/build-context-detector.d.ts +44 -0
  21. package/dist/developer/evaluators/build-context-detector.d.ts.map +1 -0
  22. package/dist/developer/evaluators/build-context-detector.js +258 -0
  23. package/dist/developer/evaluators/build-context-detector.js.map +1 -0
  24. package/dist/developer/evaluators/package-evaluator.d.ts +37 -0
  25. package/dist/developer/evaluators/package-evaluator.d.ts.map +1 -0
  26. package/dist/developer/evaluators/package-evaluator.js +278 -0
  27. package/dist/developer/evaluators/package-evaluator.js.map +1 -0
  28. package/dist/developer/guards/file-guardian.d.ts +79 -0
  29. package/dist/developer/guards/file-guardian.d.ts.map +1 -0
  30. package/dist/developer/guards/file-guardian.js +309 -0
  31. package/dist/developer/guards/file-guardian.js.map +1 -0
  32. package/dist/developer/managers/context-manager.d.ts +61 -0
  33. package/dist/developer/managers/context-manager.d.ts.map +1 -0
  34. package/dist/developer/managers/context-manager.js +302 -0
  35. package/dist/developer/managers/context-manager.js.map +1 -0
  36. package/dist/developer/metrics/complexity-calculator.d.ts +52 -0
  37. package/dist/developer/metrics/complexity-calculator.d.ts.map +1 -0
  38. package/dist/developer/metrics/complexity-calculator.js +259 -0
  39. package/dist/developer/metrics/complexity-calculator.js.map +1 -0
  40. package/dist/developer/reports/review-summary.d.ts +49 -0
  41. package/dist/developer/reports/review-summary.d.ts.map +1 -0
  42. package/dist/developer/reports/review-summary.js +249 -0
  43. package/dist/developer/reports/review-summary.js.map +1 -0
  44. package/dist/developer/scanners/review-assistant.d.ts +41 -0
  45. package/dist/developer/scanners/review-assistant.d.ts.map +1 -0
  46. package/dist/developer/scanners/review-assistant.js +374 -0
  47. package/dist/developer/scanners/review-assistant.js.map +1 -0
  48. package/dist/developer/scanners/secret-scanner.d.ts +66 -0
  49. package/dist/developer/scanners/secret-scanner.d.ts.map +1 -0
  50. package/dist/developer/scanners/secret-scanner.js +287 -0
  51. package/dist/developer/scanners/secret-scanner.js.map +1 -0
  52. package/dist/developer/scanners/sql-injection-detector.d.ts +54 -0
  53. package/dist/developer/scanners/sql-injection-detector.d.ts.map +1 -0
  54. package/dist/developer/scanners/sql-injection-detector.js +174 -0
  55. package/dist/developer/scanners/sql-injection-detector.js.map +1 -0
  56. package/dist/developer/scanners/xss-detector.d.ts +60 -0
  57. package/dist/developer/scanners/xss-detector.d.ts.map +1 -0
  58. package/dist/developer/scanners/xss-detector.js +229 -0
  59. package/dist/developer/scanners/xss-detector.js.map +1 -0
  60. package/dist/developer/types/ai-errors.d.ts +34 -0
  61. package/dist/developer/types/ai-errors.d.ts.map +1 -0
  62. package/dist/developer/types/ai-errors.js +271 -0
  63. package/dist/developer/types/ai-errors.js.map +1 -0
  64. package/dist/developer/types/package.d.ts +32 -0
  65. package/dist/developer/types/package.d.ts.map +1 -0
  66. package/dist/developer/types/package.js +5 -0
  67. package/dist/developer/types/package.js.map +1 -0
  68. package/dist/developer/updaters/dependency-updater.d.ts +102 -0
  69. package/dist/developer/updaters/dependency-updater.d.ts.map +1 -0
  70. package/dist/developer/updaters/dependency-updater.js +472 -0
  71. package/dist/developer/updaters/dependency-updater.js.map +1 -0
  72. package/dist/developer/validators/cargo.d.ts +14 -0
  73. package/dist/developer/validators/cargo.d.ts.map +1 -0
  74. package/dist/developer/validators/cargo.js +132 -0
  75. package/dist/developer/validators/cargo.js.map +1 -0
  76. package/dist/developer/validators/gem.d.ts +14 -0
  77. package/dist/developer/validators/gem.d.ts.map +1 -0
  78. package/dist/developer/validators/gem.js +85 -0
  79. package/dist/developer/validators/gem.js.map +1 -0
  80. package/dist/developer/validators/go.d.ts +14 -0
  81. package/dist/developer/validators/go.d.ts.map +1 -0
  82. package/dist/developer/validators/go.js +138 -0
  83. package/dist/developer/validators/go.js.map +1 -0
  84. package/dist/developer/validators/maven.d.ts +14 -0
  85. package/dist/developer/validators/maven.d.ts.map +1 -0
  86. package/dist/developer/validators/maven.js +99 -0
  87. package/dist/developer/validators/maven.js.map +1 -0
  88. package/dist/developer/validators/npm.d.ts +14 -0
  89. package/dist/developer/validators/npm.d.ts.map +1 -0
  90. package/dist/developer/validators/npm.js +96 -0
  91. package/dist/developer/validators/npm.js.map +1 -0
  92. package/dist/developer/validators/nuget.d.ts +15 -0
  93. package/dist/developer/validators/nuget.d.ts.map +1 -0
  94. package/dist/developer/validators/nuget.js +107 -0
  95. package/dist/developer/validators/nuget.js.map +1 -0
  96. package/dist/developer/validators/pypi.d.ts +14 -0
  97. package/dist/developer/validators/pypi.d.ts.map +1 -0
  98. package/dist/developer/validators/pypi.js +118 -0
  99. package/dist/developer/validators/pypi.js.map +1 -0
  100. package/dist/developer/validators/registry-manager.d.ts +37 -0
  101. package/dist/developer/validators/registry-manager.d.ts.map +1 -0
  102. package/dist/developer/validators/registry-manager.js +89 -0
  103. package/dist/developer/validators/registry-manager.js.map +1 -0
  104. package/dist/developer/validators/version-checker.d.ts +145 -0
  105. package/dist/developer/validators/version-checker.d.ts.map +1 -0
  106. package/dist/developer/validators/version-checker.js +529 -0
  107. package/dist/developer/validators/version-checker.js.map +1 -0
  108. package/dist/server/index.js.map +1 -1
  109. package/dist/server/middleware/auth.d.ts +7 -9
  110. package/dist/server/middleware/auth.d.ts.map +1 -1
  111. package/dist/server/middleware/auth.js.map +1 -1
  112. package/dist/tools/check-versions.d.ts +100 -0
  113. package/dist/tools/check-versions.d.ts.map +1 -0
  114. package/dist/tools/check-versions.js +328 -0
  115. package/dist/tools/check-versions.js.map +1 -0
  116. package/dist/tools/detect-code-smell.d.ts +9 -0
  117. package/dist/tools/detect-code-smell.d.ts.map +1 -0
  118. package/dist/tools/detect-code-smell.js +231 -0
  119. package/dist/tools/detect-code-smell.js.map +1 -0
  120. package/dist/tools/index.d.ts +471 -0
  121. package/dist/tools/index.d.ts.map +1 -1
  122. package/dist/tools/index.js +178 -0
  123. package/dist/tools/index.js.map +1 -1
  124. package/dist/tools/journey.js +1 -1
  125. package/dist/tools/journey.js.map +1 -1
  126. package/dist/tools/pre-review-code.d.ts +71 -0
  127. package/dist/tools/pre-review-code.d.ts.map +1 -0
  128. package/dist/tools/pre-review-code.js +159 -0
  129. package/dist/tools/pre-review-code.js.map +1 -0
  130. package/dist/tools/preserve-context.d.ts +27 -0
  131. package/dist/tools/preserve-context.d.ts.map +1 -0
  132. package/dist/tools/preserve-context.js +98 -0
  133. package/dist/tools/preserve-context.js.map +1 -0
  134. package/dist/tools/protect-files.d.ts +224 -0
  135. package/dist/tools/protect-files.d.ts.map +1 -0
  136. package/dist/tools/protect-files.js +286 -0
  137. package/dist/tools/protect-files.js.map +1 -0
  138. package/dist/tools/scan-security.d.ts +38 -0
  139. package/dist/tools/scan-security.d.ts.map +1 -0
  140. package/dist/tools/scan-security.js +237 -0
  141. package/dist/tools/scan-security.js.map +1 -0
  142. package/dist/tools/validate_packages.d.ts +8 -0
  143. package/dist/tools/validate_packages.d.ts.map +1 -0
  144. package/dist/tools/validate_packages.js +159 -0
  145. package/dist/tools/validate_packages.js.map +1 -0
  146. package/dist/types/auth.d.ts +18 -18
  147. package/dist/types/auth.d.ts.map +1 -1
  148. package/dist/types/auth.js +91 -36
  149. package/dist/types/auth.js.map +1 -1
  150. package/dist/types/context.d.ts +46 -0
  151. package/dist/types/context.d.ts.map +1 -0
  152. package/dist/types/context.js +17 -0
  153. package/dist/types/context.js.map +1 -0
  154. package/dist/types/file-protection.d.ts +50 -0
  155. package/dist/types/file-protection.d.ts.map +1 -0
  156. package/dist/types/file-protection.js +9 -0
  157. package/dist/types/file-protection.js.map +1 -0
  158. package/dist/utils/errorHandler.d.ts.map +1 -1
  159. package/dist/utils/errorHandler.js +2 -1
  160. package/dist/utils/errorHandler.js.map +1 -1
  161. package/package.json +23 -2
  162. package/dist/db/migrate.d.ts +0 -4
  163. package/dist/db/migrate.d.ts.map +0 -1
  164. package/dist/db/migrate.js +0 -34
  165. package/dist/db/migrate.js.map +0 -1
  166. package/dist/db/migrations/schema.d.ts +0 -1074
  167. package/dist/db/migrations/schema.d.ts.map +0 -1
  168. package/dist/db/migrations/schema.js +0 -160
  169. package/dist/db/migrations/schema.js.map +0 -1
  170. package/dist/db/schema.d.ts +0 -1576
  171. package/dist/db/schema.d.ts.map +0 -1
  172. package/dist/db/schema.js +0 -204
  173. package/dist/db/schema.js.map +0 -1
  174. package/dist/db/seed.d.ts +0 -4
  175. package/dist/db/seed.d.ts.map +0 -1
  176. package/dist/db/seed.js +0 -57
  177. package/dist/db/seed.js.map +0 -1
  178. package/dist/db/seedOAuth.d.ts +0 -4
  179. package/dist/db/seedOAuth.d.ts.map +0 -1
  180. package/dist/db/seedOAuth.js +0 -76
  181. package/dist/db/seedOAuth.js.map +0 -1
  182. package/dist/governance/config.d.ts +0 -66
  183. package/dist/governance/config.d.ts.map +0 -1
  184. package/dist/governance/config.js +0 -238
  185. package/dist/governance/config.js.map +0 -1
  186. package/dist/governance/detectors/hallucination.d.ts +0 -61
  187. package/dist/governance/detectors/hallucination.d.ts.map +0 -1
  188. package/dist/governance/detectors/hallucination.js +0 -338
  189. package/dist/governance/detectors/hallucination.js.map +0 -1
  190. package/dist/governance/detectors/inconsistency.d.ts +0 -99
  191. package/dist/governance/detectors/inconsistency.d.ts.map +0 -1
  192. package/dist/governance/detectors/inconsistency.js +0 -548
  193. package/dist/governance/detectors/inconsistency.js.map +0 -1
  194. package/dist/governance/detectors/toneDrift.d.ts +0 -63
  195. package/dist/governance/detectors/toneDrift.d.ts.map +0 -1
  196. package/dist/governance/detectors/toneDrift.js +0 -421
  197. package/dist/governance/detectors/toneDrift.js.map +0 -1
  198. package/dist/governance/detectors/unsafeReasoning.d.ts +0 -54
  199. package/dist/governance/detectors/unsafeReasoning.d.ts.map +0 -1
  200. package/dist/governance/detectors/unsafeReasoning.js +0 -473
  201. package/dist/governance/detectors/unsafeReasoning.js.map +0 -1
  202. package/dist/governance/evaluationEngine.d.ts +0 -112
  203. package/dist/governance/evaluationEngine.d.ts.map +0 -1
  204. package/dist/governance/evaluationEngine.js +0 -265
  205. package/dist/governance/evaluationEngine.js.map +0 -1
  206. package/dist/governance/intervention.d.ts +0 -81
  207. package/dist/governance/intervention.d.ts.map +0 -1
  208. package/dist/governance/intervention.js +0 -405
  209. package/dist/governance/intervention.js.map +0 -1
  210. package/dist/server/oauth/anomalyDetection.d.ts +0 -146
  211. package/dist/server/oauth/anomalyDetection.d.ts.map +0 -1
  212. package/dist/server/oauth/anomalyDetection.js +0 -405
  213. package/dist/server/oauth/anomalyDetection.js.map +0 -1
  214. package/dist/server/oauth/authServer.d.ts +0 -61
  215. package/dist/server/oauth/authServer.d.ts.map +0 -1
  216. package/dist/server/oauth/authServer.js +0 -283
  217. package/dist/server/oauth/authServer.js.map +0 -1
  218. package/dist/server/oauth/dpop.d.ts +0 -135
  219. package/dist/server/oauth/dpop.d.ts.map +0 -1
  220. package/dist/server/oauth/dpop.js +0 -338
  221. package/dist/server/oauth/dpop.js.map +0 -1
  222. package/dist/server/oauth/gdpr/consent.d.ts +0 -173
  223. package/dist/server/oauth/gdpr/consent.d.ts.map +0 -1
  224. package/dist/server/oauth/gdpr/consent.js +0 -388
  225. package/dist/server/oauth/gdpr/consent.js.map +0 -1
  226. package/dist/server/oauth/gdpr/dataPortability.d.ts +0 -214
  227. package/dist/server/oauth/gdpr/dataPortability.d.ts.map +0 -1
  228. package/dist/server/oauth/gdpr/dataPortability.js +0 -486
  229. package/dist/server/oauth/gdpr/dataPortability.js.map +0 -1
  230. package/dist/server/oauth/gdpr/index.d.ts +0 -103
  231. package/dist/server/oauth/gdpr/index.d.ts.map +0 -1
  232. package/dist/server/oauth/gdpr/index.js +0 -273
  233. package/dist/server/oauth/gdpr/index.js.map +0 -1
  234. package/dist/server/oauth/gdpr/rightToErasure.d.ts +0 -184
  235. package/dist/server/oauth/gdpr/rightToErasure.d.ts.map +0 -1
  236. package/dist/server/oauth/gdpr/rightToErasure.js +0 -527
  237. package/dist/server/oauth/gdpr/rightToErasure.js.map +0 -1
  238. package/dist/server/oauth/monitoring/securityMonitor.d.ts +0 -218
  239. package/dist/server/oauth/monitoring/securityMonitor.d.ts.map +0 -1
  240. package/dist/server/oauth/monitoring/securityMonitor.js +0 -615
  241. package/dist/server/oauth/monitoring/securityMonitor.js.map +0 -1
  242. package/dist/server/oauth/pkce.d.ts +0 -61
  243. package/dist/server/oauth/pkce.d.ts.map +0 -1
  244. package/dist/server/oauth/pkce.js +0 -157
  245. package/dist/server/oauth/pkce.js.map +0 -1
  246. package/dist/server/oauth/providers/base.d.ts +0 -147
  247. package/dist/server/oauth/providers/base.d.ts.map +0 -1
  248. package/dist/server/oauth/providers/base.js +0 -312
  249. package/dist/server/oauth/providers/base.js.map +0 -1
  250. package/dist/server/oauth/providers/github.d.ts +0 -55
  251. package/dist/server/oauth/providers/github.d.ts.map +0 -1
  252. package/dist/server/oauth/providers/github.js +0 -225
  253. package/dist/server/oauth/providers/github.js.map +0 -1
  254. package/dist/server/oauth/providers/google.d.ts +0 -49
  255. package/dist/server/oauth/providers/google.d.ts.map +0 -1
  256. package/dist/server/oauth/providers/google.js +0 -153
  257. package/dist/server/oauth/providers/google.js.map +0 -1
  258. package/dist/server/oauth/providers/index.d.ts +0 -9
  259. package/dist/server/oauth/providers/index.d.ts.map +0 -1
  260. package/dist/server/oauth/providers/index.js +0 -24
  261. package/dist/server/oauth/providers/index.js.map +0 -1
  262. package/dist/server/oauth/refreshTokenRotation.d.ts +0 -114
  263. package/dist/server/oauth/refreshTokenRotation.d.ts.map +0 -1
  264. package/dist/server/oauth/refreshTokenRotation.js +0 -344
  265. package/dist/server/oauth/refreshTokenRotation.js.map +0 -1
  266. package/dist/server/oauth/security.d.ts +0 -101
  267. package/dist/server/oauth/security.d.ts.map +0 -1
  268. package/dist/server/oauth/security.js +0 -268
  269. package/dist/server/oauth/security.js.map +0 -1
  270. package/dist/server/oauth/tokenEncryption.d.ts +0 -80
  271. package/dist/server/oauth/tokenEncryption.d.ts.map +0 -1
  272. package/dist/server/oauth/tokenEncryption.js +0 -218
  273. package/dist/server/oauth/tokenEncryption.js.map +0 -1
  274. package/dist/tools/sendMessage-complex-backup.d.ts +0 -6
  275. package/dist/tools/sendMessage-complex-backup.d.ts.map +0 -1
  276. package/dist/tools/sendMessage-complex-backup.js +0 -545
  277. package/dist/tools/sendMessage-complex-backup.js.map +0 -1
  278. package/dist/tools/sendMessage-revised.d.ts +0 -11
  279. package/dist/tools/sendMessage-revised.d.ts.map +0 -1
  280. package/dist/tools/sendMessage-revised.js +0 -429
  281. package/dist/tools/sendMessage-revised.js.map +0 -1
  282. package/dist/tools/sendMessage-truly-simple.d.ts +0 -8
  283. package/dist/tools/sendMessage-truly-simple.d.ts.map +0 -1
  284. package/dist/tools/sendMessage-truly-simple.js +0 -299
  285. package/dist/tools/sendMessage-truly-simple.js.map +0 -1
@@ -0,0 +1,483 @@
1
+ /**
2
+ * Code Bloat Detector - Identifies verbose and over-engineered patterns
3
+ * Detects patterns that create technical debt and suggests simplifications
4
+ */
5
+ import { ComplexityCalculator } from '../metrics/complexity-calculator.js';
6
+ export class BloatDetector {
7
+ complexityCalculator;
8
+ constructor(threshold = 50) {
9
+ this.complexityCalculator = new ComplexityCalculator();
10
+ // Threshold reserved for future use
11
+ void threshold;
12
+ }
13
+ /**
14
+ * Analyze code for bloat patterns
15
+ */
16
+ analyze(code, language) {
17
+ const issues = [];
18
+ const metrics = this.complexityCalculator.calculateMetrics(code, language);
19
+ // Detect specific patterns
20
+ this.detectExcessiveNesting(code, language, issues);
21
+ this.detectUnnecessaryTryCatch(code, language, issues);
22
+ this.detectOverAbstraction(code, language, issues);
23
+ this.detectDuplicatePatterns(code, language, issues);
24
+ this.detectVerboseConditionals(code, language, issues);
25
+ this.detectLongFunctions(code, language, issues);
26
+ this.detectChainedConditionals(code, language, issues);
27
+ this.detectRedundantNullChecks(code, language, issues);
28
+ this.detectComplexLogic(code, language, issues);
29
+ // Sort by severity
30
+ issues.sort((a, b) => {
31
+ const severityOrder = { high: 0, medium: 1, low: 2 };
32
+ return severityOrder[a.severity] - severityOrder[b.severity];
33
+ });
34
+ const criticalIssues = issues.filter(i => i.severity === 'high').length;
35
+ const warningCount = issues.filter(i => i.severity !== 'high').length;
36
+ return {
37
+ issues,
38
+ metrics,
39
+ summary: {
40
+ totalIssues: issues.length,
41
+ criticalIssues,
42
+ warningCount,
43
+ score: metrics.score,
44
+ recommendation: this.generateRecommendation(issues, metrics)
45
+ },
46
+ refactoringPriority: this.prioritizeRefactoring(issues, metrics)
47
+ };
48
+ }
49
+ /**
50
+ * Detect excessive nesting (>3 levels)
51
+ */
52
+ detectExcessiveNesting(code, _language, issues) {
53
+ const lines = code.split('\n');
54
+ let maxNesting = 0;
55
+ let nestingStack = [];
56
+ for (let i = 0; i < lines.length; i++) {
57
+ const line = lines[i];
58
+ if (!line)
59
+ continue;
60
+ const openBraces = (line.match(/\{/g) || []).length;
61
+ const closeBraces = (line.match(/\}/g) || []).length;
62
+ for (let j = 0; j < openBraces; j++) {
63
+ nestingStack.push({ level: nestingStack.length + 1, lineNumber: i + 1 });
64
+ }
65
+ for (let j = 0; j < closeBraces; j++) {
66
+ nestingStack.pop();
67
+ }
68
+ const currentNesting = nestingStack.length;
69
+ if (currentNesting > 3 && currentNesting > maxNesting) {
70
+ maxNesting = currentNesting;
71
+ issues.push({
72
+ type: 'excessive_nesting',
73
+ severity: currentNesting > 5 ? 'high' : 'medium',
74
+ line: i + 1,
75
+ pattern: line.trim().substring(0, 50),
76
+ suggestion: `Reduce nesting depth from ${currentNesting} to 3 or less. Extract nested logic into separate functions.`,
77
+ example: {
78
+ bad: `if (user) {
79
+ if (user.email) {
80
+ if (user.email.includes('@')) {
81
+ if (user.verified) {
82
+ return true;
83
+ }
84
+ }
85
+ }
86
+ }`,
87
+ good: `const isValidUser = (user) =>
88
+ user?.email?.includes('@') && user?.verified;
89
+ return isValidUser(user) ? true : false;`
90
+ }
91
+ });
92
+ }
93
+ }
94
+ }
95
+ /**
96
+ * Detect unnecessary try-catch blocks
97
+ */
98
+ detectUnnecessaryTryCatch(code, _language, issues) {
99
+ // Pattern: try block with no operations that can fail
100
+ const tryBlockRegex = /try\s*\{([^}]+)\}\s*catch\s*\(/gm;
101
+ let match;
102
+ while ((match = tryBlockRegex.exec(code)) !== null) {
103
+ const blockContent = match[1];
104
+ const lineNumber = code.substring(0, match.index).split('\n').length;
105
+ // Check if try block only contains safe operations
106
+ const hasDangerousOps = /(\.\w+\(|fetch|async|await|JSON\.parse|throw)/i.test(blockContent || '');
107
+ if (!hasDangerousOps) {
108
+ issues.push({
109
+ type: 'unnecessary_try_catch',
110
+ severity: 'low',
111
+ line: lineNumber,
112
+ pattern: `try { ... } catch (e) { ... }`,
113
+ suggestion: 'This try-catch wraps safe operations. Remove unnecessary error handling.',
114
+ example: {
115
+ bad: `try {
116
+ if (x) {
117
+ console.log('safe');
118
+ }
119
+ } catch (e) {
120
+ return false;
121
+ }`,
122
+ good: `if (x) {
123
+ console.log('safe');
124
+ }`
125
+ }
126
+ });
127
+ }
128
+ // Also detect swallowing errors with no logging/handling
129
+ const catchContent = code.substring(match.index + match[0].length);
130
+ const catchEndIndex = catchContent.indexOf('\n');
131
+ const catchLine = catchContent.substring(0, catchEndIndex);
132
+ if (/catch\s*\([^)]*\)\s*\{\s*(?:return|;|})/i.test(catchLine)) {
133
+ issues.push({
134
+ type: 'swallowed_errors',
135
+ severity: 'high',
136
+ line: lineNumber,
137
+ pattern: `catch (e) { return/; }`,
138
+ suggestion: 'Error is silently swallowed. Add logging or meaningful error handling.',
139
+ example: {
140
+ bad: `try {
141
+ return risky();
142
+ } catch (e) {
143
+ return false;
144
+ }`,
145
+ good: `try {
146
+ return risky();
147
+ } catch (e) {
148
+ logger.error('Operation failed:', e);
149
+ throw new Error('Failed to complete operation');
150
+ }`
151
+ }
152
+ });
153
+ }
154
+ }
155
+ }
156
+ /**
157
+ * Detect over-abstraction (single-use abstractions)
158
+ */
159
+ detectOverAbstraction(code, _language, issues) {
160
+ // Pattern: functions/classes used only once
161
+ const functionMatches = code.matchAll(/(?:function|const)\s+(\w+)\s*(?:\(|=)/g);
162
+ const functionNames = new Map();
163
+ for (const match of functionMatches) {
164
+ const name = match[1];
165
+ if (!name)
166
+ continue;
167
+ functionNames.set(name, (functionNames.get(name) || 0) + 1);
168
+ }
169
+ // Find functions that are defined but only called once (or not at all)
170
+ for (const [name, _count] of functionNames.entries()) {
171
+ const callPattern = new RegExp(`\\b${name}\\s*\\(`, 'g');
172
+ const calls = code.match(callPattern);
173
+ const callCount = calls ? calls.length - 1 : 0; // -1 for the definition
174
+ if (callCount === 1) {
175
+ const defIndex = code.indexOf(`${name}\s*(`);
176
+ const lineNumber = code.substring(0, defIndex).split('\n').length;
177
+ issues.push({
178
+ type: 'over_abstraction',
179
+ severity: 'low',
180
+ line: lineNumber,
181
+ pattern: `Function "${name}" defined but used only once`,
182
+ suggestion: `Inline function "${name}" where it's called. Single-use abstractions add complexity without benefit.`
183
+ });
184
+ }
185
+ }
186
+ }
187
+ /**
188
+ * Detect duplicated code patterns
189
+ */
190
+ detectDuplicatePatterns(code, _language, issues) {
191
+ const lines = code.split('\n').filter(l => l.trim() && !l.trim().startsWith('//'));
192
+ // Look for repeated line patterns (3+ occurrences)
193
+ const linePatterns = new Map();
194
+ for (let i = 0; i < lines.length; i++) {
195
+ const line = lines[i];
196
+ if (!line)
197
+ continue;
198
+ const normalized = this.normalizeLine(line);
199
+ if (normalized.length > 20) { // Only check substantial lines
200
+ if (!linePatterns.has(normalized)) {
201
+ linePatterns.set(normalized, []);
202
+ }
203
+ linePatterns.get(normalized).push(i + 1);
204
+ }
205
+ }
206
+ for (const [pattern, occurrences] of linePatterns.entries()) {
207
+ if (occurrences.length >= 3) {
208
+ issues.push({
209
+ type: 'code_duplication',
210
+ severity: occurrences.length >= 5 ? 'high' : 'medium',
211
+ line: occurrences[0],
212
+ pattern: pattern.substring(0, 60),
213
+ suggestion: `This pattern appears ${occurrences.length} times (lines ${occurrences.join(', ')}). Extract to a utility function.`
214
+ });
215
+ }
216
+ }
217
+ }
218
+ /**
219
+ * Detect verbose conditionals that could be simplified
220
+ */
221
+ detectVerboseConditionals(code, _language, issues) {
222
+ const lines = code.split('\n');
223
+ for (let i = 0; i < lines.length; i++) {
224
+ const line = lines[i];
225
+ if (!line)
226
+ continue;
227
+ // Pattern: if (x === true) or if (x === false)
228
+ if (/if\s*\(\s*\w+\s*===\s*(true|false)\s*\)/.test(line)) {
229
+ issues.push({
230
+ type: 'verbose_boolean_check',
231
+ severity: 'low',
232
+ line: i + 1,
233
+ pattern: line.trim().substring(0, 50),
234
+ suggestion: 'Simplify boolean comparisons. Use "if (x)" instead of "if (x === true)".',
235
+ example: {
236
+ bad: 'if (isActive === true) { ... }',
237
+ good: 'if (isActive) { ... }'
238
+ }
239
+ });
240
+ }
241
+ // Pattern: if (x !== null && x !== undefined)
242
+ if (/if\s*\(\s*\w+\s*!==\s*null\s*&&\s*\w+\s*!==\s*undefined\s*\)/.test(line)) {
243
+ issues.push({
244
+ type: 'verbose_null_check',
245
+ severity: 'low',
246
+ line: i + 1,
247
+ pattern: line.trim().substring(0, 60),
248
+ suggestion: 'Use optional chaining or nullish coalescing. Replace with "if (x ?? false)".',
249
+ example: {
250
+ bad: 'if (user !== null && user !== undefined) { ... }',
251
+ good: 'if (user) { ... }'
252
+ }
253
+ });
254
+ }
255
+ // Pattern: if (condition) { return true; } else { return false; }
256
+ if (/if\s*\([^)]+\)\s*\{\s*return\s+(true|false)\s*;\s*\}\s*else\s*\{\s*return\s+(true|false)/i.test(line)) {
257
+ issues.push({
258
+ type: 'unnecessary_conditional_return',
259
+ severity: 'low',
260
+ line: i + 1,
261
+ pattern: 'if (...) { return true; } else { return false; }',
262
+ suggestion: 'Return the condition directly instead of conditional return statements.',
263
+ example: {
264
+ bad: `if (isValid(data)) {
265
+ return true;
266
+ } else {
267
+ return false;
268
+ }`,
269
+ good: 'return isValid(data);'
270
+ }
271
+ });
272
+ }
273
+ }
274
+ }
275
+ /**
276
+ * Detect functions longer than 50 lines
277
+ */
278
+ detectLongFunctions(code, _language, issues) {
279
+ const functions = this.extractFunctionBlocks(code, _language);
280
+ for (const func of functions) {
281
+ if (func.length > 50) {
282
+ issues.push({
283
+ type: 'function_too_long',
284
+ severity: func.length > 100 ? 'high' : 'medium',
285
+ line: func.startLine,
286
+ pattern: `Function "${func.name}" is ${func.length} lines long`,
287
+ suggestion: `Break down "${func.name}" into smaller, focused functions. Ideal length is 20-30 lines.`
288
+ });
289
+ }
290
+ }
291
+ }
292
+ /**
293
+ * Detect chained conditionals that could use switch
294
+ */
295
+ detectChainedConditionals(code, _language, issues) {
296
+ // Pattern: if (x === 'a') ... else if (x === 'b') ... else if (x === 'c') ...
297
+ const chainRegex = /(if|else\s+if)\s*\(\s*\w+\s*===\s*['"][^'"]+['"]\s*\)/g;
298
+ let lastMatch = null;
299
+ let chainCount = 0;
300
+ let chainStart = 0;
301
+ for (const match of code.matchAll(chainRegex)) {
302
+ if (lastMatch && match.index - lastMatch.index < 100) {
303
+ chainCount++;
304
+ if (chainCount === 2) {
305
+ chainStart = lastMatch.index;
306
+ }
307
+ }
308
+ else {
309
+ chainCount = 0;
310
+ }
311
+ if (chainCount >= 3) {
312
+ const lineNumber = code.substring(0, chainStart).split('\n').length;
313
+ issues.push({
314
+ type: 'chain_of_conditionals',
315
+ severity: 'medium',
316
+ line: lineNumber,
317
+ pattern: `Multiple if/else if with equality checks`,
318
+ suggestion: 'Consider using a switch statement or object map for multiple equality comparisons.',
319
+ example: {
320
+ bad: `if (status === 'pending') {
321
+ handlePending();
322
+ } else if (status === 'active') {
323
+ handleActive();
324
+ } else if (status === 'completed') {
325
+ handleCompleted();
326
+ }`,
327
+ good: `const handlers = {
328
+ pending: handlePending,
329
+ active: handleActive,
330
+ completed: handleCompleted
331
+ };
332
+ handlers[status]?.();`
333
+ }
334
+ });
335
+ chainCount = 0;
336
+ }
337
+ lastMatch = match;
338
+ }
339
+ }
340
+ /**
341
+ * Detect redundant null/undefined checks
342
+ */
343
+ detectRedundantNullChecks(code, _language, issues) {
344
+ // Pattern: multiple checks for same variable
345
+ const lines = code.split('\n');
346
+ for (let i = 0; i < lines.length - 1; i++) {
347
+ const line = lines[i];
348
+ const nextLine = lines[i + 1];
349
+ if (!line || !nextLine)
350
+ continue;
351
+ // Pattern: if (x) { ... if (x) { ... } }
352
+ const xMatches = line.match(/if\s*\(\s*(\w+)\s*\)/);
353
+ if (xMatches && xMatches[1]) {
354
+ const varName = xMatches[1];
355
+ if (nextLine.includes(`if`) && nextLine.includes(varName)) {
356
+ issues.push({
357
+ type: 'redundant_null_check',
358
+ severity: 'low',
359
+ line: i + 2,
360
+ pattern: `Redundant check for ${varName}`,
361
+ suggestion: `Variable "${varName}" is already checked. Combine conditions instead.`,
362
+ example: {
363
+ bad: `if (user) {
364
+ if (user.email) {
365
+ // ...
366
+ }
367
+ }`,
368
+ good: `if (user?.email) {
369
+ // ...
370
+ }`
371
+ }
372
+ });
373
+ }
374
+ }
375
+ }
376
+ }
377
+ /**
378
+ * Detect overly complex logic that should be extracted
379
+ */
380
+ detectComplexLogic(code, _language, issues) {
381
+ // Pattern: assignments with complex expressions
382
+ const complexRegex = /\w+\s*=\s*[^;]*(\?|&&|\|\|)[^;]*(\?|&&|\|\|)[^;]*(\?|&&|\|\|)[^;]*;/g;
383
+ let match;
384
+ while ((match = complexRegex.exec(code)) !== null) {
385
+ const lineNumber = code.substring(0, match.index).split('\n').length;
386
+ issues.push({
387
+ type: 'complex_assignment',
388
+ severity: 'medium',
389
+ line: lineNumber,
390
+ pattern: match[0].substring(0, 60),
391
+ suggestion: 'Complex expression assignment. Break into multiple statements for clarity.',
392
+ example: {
393
+ bad: 'const result = x > 5 && y < 10 ? a ? b : c : d ? e : f;',
394
+ good: `const isXInRange = x > 5 && y < 10;
395
+ const result = isXInRange ? (a ? b : c) : (d ? e : f);`
396
+ }
397
+ });
398
+ }
399
+ }
400
+ /**
401
+ * Extract function blocks with metadata
402
+ */
403
+ extractFunctionBlocks(code, _language) {
404
+ const functions = [];
405
+ const lines = code.split('\n');
406
+ for (let i = 0; i < lines.length; i++) {
407
+ const line = lines[i];
408
+ if (!line)
409
+ continue;
410
+ // JavaScript/TypeScript function
411
+ if (/(?:function\s+(\w+)|const\s+(\w+)\s*=\s*(?:async\s*)?\(|(?:async\s+)?(\w+)\s*\()/.test(line)) {
412
+ const nameMatch = line.match(/(?:function\s+(\w+)|const\s+(\w+)|(?:async\s+)?(\w+)\s*\()/);
413
+ const name = nameMatch?.[1] || nameMatch?.[2] || nameMatch?.[3] || 'anonymous';
414
+ // Count lines until matching closing brace
415
+ let braceCount = 1;
416
+ let length = 1;
417
+ for (let j = i + 1; j < lines.length && braceCount > 0; j++) {
418
+ const jLine = lines[j];
419
+ if (!jLine)
420
+ continue;
421
+ braceCount += (jLine.match(/\{/g) || []).length;
422
+ braceCount -= (jLine.match(/\}/g) || []).length;
423
+ length++;
424
+ }
425
+ functions.push({ name, startLine: i + 1, length });
426
+ }
427
+ }
428
+ return functions;
429
+ }
430
+ /**
431
+ * Normalize line for duplicate detection
432
+ */
433
+ normalizeLine(line) {
434
+ return line
435
+ .trim()
436
+ .replace(/\s+/g, ' ')
437
+ .replace(/[0-9]+/g, 'N')
438
+ .replace(/['"][^'"]*['"]/g, 'S');
439
+ }
440
+ /**
441
+ * Generate recommendation based on issues and metrics
442
+ */
443
+ generateRecommendation(issues, metrics) {
444
+ const criticalCount = issues.filter(i => i.severity === 'high').length;
445
+ if (criticalCount >= 5) {
446
+ return 'Critical: Major refactoring needed. Multiple serious code smells detected.';
447
+ }
448
+ if (metrics.score > 75) {
449
+ return 'High complexity. Recommend extracting functions and reducing nesting depth.';
450
+ }
451
+ if (metrics.score > 50) {
452
+ return 'Moderate complexity. Consider breaking down long functions and simplifying conditionals.';
453
+ }
454
+ if (issues.length > 0) {
455
+ return 'Minor issues found. Address low-severity items to improve code quality.';
456
+ }
457
+ return 'Code quality is good. Continue monitoring for emerging complexity.';
458
+ }
459
+ /**
460
+ * Prioritize refactoring tasks by impact
461
+ */
462
+ prioritizeRefactoring(issues, metrics) {
463
+ const priority = [];
464
+ if (metrics.cyclomaticComplexity > 15) {
465
+ priority.push('Reduce cyclomatic complexity - extract conditional logic');
466
+ }
467
+ if (metrics.nestingDepth > 5) {
468
+ priority.push('Reduce nesting depth - use early returns and extract nested blocks');
469
+ }
470
+ if (metrics.maxFunctionLength > 100) {
471
+ priority.push('Break down oversized functions into smaller, focused units');
472
+ }
473
+ const highSeverityIssues = issues.filter(i => i.severity === 'high');
474
+ if (highSeverityIssues.length > 0) {
475
+ priority.push(`Fix ${highSeverityIssues.length} critical issues: ${highSeverityIssues.map(i => i.type).join(', ')}`);
476
+ }
477
+ if (priority.length === 0) {
478
+ priority.push('Code is well-structured - maintain current quality standards');
479
+ }
480
+ return priority;
481
+ }
482
+ }
483
+ //# sourceMappingURL=bloat-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bloat-detector.js","sourceRoot":"","sources":["../../../src/developer/analyzers/bloat-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Auto-Backup System - Creates automatic backups before file modifications
3
+ * Enables rollback capability and disaster recovery
4
+ */
5
+ export interface BackupMetadata {
6
+ originalPath: string;
7
+ backupPath: string;
8
+ timestamp: Date;
9
+ fileSize: number;
10
+ hash: string;
11
+ operation: 'delete' | 'overwrite' | 'move';
12
+ reason?: string;
13
+ }
14
+ export interface RollbackResult {
15
+ success: boolean;
16
+ restoredPath: string;
17
+ backupPath: string;
18
+ message: string;
19
+ timestamp: Date;
20
+ }
21
+ export declare class AutoBackup {
22
+ private backupDir;
23
+ private backupMetadata;
24
+ private maxBackupAge;
25
+ private maxBackupSize;
26
+ private cleanupInterval;
27
+ constructor(backupDir?: string);
28
+ /**
29
+ * Initialize backup directory structure
30
+ */
31
+ private initializeBackupDirectory;
32
+ /**
33
+ * Create a backup of a file before modification
34
+ */
35
+ createBackup(filePath: string, operation: 'delete' | 'overwrite' | 'move', reason?: string): Promise<{
36
+ success: boolean;
37
+ backupPath?: string;
38
+ backupId?: string;
39
+ error?: string;
40
+ }>;
41
+ /**
42
+ * Restore a file from backup (rollback capability)
43
+ */
44
+ rollback(backupId: string): Promise<RollbackResult>;
45
+ /**
46
+ * Get list of available backups
47
+ */
48
+ listBackups(): Promise<BackupMetadata[]>;
49
+ /**
50
+ * Get backup details
51
+ */
52
+ getBackupDetails(backupId: string): BackupMetadata | null;
53
+ /**
54
+ * Clean up old backups (>7 days)
55
+ */
56
+ cleanupOldBackups(): Promise<{
57
+ deletedCount: number;
58
+ freedSpace: number;
59
+ }>;
60
+ /**
61
+ * Get backup statistics
62
+ */
63
+ getBackupStats(): Promise<{
64
+ totalBackups: number;
65
+ totalSize: number;
66
+ oldestBackup?: Date;
67
+ newestBackup?: Date;
68
+ diskUsagePercent: number;
69
+ }>;
70
+ /**
71
+ * Start automatic cleanup schedule
72
+ */
73
+ private startCleanupSchedule;
74
+ /**
75
+ * Stop cleanup schedule
76
+ */
77
+ stopCleanupSchedule(): void;
78
+ /**
79
+ * Save metadata to file
80
+ */
81
+ private saveMetadata;
82
+ /**
83
+ * Log rollback operation
84
+ */
85
+ private logRollback;
86
+ /**
87
+ * Generate simple hash of file content for verification
88
+ */
89
+ private generateSimpleHash;
90
+ /**
91
+ * Format bytes to human readable
92
+ */
93
+ private formatBytes;
94
+ }
95
+ export declare const autoBackup: AutoBackup;
96
+ //# sourceMappingURL=auto-backup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-backup.d.ts","sourceRoot":"","sources":["../../../src/developer/backup/auto-backup.ts"],"names":[],"mappings":"AAYA;;;GAGG;AAEH,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAA0C;IAChE,OAAO,CAAC,YAAY,CAAmC;IACvD,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,eAAe,CAA+B;gBAE1C,SAAS,GAAE,MAAoB;IAM3C;;OAEG;YACW,yBAAyB;IAqBvC;;OAEG;IACG,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,QAAQ,GAAG,WAAW,GAAG,MAAM,EAC1C,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IAwEF;;OAEG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAgEzD;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IA6B9C;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAIzD;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAuChF;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC;QAC9B,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,IAAI,CAAC;QACpB,YAAY,CAAC,EAAE,IAAI,CAAC;QACpB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IA8BF;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAQ3B;;OAEG;YACW,YAAY;IAS1B;;OAEG;YACW,WAAW;IAuBzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;OAEG;IACH,OAAO,CAAC,WAAW;CAOpB;AAGD,eAAO,MAAM,UAAU,YAAmB,CAAC"}