@oalacea/daemon 0.5.1 → 0.6.1

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,230 @@
1
+ /**
2
+ * Test Types
3
+ *
4
+ * Types for test generation, execution, and reporting.
5
+ */
6
+ /**
7
+ * Test type categories
8
+ */
9
+ export type TestType = 'unit' | 'integration' | 'e2e' | 'performance' | 'load' | 'security';
10
+ /**
11
+ * Test status states
12
+ */
13
+ export type TestStatus = 'pending' | 'running' | 'passed' | 'failed' | 'skipped' | 'timed-out';
14
+ /**
15
+ * Test file format
16
+ */
17
+ export type TestFormat = 'ts' | 'js' | 'tsx' | 'jsx';
18
+ /**
19
+ * Single test result
20
+ */
21
+ export interface TestResult {
22
+ /** Test name/identifier */
23
+ name: string;
24
+ /** Test file path */
25
+ file: string;
26
+ /** Test status */
27
+ status: TestStatus;
28
+ /** Execution duration in milliseconds */
29
+ duration: number;
30
+ /** Error message if failed */
31
+ error?: string;
32
+ /** Error stack trace if failed */
33
+ stack?: string;
34
+ /** Retry attempt number */
35
+ retry?: number;
36
+ /** Flaky detection */
37
+ flaky?: boolean;
38
+ }
39
+ /**
40
+ * Test suite result
41
+ */
42
+ export interface TestSuiteResult {
43
+ /** Suite name */
44
+ name: string;
45
+ /** File path */
46
+ file: string;
47
+ /** Individual test results */
48
+ tests: TestResult[];
49
+ /** Total duration in milliseconds */
50
+ duration: number;
51
+ /** Suite status (derived from tests) */
52
+ status: TestStatus;
53
+ /** Number of passed tests */
54
+ passed: number;
55
+ /** Number of failed tests */
56
+ failed: number;
57
+ /** Number of skipped tests */
58
+ skipped: number;
59
+ }
60
+ /**
61
+ * Test run summary
62
+ */
63
+ export interface TestSummary {
64
+ /** Total number of tests */
65
+ total: number;
66
+ /** Number of passed tests */
67
+ passed: number;
68
+ /** Number of failed tests */
69
+ failed: number;
70
+ /** Number of skipped tests */
71
+ skipped: number;
72
+ /** Total duration in milliseconds */
73
+ duration: number;
74
+ /** Overall success status */
75
+ success: boolean;
76
+ /** Test suites */
77
+ suites: TestSuiteResult[];
78
+ /** Test run timestamp */
79
+ timestamp: Date;
80
+ }
81
+ /**
82
+ * Coverage metrics
83
+ */
84
+ export interface CoverageMetrics {
85
+ /** Line coverage percentage */
86
+ lines: number;
87
+ /** Branch coverage percentage */
88
+ branches: number;
89
+ /** Function coverage percentage */
90
+ functions: number;
91
+ /** Statement coverage percentage */
92
+ statements: number;
93
+ /** Overall percentage */
94
+ total: number;
95
+ }
96
+ /**
97
+ * Coverage report
98
+ */
99
+ export interface CoverageReport {
100
+ /** Coverage metrics */
101
+ metrics: CoverageMetrics;
102
+ /** Coverage by file */
103
+ files: FileCoverage[];
104
+ /** Uncovered lines by file */
105
+ uncovered: Record<string, number[]>;
106
+ /** Report timestamp */
107
+ timestamp: Date;
108
+ }
109
+ /**
110
+ * File coverage information
111
+ */
112
+ export interface FileCoverage {
113
+ /** File path */
114
+ path: string;
115
+ /** Line coverage percentage */
116
+ lines: number;
117
+ /** Branch coverage percentage */
118
+ branches: number;
119
+ /** Function coverage percentage */
120
+ functions: number;
121
+ /** Statement coverage percentage */
122
+ statements: number;
123
+ /** Total percentage */
124
+ total: number;
125
+ /** Uncovered line numbers */
126
+ uncoveredLines: number[];
127
+ }
128
+ /**
129
+ * Test generation options
130
+ */
131
+ export interface TestGenerationOptions {
132
+ /** Test type to generate */
133
+ type: TestType;
134
+ /** Source file to test */
135
+ sourceFile: string;
136
+ /** Output directory */
137
+ outputDir: string;
138
+ /** Test framework */
139
+ framework: 'vitest' | 'jest' | 'mocha' | 'playwright' | 'cypress';
140
+ /** Include coverage setup */
141
+ includeCoverage?: boolean;
142
+ /** Generate snapshot tests */
143
+ snapshots?: boolean;
144
+ /** Test file format */
145
+ format?: TestFormat;
146
+ /** Custom template path */
147
+ templatePath?: string;
148
+ }
149
+ /**
150
+ * Test generation result
151
+ */
152
+ export interface TestGenerationResult {
153
+ /** Number of files generated */
154
+ filesGenerated: number;
155
+ /** Generated file paths */
156
+ files: string[];
157
+ /** Generation duration in milliseconds */
158
+ duration: number;
159
+ /** Warnings during generation */
160
+ warnings: string[];
161
+ }
162
+ /**
163
+ * Performance test threshold
164
+ */
165
+ export interface PerformanceThreshold {
166
+ /** Metric name */
167
+ metric: string;
168
+ /** Maximum expected value */
169
+ max: number;
170
+ /** Minimum expected value */
171
+ min?: number;
172
+ /** Unit of measurement */
173
+ unit: 'ms' | 'bytes' | 'count' | 'percent';
174
+ }
175
+ /**
176
+ * Performance test result
177
+ */
178
+ export interface PerformanceTestResult {
179
+ /** Test name */
180
+ name: string;
181
+ /** Metric values */
182
+ metrics: Record<string, number>;
183
+ /** Threshold results */
184
+ thresholds: Array<{
185
+ metric: string;
186
+ passed: boolean;
187
+ actual: number;
188
+ expected: number;
189
+ }>;
190
+ /** Overall pass/fail */
191
+ passed: boolean;
192
+ }
193
+ /**
194
+ * Load test configuration
195
+ */
196
+ export interface LoadTestConfig {
197
+ /** Number of virtual users */
198
+ vus: number;
199
+ /** Test duration */
200
+ duration: string;
201
+ /** Target URL */
202
+ target: string;
203
+ /** Requests per second limit */
204
+ rps?: number;
205
+ /** Stages for ramp-up */
206
+ stages?: Array<{
207
+ duration: string;
208
+ target: number;
209
+ }>;
210
+ }
211
+ /**
212
+ * Load test result
213
+ */
214
+ export interface LoadTestResult {
215
+ /** Total requests made */
216
+ totalRequests: number;
217
+ /** Requests per second */
218
+ rps: number;
219
+ /** Average response time in milliseconds */
220
+ avgResponseTime: number;
221
+ /** p95 response time in milliseconds */
222
+ p95ResponseTime: number;
223
+ /** p99 response time in milliseconds */
224
+ p99ResponseTime: number;
225
+ /** Error rate percentage */
226
+ errorRate: number;
227
+ /** Test passed thresholds */
228
+ passed: boolean;
229
+ }
230
+ //# sourceMappingURL=test.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.types.d.ts","sourceRoot":"","sources":["../../../src/core/types/test.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Test Types
3
+ *
4
+ * Types for test generation, execution, and reporting.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=test.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.types.js","sourceRoot":"","sources":["../../../src/core/types/test.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for FrameworkDetector service
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=framework-detector.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framework-detector.test.d.ts","sourceRoot":"","sources":["../../../../src/services/detection/__tests__/framework-detector.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Tests for FrameworkDetector service
3
+ */
4
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
5
+ import { FrameworkDetector } from '../framework-detector.js';
6
+ // Mock fs/promises
7
+ vi.mock('node:fs/promises', () => ({
8
+ readFile: vi.fn(),
9
+ access: vi.fn(),
10
+ constants: { F_OK: 0 },
11
+ }));
12
+ describe('FrameworkDetector', () => {
13
+ let detector;
14
+ beforeEach(() => {
15
+ detector = new FrameworkDetector();
16
+ vi.clearAllMocks();
17
+ });
18
+ describe('constructor', () => {
19
+ it('should create detector', () => {
20
+ expect(detector).toBeInstanceOf(FrameworkDetector);
21
+ });
22
+ });
23
+ describe('detect', () => {
24
+ it('should have detect method', () => {
25
+ expect(typeof detector.detect).toBe('function');
26
+ });
27
+ });
28
+ describe('detectLanguage', () => {
29
+ it('should have language detection capability', () => {
30
+ expect(detector).toHaveProperty('detect');
31
+ });
32
+ });
33
+ describe('detectAll', () => {
34
+ it('should have detectAll method', () => {
35
+ expect(typeof detector.detectAll).toBe('function');
36
+ });
37
+ });
38
+ describe('clearCache', () => {
39
+ it('should clear cache', () => {
40
+ expect(() => detector.clearCache()).not.toThrow();
41
+ });
42
+ });
43
+ describe('getCacheStats', () => {
44
+ it('should return cache stats', () => {
45
+ const stats = detector.getCacheStats();
46
+ expect(stats).toHaveProperty('size');
47
+ expect(stats).toHaveProperty('keys');
48
+ expect(Array.isArray(stats.keys)).toBe(true);
49
+ });
50
+ });
51
+ });
52
+ //# sourceMappingURL=framework-detector.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framework-detector.test.js","sourceRoot":"","sources":["../../../../src/services/detection/__tests__/framework-detector.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,mBAAmB;AACnB,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;IACjB,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;IACf,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;CACvB,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAI,QAA2B,CAAC;IAEhC,UAAU,CAAC,GAAG,EAAE;QACd,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACnC,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,CAAC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,CAAC,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;YAC5B,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,EAAE,CAAC;YAEvC,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Framework Detector Service
3
+ *
4
+ * Detects the web framework used in a project based on:
5
+ * - package.json dependencies
6
+ * - Configuration files
7
+ * - Project structure
8
+ *
9
+ * Ported from agents/detector.js FRAMEWORK_PATTERNS
10
+ */
11
+ import type { Framework } from '../../core/types/project.types.js';
12
+ import type { DetectionResult, FrameworkPattern, DetectionResults } from '../../core/types/detection.types.js';
13
+ /**
14
+ * Framework Detector Options
15
+ */
16
+ export interface FrameworkDetectorOptions {
17
+ /** Enable result caching */
18
+ enableCache?: boolean;
19
+ /** Cache TTL in milliseconds (default: 5 minutes) */
20
+ cacheTtl?: number;
21
+ /** Include backend frameworks in detection */
22
+ includeBackend?: boolean;
23
+ /** Custom patterns to add */
24
+ customPatterns?: FrameworkPattern[];
25
+ }
26
+ /**
27
+ * Framework detection result with scoring
28
+ */
29
+ export interface FrameworkScore {
30
+ /** Framework name */
31
+ framework: Framework;
32
+ /** Confidence score (0-1) */
33
+ score: number;
34
+ /** Evidence for this detection */
35
+ evidence: string[];
36
+ }
37
+ /**
38
+ * Framework Detector Service
39
+ *
40
+ * Detects web frameworks from project structure and dependencies
41
+ */
42
+ export declare class FrameworkDetector {
43
+ private cache;
44
+ private cacheTtl;
45
+ private patterns;
46
+ private includeBackend;
47
+ /**
48
+ * Create a new FrameworkDetector
49
+ */
50
+ constructor(options?: FrameworkDetectorOptions);
51
+ /**
52
+ * Build combined pattern list
53
+ */
54
+ private buildPatternList;
55
+ /**
56
+ * Detect framework for a project directory
57
+ *
58
+ * @param projectPath - Path to project root
59
+ * @returns Detection result with framework and confidence
60
+ */
61
+ detect(projectPath: string): Promise<DetectionResult<Framework>>;
62
+ /**
63
+ * Detect all matching frameworks with scores
64
+ *
65
+ * @param projectPath - Path to project root
66
+ * @returns Array of frameworks sorted by confidence score
67
+ */
68
+ detectWithScore(projectPath: string): Promise<FrameworkScore[]>;
69
+ /**
70
+ * Score a single framework pattern
71
+ */
72
+ private scoreFramework;
73
+ /**
74
+ * Get all supported framework names
75
+ *
76
+ * @returns Array of framework names
77
+ */
78
+ getSupportedFrameworks(): Framework[];
79
+ /**
80
+ * Get patterns for a specific framework
81
+ *
82
+ * @param framework - Framework name
83
+ * @returns Framework pattern or undefined
84
+ */
85
+ getFrameworkPattern(framework: Framework): FrameworkPattern | undefined;
86
+ /**
87
+ * Check if a framework is detected with high confidence
88
+ *
89
+ * @param projectPath - Path to project root
90
+ * @param framework - Framework to check
91
+ * @param threshold - Minimum confidence threshold (default: 0.7)
92
+ * @returns True if framework is detected with confidence >= threshold
93
+ */
94
+ isFramework(projectPath: string, framework: Framework, threshold?: number): Promise<boolean>;
95
+ /**
96
+ * Get all detected frameworks as a ranked list
97
+ *
98
+ * @param projectPath - Path to project root
99
+ * @returns Array of framework names ranked by confidence
100
+ */
101
+ getRankedList(projectPath: string): Promise<Framework[]>;
102
+ /**
103
+ * Clear the detection cache
104
+ */
105
+ clearCache(): void;
106
+ /**
107
+ * Get cache statistics
108
+ */
109
+ getCacheStats(): {
110
+ size: number;
111
+ keys: string[];
112
+ };
113
+ /**
114
+ * Read and parse package.json
115
+ */
116
+ private readPackageJson;
117
+ /**
118
+ * Get dependencies based on scope
119
+ */
120
+ private getDeps;
121
+ /**
122
+ * Check if file exists
123
+ */
124
+ private fileExists;
125
+ /**
126
+ * Get cache key for project path
127
+ */
128
+ private getCacheKey;
129
+ /**
130
+ * Get cached result if available and not expired
131
+ */
132
+ private getFromCache;
133
+ /**
134
+ * Store result in cache
135
+ */
136
+ private setToCache;
137
+ /**
138
+ * Detect all project information (framework, language, test runner, database)
139
+ *
140
+ * @param projectPath - Path to project root
141
+ * @param options - Detection options
142
+ * @returns Complete detection results
143
+ */
144
+ detectAll(projectPath: string, options?: {
145
+ verbose?: boolean;
146
+ }): Promise<DetectionResults>;
147
+ /**
148
+ * Detect project language
149
+ */
150
+ private detectLanguage;
151
+ /**
152
+ * Detect test runner
153
+ */
154
+ private detectTestRunner;
155
+ /**
156
+ * Detect database
157
+ */
158
+ private detectDatabase;
159
+ /**
160
+ * Count test files in project
161
+ */
162
+ private countTestFiles;
163
+ /**
164
+ * Recursively count test files in directory
165
+ */
166
+ private countTestsInDir;
167
+ }
168
+ /**
169
+ * Get or create default framework detector
170
+ */
171
+ export declare function getFrameworkDetector(options?: FrameworkDetectorOptions): FrameworkDetector;
172
+ /**
173
+ * Quick detection function using default detector
174
+ *
175
+ * @param projectPath - Path to project root
176
+ * @returns Detected framework or null
177
+ */
178
+ export declare function detectFramework(projectPath: string): Promise<Framework>;
179
+ //# sourceMappingURL=framework-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framework-detector.d.ts","sourceRoot":"","sources":["../../../src/services/detection/framework-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAqC,MAAM,mCAAmC,CAAC;AACtG,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAoE,MAAM,qCAAqC,CAAC;AA6IjL;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,4BAA4B;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,6BAA6B;IAC7B,cAAc,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,qBAAqB;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;GAIG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,cAAc,CAAU;IAEhC;;OAEG;gBACS,OAAO,GAAE,wBAA6B;IAMlD;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;;;;OAKG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAiCtE;;;;;OAKG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAuCrE;;OAEG;YACW,cAAc;IA8D5B;;;;OAIG;IACH,sBAAsB,IAAI,SAAS,EAAE;IAIrC;;;;;OAKG;IACH,mBAAmB,CAAC,SAAS,EAAE,SAAS,GAAG,gBAAgB,GAAG,SAAS;IAIvE;;;;;;;OAOG;IACG,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,SAAS,EACpB,SAAS,GAAE,MAAY,GACtB,OAAO,CAAC,OAAO,CAAC;IAKnB;;;;;OAKG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAK9D;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,aAAa,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE;IAOjD;;OAEG;YACW,eAAe;IAU7B;;OAEG;IACH,OAAO,CAAC,OAAO;IAOf;;OAEG;YACW,UAAU;IASxB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB;;OAEG;IACH,OAAO,CAAC,UAAU;IAOlB;;;;;;OAMG;IACG,SAAS,CACb,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAC9B,OAAO,CAAC,gBAAgB,CAAC;IAgD5B;;OAEG;YACW,cAAc;IAsB5B;;OAEG;YACW,gBAAgB;IAoC9B;;OAEG;YACW,cAAc;IA2B5B;;OAEG;YACW,cAAc;IAyC5B;;OAEG;YACW,eAAe;CA4B9B;AAOD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,iBAAiB,CAK1F;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAI7E"}