@oalacea/daemon 0.5.0 → 0.6.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 (222) hide show
  1. package/LICENSE +23 -23
  2. package/README.md +147 -141
  3. package/bin/Dockerfile +75 -74
  4. package/dist/cli/cli.d.ts +42 -0
  5. package/dist/cli/cli.d.ts.map +1 -0
  6. package/dist/cli/cli.js +89 -0
  7. package/dist/cli/cli.js.map +1 -0
  8. package/dist/cli/commands/detect.command.d.ts +39 -0
  9. package/dist/cli/commands/detect.command.d.ts.map +1 -0
  10. package/dist/cli/commands/detect.command.js +111 -0
  11. package/dist/cli/commands/detect.command.js.map +1 -0
  12. package/dist/cli/commands/index.d.ts +14 -0
  13. package/dist/cli/commands/index.d.ts.map +1 -0
  14. package/dist/cli/commands/index.js +11 -0
  15. package/dist/cli/commands/index.js.map +1 -0
  16. package/dist/cli/commands/init.command.d.ts +41 -0
  17. package/dist/cli/commands/init.command.d.ts.map +1 -0
  18. package/dist/cli/commands/init.command.js +111 -0
  19. package/dist/cli/commands/init.command.js.map +1 -0
  20. package/dist/cli/commands/test.command.d.ts +58 -0
  21. package/dist/cli/commands/test.command.d.ts.map +1 -0
  22. package/dist/cli/commands/test.command.js +180 -0
  23. package/dist/cli/commands/test.command.js.map +1 -0
  24. package/dist/cli/index.d.ts +8 -0
  25. package/dist/cli/index.d.ts.map +1 -0
  26. package/dist/cli/index.js +10 -0
  27. package/dist/cli/index.js.map +1 -0
  28. package/dist/core/config/daemon.config.d.ts +32 -0
  29. package/dist/core/config/daemon.config.d.ts.map +1 -0
  30. package/dist/core/config/daemon.config.js +83 -0
  31. package/dist/core/config/daemon.config.js.map +1 -0
  32. package/dist/core/config/index.d.ts +5 -0
  33. package/dist/core/config/index.d.ts.map +1 -0
  34. package/dist/core/config/index.js +5 -0
  35. package/dist/core/config/index.js.map +1 -0
  36. package/dist/core/constants.d.ts +36 -0
  37. package/dist/core/constants.d.ts.map +1 -0
  38. package/dist/core/constants.js +56 -0
  39. package/dist/core/constants.js.map +1 -0
  40. package/dist/core/types/common.types.d.ts +250 -0
  41. package/dist/core/types/common.types.d.ts.map +1 -0
  42. package/dist/core/types/common.types.js +7 -0
  43. package/dist/core/types/common.types.js.map +1 -0
  44. package/dist/core/types/detection.types.d.ts +232 -0
  45. package/dist/core/types/detection.types.d.ts.map +1 -0
  46. package/dist/core/types/detection.types.js +22 -0
  47. package/dist/core/types/detection.types.js.map +1 -0
  48. package/dist/core/types/docker.types.d.ts +322 -0
  49. package/dist/core/types/docker.types.d.ts.map +1 -0
  50. package/dist/core/types/docker.types.js +7 -0
  51. package/dist/core/types/docker.types.js.map +1 -0
  52. package/dist/core/types/index.d.ts +11 -0
  53. package/dist/core/types/index.d.ts.map +1 -0
  54. package/dist/core/types/index.js +7 -0
  55. package/dist/core/types/index.js.map +1 -0
  56. package/dist/core/types/project.types.d.ts +74 -0
  57. package/dist/core/types/project.types.d.ts.map +1 -0
  58. package/dist/core/types/project.types.js +7 -0
  59. package/dist/core/types/project.types.js.map +1 -0
  60. package/dist/core/types/shared.types.d.ts +118 -0
  61. package/dist/core/types/shared.types.d.ts.map +1 -0
  62. package/dist/core/types/shared.types.js +7 -0
  63. package/dist/core/types/shared.types.js.map +1 -0
  64. package/dist/core/types/test.types.d.ts +230 -0
  65. package/dist/core/types/test.types.d.ts.map +1 -0
  66. package/dist/core/types/test.types.js +7 -0
  67. package/dist/core/types/test.types.js.map +1 -0
  68. package/dist/services/detection/__tests__/framework-detector.test.d.ts +5 -0
  69. package/dist/services/detection/__tests__/framework-detector.test.d.ts.map +1 -0
  70. package/dist/services/detection/__tests__/framework-detector.test.js +52 -0
  71. package/dist/services/detection/__tests__/framework-detector.test.js.map +1 -0
  72. package/dist/services/detection/framework-detector.d.ts +179 -0
  73. package/dist/services/detection/framework-detector.d.ts.map +1 -0
  74. package/dist/services/detection/framework-detector.js +636 -0
  75. package/dist/services/detection/framework-detector.js.map +1 -0
  76. package/dist/services/detection/index.d.ts +10 -0
  77. package/dist/services/detection/index.d.ts.map +1 -0
  78. package/dist/services/detection/index.js +7 -0
  79. package/dist/services/detection/index.js.map +1 -0
  80. package/dist/services/docker/__tests__/docker-manager.test.d.ts +5 -0
  81. package/dist/services/docker/__tests__/docker-manager.test.d.ts.map +1 -0
  82. package/dist/services/docker/__tests__/docker-manager.test.js +67 -0
  83. package/dist/services/docker/__tests__/docker-manager.test.js.map +1 -0
  84. package/dist/services/docker/docker-manager.d.ts +157 -0
  85. package/dist/services/docker/docker-manager.d.ts.map +1 -0
  86. package/dist/services/docker/docker-manager.js +516 -0
  87. package/dist/services/docker/docker-manager.js.map +1 -0
  88. package/dist/services/docker/index.d.ts +9 -0
  89. package/dist/services/docker/index.d.ts.map +1 -0
  90. package/dist/services/docker/index.js +9 -0
  91. package/dist/services/docker/index.js.map +1 -0
  92. package/dist/services/index.d.ts +10 -0
  93. package/dist/services/index.d.ts.map +1 -0
  94. package/dist/services/index.js +8 -0
  95. package/dist/services/index.js.map +1 -0
  96. package/dist/shared/errors/__tests__/base.error.test.d.ts +5 -0
  97. package/dist/shared/errors/__tests__/base.error.test.d.ts.map +1 -0
  98. package/dist/shared/errors/__tests__/base.error.test.js +61 -0
  99. package/dist/shared/errors/__tests__/base.error.test.js.map +1 -0
  100. package/dist/shared/errors/__tests__/command.error.test.d.ts +5 -0
  101. package/dist/shared/errors/__tests__/command.error.test.d.ts.map +1 -0
  102. package/dist/shared/errors/__tests__/command.error.test.js +62 -0
  103. package/dist/shared/errors/__tests__/command.error.test.js.map +1 -0
  104. package/dist/shared/errors/__tests__/file.error.test.d.ts +5 -0
  105. package/dist/shared/errors/__tests__/file.error.test.d.ts.map +1 -0
  106. package/dist/shared/errors/__tests__/file.error.test.js +75 -0
  107. package/dist/shared/errors/__tests__/file.error.test.js.map +1 -0
  108. package/dist/shared/errors/__tests__/index.test.d.ts +5 -0
  109. package/dist/shared/errors/__tests__/index.test.d.ts.map +1 -0
  110. package/dist/shared/errors/__tests__/index.test.js +62 -0
  111. package/dist/shared/errors/__tests__/index.test.js.map +1 -0
  112. package/dist/shared/errors/__tests__/validation.error.test.d.ts +5 -0
  113. package/dist/shared/errors/__tests__/validation.error.test.d.ts.map +1 -0
  114. package/dist/shared/errors/__tests__/validation.error.test.js +79 -0
  115. package/dist/shared/errors/__tests__/validation.error.test.js.map +1 -0
  116. package/dist/shared/errors/base.error.d.ts +54 -0
  117. package/dist/shared/errors/base.error.d.ts.map +1 -0
  118. package/dist/shared/errors/base.error.js +85 -0
  119. package/dist/shared/errors/base.error.js.map +1 -0
  120. package/dist/shared/errors/command.error.d.ts +58 -0
  121. package/dist/shared/errors/command.error.d.ts.map +1 -0
  122. package/dist/shared/errors/command.error.js +102 -0
  123. package/dist/shared/errors/command.error.js.map +1 -0
  124. package/dist/shared/errors/detection.error.d.ts +42 -0
  125. package/dist/shared/errors/detection.error.d.ts.map +1 -0
  126. package/dist/shared/errors/detection.error.js +82 -0
  127. package/dist/shared/errors/detection.error.js.map +1 -0
  128. package/dist/shared/errors/docker.error.d.ts +142 -0
  129. package/dist/shared/errors/docker.error.d.ts.map +1 -0
  130. package/dist/shared/errors/docker.error.js +172 -0
  131. package/dist/shared/errors/docker.error.js.map +1 -0
  132. package/dist/shared/errors/file.error.d.ts +66 -0
  133. package/dist/shared/errors/file.error.d.ts.map +1 -0
  134. package/dist/shared/errors/file.error.js +93 -0
  135. package/dist/shared/errors/file.error.js.map +1 -0
  136. package/dist/shared/errors/index.d.ts +56 -0
  137. package/dist/shared/errors/index.d.ts.map +1 -0
  138. package/dist/shared/errors/index.js +86 -0
  139. package/dist/shared/errors/index.js.map +1 -0
  140. package/dist/shared/errors/validation.error.d.ts +67 -0
  141. package/dist/shared/errors/validation.error.d.ts.map +1 -0
  142. package/dist/shared/errors/validation.error.js +97 -0
  143. package/dist/shared/errors/validation.error.js.map +1 -0
  144. package/dist/shared/templates/index.d.ts +2 -0
  145. package/dist/shared/templates/index.d.ts.map +1 -0
  146. package/dist/shared/templates/index.js +2 -0
  147. package/dist/shared/templates/index.js.map +1 -0
  148. package/dist/shared/templates/prompt-builder.d.ts +2 -0
  149. package/dist/shared/templates/prompt-builder.d.ts.map +1 -0
  150. package/dist/shared/templates/prompt-builder.js +2 -0
  151. package/dist/shared/templates/prompt-builder.js.map +1 -0
  152. package/dist/shared/templates/template-engine.d.ts +2 -0
  153. package/dist/shared/templates/template-engine.d.ts.map +1 -0
  154. package/dist/shared/templates/template-engine.js +2 -0
  155. package/dist/shared/templates/template-engine.js.map +1 -0
  156. package/dist/shared/utils/__tests__/command-executor.test.d.ts +5 -0
  157. package/dist/shared/utils/__tests__/command-executor.test.d.ts.map +1 -0
  158. package/dist/shared/utils/__tests__/command-executor.test.js +45 -0
  159. package/dist/shared/utils/__tests__/command-executor.test.js.map +1 -0
  160. package/dist/shared/utils/__tests__/file-helper.test.d.ts +5 -0
  161. package/dist/shared/utils/__tests__/file-helper.test.d.ts.map +1 -0
  162. package/dist/shared/utils/__tests__/file-helper.test.js +71 -0
  163. package/dist/shared/utils/__tests__/file-helper.test.js.map +1 -0
  164. package/dist/shared/utils/__tests__/logger.test.d.ts +5 -0
  165. package/dist/shared/utils/__tests__/logger.test.d.ts.map +1 -0
  166. package/dist/shared/utils/__tests__/logger.test.js +83 -0
  167. package/dist/shared/utils/__tests__/logger.test.js.map +1 -0
  168. package/dist/shared/utils/command-executer.d.ts +2 -0
  169. package/dist/shared/utils/command-executer.d.ts.map +1 -0
  170. package/dist/shared/utils/command-executer.js +2 -0
  171. package/dist/shared/utils/command-executer.js.map +1 -0
  172. package/dist/shared/utils/command-executor.d.ts +255 -0
  173. package/dist/shared/utils/command-executor.d.ts.map +1 -0
  174. package/dist/shared/utils/command-executor.js +287 -0
  175. package/dist/shared/utils/command-executor.js.map +1 -0
  176. package/dist/shared/utils/file-helper.d.ts +86 -0
  177. package/dist/shared/utils/file-helper.d.ts.map +1 -0
  178. package/dist/shared/utils/file-helper.js +323 -0
  179. package/dist/shared/utils/file-helper.js.map +1 -0
  180. package/dist/shared/utils/index.d.ts +9 -0
  181. package/dist/shared/utils/index.d.ts.map +1 -0
  182. package/dist/shared/utils/index.js +9 -0
  183. package/dist/shared/utils/index.js.map +1 -0
  184. package/dist/shared/utils/logger.d.ts +163 -0
  185. package/dist/shared/utils/logger.d.ts.map +1 -0
  186. package/dist/shared/utils/logger.js +389 -0
  187. package/dist/shared/utils/logger.js.map +1 -0
  188. package/package.json +53 -34
  189. package/prompts/DEPS_EFFICIENCY.md +558 -558
  190. package/prompts/E2E.md +491 -491
  191. package/prompts/EXECUTE.md +1060 -1060
  192. package/prompts/INTEGRATION_API.md +484 -484
  193. package/prompts/INTEGRATION_DB.md +425 -425
  194. package/prompts/PERF_API.md +433 -433
  195. package/prompts/PERF_DB.md +430 -430
  196. package/prompts/PERF_FRONT.md +357 -357
  197. package/prompts/REMEDIATION.md +482 -482
  198. package/prompts/UNIT.md +260 -260
  199. package/templates/README.md +38 -38
  200. package/templates/k6/load-test.js +54 -54
  201. package/templates/playwright/e2e.spec.ts +61 -61
  202. package/templates/vitest/angular-component.test.ts +38 -38
  203. package/templates/vitest/api.test.ts +51 -51
  204. package/templates/vitest/component.test.ts +27 -27
  205. package/templates/vitest/hook.test.ts +36 -36
  206. package/templates/vitest/solid-component.test.ts +34 -34
  207. package/templates/vitest/svelte-component.test.ts +33 -33
  208. package/templates/vitest/vue-component.test.ts +39 -39
  209. package/CHANGELOG.md +0 -38
  210. package/agents/deps-analyzer.js +0 -366
  211. package/agents/detector.js +0 -570
  212. package/agents/fix-engine.js +0 -305
  213. package/agents/lighthouse-scanner.js +0 -405
  214. package/agents/perf-analyzer.js +0 -294
  215. package/agents/perf-front-analyzer.js +0 -229
  216. package/agents/test-generator.js +0 -387
  217. package/agents/test-runner.js +0 -318
  218. package/bin/cli.js +0 -449
  219. package/lib/config.js +0 -250
  220. package/lib/docker.js +0 -207
  221. package/lib/reporter.js +0 -297
  222. package/scripts/dev.js +0 -106
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Detect Command
3
+ *
4
+ * Detects and displays project framework and tools.
5
+ *
6
+ * @module cli/commands/detect
7
+ */
8
+ export interface DetectOptions {
9
+ /** Output format (text, json) */
10
+ format?: 'text' | 'json';
11
+ /** Verbose output */
12
+ verbose?: boolean;
13
+ /** Include alternatives */
14
+ includeAlternatives?: boolean;
15
+ }
16
+ /**
17
+ * Detect command for Daemon
18
+ */
19
+ export declare class DetectCommand {
20
+ private readonly detector;
21
+ constructor();
22
+ /**
23
+ * Execute the detect command
24
+ */
25
+ execute(args: string[]): Promise<void>;
26
+ /**
27
+ * Parse command line arguments
28
+ */
29
+ private parseArgs;
30
+ /**
31
+ * Display detection results in text format
32
+ */
33
+ private displayResults;
34
+ /**
35
+ * Format a detection result with confidence indicator
36
+ */
37
+ private formatResult;
38
+ }
39
+ //# sourceMappingURL=detect.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect.command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/detect.command.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,MAAM,WAAW,aAAa;IAC5B,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,qBAAqB;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2BAA2B;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;;IAM7C;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB5C;;OAEG;IACH,OAAO,CAAC,SAAS;IAyBjB;;OAEG;IACH,OAAO,CAAC,cAAc;IA0CtB;;OAEG;IACH,OAAO,CAAC,YAAY;CAQrB"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Detect Command
3
+ *
4
+ * Detects and displays project framework and tools.
5
+ *
6
+ * @module cli/commands/detect
7
+ */
8
+ import { createLogger } from '../../shared/utils/logger.js';
9
+ import { FrameworkDetector } from '../../services/detection/framework-detector.js';
10
+ const logger = createLogger('DetectCommand');
11
+ /**
12
+ * Detect command for Daemon
13
+ */
14
+ export class DetectCommand {
15
+ detector;
16
+ constructor() {
17
+ this.detector = new FrameworkDetector();
18
+ }
19
+ /**
20
+ * Execute the detect command
21
+ */
22
+ async execute(args) {
23
+ const options = this.parseArgs(args);
24
+ try {
25
+ const results = await this.detector.detectAll(process.cwd(), options);
26
+ if (options.format === 'json') {
27
+ console.log(JSON.stringify(results, null, 2));
28
+ }
29
+ else {
30
+ this.displayResults(results, options);
31
+ }
32
+ }
33
+ catch (error) {
34
+ logger.error('Detection failed', error);
35
+ throw error;
36
+ }
37
+ }
38
+ /**
39
+ * Parse command line arguments
40
+ */
41
+ parseArgs(args) {
42
+ const options = {
43
+ format: 'text',
44
+ verbose: false,
45
+ includeAlternatives: false,
46
+ };
47
+ for (const arg of args) {
48
+ switch (arg) {
49
+ case '--json':
50
+ options.format = 'json';
51
+ break;
52
+ case '--verbose':
53
+ case '-v':
54
+ options.verbose = true;
55
+ break;
56
+ case '--alternatives':
57
+ options.includeAlternatives = true;
58
+ break;
59
+ }
60
+ }
61
+ return options;
62
+ }
63
+ /**
64
+ * Display detection results in text format
65
+ */
66
+ displayResults(results, options) {
67
+ console.log('\n🔍 Project Detection Results\n');
68
+ // Framework
69
+ console.log(`Framework: ${this.formatResult(results.framework.value, results.framework.confidence)}`);
70
+ if (results.framework.alternatives && options.includeAlternatives) {
71
+ for (const alt of results.framework.alternatives) {
72
+ console.log(` └─ Alternative: ${alt.value} (${Math.round(alt.confidence * 100)}%)`);
73
+ }
74
+ }
75
+ // Language
76
+ console.log(`Language: ${this.formatResult(results.language.value, results.language.confidence)}`);
77
+ // Test Runner
78
+ console.log(`Test Runner: ${this.formatResult(results.testRunner.value, results.testRunner.confidence)}`);
79
+ // Database
80
+ if (results.database.value) {
81
+ console.log(`Database: ${this.formatResult(results.database.value, results.database.confidence)}`);
82
+ }
83
+ // Test counts
84
+ console.log(`\nExisting Tests: ${results.testCounts.total}`);
85
+ if (options.verbose && results.testCounts.total > 0) {
86
+ console.log(` - In src/: ${results.testCounts.inSrc}`);
87
+ console.log(` - Outside src/: ${results.testCounts.outsideSrc}`);
88
+ }
89
+ // Coverage
90
+ if (results.coverage) {
91
+ console.log(`\nCoverage: ${results.coverage.total.toFixed(1)}%`);
92
+ if (options.verbose) {
93
+ console.log(` - Lines: ${results.coverage.lines.toFixed(1)}%`);
94
+ console.log(` - Branches: ${results.coverage.branches.toFixed(1)}%`);
95
+ console.log(` - Functions: ${results.coverage.functions.toFixed(1)}%`);
96
+ }
97
+ }
98
+ console.log(`\nAnalysis completed in ${results.duration}ms`);
99
+ }
100
+ /**
101
+ * Format a detection result with confidence indicator
102
+ */
103
+ formatResult(value, confidence) {
104
+ if (!value)
105
+ return 'Not detected';
106
+ const percentage = Math.round(confidence * 100);
107
+ const indicator = percentage >= 90 ? '✓' : percentage >= 70 ? '~' : '?';
108
+ return `${value} ${indicator} (${percentage}%)`;
109
+ }
110
+ }
111
+ //# sourceMappingURL=detect.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect.command.js","sourceRoot":"","sources":["../../../src/cli/commands/detect.command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * CLI Commands Module
3
+ *
4
+ * Exports all CLI commands for the Daemon toolkit.
5
+ *
6
+ * @module cli/commands
7
+ */
8
+ export { InitCommand } from './init.command.js';
9
+ export type { InitOptions } from './init.command.js';
10
+ export { DetectCommand } from './detect.command.js';
11
+ export type { DetectOptions } from './detect.command.js';
12
+ export { TestCommand } from './test.command.js';
13
+ export type { TestOptions } from './test.command.js';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * CLI Commands Module
3
+ *
4
+ * Exports all CLI commands for the Daemon toolkit.
5
+ *
6
+ * @module cli/commands
7
+ */
8
+ export { InitCommand } from './init.command.js';
9
+ export { DetectCommand } from './detect.command.js';
10
+ export { TestCommand } from './test.command.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Init Command
3
+ *
4
+ * Initializes a project with Daemon testing toolkit.
5
+ *
6
+ * @module cli/commands/init
7
+ */
8
+ export interface InitOptions {
9
+ /** Force overwrite existing files */
10
+ force?: boolean;
11
+ /** Skip framework detection */
12
+ skipDetection?: boolean;
13
+ /** Custom output directory */
14
+ output?: string;
15
+ /** Verbose output */
16
+ verbose?: boolean;
17
+ }
18
+ /**
19
+ * Initialize command for Daemon
20
+ */
21
+ export declare class InitCommand {
22
+ private readonly detector;
23
+ constructor();
24
+ /**
25
+ * Execute the init command
26
+ */
27
+ execute(args: string[]): Promise<void>;
28
+ /**
29
+ * Parse command line arguments
30
+ */
31
+ private parseArgs;
32
+ /**
33
+ * Create Daemon configuration
34
+ */
35
+ private createConfig;
36
+ /**
37
+ * Create test directories
38
+ */
39
+ private createDirectories;
40
+ }
41
+ //# sourceMappingURL=init.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.command.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,MAAM,WAAW,WAAW;IAC1B,qCAAqC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,+BAA+B;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;;IAM7C;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B5C;;OAEG;IACH,OAAO,CAAC,SAAS;IA+BjB;;OAEG;YACW,YAAY;IAoB1B;;OAEG;YACW,iBAAiB;CAUhC"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Init Command
3
+ *
4
+ * Initializes a project with Daemon testing toolkit.
5
+ *
6
+ * @module cli/commands/init
7
+ */
8
+ import * as path from 'node:path';
9
+ import { createLogger } from '../../shared/utils/logger.js';
10
+ import { fileHelper } from '../../shared/utils/file-helper.js';
11
+ import { FrameworkDetector } from '../../services/detection/framework-detector.js';
12
+ const logger = createLogger('InitCommand');
13
+ /**
14
+ * Initialize command for Daemon
15
+ */
16
+ export class InitCommand {
17
+ detector;
18
+ constructor() {
19
+ this.detector = new FrameworkDetector();
20
+ }
21
+ /**
22
+ * Execute the init command
23
+ */
24
+ async execute(args) {
25
+ logger.info('Initializing Daemon...');
26
+ const options = this.parseArgs(args);
27
+ try {
28
+ // Detect framework
29
+ let framework = 'Unknown';
30
+ if (!options.skipDetection) {
31
+ const result = await this.detector.detect(process.cwd());
32
+ framework = result.value ?? 'Unknown';
33
+ logger.info(`Detected framework: ${framework}`);
34
+ }
35
+ // Create daemon config
36
+ await this.createConfig(options);
37
+ // Create test directories
38
+ await this.createDirectories(options);
39
+ logger.success('Daemon initialized successfully!');
40
+ logger.info('Run "daemon detect" to see project details');
41
+ logger.info('Run "daemon test" to generate tests');
42
+ }
43
+ catch (error) {
44
+ logger.error('Failed to initialize Daemon', error);
45
+ throw error;
46
+ }
47
+ }
48
+ /**
49
+ * Parse command line arguments
50
+ */
51
+ parseArgs(args) {
52
+ const options = {
53
+ force: false,
54
+ skipDetection: false,
55
+ verbose: false,
56
+ };
57
+ for (const arg of args) {
58
+ switch (arg) {
59
+ case '--force':
60
+ case '-f':
61
+ options.force = true;
62
+ break;
63
+ case '--skip-detection':
64
+ options.skipDetection = true;
65
+ break;
66
+ case '--verbose':
67
+ case '-v':
68
+ options.verbose = true;
69
+ break;
70
+ default:
71
+ if (arg.startsWith('--output=')) {
72
+ const value = arg.split('=')[1];
73
+ if (value)
74
+ options.output = value;
75
+ }
76
+ }
77
+ }
78
+ return options;
79
+ }
80
+ /**
81
+ * Create Daemon configuration
82
+ */
83
+ async createConfig(options) {
84
+ const configPath = path.join(process.cwd(), 'daemon.config.json');
85
+ if (await fileHelper.exists(configPath) && !options.force) {
86
+ logger.warn('Daemon config already exists. Use --force to overwrite.');
87
+ return;
88
+ }
89
+ const config = {
90
+ version: '0.6.0',
91
+ testRunner: 'vitest',
92
+ e2eRunner: 'playwright',
93
+ performanceTool: 'k6',
94
+ generatedAt: new Date().toISOString(),
95
+ };
96
+ await fileHelper.writeJson(configPath, config);
97
+ logger.debug(`Created config: ${configPath}`);
98
+ }
99
+ /**
100
+ * Create test directories
101
+ */
102
+ async createDirectories(options) {
103
+ const baseDir = options.output ?? path.join(process.cwd(), 'tests');
104
+ await fileHelper.ensureDir(baseDir);
105
+ await fileHelper.ensureDir(path.join(baseDir, 'unit'));
106
+ await fileHelper.ensureDir(path.join(baseDir, 'integration'));
107
+ await fileHelper.ensureDir(path.join(baseDir, 'e2e'));
108
+ logger.debug(`Created test directories in: ${baseDir}`);
109
+ }
110
+ }
111
+ //# sourceMappingURL=init.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.command.js","sourceRoot":"","sources":["../../../src/cli/commands/init.command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Test Command
3
+ *
4
+ * Generates and runs tests for the project.
5
+ *
6
+ * @module cli/commands/test
7
+ */
8
+ export interface TestOptions {
9
+ /** Generate tests only (don't run) */
10
+ generateOnly?: boolean;
11
+ /** Run existing tests only (don't generate) */
12
+ runOnly?: boolean;
13
+ /** Include coverage report */
14
+ coverage?: boolean;
15
+ /** Watch mode */
16
+ watch?: boolean;
17
+ /** Specific test file pattern */
18
+ pattern?: string;
19
+ /** Verbose output */
20
+ verbose?: boolean;
21
+ }
22
+ /**
23
+ * Test command for Daemon
24
+ */
25
+ export declare class TestCommand {
26
+ private readonly detector;
27
+ private readonly docker;
28
+ constructor();
29
+ /**
30
+ * Execute the test command
31
+ */
32
+ execute(args: string[]): Promise<void>;
33
+ /**
34
+ * Parse command line arguments
35
+ */
36
+ private parseArgs;
37
+ /**
38
+ * Setup Docker container for testing
39
+ */
40
+ private setupDocker;
41
+ /**
42
+ * Generate tests for the project
43
+ */
44
+ private generateTests;
45
+ /**
46
+ * Run tests for the project
47
+ */
48
+ private runTests;
49
+ /**
50
+ * Get the test runner for the framework
51
+ */
52
+ private getTestRunner;
53
+ /**
54
+ * Build the test command
55
+ */
56
+ private buildTestCommand;
57
+ }
58
+ //# sourceMappingURL=test.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/test.command.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,MAAM,WAAW,WAAW;IAC1B,sCAAsC;IACtC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qBAAqB;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;;IAOvC;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B5C;;OAEG;IACH,OAAO,CAAC,SAAS;IA0CjB;;OAEG;YACW,WAAW;IAazB;;OAEG;YACW,aAAa;IAS3B;;OAEG;YACW,QAAQ;IAwBtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAmBrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAqBzB"}
@@ -0,0 +1,180 @@
1
+ /**
2
+ * Test Command
3
+ *
4
+ * Generates and runs tests for the project.
5
+ *
6
+ * @module cli/commands/test
7
+ */
8
+ import { createLogger } from '../../shared/utils/logger.js';
9
+ import { FrameworkDetector } from '../../services/detection/framework-detector.js';
10
+ import { DockerManager } from '../../services/docker/docker-manager.js';
11
+ const logger = createLogger('TestCommand');
12
+ /**
13
+ * Test command for Daemon
14
+ */
15
+ export class TestCommand {
16
+ detector;
17
+ docker;
18
+ constructor() {
19
+ this.detector = new FrameworkDetector();
20
+ this.docker = new DockerManager();
21
+ }
22
+ /**
23
+ * Execute the test command
24
+ */
25
+ async execute(args) {
26
+ const options = this.parseArgs(args);
27
+ try {
28
+ // Detect framework first
29
+ const detection = await this.detector.detect(process.cwd());
30
+ const framework = detection.value ?? 'Unknown';
31
+ logger.info(`Framework detected: ${framework}`);
32
+ // Setup Docker if needed
33
+ if (!options.runOnly) {
34
+ await this.setupDocker();
35
+ }
36
+ // Generate tests if needed
37
+ if (!options.runOnly) {
38
+ await this.generateTests(framework, options);
39
+ }
40
+ // Run tests
41
+ if (!options.generateOnly) {
42
+ await this.runTests(framework, options);
43
+ }
44
+ }
45
+ catch (error) {
46
+ logger.error('Test execution failed', error);
47
+ throw error;
48
+ }
49
+ }
50
+ /**
51
+ * Parse command line arguments
52
+ */
53
+ parseArgs(args) {
54
+ const options = {
55
+ generateOnly: false,
56
+ runOnly: false,
57
+ coverage: false,
58
+ watch: false,
59
+ verbose: false,
60
+ };
61
+ for (const arg of args) {
62
+ switch (arg) {
63
+ case '--generate-only':
64
+ case '-g':
65
+ options.generateOnly = true;
66
+ break;
67
+ case '--run-only':
68
+ case '-r':
69
+ options.runOnly = true;
70
+ break;
71
+ case '--coverage':
72
+ case '-c':
73
+ options.coverage = true;
74
+ break;
75
+ case '--watch':
76
+ case '-w':
77
+ options.watch = true;
78
+ break;
79
+ case '--verbose':
80
+ case '-v':
81
+ options.verbose = true;
82
+ break;
83
+ default:
84
+ if (arg.startsWith('--pattern=')) {
85
+ const value = arg.split('=')[1];
86
+ if (value)
87
+ options.pattern = value;
88
+ }
89
+ }
90
+ }
91
+ return options;
92
+ }
93
+ /**
94
+ * Setup Docker container for testing
95
+ */
96
+ async setupDocker() {
97
+ logger.info('Setting up Docker container...');
98
+ const result = await this.docker.setup({
99
+ silent: false,
100
+ onBuildStart: () => logger.info('Building Docker image...'),
101
+ onBuildComplete: () => logger.success('Docker image built'),
102
+ onBuildError: (err) => logger.error('Docker build failed', err),
103
+ });
104
+ logger.debug(`Docker status: ${result.status} (${result.duration}ms)`);
105
+ }
106
+ /**
107
+ * Generate tests for the project
108
+ */
109
+ async generateTests(_framework, _options) {
110
+ logger.info('Generating tests...');
111
+ // TODO: Implement test generation logic
112
+ // This will use the TestGenerator service
113
+ logger.success('Tests generated');
114
+ }
115
+ /**
116
+ * Run tests for the project
117
+ */
118
+ async runTests(framework, options) {
119
+ logger.info('Running tests...');
120
+ const testRunner = this.getTestRunner(framework);
121
+ const command = this.buildTestCommand(testRunner, options);
122
+ const result = await this.docker.exec(command, {
123
+ timeout: 300000, // 5 minutes
124
+ });
125
+ if (result.success) {
126
+ logger.success('Tests passed');
127
+ if (options.verbose && result.stdout) {
128
+ console.log(result.stdout);
129
+ }
130
+ }
131
+ else {
132
+ logger.error('Tests failed');
133
+ if (result.stderr) {
134
+ console.error(result.stderr);
135
+ }
136
+ throw new Error('Test execution failed');
137
+ }
138
+ }
139
+ /**
140
+ * Get the test runner for the framework
141
+ */
142
+ getTestRunner(framework) {
143
+ switch (framework) {
144
+ case 'Next.js':
145
+ case 'Remix':
146
+ case 'SvelteKit':
147
+ case 'Vite + React':
148
+ case 'Vite + Vue':
149
+ case 'React':
150
+ case 'Vue':
151
+ case 'Svelte':
152
+ case 'Angular':
153
+ return 'vitest';
154
+ case 'NestJS':
155
+ return 'jest';
156
+ default:
157
+ return 'vitest';
158
+ }
159
+ }
160
+ /**
161
+ * Build the test command
162
+ */
163
+ buildTestCommand(runner, options) {
164
+ const parts = ['npx', runner, 'run'];
165
+ if (options.coverage) {
166
+ parts.push('--coverage');
167
+ }
168
+ if (options.watch) {
169
+ parts.push('--watch');
170
+ }
171
+ if (options.pattern) {
172
+ parts.push('--pattern', options.pattern);
173
+ }
174
+ if (options.verbose) {
175
+ parts.push('--verbose');
176
+ }
177
+ return parts.join(' ');
178
+ }
179
+ }
180
+ //# sourceMappingURL=test.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.command.js","sourceRoot":"","sources":["../../../src/cli/commands/test.command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Daemon CLI - Entry Point
4
+ *
5
+ * Main entry point for the Daemon toolkit CLI.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;;;GAIG"}
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Daemon CLI - Entry Point
4
+ *
5
+ * Main entry point for the Daemon toolkit CLI.
6
+ */
7
+ import { DaemonCli } from './cli.js';
8
+ const cli = new DaemonCli();
9
+ await cli.run(process.argv);
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC;AAC5B,MAAM,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}