@oalacea/daemon 0.6.3 → 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 (289) 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/init.command.d.ts +12 -14
  19. package/dist/cli/commands/init.command.d.ts.map +1 -1
  20. package/dist/cli/commands/init.command.js +278 -144
  21. package/dist/cli/commands/init.command.js.map +1 -1
  22. package/dist/cli/commands/optimize.command.d.ts +110 -0
  23. package/dist/cli/commands/optimize.command.d.ts.map +1 -0
  24. package/dist/cli/commands/optimize.command.js +497 -0
  25. package/dist/cli/commands/optimize.command.js.map +1 -0
  26. package/dist/cli/commands/report.command.d.ts +110 -0
  27. package/dist/cli/commands/report.command.d.ts.map +1 -0
  28. package/dist/cli/commands/report.command.js +532 -0
  29. package/dist/cli/commands/report.command.js.map +1 -0
  30. package/dist/cli/commands/review.command.d.ts +110 -0
  31. package/dist/cli/commands/review.command.d.ts.map +1 -0
  32. package/dist/cli/commands/review.command.js +520 -0
  33. package/dist/cli/commands/review.command.js.map +1 -0
  34. package/dist/cli/commands/score.command.d.ts +47 -0
  35. package/dist/cli/commands/score.command.d.ts.map +1 -0
  36. package/dist/cli/commands/score.command.js +261 -0
  37. package/dist/cli/commands/score.command.js.map +1 -0
  38. package/dist/cli/utils/index.d.ts +10 -0
  39. package/dist/cli/utils/index.d.ts.map +1 -0
  40. package/dist/cli/utils/index.js +10 -0
  41. package/dist/cli/utils/index.js.map +1 -0
  42. package/dist/cli/utils/output.d.ts +192 -0
  43. package/dist/cli/utils/output.d.ts.map +1 -0
  44. package/dist/cli/utils/output.js +411 -0
  45. package/dist/cli/utils/output.js.map +1 -0
  46. package/dist/cli/utils/progress.d.ts +204 -0
  47. package/dist/cli/utils/progress.d.ts.map +1 -0
  48. package/dist/cli/utils/progress.js +396 -0
  49. package/dist/cli/utils/progress.js.map +1 -0
  50. package/dist/core/types/index.d.ts +1 -0
  51. package/dist/core/types/index.d.ts.map +1 -1
  52. package/dist/core/types/project.types.d.ts +3 -3
  53. package/dist/core/types/project.types.d.ts.map +1 -1
  54. package/dist/core/types/scoring.types.d.ts +301 -0
  55. package/dist/core/types/scoring.types.d.ts.map +1 -0
  56. package/dist/core/types/scoring.types.js +8 -0
  57. package/dist/core/types/scoring.types.js.map +1 -0
  58. package/dist/services/detection/framework-detector.d.ts.map +1 -1
  59. package/dist/services/detection/framework-detector.js +74 -5
  60. package/dist/services/detection/framework-detector.js.map +1 -1
  61. package/dist/services/index.d.ts +12 -0
  62. package/dist/services/index.d.ts.map +1 -1
  63. package/dist/services/index.js +14 -0
  64. package/dist/services/index.js.map +1 -1
  65. package/dist/services/optimization/detectors/bug-detector.d.ts +82 -0
  66. package/dist/services/optimization/detectors/bug-detector.d.ts.map +1 -0
  67. package/dist/services/optimization/detectors/bug-detector.js +443 -0
  68. package/dist/services/optimization/detectors/bug-detector.js.map +1 -0
  69. package/dist/services/optimization/detectors/code-smell-detector.d.ts +108 -0
  70. package/dist/services/optimization/detectors/code-smell-detector.d.ts.map +1 -0
  71. package/dist/services/optimization/detectors/code-smell-detector.js +569 -0
  72. package/dist/services/optimization/detectors/code-smell-detector.js.map +1 -0
  73. package/dist/services/optimization/detectors/index.d.ts +7 -0
  74. package/dist/services/optimization/detectors/index.d.ts.map +1 -0
  75. package/dist/services/optimization/detectors/index.js +7 -0
  76. package/dist/services/optimization/detectors/index.js.map +1 -0
  77. package/dist/services/optimization/detectors/perf-detector.d.ts +80 -0
  78. package/dist/services/optimization/detectors/perf-detector.d.ts.map +1 -0
  79. package/dist/services/optimization/detectors/perf-detector.js +451 -0
  80. package/dist/services/optimization/detectors/perf-detector.js.map +1 -0
  81. package/dist/services/optimization/index.d.ts +61 -0
  82. package/dist/services/optimization/index.d.ts.map +1 -0
  83. package/dist/services/optimization/index.js +69 -0
  84. package/dist/services/optimization/index.js.map +1 -0
  85. package/dist/services/optimization/optimization.service.d.ts +65 -0
  86. package/dist/services/optimization/optimization.service.d.ts.map +1 -0
  87. package/dist/services/optimization/optimization.service.js +511 -0
  88. package/dist/services/optimization/optimization.service.js.map +1 -0
  89. package/dist/services/optimization/optimization.types.d.ts +343 -0
  90. package/dist/services/optimization/optimization.types.d.ts.map +1 -0
  91. package/dist/services/optimization/optimization.types.js +8 -0
  92. package/dist/services/optimization/optimization.types.js.map +1 -0
  93. package/dist/services/optimization/optimizers/code-optimizer.d.ts +87 -0
  94. package/dist/services/optimization/optimizers/code-optimizer.d.ts.map +1 -0
  95. package/dist/services/optimization/optimizers/code-optimizer.js +436 -0
  96. package/dist/services/optimization/optimizers/code-optimizer.js.map +1 -0
  97. package/dist/services/optimization/optimizers/index.d.ts +7 -0
  98. package/dist/services/optimization/optimizers/index.d.ts.map +1 -0
  99. package/dist/services/optimization/optimizers/index.js +7 -0
  100. package/dist/services/optimization/optimizers/index.js.map +1 -0
  101. package/dist/services/optimization/optimizers/perf-optimizer.d.ts +64 -0
  102. package/dist/services/optimization/optimizers/perf-optimizer.d.ts.map +1 -0
  103. package/dist/services/optimization/optimizers/perf-optimizer.js +330 -0
  104. package/dist/services/optimization/optimizers/perf-optimizer.js.map +1 -0
  105. package/dist/services/optimization/optimizers/refact-optimizer.d.ts +82 -0
  106. package/dist/services/optimization/optimizers/refact-optimizer.d.ts.map +1 -0
  107. package/dist/services/optimization/optimizers/refact-optimizer.js +354 -0
  108. package/dist/services/optimization/optimizers/refact-optimizer.js.map +1 -0
  109. package/dist/services/optimization/patterns/anti-patterns.d.ts +31 -0
  110. package/dist/services/optimization/patterns/anti-patterns.d.ts.map +1 -0
  111. package/dist/services/optimization/patterns/anti-patterns.js +501 -0
  112. package/dist/services/optimization/patterns/anti-patterns.js.map +1 -0
  113. package/dist/services/optimization/patterns/index.d.ts +5 -0
  114. package/dist/services/optimization/patterns/index.d.ts.map +1 -0
  115. package/dist/services/optimization/patterns/index.js +5 -0
  116. package/dist/services/optimization/patterns/index.js.map +1 -0
  117. package/dist/services/reporting/export/chart.exporter.d.ts +59 -0
  118. package/dist/services/reporting/export/chart.exporter.d.ts.map +1 -0
  119. package/dist/services/reporting/export/chart.exporter.js +350 -0
  120. package/dist/services/reporting/export/chart.exporter.js.map +1 -0
  121. package/dist/services/reporting/export/index.d.ts +9 -0
  122. package/dist/services/reporting/export/index.d.ts.map +1 -0
  123. package/dist/services/reporting/export/index.js +10 -0
  124. package/dist/services/reporting/export/index.js.map +1 -0
  125. package/dist/services/reporting/export/pdf.exporter.d.ts +133 -0
  126. package/dist/services/reporting/export/pdf.exporter.d.ts.map +1 -0
  127. package/dist/services/reporting/export/pdf.exporter.js +270 -0
  128. package/dist/services/reporting/export/pdf.exporter.js.map +1 -0
  129. package/dist/services/reporting/history.service.d.ts +93 -0
  130. package/dist/services/reporting/history.service.d.ts.map +1 -0
  131. package/dist/services/reporting/history.service.js +285 -0
  132. package/dist/services/reporting/history.service.js.map +1 -0
  133. package/dist/services/reporting/index.d.ts +15 -0
  134. package/dist/services/reporting/index.d.ts.map +1 -0
  135. package/dist/services/reporting/index.js +16 -0
  136. package/dist/services/reporting/index.js.map +1 -0
  137. package/dist/services/reporting/report.service.d.ts +102 -0
  138. package/dist/services/reporting/report.service.d.ts.map +1 -0
  139. package/dist/services/reporting/report.service.js +240 -0
  140. package/dist/services/reporting/report.service.js.map +1 -0
  141. package/dist/services/reporting/reporting.types.d.ts +329 -0
  142. package/dist/services/reporting/reporting.types.d.ts.map +1 -0
  143. package/dist/services/reporting/reporting.types.js +8 -0
  144. package/dist/services/reporting/reporting.types.js.map +1 -0
  145. package/dist/services/reporting/templates/html.template.d.ts +81 -0
  146. package/dist/services/reporting/templates/html.template.d.ts.map +1 -0
  147. package/dist/services/reporting/templates/html.template.js +741 -0
  148. package/dist/services/reporting/templates/html.template.js.map +1 -0
  149. package/dist/services/reporting/templates/json.template.d.ts +85 -0
  150. package/dist/services/reporting/templates/json.template.d.ts.map +1 -0
  151. package/dist/services/reporting/templates/json.template.js +308 -0
  152. package/dist/services/reporting/templates/json.template.js.map +1 -0
  153. package/dist/services/reporting/templates/markdown.template.d.ts +69 -0
  154. package/dist/services/reporting/templates/markdown.template.d.ts.map +1 -0
  155. package/dist/services/reporting/templates/markdown.template.js +311 -0
  156. package/dist/services/reporting/templates/markdown.template.js.map +1 -0
  157. package/dist/services/reporting/trend-analyzer.d.ts +73 -0
  158. package/dist/services/reporting/trend-analyzer.d.ts.map +1 -0
  159. package/dist/services/reporting/trend-analyzer.js +291 -0
  160. package/dist/services/reporting/trend-analyzer.js.map +1 -0
  161. package/dist/services/review/analyzers/dependency-analyzer.d.ts +87 -0
  162. package/dist/services/review/analyzers/dependency-analyzer.d.ts.map +1 -0
  163. package/dist/services/review/analyzers/dependency-analyzer.js +458 -0
  164. package/dist/services/review/analyzers/dependency-analyzer.js.map +1 -0
  165. package/dist/services/review/analyzers/index.d.ts +13 -0
  166. package/dist/services/review/analyzers/index.d.ts.map +1 -0
  167. package/dist/services/review/analyzers/index.js +13 -0
  168. package/dist/services/review/analyzers/index.js.map +1 -0
  169. package/dist/services/review/analyzers/nestjs-analyzer.d.ts +210 -0
  170. package/dist/services/review/analyzers/nestjs-analyzer.d.ts.map +1 -0
  171. package/dist/services/review/analyzers/nestjs-analyzer.js +571 -0
  172. package/dist/services/review/analyzers/nestjs-analyzer.js.map +1 -0
  173. package/dist/services/review/analyzers/performance-analyzer.d.ts +91 -0
  174. package/dist/services/review/analyzers/performance-analyzer.d.ts.map +1 -0
  175. package/dist/services/review/analyzers/performance-analyzer.js +589 -0
  176. package/dist/services/review/analyzers/performance-analyzer.js.map +1 -0
  177. package/dist/services/review/analyzers/security-analyzer.d.ts +96 -0
  178. package/dist/services/review/analyzers/security-analyzer.d.ts.map +1 -0
  179. package/dist/services/review/analyzers/security-analyzer.js +512 -0
  180. package/dist/services/review/analyzers/security-analyzer.js.map +1 -0
  181. package/dist/services/review/analyzers/static-analyzer.d.ts +90 -0
  182. package/dist/services/review/analyzers/static-analyzer.d.ts.map +1 -0
  183. package/dist/services/review/analyzers/static-analyzer.js +423 -0
  184. package/dist/services/review/analyzers/static-analyzer.js.map +1 -0
  185. package/dist/services/review/fixers/auto-fixer.d.ts +94 -0
  186. package/dist/services/review/fixers/auto-fixer.d.ts.map +1 -0
  187. package/dist/services/review/fixers/auto-fixer.js +404 -0
  188. package/dist/services/review/fixers/auto-fixer.js.map +1 -0
  189. package/dist/services/review/fixers/index.d.ts +11 -0
  190. package/dist/services/review/fixers/index.d.ts.map +1 -0
  191. package/dist/services/review/fixers/index.js +11 -0
  192. package/dist/services/review/fixers/index.js.map +1 -0
  193. package/dist/services/review/fixers/refactor-suggester.d.ts +100 -0
  194. package/dist/services/review/fixers/refactor-suggester.d.ts.map +1 -0
  195. package/dist/services/review/fixers/refactor-suggester.js +555 -0
  196. package/dist/services/review/fixers/refactor-suggester.js.map +1 -0
  197. package/dist/services/review/fixers/test-generator.d.ts +99 -0
  198. package/dist/services/review/fixers/test-generator.d.ts.map +1 -0
  199. package/dist/services/review/fixers/test-generator.js +458 -0
  200. package/dist/services/review/fixers/test-generator.js.map +1 -0
  201. package/dist/services/review/index.d.ts +14 -0
  202. package/dist/services/review/index.d.ts.map +1 -0
  203. package/dist/services/review/index.js +14 -0
  204. package/dist/services/review/index.js.map +1 -0
  205. package/dist/services/review/reporters/fix-reporter.d.ts +67 -0
  206. package/dist/services/review/reporters/fix-reporter.d.ts.map +1 -0
  207. package/dist/services/review/reporters/fix-reporter.js +437 -0
  208. package/dist/services/review/reporters/fix-reporter.js.map +1 -0
  209. package/dist/services/review/reporters/index.d.ts +10 -0
  210. package/dist/services/review/reporters/index.d.ts.map +1 -0
  211. package/dist/services/review/reporters/index.js +10 -0
  212. package/dist/services/review/reporters/index.js.map +1 -0
  213. package/dist/services/review/reporters/score-reporter.d.ts +84 -0
  214. package/dist/services/review/reporters/score-reporter.d.ts.map +1 -0
  215. package/dist/services/review/reporters/score-reporter.js +560 -0
  216. package/dist/services/review/reporters/score-reporter.js.map +1 -0
  217. package/dist/services/review/review.service.d.ts +129 -0
  218. package/dist/services/review/review.service.d.ts.map +1 -0
  219. package/dist/services/review/review.service.js +396 -0
  220. package/dist/services/review/review.service.js.map +1 -0
  221. package/dist/services/review/review.types.d.ts +443 -0
  222. package/dist/services/review/review.types.d.ts.map +1 -0
  223. package/dist/services/review/review.types.js +11 -0
  224. package/dist/services/review/review.types.js.map +1 -0
  225. package/dist/services/scoring/dimensions/accessibility.analyzer.d.ts +53 -0
  226. package/dist/services/scoring/dimensions/accessibility.analyzer.d.ts.map +1 -0
  227. package/dist/services/scoring/dimensions/accessibility.analyzer.js +260 -0
  228. package/dist/services/scoring/dimensions/accessibility.analyzer.js.map +1 -0
  229. package/dist/services/scoring/dimensions/backend-logic.analyzer.d.ts +138 -0
  230. package/dist/services/scoring/dimensions/backend-logic.analyzer.d.ts.map +1 -0
  231. package/dist/services/scoring/dimensions/backend-logic.analyzer.js +713 -0
  232. package/dist/services/scoring/dimensions/backend-logic.analyzer.js.map +1 -0
  233. package/dist/services/scoring/dimensions/business-logic.analyzer.d.ts +142 -0
  234. package/dist/services/scoring/dimensions/business-logic.analyzer.d.ts.map +1 -0
  235. package/dist/services/scoring/dimensions/business-logic.analyzer.js +747 -0
  236. package/dist/services/scoring/dimensions/business-logic.analyzer.js.map +1 -0
  237. package/dist/services/scoring/dimensions/code-quality.analyzer.d.ts +142 -0
  238. package/dist/services/scoring/dimensions/code-quality.analyzer.d.ts.map +1 -0
  239. package/dist/services/scoring/dimensions/code-quality.analyzer.js +685 -0
  240. package/dist/services/scoring/dimensions/code-quality.analyzer.js.map +1 -0
  241. package/dist/services/scoring/dimensions/index.d.ts +18 -0
  242. package/dist/services/scoring/dimensions/index.d.ts.map +1 -0
  243. package/dist/services/scoring/dimensions/index.js +27 -0
  244. package/dist/services/scoring/dimensions/index.js.map +1 -0
  245. package/dist/services/scoring/dimensions/performance.analyzer.d.ts +125 -0
  246. package/dist/services/scoring/dimensions/performance.analyzer.d.ts.map +1 -0
  247. package/dist/services/scoring/dimensions/performance.analyzer.js +615 -0
  248. package/dist/services/scoring/dimensions/performance.analyzer.js.map +1 -0
  249. package/dist/services/scoring/dimensions/security.analyzer.d.ts +53 -0
  250. package/dist/services/scoring/dimensions/security.analyzer.d.ts.map +1 -0
  251. package/dist/services/scoring/dimensions/security.analyzer.js +327 -0
  252. package/dist/services/scoring/dimensions/security.analyzer.js.map +1 -0
  253. package/dist/services/scoring/dimensions/seo.analyzer.d.ts +77 -0
  254. package/dist/services/scoring/dimensions/seo.analyzer.d.ts.map +1 -0
  255. package/dist/services/scoring/dimensions/seo.analyzer.js +502 -0
  256. package/dist/services/scoring/dimensions/seo.analyzer.js.map +1 -0
  257. package/dist/services/scoring/dimensions/test-coverage.analyzer.d.ts +106 -0
  258. package/dist/services/scoring/dimensions/test-coverage.analyzer.d.ts.map +1 -0
  259. package/dist/services/scoring/dimensions/test-coverage.analyzer.js +496 -0
  260. package/dist/services/scoring/dimensions/test-coverage.analyzer.js.map +1 -0
  261. package/dist/services/scoring/dimensions/ui-ux.analyzer.d.ts +126 -0
  262. package/dist/services/scoring/dimensions/ui-ux.analyzer.d.ts.map +1 -0
  263. package/dist/services/scoring/dimensions/ui-ux.analyzer.js +665 -0
  264. package/dist/services/scoring/dimensions/ui-ux.analyzer.js.map +1 -0
  265. package/dist/services/scoring/index.d.ts +10 -0
  266. package/dist/services/scoring/index.d.ts.map +1 -0
  267. package/dist/services/scoring/index.js +10 -0
  268. package/dist/services/scoring/index.js.map +1 -0
  269. package/dist/services/scoring/scoring-service.d.ts +222 -0
  270. package/dist/services/scoring/scoring-service.d.ts.map +1 -0
  271. package/dist/services/scoring/scoring-service.js +636 -0
  272. package/dist/services/scoring/scoring-service.js.map +1 -0
  273. package/package.json +11 -3
  274. package/templates/README.md +183 -0
  275. package/templates/nestjs/controller.spec.ts +203 -0
  276. package/templates/nestjs/e2e/api.e2e-spec.ts +451 -0
  277. package/templates/nestjs/e2e/auth.e2e-spec.ts +533 -0
  278. package/templates/nestjs/fixtures/test-module.ts +311 -0
  279. package/templates/nestjs/guard.spec.ts +314 -0
  280. package/templates/nestjs/interceptor.spec.ts +458 -0
  281. package/templates/nestjs/module.spec.ts +173 -0
  282. package/templates/nestjs/pipe.spec.ts +474 -0
  283. package/templates/nestjs/service.spec.ts +296 -0
  284. package/templates/rust/Cargo.toml +72 -0
  285. package/templates/rust/actix-controller.test.rs +114 -0
  286. package/templates/rust/axum-handler.test.rs +117 -0
  287. package/templates/rust/integration.test.rs +63 -0
  288. package/templates/rust/rocket-route.test.rs +106 -0
  289. package/templates/rust/unit.test.rs +38 -0
@@ -7,13 +7,39 @@
7
7
  */
8
8
  import * as path from 'node:path';
9
9
  import * as url from 'node:url';
10
+ import { execSync } from 'node:child_process';
11
+ import * as fs from 'node:fs';
10
12
  import { createLogger } from '../../shared/utils/logger.js';
11
- import { fileHelper } from '../../shared/utils/file-helper.js';
12
13
  import { FrameworkDetector } from '../../services/detection/framework-detector.js';
13
14
  const logger = createLogger('InitCommand');
14
15
  // Get __dirname equivalent for ES modules
15
16
  const __filename = url.fileURLToPath(import.meta.url);
16
17
  const __dirname = path.dirname(__filename);
18
+ // Configuration
19
+ const CONFIG = {
20
+ IMAGE: 'daemon-tools',
21
+ CONTAINER: 'daemon-tools',
22
+ PROMPT_DEST: path.join(process.cwd(), '.daemon', 'EXECUTE.md'),
23
+ DOCKERFILE: path.resolve(__dirname, '../../../bin/Dockerfile'),
24
+ };
25
+ /**
26
+ * Run shell command with timeout
27
+ */
28
+ function run(cmd, options = {}) {
29
+ try {
30
+ return execSync(cmd, {
31
+ encoding: 'utf-8',
32
+ stdio: 'pipe',
33
+ timeout: options.timeout ?? 60000
34
+ }).trim();
35
+ }
36
+ catch (error) {
37
+ if (!options.silent && error.status !== null) {
38
+ logger.debug(`Command exited with code ${error.status}`);
39
+ }
40
+ return null;
41
+ }
42
+ }
17
43
  /**
18
44
  * Initialize command for Daemon
19
45
  */
@@ -26,39 +52,268 @@ export class InitCommand {
26
52
  * Execute the init command
27
53
  */
28
54
  async execute(args) {
29
- logger.info('Initializing Daemon...');
30
55
  const options = this.parseArgs(args);
31
56
  try {
32
- // Detect framework
33
- let framework = 'Unknown';
34
- if (!options.skipDetection) {
35
- const result = await this.detector.detect(process.cwd());
36
- framework = result.value ?? 'Unknown';
37
- logger.info(`Detected framework: ${framework}`);
57
+ logger.info('');
58
+ logger.info('═══════════════════════════════════════════════════');
59
+ logger.info(' Daemon - AI-Powered Test Generation');
60
+ logger.info('═══════════════════════════════════════════════════');
61
+ logger.info('');
62
+ logger.info(' Automated testing toolkit for web applications');
63
+ logger.info('');
64
+ // --- Step 1: Check Docker ---
65
+ logger.info(' → Checking Docker...');
66
+ if (run('docker info', { silent: true }) === null) {
67
+ logger.error('');
68
+ logger.error(' Docker is not running.');
69
+ logger.error('');
70
+ logger.error(' Start Docker Desktop (or the Docker daemon) and try again.');
71
+ logger.error('');
72
+ logger.error(' Install Docker: https://docs.docker.com/get-docker/');
73
+ throw new Error('Docker not running');
38
74
  }
39
- // Create daemon config
40
- await this.createConfig(options);
41
- // Create test directories
42
- await this.createDirectories(options);
43
- // Copy EXECUTE.md prompt
44
- await this.createExecutePrompt();
45
- // Setup Docker
46
- await this.setupDocker();
47
- logger.success('Daemon initialized successfully!');
75
+ logger.success(' Docker is running');
76
+ // --- Step 2: Build image if missing ---
77
+ const imageExists = run(`docker images -q ${CONFIG.IMAGE}`);
78
+ if (!imageExists) {
79
+ logger.info('');
80
+ logger.warn(' ◆ The testing toolkit needs to be installed (~500 MB Docker image).');
81
+ logger.info(' This only happens once.');
82
+ logger.info('');
83
+ logger.info(' Building testing toolkit...');
84
+ logger.info(' This may take 2-3 minutes on first run...');
85
+ logger.info('');
86
+ const buildCmd = `docker build -t ${CONFIG.IMAGE} -f "${CONFIG.DOCKERFILE}" "${path.dirname(CONFIG.DOCKERFILE)}"`;
87
+ try {
88
+ execSync(buildCmd, { stdio: 'inherit', timeout: 600000 });
89
+ }
90
+ catch {
91
+ throw new Error(`Failed to build toolkit. Try: ${buildCmd}`);
92
+ }
93
+ logger.success(' Testing toolkit installed');
94
+ }
95
+ else {
96
+ logger.success(' Testing toolkit ready');
97
+ }
98
+ // --- Step 3: Start container if not running ---
99
+ const containerRunning = run(`docker ps --filter "name=^${CONFIG.CONTAINER}$" --format "{{.Names}}"`);
100
+ if (containerRunning === CONFIG.CONTAINER) {
101
+ logger.success(` Toolkit container running (${CONFIG.CONTAINER})`);
102
+ }
103
+ else {
104
+ const containerExists = run(`docker ps -a --filter "name=^${CONFIG.CONTAINER}$" --format "{{.Names}}"`);
105
+ if (containerExists === CONFIG.CONTAINER) {
106
+ process.stdout.write(' → Starting toolkit container...');
107
+ if (run(`docker start ${CONFIG.CONTAINER}`, { timeout: 30000 }) === null) {
108
+ logger.error('');
109
+ throw new Error('Failed to start container');
110
+ }
111
+ logger.info(' done');
112
+ }
113
+ else {
114
+ const isLinux = process.platform === 'linux';
115
+ const networkFlag = isLinux ? '--network=host' : '';
116
+ process.stdout.write(` → Creating toolkit container (${CONFIG.CONTAINER})...`);
117
+ const runCmd = `docker run -d --name ${CONFIG.CONTAINER} ${networkFlag} ${CONFIG.IMAGE}`.replace(/\s+/g, ' ');
118
+ if (run(runCmd, { timeout: 30000 }) === null) {
119
+ logger.error('');
120
+ throw new Error(`Failed to create container. Try: ${runCmd}`);
121
+ }
122
+ logger.info(' done');
123
+ }
124
+ logger.success(` Toolkit container running (${CONFIG.CONTAINER})`);
125
+ }
126
+ // --- Step 4: Run detection ---
127
+ logger.info(' → Analyzing project...');
128
+ const context = await this.runDetection(options);
129
+ // --- Step 5: Create daemon directory and prompt ---
130
+ const daemonDir = path.dirname(CONFIG.PROMPT_DEST);
131
+ if (!fs.existsSync(daemonDir)) {
132
+ fs.mkdirSync(daemonDir, { recursive: true });
133
+ }
134
+ const prompt = this.generatePrompt(context);
135
+ fs.writeFileSync(CONFIG.PROMPT_DEST, prompt, 'utf-8');
136
+ logger.success(` Prompt installed to ${this.bold('./.daemon/EXECUTE.md')}`);
137
+ // --- Step 6: Print summary ---
138
+ logger.info('');
139
+ logger.info(' Detected Configuration:');
140
+ logger.info(` Framework: ${this.cyan(context.framework ?? 'Unknown')}`);
141
+ logger.info(` Language: ${this.cyan(context.language ?? 'JavaScript/TypeScript')}`);
142
+ logger.info(` Test Runner: ${this.cyan(context.testRunner ?? 'Vitest')}`);
143
+ if (context.database) {
144
+ logger.info(` Database: ${this.cyan(context.database.type)}`);
145
+ logger.info(` Connection: ${this.cyan(context.database.connection)}`);
146
+ }
147
+ logger.info(` Existing: ${this.cyan((context.existingTests ?? 0) + ' tests')}`);
148
+ logger.info(` Target: ${this.cyan(context.target ?? 'http://localhost:3000')}`);
149
+ logger.info('');
150
+ // --- Step 7: Print instructions ---
151
+ logger.success(' Ready! Open your AI agent from your project directory and paste:');
48
152
  logger.info('');
49
- logger.info('Next steps:');
50
- logger.info(' 1. Build Docker container: docker build -t daemon-tools -f Dockerfile.daemon .');
51
- logger.info(' 2. Start container: docker run -d --name daemon-tools -v "$(pwd)":/app daemon-tools');
52
- logger.info(' 3. Run "daemon detect" to see project details');
53
- logger.info(' 4. Check EXECUTE.md for AI testing instructions');
153
+ logger.info(` ${this.cyan('Read ./.daemon/EXECUTE.md and start the testing process')}`);
154
+ logger.info('');
155
+ logger.info(' Works with Claude Code, Cursor, Windsurf, Aider, Codex...');
54
156
  logger.info('');
55
- logger.info('For more information, visit: https://github.com/Pamacea/daemon');
56
157
  }
57
158
  catch (error) {
58
159
  logger.error('Failed to initialize Daemon', error);
59
160
  throw error;
60
161
  }
61
162
  }
163
+ /**
164
+ * Run detection and return context
165
+ */
166
+ async runDetection(options) {
167
+ if (!options.skipDetection) {
168
+ const result = await this.detector.detect(process.cwd());
169
+ return {
170
+ framework: result.value ?? 'Unknown',
171
+ language: 'JavaScript/TypeScript',
172
+ testRunner: 'Vitest',
173
+ database: null,
174
+ existingTests: 0,
175
+ coverage: null,
176
+ dependencies: [],
177
+ target: 'http://localhost:3000'
178
+ };
179
+ }
180
+ // Default context
181
+ return {
182
+ framework: 'Unknown',
183
+ language: 'JavaScript/TypeScript',
184
+ testRunner: 'Vitest',
185
+ database: null,
186
+ existingTests: 0,
187
+ coverage: null,
188
+ dependencies: [],
189
+ target: 'http://localhost:3000'
190
+ };
191
+ }
192
+ /**
193
+ * Generate prompt with context
194
+ */
195
+ generatePrompt(context) {
196
+ const promptSrc = path.resolve(__dirname, '../../../prompts/EXECUTE.md');
197
+ if (!fs.existsSync(promptSrc)) {
198
+ return this.generateFallbackPrompt(context);
199
+ }
200
+ const basePrompt = fs.readFileSync(promptSrc, 'utf-8');
201
+ const contextBlock = this.buildContextBlock(context);
202
+ return contextBlock + '\n' + basePrompt;
203
+ }
204
+ /**
205
+ * Build context block for prompt
206
+ */
207
+ buildContextBlock(context) {
208
+ const lines = [
209
+ '> **DETECTED CONTEXT**'
210
+ ];
211
+ if (context.framework) {
212
+ lines.push(`> Framework: ${context.framework}`);
213
+ }
214
+ if (context.language) {
215
+ lines.push(`> Language: ${context.language}`);
216
+ }
217
+ if (context.testRunner) {
218
+ lines.push(`> Test Runner: ${context.testRunner}`);
219
+ }
220
+ if (context.database) {
221
+ lines.push(`> Database: ${context.database.type ?? 'detected'}`);
222
+ lines.push(`> DB Connection: ${context.database.connection ?? 'DATABASE_URL'}`);
223
+ lines.push(`> Test Strategy: Transaction rollback (do not modify real data)`);
224
+ }
225
+ else {
226
+ lines.push(`> Database: none detected`);
227
+ }
228
+ lines.push(`> Existing Tests: ${context.existingTests ?? 0} found`);
229
+ if (context.coverage) {
230
+ lines.push(`> Current Coverage: ${context.coverage}`);
231
+ }
232
+ if (context.dependencies && context.dependencies.length > 0) {
233
+ lines.push(`> Key Dependencies: ${context.dependencies.join(', ')}`);
234
+ }
235
+ lines.push(`> Target: ${context.target ?? 'http://localhost:3000'}`);
236
+ lines.push('');
237
+ lines.push('> **IMPORTANT**:');
238
+ lines.push('> - Use this detected context. Do not re-detect.');
239
+ lines.push('> - Always read source code before generating tests.');
240
+ lines.push('> - Run tests to verify they work before declaring success.');
241
+ if (context.database) {
242
+ lines.push('> - Use transaction rollback for DB tests - never modify real data.');
243
+ }
244
+ lines.push('');
245
+ lines.push('> **WORKFLOW**:');
246
+ lines.push('> 1. Read ./.daemon/EXECUTE.md for full instructions');
247
+ lines.push('> 2. Generate tests following the detected patterns');
248
+ lines.push('> 3. Run tests via Docker container');
249
+ lines.push('> 4. Fix failures iteratively until all pass');
250
+ lines.push('> 5. Generate final report');
251
+ lines.push('');
252
+ return lines.join('\n');
253
+ }
254
+ /**
255
+ * Generate fallback prompt
256
+ */
257
+ generateFallbackPrompt(context) {
258
+ return `# Daemon — Automated Testing Process
259
+
260
+ > **DETECTED CONTEXT**
261
+ > Framework: ${context.framework ?? 'Unknown'}
262
+ > Language: ${context.language ?? 'JavaScript/TypeScript'}
263
+ > Test Runner: ${context.testRunner ?? 'Vitest'}
264
+ > Database: ${context.database?.type ?? 'none'}
265
+ > Target: ${context.target ?? 'http://localhost:3000'}
266
+
267
+ ## Instructions
268
+
269
+ This is the automated testing agent. Follow these steps:
270
+
271
+ 1. **Read the project structure** - Understand the framework and patterns
272
+ 2. **Generate unit tests** - For components, hooks, utilities
273
+ 3. **Generate integration tests** - For API routes and database operations
274
+ 4. **Generate E2E tests** - For critical user flows
275
+ 5. **Run and fix** - Iteratively fix failing tests
276
+
277
+ ## Testing Templates
278
+
279
+ ### Unit Tests
280
+ \`\`\`typescript
281
+ import { render, screen } from '@testing-library/react';
282
+ import { describe, it, expect } from 'vitest';
283
+
284
+ describe('Component', () => {
285
+ it('should render', () => {
286
+ render(<Component />);
287
+ expect(screen.getByRole('button')).toBeInTheDocument();
288
+ });
289
+ });
290
+ \`\`\`
291
+
292
+ ## Fix Loop
293
+
294
+ When tests fail:
295
+ 1. Analyze the error
296
+ 2. Determine if it's a test issue or code bug
297
+ 3. Apply fix
298
+ 4. Re-test
299
+
300
+ ## Completion
301
+
302
+ Report:
303
+ \`\`\`
304
+ ✓ Unit Tests: X created, Y passing
305
+ ✓ Integration: X created, Y passing
306
+ ✓ E2E: X created, Y passing
307
+ \`\`\`
308
+ `;
309
+ }
310
+ // Helper functions for styling
311
+ cyan(text) {
312
+ return `\x1b[36m${text}\x1b[0m`;
313
+ }
314
+ bold(text) {
315
+ return `\x1b[1m${text}\x1b[0m`;
316
+ }
62
317
  /**
63
318
  * Parse command line arguments
64
319
  */
@@ -91,126 +346,5 @@ export class InitCommand {
91
346
  }
92
347
  return options;
93
348
  }
94
- /**
95
- * Create Daemon configuration
96
- */
97
- async createConfig(options) {
98
- const configPath = path.join(process.cwd(), 'daemon.config.json');
99
- if (await fileHelper.exists(configPath) && !options.force) {
100
- logger.warn('Daemon config already exists. Use --force to overwrite.');
101
- return;
102
- }
103
- const config = {
104
- version: '0.6.3',
105
- testRunner: 'vitest',
106
- e2eRunner: 'playwright',
107
- performanceTool: 'k6',
108
- generatedAt: new Date().toISOString(),
109
- };
110
- await fileHelper.writeJson(configPath, config);
111
- logger.debug(`Created config: ${configPath}`);
112
- }
113
- /**
114
- * Copy EXECUTE.md prompt to project
115
- */
116
- async createExecutePrompt() {
117
- const executePath = path.join(process.cwd(), 'EXECUTE.md');
118
- // Get the path to the packaged EXECUTE.md
119
- // When published, it's in the package root
120
- const packageRoot = path.resolve(__dirname, '../../../..');
121
- const sourceExecutePath = path.join(packageRoot, 'prompts', 'EXECUTE.md');
122
- try {
123
- // Try to read from the package
124
- const fs = await import('node:fs');
125
- if (fs.existsSync(sourceExecutePath)) {
126
- const content = fs.readFileSync(sourceExecutePath, 'utf-8');
127
- await fileHelper.writeFile(executePath, content);
128
- logger.success('Created EXECUTE.md - Testing guide for AI agents');
129
- logger.info('Use this file with Claude Code or other AI agents for automated testing');
130
- }
131
- else {
132
- // Fallback: Create a minimal EXECUTE.md
133
- const minimalContent = `# Daemon - Testing Instructions
134
-
135
- This project has been initialized with Daemon testing toolkit.
136
-
137
- ## Quick Start
138
-
139
- 1. Start the Docker container:
140
- \`\`\`bash
141
- docker build -t daemon-tools -f Dockerfile.daemon .
142
- docker run -d --name daemon-tools -v \$(pwd):/app -p 3000:3000 daemon-tools
143
- \`\`\`
144
-
145
- 2. Run tests:
146
- \`\`\`bash
147
- # Unit tests
148
- docker exec daemon-tools npm test
149
-
150
- # E2E tests
151
- docker exec daemon-tools npx playwright test
152
-
153
- # Performance tests
154
- docker exec daemon-tools k6 run tests/performance/load.js
155
- \`\`\`
156
-
157
- ## Full Documentation
158
-
159
- For complete testing instructions, see:
160
- https://github.com/Pamacea/daemon
161
-
162
- Generated by Daemon v${await this.getVersion()}
163
- `;
164
- await fileHelper.writeFile(executePath, minimalContent);
165
- logger.success('Created EXECUTE.md');
166
- }
167
- }
168
- catch (error) {
169
- logger.warn('Could not create EXECUTE.md:', error);
170
- }
171
- }
172
- /**
173
- * Setup Docker container
174
- */
175
- async setupDocker() {
176
- const dockerfileSourcePath = path.resolve(__dirname, '../../../bin/Dockerfile');
177
- const dockerfileDestPath = path.join(process.cwd(), 'Dockerfile.daemon');
178
- try {
179
- const fs = await import('node:fs');
180
- if (fs.existsSync(dockerfileSourcePath)) {
181
- fs.copyFileSync(dockerfileSourcePath, dockerfileDestPath);
182
- logger.success('Created Dockerfile.daemon - Docker configuration for testing tools');
183
- logger.info('To build: docker build -t daemon-tools -f Dockerfile.daemon .');
184
- }
185
- }
186
- catch (error) {
187
- logger.warn('Could not copy Dockerfile:', error);
188
- }
189
- }
190
- /**
191
- * Get package version
192
- */
193
- async getVersion() {
194
- try {
195
- const packagePath = path.resolve(__dirname, '../../../package.json');
196
- const fs = await import('node:fs');
197
- const pkg = JSON.parse(fs.readFileSync(packagePath, 'utf-8'));
198
- return pkg.version || '0.6.3';
199
- }
200
- catch {
201
- return '0.6.3';
202
- }
203
- }
204
- /**
205
- * Create test directories
206
- */
207
- async createDirectories(options) {
208
- const baseDir = options.output ?? path.join(process.cwd(), 'tests');
209
- await fileHelper.ensureDir(baseDir);
210
- await fileHelper.ensureDir(path.join(baseDir, 'unit'));
211
- await fileHelper.ensureDir(path.join(baseDir, 'integration'));
212
- await fileHelper.ensureDir(path.join(baseDir, 'e2e'));
213
- logger.debug(`Created test directories in: ${baseDir}`);
214
- }
215
349
  }
216
350
  //# sourceMappingURL=init.command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.command.js","sourceRoot":"","sources":["../../../src/cli/commands/init.command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.command.js","sourceRoot":"","sources":["../../../src/cli/commands/init.command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Optimize Command
3
+ *
4
+ * Analyzes and applies code optimizations.
5
+ *
6
+ * @module cli/commands/optimize
7
+ */
8
+ import type { OptimizeOptions } from './command.types.js';
9
+ /**
10
+ * Mock OptimizationService - assumes service exists
11
+ * TODO: Replace with actual import when service is implemented
12
+ * import { OptimizationService } from '../../services/optimization/optimization.service.js';
13
+ */
14
+ /**
15
+ * Optimization type
16
+ */
17
+ type OptimizationType = 'performance' | 'security' | 'bugs' | 'maintainability';
18
+ /**
19
+ * Optimization priority
20
+ */
21
+ type OptimizationPriority = 'critical' | 'high' | 'medium' | 'low';
22
+ /**
23
+ * Optimization suggestion
24
+ */
25
+ interface OptimizationSuggestion {
26
+ id: string;
27
+ type: OptimizationType;
28
+ priority: OptimizationPriority;
29
+ category: string;
30
+ title: string;
31
+ description: string;
32
+ file?: string;
33
+ line?: number;
34
+ currentCode?: string;
35
+ suggestedCode?: string;
36
+ impact: string;
37
+ effort: 'low' | 'medium' | 'high';
38
+ risk: 'low' | 'medium' | 'high';
39
+ }
40
+ /**
41
+ * Optimization result
42
+ */
43
+ interface OptimizationResult {
44
+ summary: {
45
+ totalSuggestions: number;
46
+ byType: Record<string, number>;
47
+ byPriority: Record<string, number>;
48
+ applied: number;
49
+ skipped: number;
50
+ failed: number;
51
+ };
52
+ suggestions: OptimizationSuggestion[];
53
+ appliedChanges: Array<{
54
+ suggestionId: string;
55
+ file: string;
56
+ status: 'applied' | 'skipped' | 'failed';
57
+ error?: string;
58
+ }>;
59
+ }
60
+ /**
61
+ * Optimize command for Daemon
62
+ *
63
+ * Analyzes and applies optimizations:
64
+ * - Performance improvements
65
+ * - Bug fixes
66
+ * - Security enhancements
67
+ * - Maintainability improvements
68
+ * - Supports dry-run mode
69
+ * - Can limit number of changes
70
+ */
71
+ export declare class OptimizeCommand {
72
+ /**
73
+ * Execute the optimize command
74
+ */
75
+ execute(args: string[]): Promise<void>;
76
+ /**
77
+ * Parse command line arguments
78
+ */
79
+ private parseArgs;
80
+ /**
81
+ * Analyze project and apply optimizations
82
+ */
83
+ private analyzeAndOptimize;
84
+ /**
85
+ * Generate mock optimization suggestions
86
+ */
87
+ private generateMockSuggestions;
88
+ /**
89
+ * Apply a single optimization
90
+ */
91
+ private applyOptimization;
92
+ /**
93
+ * Group suggestions by type
94
+ */
95
+ private groupSuggestionsByType;
96
+ /**
97
+ * Group suggestions by priority
98
+ */
99
+ private groupSuggestionsByPriority;
100
+ /**
101
+ * Display formatted results
102
+ */
103
+ private displayResults;
104
+ /**
105
+ * Delay helper for simulating async work
106
+ */
107
+ private delay;
108
+ }
109
+ export type { OptimizeOptions, OptimizationSuggestion, OptimizationResult };
110
+ //# sourceMappingURL=optimize.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimize.command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/optimize.command.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAM1D;;;;GAIG;AAEH;;GAEG;AACH,KAAK,gBAAgB,GAAG,aAAa,GAAG,UAAU,GAAG,MAAM,GAAG,iBAAiB,CAAC;AAEhF;;GAEG;AACH,KAAK,oBAAoB,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEnE;;GAEG;AACH,UAAU,sBAAsB;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAClC,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACjC;AAED;;GAEG;AACH,UAAU,kBAAkB;IAC1B,OAAO,EAAE;QACP,gBAAgB,EAAE,MAAM,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACnC,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,WAAW,EAAE,sBAAsB,EAAE,CAAC;IACtC,cAAc,EAAE,KAAK,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;QACzC,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;CACJ;AAED;;;;;;;;;;GAUG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC5C;;OAEG;IACH,OAAO,CAAC,SAAS;IAoEjB;;OAEG;YACW,kBAAkB;IAyGhC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAoK/B;;OAEG;YACW,iBAAiB;IA8B/B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAO9B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAOlC;;OAEG;IACH,OAAO,CAAC,cAAc;IAoGtB;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd;AAED,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,CAAC"}