@oalacea/daemon 0.5.1 → 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 (199) hide show
  1. package/dist/cli/cli.d.ts +42 -0
  2. package/dist/cli/cli.d.ts.map +1 -0
  3. package/dist/cli/cli.js +89 -0
  4. package/dist/cli/cli.js.map +1 -0
  5. package/dist/cli/commands/detect.command.d.ts +39 -0
  6. package/dist/cli/commands/detect.command.d.ts.map +1 -0
  7. package/dist/cli/commands/detect.command.js +111 -0
  8. package/dist/cli/commands/detect.command.js.map +1 -0
  9. package/dist/cli/commands/index.d.ts +14 -0
  10. package/dist/cli/commands/index.d.ts.map +1 -0
  11. package/dist/cli/commands/index.js +11 -0
  12. package/dist/cli/commands/index.js.map +1 -0
  13. package/dist/cli/commands/init.command.d.ts +41 -0
  14. package/dist/cli/commands/init.command.d.ts.map +1 -0
  15. package/dist/cli/commands/init.command.js +111 -0
  16. package/dist/cli/commands/init.command.js.map +1 -0
  17. package/dist/cli/commands/test.command.d.ts +58 -0
  18. package/dist/cli/commands/test.command.d.ts.map +1 -0
  19. package/dist/cli/commands/test.command.js +180 -0
  20. package/dist/cli/commands/test.command.js.map +1 -0
  21. package/dist/cli/index.d.ts +8 -0
  22. package/dist/cli/index.d.ts.map +1 -0
  23. package/dist/cli/index.js +10 -0
  24. package/dist/cli/index.js.map +1 -0
  25. package/dist/core/config/daemon.config.d.ts +32 -0
  26. package/dist/core/config/daemon.config.d.ts.map +1 -0
  27. package/dist/core/config/daemon.config.js +83 -0
  28. package/dist/core/config/daemon.config.js.map +1 -0
  29. package/dist/core/config/index.d.ts +5 -0
  30. package/dist/core/config/index.d.ts.map +1 -0
  31. package/dist/core/config/index.js +5 -0
  32. package/dist/core/config/index.js.map +1 -0
  33. package/dist/core/constants.d.ts +36 -0
  34. package/dist/core/constants.d.ts.map +1 -0
  35. package/dist/core/constants.js +56 -0
  36. package/dist/core/constants.js.map +1 -0
  37. package/dist/core/types/common.types.d.ts +250 -0
  38. package/dist/core/types/common.types.d.ts.map +1 -0
  39. package/dist/core/types/common.types.js +7 -0
  40. package/dist/core/types/common.types.js.map +1 -0
  41. package/dist/core/types/detection.types.d.ts +232 -0
  42. package/dist/core/types/detection.types.d.ts.map +1 -0
  43. package/dist/core/types/detection.types.js +22 -0
  44. package/dist/core/types/detection.types.js.map +1 -0
  45. package/dist/core/types/docker.types.d.ts +322 -0
  46. package/dist/core/types/docker.types.d.ts.map +1 -0
  47. package/dist/core/types/docker.types.js +7 -0
  48. package/dist/core/types/docker.types.js.map +1 -0
  49. package/dist/core/types/index.d.ts +11 -0
  50. package/dist/core/types/index.d.ts.map +1 -0
  51. package/dist/core/types/index.js +7 -0
  52. package/dist/core/types/index.js.map +1 -0
  53. package/dist/core/types/project.types.d.ts +74 -0
  54. package/dist/core/types/project.types.d.ts.map +1 -0
  55. package/dist/core/types/project.types.js +7 -0
  56. package/dist/core/types/project.types.js.map +1 -0
  57. package/dist/core/types/shared.types.d.ts +118 -0
  58. package/dist/core/types/shared.types.d.ts.map +1 -0
  59. package/dist/core/types/shared.types.js +7 -0
  60. package/dist/core/types/shared.types.js.map +1 -0
  61. package/dist/core/types/test.types.d.ts +230 -0
  62. package/dist/core/types/test.types.d.ts.map +1 -0
  63. package/dist/core/types/test.types.js +7 -0
  64. package/dist/core/types/test.types.js.map +1 -0
  65. package/dist/services/detection/__tests__/framework-detector.test.d.ts +5 -0
  66. package/dist/services/detection/__tests__/framework-detector.test.d.ts.map +1 -0
  67. package/dist/services/detection/__tests__/framework-detector.test.js +52 -0
  68. package/dist/services/detection/__tests__/framework-detector.test.js.map +1 -0
  69. package/dist/services/detection/framework-detector.d.ts +179 -0
  70. package/dist/services/detection/framework-detector.d.ts.map +1 -0
  71. package/dist/services/detection/framework-detector.js +636 -0
  72. package/dist/services/detection/framework-detector.js.map +1 -0
  73. package/dist/services/detection/index.d.ts +10 -0
  74. package/dist/services/detection/index.d.ts.map +1 -0
  75. package/dist/services/detection/index.js +7 -0
  76. package/dist/services/detection/index.js.map +1 -0
  77. package/dist/services/docker/__tests__/docker-manager.test.d.ts +5 -0
  78. package/dist/services/docker/__tests__/docker-manager.test.d.ts.map +1 -0
  79. package/dist/services/docker/__tests__/docker-manager.test.js +67 -0
  80. package/dist/services/docker/__tests__/docker-manager.test.js.map +1 -0
  81. package/dist/services/docker/docker-manager.d.ts +157 -0
  82. package/dist/services/docker/docker-manager.d.ts.map +1 -0
  83. package/dist/services/docker/docker-manager.js +516 -0
  84. package/dist/services/docker/docker-manager.js.map +1 -0
  85. package/dist/services/docker/index.d.ts +9 -0
  86. package/dist/services/docker/index.d.ts.map +1 -0
  87. package/dist/services/docker/index.js +9 -0
  88. package/dist/services/docker/index.js.map +1 -0
  89. package/dist/services/index.d.ts +10 -0
  90. package/dist/services/index.d.ts.map +1 -0
  91. package/dist/services/index.js +8 -0
  92. package/dist/services/index.js.map +1 -0
  93. package/dist/shared/errors/__tests__/base.error.test.d.ts +5 -0
  94. package/dist/shared/errors/__tests__/base.error.test.d.ts.map +1 -0
  95. package/dist/shared/errors/__tests__/base.error.test.js +61 -0
  96. package/dist/shared/errors/__tests__/base.error.test.js.map +1 -0
  97. package/dist/shared/errors/__tests__/command.error.test.d.ts +5 -0
  98. package/dist/shared/errors/__tests__/command.error.test.d.ts.map +1 -0
  99. package/dist/shared/errors/__tests__/command.error.test.js +62 -0
  100. package/dist/shared/errors/__tests__/command.error.test.js.map +1 -0
  101. package/dist/shared/errors/__tests__/file.error.test.d.ts +5 -0
  102. package/dist/shared/errors/__tests__/file.error.test.d.ts.map +1 -0
  103. package/dist/shared/errors/__tests__/file.error.test.js +75 -0
  104. package/dist/shared/errors/__tests__/file.error.test.js.map +1 -0
  105. package/dist/shared/errors/__tests__/index.test.d.ts +5 -0
  106. package/dist/shared/errors/__tests__/index.test.d.ts.map +1 -0
  107. package/dist/shared/errors/__tests__/index.test.js +62 -0
  108. package/dist/shared/errors/__tests__/index.test.js.map +1 -0
  109. package/dist/shared/errors/__tests__/validation.error.test.d.ts +5 -0
  110. package/dist/shared/errors/__tests__/validation.error.test.d.ts.map +1 -0
  111. package/dist/shared/errors/__tests__/validation.error.test.js +79 -0
  112. package/dist/shared/errors/__tests__/validation.error.test.js.map +1 -0
  113. package/dist/shared/errors/base.error.d.ts +54 -0
  114. package/dist/shared/errors/base.error.d.ts.map +1 -0
  115. package/dist/shared/errors/base.error.js +85 -0
  116. package/dist/shared/errors/base.error.js.map +1 -0
  117. package/dist/shared/errors/command.error.d.ts +58 -0
  118. package/dist/shared/errors/command.error.d.ts.map +1 -0
  119. package/dist/shared/errors/command.error.js +102 -0
  120. package/dist/shared/errors/command.error.js.map +1 -0
  121. package/dist/shared/errors/detection.error.d.ts +42 -0
  122. package/dist/shared/errors/detection.error.d.ts.map +1 -0
  123. package/dist/shared/errors/detection.error.js +82 -0
  124. package/dist/shared/errors/detection.error.js.map +1 -0
  125. package/dist/shared/errors/docker.error.d.ts +142 -0
  126. package/dist/shared/errors/docker.error.d.ts.map +1 -0
  127. package/dist/shared/errors/docker.error.js +172 -0
  128. package/dist/shared/errors/docker.error.js.map +1 -0
  129. package/dist/shared/errors/file.error.d.ts +66 -0
  130. package/dist/shared/errors/file.error.d.ts.map +1 -0
  131. package/dist/shared/errors/file.error.js +93 -0
  132. package/dist/shared/errors/file.error.js.map +1 -0
  133. package/dist/shared/errors/index.d.ts +56 -0
  134. package/dist/shared/errors/index.d.ts.map +1 -0
  135. package/dist/shared/errors/index.js +86 -0
  136. package/dist/shared/errors/index.js.map +1 -0
  137. package/dist/shared/errors/validation.error.d.ts +67 -0
  138. package/dist/shared/errors/validation.error.d.ts.map +1 -0
  139. package/dist/shared/errors/validation.error.js +97 -0
  140. package/dist/shared/errors/validation.error.js.map +1 -0
  141. package/dist/shared/templates/index.d.ts +2 -0
  142. package/dist/shared/templates/index.d.ts.map +1 -0
  143. package/dist/shared/templates/index.js +2 -0
  144. package/dist/shared/templates/index.js.map +1 -0
  145. package/dist/shared/templates/prompt-builder.d.ts +2 -0
  146. package/dist/shared/templates/prompt-builder.d.ts.map +1 -0
  147. package/dist/shared/templates/prompt-builder.js +2 -0
  148. package/dist/shared/templates/prompt-builder.js.map +1 -0
  149. package/dist/shared/templates/template-engine.d.ts +2 -0
  150. package/dist/shared/templates/template-engine.d.ts.map +1 -0
  151. package/dist/shared/templates/template-engine.js +2 -0
  152. package/dist/shared/templates/template-engine.js.map +1 -0
  153. package/dist/shared/utils/__tests__/command-executor.test.d.ts +5 -0
  154. package/dist/shared/utils/__tests__/command-executor.test.d.ts.map +1 -0
  155. package/dist/shared/utils/__tests__/command-executor.test.js +45 -0
  156. package/dist/shared/utils/__tests__/command-executor.test.js.map +1 -0
  157. package/dist/shared/utils/__tests__/file-helper.test.d.ts +5 -0
  158. package/dist/shared/utils/__tests__/file-helper.test.d.ts.map +1 -0
  159. package/dist/shared/utils/__tests__/file-helper.test.js +71 -0
  160. package/dist/shared/utils/__tests__/file-helper.test.js.map +1 -0
  161. package/dist/shared/utils/__tests__/logger.test.d.ts +5 -0
  162. package/dist/shared/utils/__tests__/logger.test.d.ts.map +1 -0
  163. package/dist/shared/utils/__tests__/logger.test.js +83 -0
  164. package/dist/shared/utils/__tests__/logger.test.js.map +1 -0
  165. package/dist/shared/utils/command-executer.d.ts +2 -0
  166. package/dist/shared/utils/command-executer.d.ts.map +1 -0
  167. package/dist/shared/utils/command-executer.js +2 -0
  168. package/dist/shared/utils/command-executer.js.map +1 -0
  169. package/dist/shared/utils/command-executor.d.ts +255 -0
  170. package/dist/shared/utils/command-executor.d.ts.map +1 -0
  171. package/dist/shared/utils/command-executor.js +287 -0
  172. package/dist/shared/utils/command-executor.js.map +1 -0
  173. package/dist/shared/utils/file-helper.d.ts +86 -0
  174. package/dist/shared/utils/file-helper.d.ts.map +1 -0
  175. package/dist/shared/utils/file-helper.js +323 -0
  176. package/dist/shared/utils/file-helper.js.map +1 -0
  177. package/dist/shared/utils/index.d.ts +9 -0
  178. package/dist/shared/utils/index.d.ts.map +1 -0
  179. package/dist/shared/utils/index.js +9 -0
  180. package/dist/shared/utils/index.js.map +1 -0
  181. package/dist/shared/utils/logger.d.ts +163 -0
  182. package/dist/shared/utils/logger.d.ts.map +1 -0
  183. package/dist/shared/utils/logger.js +389 -0
  184. package/dist/shared/utils/logger.js.map +1 -0
  185. package/package.json +25 -6
  186. package/CHANGELOG.md +0 -46
  187. package/agents/deps-analyzer.js +0 -366
  188. package/agents/detector.js +0 -570
  189. package/agents/fix-engine.js +0 -305
  190. package/agents/lighthouse-scanner.js +0 -405
  191. package/agents/perf-analyzer.js +0 -294
  192. package/agents/perf-front-analyzer.js +0 -229
  193. package/agents/test-generator.js +0 -387
  194. package/agents/test-runner.js +0 -318
  195. package/bin/cli.js +0 -449
  196. package/lib/config.js +0 -250
  197. package/lib/docker.js +0 -207
  198. package/lib/reporter.js +0 -297
  199. package/scripts/dev.js +0 -106
@@ -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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Daemon configuration
3
+ *
4
+ * Central configuration management for the Daemon toolkit.
5
+ */
6
+ import type { DockerConfig } from '../types/index.js';
7
+ import type { DaemonConfig as PackageDaemonConfig } from '../types/project.types.js';
8
+ /**
9
+ * Get Daemon configuration from package.json
10
+ */
11
+ export declare function getDaemonConfig(projectDir?: string): PackageDaemonConfig;
12
+ /**
13
+ * Get Docker configuration
14
+ */
15
+ export declare function getDockerConfig(projectDir?: string): DockerConfig;
16
+ /**
17
+ * Get test directory
18
+ */
19
+ export declare function getTestDir(projectDir?: string): string;
20
+ /**
21
+ * Get source directory
22
+ */
23
+ export declare function getSrcDir(projectDir?: string): string;
24
+ /**
25
+ * Get test port
26
+ */
27
+ export declare function getTestPort(projectDir?: string): number;
28
+ /**
29
+ * Get project root directory
30
+ */
31
+ export declare function getProjectRoot(startDir?: string): string;
32
+ //# sourceMappingURL=daemon.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.config.d.ts","sourceRoot":"","sources":["../../../src/core/config/daemon.config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAarF;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,GAAE,MAAsB,GAAG,mBAAmB,CAavF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,GAAE,MAAsB,GAAG,YAAY,CAShF;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,UAAU,GAAE,MAAsB,GAAG,MAAM,CAGrE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,UAAU,GAAE,MAAsB,GAAG,MAAM,CAepE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,GAAE,MAAsB,GAAG,MAAM,CAGtE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,CAcvE"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Daemon configuration
3
+ *
4
+ * Central configuration management for the Daemon toolkit.
5
+ */
6
+ import { readFileSync, existsSync } from 'node:fs';
7
+ import { join, dirname } from 'node:path';
8
+ import { fileURLToPath } from 'node:url';
9
+ import { DEFAULT_IMAGE_NAME, DEFAULT_CONTAINER_NAME, DEFAULT_TEST_DIR, DEFAULT_TEST_PORT, } from '../constants.js';
10
+ const __filename = fileURLToPath(import.meta.url);
11
+ const __dirname = dirname(__filename);
12
+ /**
13
+ * Get Daemon configuration from package.json
14
+ */
15
+ export function getDaemonConfig(projectDir = process.cwd()) {
16
+ const packagePath = join(projectDir, 'package.json');
17
+ if (!existsSync(packagePath)) {
18
+ return {};
19
+ }
20
+ try {
21
+ const pkg = JSON.parse(readFileSync(packagePath, 'utf-8'));
22
+ return pkg.daemon || {};
23
+ }
24
+ catch {
25
+ return {};
26
+ }
27
+ }
28
+ /**
29
+ * Get Docker configuration
30
+ */
31
+ export function getDockerConfig(projectDir = process.cwd()) {
32
+ const daemonConfig = getDaemonConfig(projectDir);
33
+ const containerName = daemonConfig.imageName?.replace('/', '-') || DEFAULT_CONTAINER_NAME;
34
+ return {
35
+ imageName: daemonConfig.imageName || DEFAULT_IMAGE_NAME,
36
+ containerName,
37
+ dockerfilePath: join(projectDir, 'bin', 'Dockerfile'),
38
+ };
39
+ }
40
+ /**
41
+ * Get test directory
42
+ */
43
+ export function getTestDir(projectDir = process.cwd()) {
44
+ const daemonConfig = getDaemonConfig(projectDir);
45
+ return daemonConfig.testDir || DEFAULT_TEST_DIR;
46
+ }
47
+ /**
48
+ * Get source directory
49
+ */
50
+ export function getSrcDir(projectDir = process.cwd()) {
51
+ const daemonConfig = getDaemonConfig(projectDir);
52
+ if (daemonConfig.srcDir) {
53
+ return daemonConfig.srcDir;
54
+ }
55
+ // Auto-detect source directory
56
+ const appDir = join(projectDir, 'app');
57
+ if (existsSync(appDir)) {
58
+ return 'app';
59
+ }
60
+ return 'src';
61
+ }
62
+ /**
63
+ * Get test port
64
+ */
65
+ export function getTestPort(projectDir = process.cwd()) {
66
+ const daemonConfig = getDaemonConfig(projectDir);
67
+ return daemonConfig.port || DEFAULT_TEST_PORT;
68
+ }
69
+ /**
70
+ * Get project root directory
71
+ */
72
+ export function getProjectRoot(startDir = process.cwd()) {
73
+ const currentDir = startDir;
74
+ while (currentDir !== dirname(currentDir)) {
75
+ const pkgPath = join(currentDir, 'package.json');
76
+ if (existsSync(pkgPath)) {
77
+ return currentDir;
78
+ }
79
+ return getProjectRoot(dirname(currentDir));
80
+ }
81
+ return startDir;
82
+ }
83
+ //# sourceMappingURL=daemon.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.config.js","sourceRoot":"","sources":["../../../src/core/config/daemon.config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Config barrel export
3
+ */
4
+ export * from './daemon.config.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/config/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Config barrel export
3
+ */
4
+ export * from './daemon.config.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/config/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Daemon constants
3
+ *
4
+ * Central constants used across the application.
5
+ */
6
+ /** Default Docker image name */
7
+ export declare const DEFAULT_IMAGE_NAME = "daemon-tools";
8
+ /** Default container name */
9
+ export declare const DEFAULT_CONTAINER_NAME = "daemon-tools";
10
+ /** Default Dockerfile path */
11
+ export declare const DEFAULT_DOCKERFILE_PATH = "/bin/Dockerfile";
12
+ /** Default test directory */
13
+ export declare const DEFAULT_TEST_DIR = "tests";
14
+ /** Default source directory */
15
+ export declare const DEFAULT_SRC_DIR = "src";
16
+ /** Default port for testing */
17
+ export declare const DEFAULT_TEST_PORT = 3000;
18
+ /** Default command timeout in milliseconds */
19
+ export declare const DEFAULT_COMMAND_TIMEOUT = 60000;
20
+ /** Default Docker build timeout in milliseconds */
21
+ export declare const DEFAULT_DOCKER_BUILD_TIMEOUT = 600000;
22
+ /** Default log level */
23
+ export declare const DEFAULT_LOG_LEVEL = "info";
24
+ /** Supported test file patterns */
25
+ export declare const TEST_FILE_PATTERNS: readonly [".test.ts", ".test.tsx", ".test.js", ".test.jsx", ".spec.ts", ".spec.tsx", ".spec.js", ".spec.jsx"];
26
+ /** Directories to skip during traversal */
27
+ export declare const SKIP_DIRECTORIES: readonly ["node_modules", ".next", "dist", "build", ".git", "coverage", ".nyc_output", ".cache", "tmp", "temp"];
28
+ /** Environment variable names */
29
+ export declare const ENV_VARS: {
30
+ readonly DAEMON_PORT: "DAEMON_PORT";
31
+ readonly DAEMON_IMAGE: "DAEMON_IMAGE";
32
+ readonly DAEMON_CONTAINER: "DAEMON_CONTAINER";
33
+ readonly DAEMON_LOG_LEVEL: "DAEMON_LOG_LEVEL";
34
+ readonly DAEMON_SILENT: "DAEMON_SILENT";
35
+ };
36
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,gCAAgC;AAChC,eAAO,MAAM,kBAAkB,iBAAiB,CAAC;AAEjD,6BAA6B;AAC7B,eAAO,MAAM,sBAAsB,iBAAiB,CAAC;AAErD,8BAA8B;AAC9B,eAAO,MAAM,uBAAuB,oBAAoB,CAAC;AAEzD,6BAA6B;AAC7B,eAAO,MAAM,gBAAgB,UAAU,CAAC;AAExC,+BAA+B;AAC/B,eAAO,MAAM,eAAe,QAAQ,CAAC;AAErC,+BAA+B;AAC/B,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC,8CAA8C;AAC9C,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAE7C,mDAAmD;AACnD,eAAO,MAAM,4BAA4B,SAAS,CAAC;AAEnD,wBAAwB;AACxB,eAAO,MAAM,iBAAiB,SAAS,CAAC;AAExC,mCAAmC;AACnC,eAAO,MAAM,kBAAkB,+GASrB,CAAC;AAEX,2CAA2C;AAC3C,eAAO,MAAM,gBAAgB,iHAWnB,CAAC;AAEX,iCAAiC;AACjC,eAAO,MAAM,QAAQ;;;;;;CAMX,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Daemon constants
3
+ *
4
+ * Central constants used across the application.
5
+ */
6
+ /** Default Docker image name */
7
+ export const DEFAULT_IMAGE_NAME = 'daemon-tools';
8
+ /** Default container name */
9
+ export const DEFAULT_CONTAINER_NAME = 'daemon-tools';
10
+ /** Default Dockerfile path */
11
+ export const DEFAULT_DOCKERFILE_PATH = '/bin/Dockerfile';
12
+ /** Default test directory */
13
+ export const DEFAULT_TEST_DIR = 'tests';
14
+ /** Default source directory */
15
+ export const DEFAULT_SRC_DIR = 'src';
16
+ /** Default port for testing */
17
+ export const DEFAULT_TEST_PORT = 3000;
18
+ /** Default command timeout in milliseconds */
19
+ export const DEFAULT_COMMAND_TIMEOUT = 60000;
20
+ /** Default Docker build timeout in milliseconds */
21
+ export const DEFAULT_DOCKER_BUILD_TIMEOUT = 600000;
22
+ /** Default log level */
23
+ export const DEFAULT_LOG_LEVEL = 'info';
24
+ /** Supported test file patterns */
25
+ export const TEST_FILE_PATTERNS = [
26
+ '.test.ts',
27
+ '.test.tsx',
28
+ '.test.js',
29
+ '.test.jsx',
30
+ '.spec.ts',
31
+ '.spec.tsx',
32
+ '.spec.js',
33
+ '.spec.jsx',
34
+ ];
35
+ /** Directories to skip during traversal */
36
+ export const SKIP_DIRECTORIES = [
37
+ 'node_modules',
38
+ '.next',
39
+ 'dist',
40
+ 'build',
41
+ '.git',
42
+ 'coverage',
43
+ '.nyc_output',
44
+ '.cache',
45
+ 'tmp',
46
+ 'temp',
47
+ ];
48
+ /** Environment variable names */
49
+ export const ENV_VARS = {
50
+ DAEMON_PORT: 'DAEMON_PORT',
51
+ DAEMON_IMAGE: 'DAEMON_IMAGE',
52
+ DAEMON_CONTAINER: 'DAEMON_CONTAINER',
53
+ DAEMON_LOG_LEVEL: 'DAEMON_LOG_LEVEL',
54
+ DAEMON_SILENT: 'DAEMON_SILENT',
55
+ };
56
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,gCAAgC;AAChC,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAC;AAEjD,6BAA6B;AAC7B,MAAM,CAAC,MAAM,sBAAsB,GAAG,cAAc,CAAC;AAErD,8BAA8B;AAC9B,MAAM,CAAC,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;AAEzD,6BAA6B;AAC7B,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAExC,+BAA+B;AAC/B,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AAErC,+BAA+B;AAC/B,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAEtC,8CAA8C;AAC9C,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAE7C,mDAAmD;AACnD,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC;AAEnD,wBAAwB;AACxB,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAExC,mCAAmC;AACnC,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,UAAU;IACV,WAAW;IACX,UAAU;IACV,WAAW;IACX,UAAU;IACV,WAAW;IACX,UAAU;IACV,WAAW;CACH,CAAC;AAEX,2CAA2C;AAC3C,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,cAAc;IACd,OAAO;IACP,MAAM;IACN,OAAO;IACP,MAAM;IACN,UAAU;IACV,aAAa;IACb,QAAQ;IACR,KAAK;IACL,MAAM;CACE,CAAC;AAEX,iCAAiC;AACjC,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,WAAW,EAAE,aAAa;IAC1B,YAAY,EAAE,cAAc;IAC5B,gBAAgB,EAAE,kBAAkB;IACpC,gBAAgB,EAAE,kBAAkB;IACpC,aAAa,EAAE,eAAe;CACtB,CAAC"}