@oalacea/daemon 0.6.4 → 0.7.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 (285) hide show
  1. package/README.md +268 -58
  2. package/bin/Dockerfile +158 -16
  3. package/dist/cli/cli.d.ts.map +1 -1
  4. package/dist/cli/cli.js +22 -2
  5. package/dist/cli/cli.js.map +1 -1
  6. package/dist/cli/commands/command.types.d.ts +216 -0
  7. package/dist/cli/commands/command.types.d.ts.map +1 -0
  8. package/dist/cli/commands/command.types.js +64 -0
  9. package/dist/cli/commands/command.types.js.map +1 -0
  10. package/dist/cli/commands/history.command.d.ts +91 -0
  11. package/dist/cli/commands/history.command.d.ts.map +1 -0
  12. package/dist/cli/commands/history.command.js +336 -0
  13. package/dist/cli/commands/history.command.js.map +1 -0
  14. package/dist/cli/commands/index.d.ts +14 -3
  15. package/dist/cli/commands/index.d.ts.map +1 -1
  16. package/dist/cli/commands/index.js +7 -0
  17. package/dist/cli/commands/index.js.map +1 -1
  18. package/dist/cli/commands/optimize.command.d.ts +110 -0
  19. package/dist/cli/commands/optimize.command.d.ts.map +1 -0
  20. package/dist/cli/commands/optimize.command.js +497 -0
  21. package/dist/cli/commands/optimize.command.js.map +1 -0
  22. package/dist/cli/commands/report.command.d.ts +110 -0
  23. package/dist/cli/commands/report.command.d.ts.map +1 -0
  24. package/dist/cli/commands/report.command.js +532 -0
  25. package/dist/cli/commands/report.command.js.map +1 -0
  26. package/dist/cli/commands/review.command.d.ts +110 -0
  27. package/dist/cli/commands/review.command.d.ts.map +1 -0
  28. package/dist/cli/commands/review.command.js +520 -0
  29. package/dist/cli/commands/review.command.js.map +1 -0
  30. package/dist/cli/commands/score.command.d.ts +47 -0
  31. package/dist/cli/commands/score.command.d.ts.map +1 -0
  32. package/dist/cli/commands/score.command.js +261 -0
  33. package/dist/cli/commands/score.command.js.map +1 -0
  34. package/dist/cli/utils/index.d.ts +10 -0
  35. package/dist/cli/utils/index.d.ts.map +1 -0
  36. package/dist/cli/utils/index.js +10 -0
  37. package/dist/cli/utils/index.js.map +1 -0
  38. package/dist/cli/utils/output.d.ts +192 -0
  39. package/dist/cli/utils/output.d.ts.map +1 -0
  40. package/dist/cli/utils/output.js +411 -0
  41. package/dist/cli/utils/output.js.map +1 -0
  42. package/dist/cli/utils/progress.d.ts +204 -0
  43. package/dist/cli/utils/progress.d.ts.map +1 -0
  44. package/dist/cli/utils/progress.js +396 -0
  45. package/dist/cli/utils/progress.js.map +1 -0
  46. package/dist/core/types/index.d.ts +1 -0
  47. package/dist/core/types/index.d.ts.map +1 -1
  48. package/dist/core/types/project.types.d.ts +3 -3
  49. package/dist/core/types/project.types.d.ts.map +1 -1
  50. package/dist/core/types/scoring.types.d.ts +301 -0
  51. package/dist/core/types/scoring.types.d.ts.map +1 -0
  52. package/dist/core/types/scoring.types.js +8 -0
  53. package/dist/core/types/scoring.types.js.map +1 -0
  54. package/dist/services/detection/framework-detector.d.ts.map +1 -1
  55. package/dist/services/detection/framework-detector.js +74 -5
  56. package/dist/services/detection/framework-detector.js.map +1 -1
  57. package/dist/services/index.d.ts +12 -0
  58. package/dist/services/index.d.ts.map +1 -1
  59. package/dist/services/index.js +14 -0
  60. package/dist/services/index.js.map +1 -1
  61. package/dist/services/optimization/detectors/bug-detector.d.ts +82 -0
  62. package/dist/services/optimization/detectors/bug-detector.d.ts.map +1 -0
  63. package/dist/services/optimization/detectors/bug-detector.js +443 -0
  64. package/dist/services/optimization/detectors/bug-detector.js.map +1 -0
  65. package/dist/services/optimization/detectors/code-smell-detector.d.ts +108 -0
  66. package/dist/services/optimization/detectors/code-smell-detector.d.ts.map +1 -0
  67. package/dist/services/optimization/detectors/code-smell-detector.js +569 -0
  68. package/dist/services/optimization/detectors/code-smell-detector.js.map +1 -0
  69. package/dist/services/optimization/detectors/index.d.ts +7 -0
  70. package/dist/services/optimization/detectors/index.d.ts.map +1 -0
  71. package/dist/services/optimization/detectors/index.js +7 -0
  72. package/dist/services/optimization/detectors/index.js.map +1 -0
  73. package/dist/services/optimization/detectors/perf-detector.d.ts +80 -0
  74. package/dist/services/optimization/detectors/perf-detector.d.ts.map +1 -0
  75. package/dist/services/optimization/detectors/perf-detector.js +451 -0
  76. package/dist/services/optimization/detectors/perf-detector.js.map +1 -0
  77. package/dist/services/optimization/index.d.ts +61 -0
  78. package/dist/services/optimization/index.d.ts.map +1 -0
  79. package/dist/services/optimization/index.js +69 -0
  80. package/dist/services/optimization/index.js.map +1 -0
  81. package/dist/services/optimization/optimization.service.d.ts +65 -0
  82. package/dist/services/optimization/optimization.service.d.ts.map +1 -0
  83. package/dist/services/optimization/optimization.service.js +511 -0
  84. package/dist/services/optimization/optimization.service.js.map +1 -0
  85. package/dist/services/optimization/optimization.types.d.ts +343 -0
  86. package/dist/services/optimization/optimization.types.d.ts.map +1 -0
  87. package/dist/services/optimization/optimization.types.js +8 -0
  88. package/dist/services/optimization/optimization.types.js.map +1 -0
  89. package/dist/services/optimization/optimizers/code-optimizer.d.ts +87 -0
  90. package/dist/services/optimization/optimizers/code-optimizer.d.ts.map +1 -0
  91. package/dist/services/optimization/optimizers/code-optimizer.js +436 -0
  92. package/dist/services/optimization/optimizers/code-optimizer.js.map +1 -0
  93. package/dist/services/optimization/optimizers/index.d.ts +7 -0
  94. package/dist/services/optimization/optimizers/index.d.ts.map +1 -0
  95. package/dist/services/optimization/optimizers/index.js +7 -0
  96. package/dist/services/optimization/optimizers/index.js.map +1 -0
  97. package/dist/services/optimization/optimizers/perf-optimizer.d.ts +64 -0
  98. package/dist/services/optimization/optimizers/perf-optimizer.d.ts.map +1 -0
  99. package/dist/services/optimization/optimizers/perf-optimizer.js +330 -0
  100. package/dist/services/optimization/optimizers/perf-optimizer.js.map +1 -0
  101. package/dist/services/optimization/optimizers/refact-optimizer.d.ts +82 -0
  102. package/dist/services/optimization/optimizers/refact-optimizer.d.ts.map +1 -0
  103. package/dist/services/optimization/optimizers/refact-optimizer.js +354 -0
  104. package/dist/services/optimization/optimizers/refact-optimizer.js.map +1 -0
  105. package/dist/services/optimization/patterns/anti-patterns.d.ts +31 -0
  106. package/dist/services/optimization/patterns/anti-patterns.d.ts.map +1 -0
  107. package/dist/services/optimization/patterns/anti-patterns.js +501 -0
  108. package/dist/services/optimization/patterns/anti-patterns.js.map +1 -0
  109. package/dist/services/optimization/patterns/index.d.ts +5 -0
  110. package/dist/services/optimization/patterns/index.d.ts.map +1 -0
  111. package/dist/services/optimization/patterns/index.js +5 -0
  112. package/dist/services/optimization/patterns/index.js.map +1 -0
  113. package/dist/services/reporting/export/chart.exporter.d.ts +59 -0
  114. package/dist/services/reporting/export/chart.exporter.d.ts.map +1 -0
  115. package/dist/services/reporting/export/chart.exporter.js +350 -0
  116. package/dist/services/reporting/export/chart.exporter.js.map +1 -0
  117. package/dist/services/reporting/export/index.d.ts +9 -0
  118. package/dist/services/reporting/export/index.d.ts.map +1 -0
  119. package/dist/services/reporting/export/index.js +10 -0
  120. package/dist/services/reporting/export/index.js.map +1 -0
  121. package/dist/services/reporting/export/pdf.exporter.d.ts +133 -0
  122. package/dist/services/reporting/export/pdf.exporter.d.ts.map +1 -0
  123. package/dist/services/reporting/export/pdf.exporter.js +270 -0
  124. package/dist/services/reporting/export/pdf.exporter.js.map +1 -0
  125. package/dist/services/reporting/history.service.d.ts +93 -0
  126. package/dist/services/reporting/history.service.d.ts.map +1 -0
  127. package/dist/services/reporting/history.service.js +285 -0
  128. package/dist/services/reporting/history.service.js.map +1 -0
  129. package/dist/services/reporting/index.d.ts +15 -0
  130. package/dist/services/reporting/index.d.ts.map +1 -0
  131. package/dist/services/reporting/index.js +16 -0
  132. package/dist/services/reporting/index.js.map +1 -0
  133. package/dist/services/reporting/report.service.d.ts +102 -0
  134. package/dist/services/reporting/report.service.d.ts.map +1 -0
  135. package/dist/services/reporting/report.service.js +240 -0
  136. package/dist/services/reporting/report.service.js.map +1 -0
  137. package/dist/services/reporting/reporting.types.d.ts +329 -0
  138. package/dist/services/reporting/reporting.types.d.ts.map +1 -0
  139. package/dist/services/reporting/reporting.types.js +8 -0
  140. package/dist/services/reporting/reporting.types.js.map +1 -0
  141. package/dist/services/reporting/templates/html.template.d.ts +81 -0
  142. package/dist/services/reporting/templates/html.template.d.ts.map +1 -0
  143. package/dist/services/reporting/templates/html.template.js +741 -0
  144. package/dist/services/reporting/templates/html.template.js.map +1 -0
  145. package/dist/services/reporting/templates/json.template.d.ts +85 -0
  146. package/dist/services/reporting/templates/json.template.d.ts.map +1 -0
  147. package/dist/services/reporting/templates/json.template.js +308 -0
  148. package/dist/services/reporting/templates/json.template.js.map +1 -0
  149. package/dist/services/reporting/templates/markdown.template.d.ts +69 -0
  150. package/dist/services/reporting/templates/markdown.template.d.ts.map +1 -0
  151. package/dist/services/reporting/templates/markdown.template.js +311 -0
  152. package/dist/services/reporting/templates/markdown.template.js.map +1 -0
  153. package/dist/services/reporting/trend-analyzer.d.ts +73 -0
  154. package/dist/services/reporting/trend-analyzer.d.ts.map +1 -0
  155. package/dist/services/reporting/trend-analyzer.js +291 -0
  156. package/dist/services/reporting/trend-analyzer.js.map +1 -0
  157. package/dist/services/review/analyzers/dependency-analyzer.d.ts +87 -0
  158. package/dist/services/review/analyzers/dependency-analyzer.d.ts.map +1 -0
  159. package/dist/services/review/analyzers/dependency-analyzer.js +458 -0
  160. package/dist/services/review/analyzers/dependency-analyzer.js.map +1 -0
  161. package/dist/services/review/analyzers/index.d.ts +13 -0
  162. package/dist/services/review/analyzers/index.d.ts.map +1 -0
  163. package/dist/services/review/analyzers/index.js +13 -0
  164. package/dist/services/review/analyzers/index.js.map +1 -0
  165. package/dist/services/review/analyzers/nestjs-analyzer.d.ts +210 -0
  166. package/dist/services/review/analyzers/nestjs-analyzer.d.ts.map +1 -0
  167. package/dist/services/review/analyzers/nestjs-analyzer.js +571 -0
  168. package/dist/services/review/analyzers/nestjs-analyzer.js.map +1 -0
  169. package/dist/services/review/analyzers/performance-analyzer.d.ts +91 -0
  170. package/dist/services/review/analyzers/performance-analyzer.d.ts.map +1 -0
  171. package/dist/services/review/analyzers/performance-analyzer.js +589 -0
  172. package/dist/services/review/analyzers/performance-analyzer.js.map +1 -0
  173. package/dist/services/review/analyzers/security-analyzer.d.ts +96 -0
  174. package/dist/services/review/analyzers/security-analyzer.d.ts.map +1 -0
  175. package/dist/services/review/analyzers/security-analyzer.js +512 -0
  176. package/dist/services/review/analyzers/security-analyzer.js.map +1 -0
  177. package/dist/services/review/analyzers/static-analyzer.d.ts +90 -0
  178. package/dist/services/review/analyzers/static-analyzer.d.ts.map +1 -0
  179. package/dist/services/review/analyzers/static-analyzer.js +423 -0
  180. package/dist/services/review/analyzers/static-analyzer.js.map +1 -0
  181. package/dist/services/review/fixers/auto-fixer.d.ts +94 -0
  182. package/dist/services/review/fixers/auto-fixer.d.ts.map +1 -0
  183. package/dist/services/review/fixers/auto-fixer.js +404 -0
  184. package/dist/services/review/fixers/auto-fixer.js.map +1 -0
  185. package/dist/services/review/fixers/index.d.ts +11 -0
  186. package/dist/services/review/fixers/index.d.ts.map +1 -0
  187. package/dist/services/review/fixers/index.js +11 -0
  188. package/dist/services/review/fixers/index.js.map +1 -0
  189. package/dist/services/review/fixers/refactor-suggester.d.ts +100 -0
  190. package/dist/services/review/fixers/refactor-suggester.d.ts.map +1 -0
  191. package/dist/services/review/fixers/refactor-suggester.js +555 -0
  192. package/dist/services/review/fixers/refactor-suggester.js.map +1 -0
  193. package/dist/services/review/fixers/test-generator.d.ts +99 -0
  194. package/dist/services/review/fixers/test-generator.d.ts.map +1 -0
  195. package/dist/services/review/fixers/test-generator.js +458 -0
  196. package/dist/services/review/fixers/test-generator.js.map +1 -0
  197. package/dist/services/review/index.d.ts +14 -0
  198. package/dist/services/review/index.d.ts.map +1 -0
  199. package/dist/services/review/index.js +14 -0
  200. package/dist/services/review/index.js.map +1 -0
  201. package/dist/services/review/reporters/fix-reporter.d.ts +67 -0
  202. package/dist/services/review/reporters/fix-reporter.d.ts.map +1 -0
  203. package/dist/services/review/reporters/fix-reporter.js +437 -0
  204. package/dist/services/review/reporters/fix-reporter.js.map +1 -0
  205. package/dist/services/review/reporters/index.d.ts +10 -0
  206. package/dist/services/review/reporters/index.d.ts.map +1 -0
  207. package/dist/services/review/reporters/index.js +10 -0
  208. package/dist/services/review/reporters/index.js.map +1 -0
  209. package/dist/services/review/reporters/score-reporter.d.ts +84 -0
  210. package/dist/services/review/reporters/score-reporter.d.ts.map +1 -0
  211. package/dist/services/review/reporters/score-reporter.js +560 -0
  212. package/dist/services/review/reporters/score-reporter.js.map +1 -0
  213. package/dist/services/review/review.service.d.ts +129 -0
  214. package/dist/services/review/review.service.d.ts.map +1 -0
  215. package/dist/services/review/review.service.js +396 -0
  216. package/dist/services/review/review.service.js.map +1 -0
  217. package/dist/services/review/review.types.d.ts +443 -0
  218. package/dist/services/review/review.types.d.ts.map +1 -0
  219. package/dist/services/review/review.types.js +11 -0
  220. package/dist/services/review/review.types.js.map +1 -0
  221. package/dist/services/scoring/dimensions/accessibility.analyzer.d.ts +53 -0
  222. package/dist/services/scoring/dimensions/accessibility.analyzer.d.ts.map +1 -0
  223. package/dist/services/scoring/dimensions/accessibility.analyzer.js +260 -0
  224. package/dist/services/scoring/dimensions/accessibility.analyzer.js.map +1 -0
  225. package/dist/services/scoring/dimensions/backend-logic.analyzer.d.ts +138 -0
  226. package/dist/services/scoring/dimensions/backend-logic.analyzer.d.ts.map +1 -0
  227. package/dist/services/scoring/dimensions/backend-logic.analyzer.js +713 -0
  228. package/dist/services/scoring/dimensions/backend-logic.analyzer.js.map +1 -0
  229. package/dist/services/scoring/dimensions/business-logic.analyzer.d.ts +142 -0
  230. package/dist/services/scoring/dimensions/business-logic.analyzer.d.ts.map +1 -0
  231. package/dist/services/scoring/dimensions/business-logic.analyzer.js +747 -0
  232. package/dist/services/scoring/dimensions/business-logic.analyzer.js.map +1 -0
  233. package/dist/services/scoring/dimensions/code-quality.analyzer.d.ts +142 -0
  234. package/dist/services/scoring/dimensions/code-quality.analyzer.d.ts.map +1 -0
  235. package/dist/services/scoring/dimensions/code-quality.analyzer.js +685 -0
  236. package/dist/services/scoring/dimensions/code-quality.analyzer.js.map +1 -0
  237. package/dist/services/scoring/dimensions/index.d.ts +18 -0
  238. package/dist/services/scoring/dimensions/index.d.ts.map +1 -0
  239. package/dist/services/scoring/dimensions/index.js +27 -0
  240. package/dist/services/scoring/dimensions/index.js.map +1 -0
  241. package/dist/services/scoring/dimensions/performance.analyzer.d.ts +125 -0
  242. package/dist/services/scoring/dimensions/performance.analyzer.d.ts.map +1 -0
  243. package/dist/services/scoring/dimensions/performance.analyzer.js +615 -0
  244. package/dist/services/scoring/dimensions/performance.analyzer.js.map +1 -0
  245. package/dist/services/scoring/dimensions/security.analyzer.d.ts +53 -0
  246. package/dist/services/scoring/dimensions/security.analyzer.d.ts.map +1 -0
  247. package/dist/services/scoring/dimensions/security.analyzer.js +327 -0
  248. package/dist/services/scoring/dimensions/security.analyzer.js.map +1 -0
  249. package/dist/services/scoring/dimensions/seo.analyzer.d.ts +77 -0
  250. package/dist/services/scoring/dimensions/seo.analyzer.d.ts.map +1 -0
  251. package/dist/services/scoring/dimensions/seo.analyzer.js +502 -0
  252. package/dist/services/scoring/dimensions/seo.analyzer.js.map +1 -0
  253. package/dist/services/scoring/dimensions/test-coverage.analyzer.d.ts +106 -0
  254. package/dist/services/scoring/dimensions/test-coverage.analyzer.d.ts.map +1 -0
  255. package/dist/services/scoring/dimensions/test-coverage.analyzer.js +496 -0
  256. package/dist/services/scoring/dimensions/test-coverage.analyzer.js.map +1 -0
  257. package/dist/services/scoring/dimensions/ui-ux.analyzer.d.ts +126 -0
  258. package/dist/services/scoring/dimensions/ui-ux.analyzer.d.ts.map +1 -0
  259. package/dist/services/scoring/dimensions/ui-ux.analyzer.js +665 -0
  260. package/dist/services/scoring/dimensions/ui-ux.analyzer.js.map +1 -0
  261. package/dist/services/scoring/index.d.ts +10 -0
  262. package/dist/services/scoring/index.d.ts.map +1 -0
  263. package/dist/services/scoring/index.js +10 -0
  264. package/dist/services/scoring/index.js.map +1 -0
  265. package/dist/services/scoring/scoring-service.d.ts +222 -0
  266. package/dist/services/scoring/scoring-service.d.ts.map +1 -0
  267. package/dist/services/scoring/scoring-service.js +636 -0
  268. package/dist/services/scoring/scoring-service.js.map +1 -0
  269. package/package.json +11 -3
  270. package/templates/README.md +183 -0
  271. package/templates/nestjs/controller.spec.ts +203 -0
  272. package/templates/nestjs/e2e/api.e2e-spec.ts +451 -0
  273. package/templates/nestjs/e2e/auth.e2e-spec.ts +533 -0
  274. package/templates/nestjs/fixtures/test-module.ts +311 -0
  275. package/templates/nestjs/guard.spec.ts +314 -0
  276. package/templates/nestjs/interceptor.spec.ts +458 -0
  277. package/templates/nestjs/module.spec.ts +173 -0
  278. package/templates/nestjs/pipe.spec.ts +474 -0
  279. package/templates/nestjs/service.spec.ts +296 -0
  280. package/templates/rust/Cargo.toml +72 -0
  281. package/templates/rust/actix-controller.test.rs +114 -0
  282. package/templates/rust/axum-handler.test.rs +117 -0
  283. package/templates/rust/integration.test.rs +63 -0
  284. package/templates/rust/rocket-route.test.rs +106 -0
  285. package/templates/rust/unit.test.rs +38 -0
@@ -0,0 +1,532 @@
1
+ /**
2
+ * Report Command
3
+ *
4
+ * Generates reports in various formats (HTML, Markdown, JSON, JUnit).
5
+ *
6
+ * @module cli/commands/report
7
+ */
8
+ import { createLogger } from '../../shared/utils/logger.js';
9
+ import { promises as fs } from 'node:fs';
10
+ import { join } from 'node:path';
11
+ import { formatter } from '../utils/output.js';
12
+ import { withProgress } from '../utils/progress.js';
13
+ const logger = createLogger('ReportCommand');
14
+ /**
15
+ * Report command for Daemon
16
+ *
17
+ * Generates quality reports in multiple formats:
18
+ * - HTML: Interactive dashboard with charts
19
+ * - Markdown: Documentation-friendly format
20
+ * - JSON: Machine-readable for CI/CD
21
+ * - JUnit: Test result integration
22
+ * - Text: Console output
23
+ */
24
+ export class ReportCommand {
25
+ /**
26
+ * Execute the report command
27
+ */
28
+ async execute(args) {
29
+ const options = this.parseArgs(args);
30
+ try {
31
+ if (options.verbose) {
32
+ logger.debug('Generating report...', { options });
33
+ }
34
+ const result = await withProgress(async (progress) => {
35
+ progress.report(10, 'Loading project data...');
36
+ return await this.generateReport(options, progress);
37
+ }, {
38
+ onStart: (msg) => logger.info(msg),
39
+ onComplete: (msg) => logger.success(msg),
40
+ onError: (err) => logger.error('Report generation failed', err),
41
+ });
42
+ // Output results
43
+ if (!options.silent) {
44
+ this.displayResults(result, options);
45
+ }
46
+ // Write to file if output specified
47
+ if (options.output) {
48
+ await this.writeReport(result, options);
49
+ }
50
+ }
51
+ catch (error) {
52
+ logger.error('Report command failed', error);
53
+ throw error;
54
+ }
55
+ }
56
+ /**
57
+ * Parse command line arguments
58
+ */
59
+ parseArgs(args) {
60
+ const options = {
61
+ verbose: false,
62
+ silent: false,
63
+ format: 'text',
64
+ output: undefined,
65
+ includeTrend: false,
66
+ includeCharts: true,
67
+ theme: 'auto',
68
+ open: false,
69
+ };
70
+ for (const arg of args) {
71
+ switch (arg) {
72
+ case '--verbose':
73
+ case '-v':
74
+ options.verbose = true;
75
+ break;
76
+ case '--silent':
77
+ case '-s':
78
+ options.silent = true;
79
+ break;
80
+ case '--trend':
81
+ case '-t':
82
+ options.includeTrend = true;
83
+ break;
84
+ case '--no-charts':
85
+ options.includeCharts = false;
86
+ break;
87
+ case '--open':
88
+ case '-o':
89
+ options.open = true;
90
+ break;
91
+ default:
92
+ if (arg.startsWith('--format=')) {
93
+ const value = arg.split('=')[1];
94
+ if (value && ['html', 'markdown', 'json', 'junit', 'text'].includes(value)) {
95
+ options.format = value;
96
+ }
97
+ }
98
+ else if (arg.startsWith('--output=')) {
99
+ const value = arg.split('=')[1];
100
+ if (value) {
101
+ options.output = value;
102
+ }
103
+ }
104
+ else if (arg.startsWith('--theme=')) {
105
+ const value = arg.split('=')[1];
106
+ if (value && ['light', 'dark', 'auto'].includes(value)) {
107
+ options.theme = value;
108
+ }
109
+ }
110
+ else if (arg.startsWith('-o')) {
111
+ // Short form for output (single char)
112
+ const value = arg.slice(2);
113
+ if (value) {
114
+ options.output = value;
115
+ }
116
+ }
117
+ else if (arg.startsWith('-f')) {
118
+ // Short form for format (single char)
119
+ const value = arg.slice(2);
120
+ if (value && ['html', 'markdown', 'json', 'junit', 'text'].includes(value)) {
121
+ options.format = value;
122
+ }
123
+ }
124
+ }
125
+ }
126
+ return options;
127
+ }
128
+ /**
129
+ * Generate the report
130
+ */
131
+ async generateReport(options, progress) {
132
+ const projectDir = process.cwd();
133
+ progress.report(20, 'Analyzing project...');
134
+ await this.delay(300);
135
+ progress.report(40, 'Calculating scores...');
136
+ await this.delay(500);
137
+ if (options.includeTrend) {
138
+ progress.report(60, 'Loading historical data...');
139
+ await this.delay(300);
140
+ }
141
+ progress.report(80, `Generating ${options.format} report...`);
142
+ await this.delay(400);
143
+ // Mock score data - replace with actual ReportService call
144
+ const stats = {
145
+ overallScore: 76,
146
+ dimensions: {
147
+ 'test-coverage': 82,
148
+ 'code-complexity': 71,
149
+ 'code-style': 88,
150
+ 'documentation': 65,
151
+ 'security': 91,
152
+ 'performance': 68,
153
+ },
154
+ issueCount: 24,
155
+ criticalCount: 2,
156
+ };
157
+ let content;
158
+ let outputPath;
159
+ // Generate content based on format
160
+ switch (options.format) {
161
+ case 'html':
162
+ content = this.generateHtmlReport(stats, options);
163
+ outputPath = options.output || 'daemon-report.html';
164
+ break;
165
+ case 'markdown':
166
+ content = this.generateMarkdownReport(stats, options);
167
+ outputPath = options.output || 'DAEMON_REPORT.md';
168
+ break;
169
+ case 'json':
170
+ content = this.generateJsonReport(stats);
171
+ outputPath = options.output || 'daemon-report.json';
172
+ break;
173
+ case 'junit':
174
+ content = this.generateJUnitReport(stats);
175
+ outputPath = options.output || 'daemon-junit.xml';
176
+ break;
177
+ case 'text':
178
+ content = undefined; // Text uses console output
179
+ break;
180
+ }
181
+ progress.report(100, 'Report generated');
182
+ return {
183
+ format: options.format,
184
+ outputPath,
185
+ content,
186
+ stats,
187
+ generatedAt: new Date(),
188
+ };
189
+ }
190
+ /**
191
+ * Generate HTML report
192
+ */
193
+ generateHtmlReport(stats, options) {
194
+ const theme = options.theme === 'auto' ? 'auto' : options.theme;
195
+ const now = new Date().toISOString();
196
+ return `<!DOCTYPE html>
197
+ <html lang="en" data-theme="${theme}">
198
+ <head>
199
+ <meta charset="UTF-8">
200
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
201
+ <title>Daemon Code Quality Report</title>
202
+ <style>
203
+ :root {
204
+ --color-primary: #3b82f6;
205
+ --color-success: #10b981;
206
+ --color-warning: #f59e0b;
207
+ --color-error: #ef4444;
208
+ --color-bg: #ffffff;
209
+ --color-surface: #f9fafb;
210
+ --color-text: #1f2937;
211
+ --color-border: #e5e7eb;
212
+ }
213
+ [data-theme="dark"] {
214
+ --color-primary: #60a5fa;
215
+ --color-success: #34d399;
216
+ --color-warning: #fbbf24;
217
+ --color-error: #f87171;
218
+ --color-bg: #111827;
219
+ --color-surface: #1f2937;
220
+ --color-text: #f9fafb;
221
+ --color-border: #374151;
222
+ }
223
+ * { margin: 0; padding: 0; box-sizing: border-box; }
224
+ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: var(--color-bg); color: var(--color-text); line-height: 1.6; padding: 20px; }
225
+ .container { max-width: 1200px; margin: 0 auto; }
226
+ .header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 32px; }
227
+ .header h1 { font-size: 28px; font-weight: 700; }
228
+ .score-section { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 24px; margin-bottom: 24px; }
229
+ .card { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: 12px; padding: 24px; }
230
+ .score-card { text-align: center; }
231
+ .score-value { font-size: 64px; font-weight: 800; }
232
+ .score-value.excellent { color: var(--color-success); }
233
+ .score-value.good { color: var(--color-primary); }
234
+ .score-value.fair { color: var(--color-warning); }
235
+ .score-value.poor { color: var(--color-error); }
236
+ .dimension-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 16px; }
237
+ .dimension-card { background: var(--color-bg); border: 1px solid var(--color-border); border-radius: 8px; padding: 16px; text-align: center; }
238
+ .dimension-score { font-size: 32px; font-weight: 700; margin: 8px 0; }
239
+ .dimension-bar { height: 8px; background: var(--color-border); border-radius: 4px; overflow: hidden; }
240
+ .dimension-bar-fill { height: 100%; transition: width 0.3s; }
241
+ </style>
242
+ </head>
243
+ <body>
244
+ <div class="container">
245
+ <div class="header">
246
+ <h1>📊 Code Quality Report</h1>
247
+ <span style="color: var(--color-text-muted);">${now}</span>
248
+ </div>
249
+
250
+ <div class="score-section">
251
+ <div class="card score-card">
252
+ <div class="score-label">Overall Score</div>
253
+ <div class="score-value ${this.getScoreClass(stats.overallScore)}">${stats.overallScore}</div>
254
+ <div class="score-status">${this.getScoreStatus(stats.overallScore)}</div>
255
+ </div>
256
+
257
+ <div class="card">
258
+ <h3>Statistics</h3>
259
+ <div style="display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; margin-top: 16px;">
260
+ <div style="text-align: center;">
261
+ <div style="font-size: 32px; font-weight: 700; color: var(--color-text);">${stats.issueCount}</div>
262
+ <div style="font-size: 12px; color: var(--color-text-muted);">Total Issues</div>
263
+ </div>
264
+ <div style="text-align: center;">
265
+ <div style="font-size: 32px; font-weight: 700; color: var(--color-error);">${stats.criticalCount}</div>
266
+ <div style="font-size: 12px; color: var(--color-text-muted);">Critical</div>
267
+ </div>
268
+ </div>
269
+ </div>
270
+ </div>
271
+
272
+ <div class="card">
273
+ <h2>📐 Dimensions</h2>
274
+ <div class="dimension-grid">
275
+ ${Object.entries(stats.dimensions).map(([key, value]) => `
276
+ <div class="dimension-card">
277
+ <div style="font-size: 12px; color: var(--color-text-muted);">${key}</div>
278
+ <div class="dimension-score" style="color: ${this.getScoreColor(value)}">${value}</div>
279
+ <div class="dimension-bar">
280
+ <div class="dimension-bar-fill" style="width: ${value}%; background: ${this.getScoreColor(value)}"></div>
281
+ </div>
282
+ </div>
283
+ `).join('')}
284
+ </div>
285
+ </div>
286
+ </div>
287
+
288
+ <script>
289
+ // Animate scores on load
290
+ document.addEventListener('DOMContentLoaded', () => {
291
+ document.querySelectorAll('.dimension-bar-fill').forEach(bar => {
292
+ const width = bar.style.width;
293
+ bar.style.width = '0';
294
+ setTimeout(() => bar.style.width = width, 100);
295
+ });
296
+ });
297
+ </script>
298
+ </body>
299
+ </html>`;
300
+ }
301
+ /**
302
+ * Generate Markdown report
303
+ */
304
+ generateMarkdownReport(stats, options) {
305
+ const lines = [];
306
+ lines.push('# 📊 Code Quality Report');
307
+ lines.push('');
308
+ lines.push(`**Generated:** ${new Date().toLocaleString()}\n`);
309
+ // Overall Score
310
+ lines.push('## 🎯 Overall Score');
311
+ lines.push('');
312
+ lines.push(`### ${this.getScoreEmoji(stats.overallScore)} **${stats.overallScore}/100**`);
313
+ lines.push('');
314
+ // Statistics
315
+ lines.push('## 📈 Statistics');
316
+ lines.push('');
317
+ lines.push(`- **Total Issues:** ${stats.issueCount}`);
318
+ lines.push(`- **Critical Issues:** ${stats.criticalCount}`);
319
+ lines.push('');
320
+ // Dimensions
321
+ lines.push('## 📐 Dimensions');
322
+ lines.push('');
323
+ lines.push('| Dimension | Score | Status |');
324
+ lines.push('|-----------|-------|--------|');
325
+ for (const [key, value] of Object.entries(stats.dimensions)) {
326
+ const status = this.getScoreStatus(value);
327
+ const emoji = this.getStatusEmoji(status);
328
+ lines.push(`| ${key} | **${value}**/100 | ${emoji} ${status} |`);
329
+ }
330
+ lines.push('');
331
+ // Recommendations
332
+ lines.push('## 💡 Recommendations');
333
+ lines.push('');
334
+ const recommendations = this.getRecommendations(stats);
335
+ for (const rec of recommendations) {
336
+ lines.push(`- ${rec}`);
337
+ }
338
+ lines.push('');
339
+ return lines.join('\n');
340
+ }
341
+ /**
342
+ * Generate JSON report
343
+ */
344
+ generateJsonReport(stats) {
345
+ return JSON.stringify({
346
+ version: '1.0.0',
347
+ generatedAt: new Date().toISOString(),
348
+ summary: {
349
+ overall: stats.overallScore,
350
+ status: this.getScoreStatus(stats.overallScore),
351
+ totalIssues: stats.issueCount,
352
+ criticalIssues: stats.criticalCount,
353
+ },
354
+ dimensions: stats.dimensions,
355
+ metrics: {
356
+ bySeverity: {
357
+ critical: stats.criticalCount,
358
+ high: Math.floor(stats.issueCount * 0.3),
359
+ medium: Math.floor(stats.issueCount * 0.4),
360
+ low: Math.floor(stats.issueCount * 0.3) - stats.criticalCount,
361
+ },
362
+ },
363
+ }, null, 2);
364
+ }
365
+ /**
366
+ * Generate JUnit XML report
367
+ */
368
+ generateJUnitReport(stats) {
369
+ const now = new Date();
370
+ const timestamp = now.toISOString();
371
+ const time = (stats.issueCount * 0.1).toFixed(3);
372
+ return `<?xml version="1.0" encoding="UTF-8"?>
373
+ <testsuites name="Daemon" tests="6" failures="${stats.criticalCount}" errors="${Math.floor(stats.issueCount * 0.2)}" skipped="0" time="${time}">
374
+ <testsuite name="Code Quality" id="0" tests="6" failures="${stats.criticalCount}" errors="${Math.floor(stats.issueCount * 0.2)}" skipped="0" time="${time}" timestamp="${timestamp}">
375
+ ${Object.entries(stats.dimensions).map(([key, value], i) => {
376
+ const failed = value < 70 ? 'failure' : '';
377
+ return ` <testcase name="${key}" classname="Daemon.Quality" time="${(value * 0.01).toFixed(3)}">
378
+ ${failed ? `<failure message="Score below threshold (70)">Dimension ${key} scored ${value}/100</failure>` : ''}
379
+ </testcase>`;
380
+ }).join('\n ')}
381
+ </testsuite>
382
+ </testsuites>`;
383
+ }
384
+ /**
385
+ * Display formatted results
386
+ */
387
+ displayResults(result, options) {
388
+ console.log('');
389
+ console.log(formatter.header('Code Quality Report', 1));
390
+ // Overall score
391
+ const overallColor = result.stats.overallScore >= 90 ? 'green' : result.stats.overallScore >= 75 ? 'cyan' : result.stats.overallScore >= 60 ? 'yellow' : 'red';
392
+ console.log(`\n${formatter.bold('Overall Score:')} ${formatter.color(`${result.stats.overallScore}/100`, overallColor)} ${formatter.dim(`(${this.getScoreStatus(result.stats.overallScore)})`)}`);
393
+ console.log(formatter.divider('·', 40));
394
+ // Dimensions
395
+ console.log(formatter.bold('\nDimensions:'));
396
+ for (const [key, value] of Object.entries(result.stats.dimensions)) {
397
+ const color = value >= 80 ? 'green' : value >= 60 ? 'yellow' : 'red';
398
+ const bar = '█'.repeat(Math.floor(value / 10)) + '░'.repeat(10 - Math.floor(value / 10));
399
+ console.log(` ${formatter.key(key.padEnd(20))} ${formatter.color(`${value}`.padStart(3), color)} ${formatter.dim(bar)}`);
400
+ }
401
+ // Statistics
402
+ console.log(formatter.bold('\nStatistics:'));
403
+ console.log(` ${formatter.key('Total Issues:')} ${result.stats.issueCount}`);
404
+ console.log(` ${formatter.key('Critical:')} ${formatter.red(String(result.stats.criticalCount))}`);
405
+ // Output info
406
+ if (result.outputPath) {
407
+ console.log(`\n${formatter.dim('Report saved to:')} ${formatter.color(result.outputPath, 'cyan')}`);
408
+ }
409
+ console.log('');
410
+ }
411
+ /**
412
+ * Write report to file
413
+ */
414
+ async writeReport(result, options) {
415
+ if (!result.content) {
416
+ logger.warn('No content to write (text format uses console output)');
417
+ return;
418
+ }
419
+ const outputPath = result.outputPath || `daemon-report.${options.format}`;
420
+ const fullPath = join(process.cwd(), outputPath);
421
+ try {
422
+ await fs.writeFile(fullPath, result.content, 'utf-8');
423
+ logger.success(`Report saved to ${fullPath}`);
424
+ // Open in browser if requested
425
+ if (options.open && options.format === 'html') {
426
+ const { exec } = await import('node:child_process');
427
+ const platform = process.platform;
428
+ if (platform === 'darwin') {
429
+ exec(`open ${fullPath}`);
430
+ }
431
+ else if (platform === 'win32') {
432
+ exec(`start ${fullPath}`);
433
+ }
434
+ else {
435
+ exec(`xdg-open ${fullPath}`);
436
+ }
437
+ }
438
+ }
439
+ catch (error) {
440
+ logger.error(`Failed to write report to ${fullPath}`, error);
441
+ }
442
+ }
443
+ /**
444
+ * Get recommendations based on stats
445
+ */
446
+ getRecommendations(stats) {
447
+ const recommendations = [];
448
+ for (const [key, value] of Object.entries(stats.dimensions)) {
449
+ if (value < 60) {
450
+ recommendations.push(`🔴 Focus on **${key}** - Score is ${value}/100`);
451
+ }
452
+ else if (value < 80) {
453
+ recommendations.push(`🟡 Improve **${key}** - Score is ${value}/100`);
454
+ }
455
+ }
456
+ if (stats.criticalCount > 0) {
457
+ recommendations.push(`⚠️ Address ${stats.criticalCount} critical issue(s) immediately`);
458
+ }
459
+ if (stats.overallScore >= 80) {
460
+ recommendations.push('✅ Great job maintaining high code quality!');
461
+ }
462
+ return recommendations;
463
+ }
464
+ /**
465
+ * Get CSS class for score
466
+ */
467
+ getScoreClass(score) {
468
+ if (score >= 90)
469
+ return 'excellent';
470
+ if (score >= 75)
471
+ return 'good';
472
+ if (score >= 60)
473
+ return 'fair';
474
+ return 'poor';
475
+ }
476
+ /**
477
+ * Get status text for score
478
+ */
479
+ getScoreStatus(score) {
480
+ if (score >= 90)
481
+ return 'excellent';
482
+ if (score >= 75)
483
+ return 'good';
484
+ if (score >= 60)
485
+ return 'fair';
486
+ return 'poor';
487
+ }
488
+ /**
489
+ * Get emoji for score
490
+ */
491
+ getScoreEmoji(score) {
492
+ if (score >= 90)
493
+ return '🌟';
494
+ if (score >= 75)
495
+ return '👍';
496
+ if (score >= 60)
497
+ return '😐';
498
+ return '👎';
499
+ }
500
+ /**
501
+ * Get emoji for status
502
+ */
503
+ getStatusEmoji(status) {
504
+ const emojis = {
505
+ excellent: '✅',
506
+ good: '👍',
507
+ fair: '😐',
508
+ poor: '👎',
509
+ critical: '⚠️',
510
+ };
511
+ return emojis[status] || '❓';
512
+ }
513
+ /**
514
+ * Get color for score value
515
+ */
516
+ getScoreColor(score) {
517
+ if (score >= 90)
518
+ return '#10b981';
519
+ if (score >= 75)
520
+ return '#3b82f6';
521
+ if (score >= 60)
522
+ return '#f59e0b';
523
+ return '#ef4444';
524
+ }
525
+ /**
526
+ * Delay helper
527
+ */
528
+ delay(ms) {
529
+ return new Promise((resolve) => setTimeout(resolve, ms));
530
+ }
531
+ }
532
+ //# sourceMappingURL=report.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.command.js","sourceRoot":"","sources":["../../../src/cli/commands/report.command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Review Command
3
+ *
4
+ * Performs comprehensive code review and generates reports.
5
+ *
6
+ * @module cli/commands/review
7
+ */
8
+ import { type ReviewOptions } from './command.types.js';
9
+ /**
10
+ * Mock ReviewService - assumes service exists
11
+ * TODO: Replace with actual import when service is implemented
12
+ * import { ReviewService } from '../../services/review/review.service.js';
13
+ */
14
+ /**
15
+ * Issue severity levels
16
+ */
17
+ type IssueSeverity = 'low' | 'medium' | 'high' | 'critical';
18
+ /**
19
+ * Review issue
20
+ */
21
+ interface ReviewIssue {
22
+ id: string;
23
+ dimension: string;
24
+ severity: IssueSeverity;
25
+ category: string;
26
+ message: string;
27
+ file?: string;
28
+ line?: number;
29
+ column?: number;
30
+ code?: string;
31
+ fixable: boolean;
32
+ suggestion?: string;
33
+ }
34
+ /**
35
+ * Review results
36
+ */
37
+ interface ReviewResults {
38
+ summary: {
39
+ totalIssues: number;
40
+ bySeverity: Record<string, number>;
41
+ byDimension: Record<string, number>;
42
+ fixable: number;
43
+ fixed: number;
44
+ };
45
+ issues: ReviewIssue[];
46
+ reportPath?: string;
47
+ }
48
+ /**
49
+ * Review command for Daemon
50
+ *
51
+ * Performs comprehensive code review:
52
+ * - Analyzes code quality across dimensions
53
+ * - Identifies security vulnerabilities
54
+ * - Finds performance issues
55
+ * - Checks test coverage
56
+ * - Can auto-fix issues
57
+ * - Generates reports (text, json, html, markdown)
58
+ */
59
+ export declare class ReviewCommand {
60
+ /**
61
+ * Execute the review command
62
+ */
63
+ execute(args: string[]): Promise<void>;
64
+ /**
65
+ * Parse command line arguments
66
+ */
67
+ private parseArgs;
68
+ /**
69
+ * Perform the code review
70
+ */
71
+ private performReview;
72
+ /**
73
+ * Generate mock issues for demonstration
74
+ */
75
+ private generateMockIssues;
76
+ /**
77
+ * Apply fixes to issues
78
+ */
79
+ private applyFixes;
80
+ /**
81
+ * Group issues by field
82
+ */
83
+ private groupBy;
84
+ /**
85
+ * Display formatted results
86
+ */
87
+ private displayResults;
88
+ /**
89
+ * Display a single issue
90
+ */
91
+ private displayIssue;
92
+ /**
93
+ * Write report to file
94
+ */
95
+ private writeReport;
96
+ /**
97
+ * Generate markdown report
98
+ */
99
+ private generateMarkdownReport;
100
+ /**
101
+ * Generate HTML report
102
+ */
103
+ private generateHtmlReport;
104
+ /**
105
+ * Delay helper for simulating async work
106
+ */
107
+ private delay;
108
+ }
109
+ export type { ReviewOptions, ReviewResults, ReviewIssue };
110
+ //# sourceMappingURL=review.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/review.command.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMzE;;;;GAIG;AAEH;;GAEG;AACH,KAAK,aAAa,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAE5D;;GAEG;AACH,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,UAAU,aAAa;IACrB,OAAO,EAAE;QACP,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACnC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACpC,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;GAUG;AACH,qBAAa,aAAa;IACxB;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC5C;;OAEG;IACH,OAAO,CAAC,SAAS;IA8DjB;;OAEG;YACW,aAAa;IA+D3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyG1B;;OAEG;YACW,UAAU;IA+BxB;;OAEG;IACH,OAAO,CAAC,OAAO;IAQf;;OAEG;IACH,OAAO,CAAC,cAAc;IAiCtB;;OAEG;IACH,OAAO,CAAC,YAAY;IA+BpB;;OAEG;YACW,WAAW;IA4BzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA8C9B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA+D1B;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd;AAED,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC"}