ai-sdlc 0.2.0-alpha.4 → 0.2.0-alpha.41
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.
- package/README.md +53 -1058
- package/dist/agents/implementation.d.ts +62 -0
- package/dist/agents/implementation.d.ts.map +1 -1
- package/dist/agents/implementation.js +494 -90
- package/dist/agents/implementation.js.map +1 -1
- package/dist/agents/index.d.ts +1 -0
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +1 -0
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/planning.d.ts +1 -1
- package/dist/agents/planning.d.ts.map +1 -1
- package/dist/agents/planning.js +55 -4
- package/dist/agents/planning.js.map +1 -1
- package/dist/agents/refinement.d.ts.map +1 -1
- package/dist/agents/refinement.js +22 -3
- package/dist/agents/refinement.js.map +1 -1
- package/dist/agents/research.d.ts +85 -1
- package/dist/agents/research.d.ts.map +1 -1
- package/dist/agents/research.js +506 -16
- package/dist/agents/research.js.map +1 -1
- package/dist/agents/review.d.ts +79 -2
- package/dist/agents/review.d.ts.map +1 -1
- package/dist/agents/review.js +568 -68
- package/dist/agents/review.js.map +1 -1
- package/dist/agents/rework.d.ts.map +1 -1
- package/dist/agents/rework.js +22 -3
- package/dist/agents/rework.js.map +1 -1
- package/dist/agents/single-task.d.ts +41 -0
- package/dist/agents/single-task.d.ts.map +1 -0
- package/dist/agents/single-task.js +357 -0
- package/dist/agents/single-task.js.map +1 -0
- package/dist/agents/state-assessor.d.ts +3 -3
- package/dist/agents/state-assessor.d.ts.map +1 -1
- package/dist/agents/state-assessor.js +6 -6
- package/dist/agents/state-assessor.js.map +1 -1
- package/dist/agents/test-pattern-detector.d.ts +49 -0
- package/dist/agents/test-pattern-detector.d.ts.map +1 -0
- package/dist/agents/test-pattern-detector.js +273 -0
- package/dist/agents/test-pattern-detector.js.map +1 -0
- package/dist/agents/verification.d.ts +11 -0
- package/dist/agents/verification.d.ts.map +1 -1
- package/dist/agents/verification.js +74 -1
- package/dist/agents/verification.js.map +1 -1
- package/dist/cli/commands/migrate.js +1 -1
- package/dist/cli/commands/migrate.js.map +1 -1
- package/dist/cli/commands.d.ts +59 -3
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +1057 -217
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/daemon.d.ts.map +1 -1
- package/dist/cli/daemon.js +40 -10
- package/dist/cli/daemon.js.map +1 -1
- package/dist/cli/runner.d.ts.map +1 -1
- package/dist/cli/runner.js +51 -20
- package/dist/cli/runner.js.map +1 -1
- package/dist/core/auth.d.ts +43 -0
- package/dist/core/auth.d.ts.map +1 -1
- package/dist/core/auth.js +105 -1
- package/dist/core/auth.js.map +1 -1
- package/dist/core/client.d.ts +6 -0
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +57 -3
- package/dist/core/client.js.map +1 -1
- package/dist/core/config.d.ts +36 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +162 -1
- package/dist/core/config.js.map +1 -1
- package/dist/core/conflict-detector.d.ts +108 -0
- package/dist/core/conflict-detector.d.ts.map +1 -0
- package/dist/core/conflict-detector.js +413 -0
- package/dist/core/conflict-detector.js.map +1 -0
- package/dist/core/git-utils.d.ts +28 -0
- package/dist/core/git-utils.d.ts.map +1 -0
- package/dist/core/git-utils.js +146 -0
- package/dist/core/git-utils.js.map +1 -0
- package/dist/core/index.d.ts +18 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +18 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/kanban.d.ts +1 -6
- package/dist/core/kanban.d.ts.map +1 -1
- package/dist/core/kanban.js +10 -49
- package/dist/core/kanban.js.map +1 -1
- package/dist/core/logger.d.ts +92 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +221 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/story-logger.d.ts +102 -0
- package/dist/core/story-logger.d.ts.map +1 -0
- package/dist/core/story-logger.js +265 -0
- package/dist/core/story-logger.js.map +1 -0
- package/dist/core/story.d.ts +122 -18
- package/dist/core/story.d.ts.map +1 -1
- package/dist/core/story.js +390 -58
- package/dist/core/story.js.map +1 -1
- package/dist/core/task-parser.d.ts +59 -0
- package/dist/core/task-parser.d.ts.map +1 -0
- package/dist/core/task-parser.js +235 -0
- package/dist/core/task-parser.js.map +1 -0
- package/dist/core/task-progress.d.ts +92 -0
- package/dist/core/task-progress.d.ts.map +1 -0
- package/dist/core/task-progress.js +280 -0
- package/dist/core/task-progress.js.map +1 -0
- package/dist/core/workflow-state.d.ts +45 -6
- package/dist/core/workflow-state.d.ts.map +1 -1
- package/dist/core/workflow-state.js +201 -12
- package/dist/core/workflow-state.js.map +1 -1
- package/dist/core/worktree.d.ts +77 -0
- package/dist/core/worktree.d.ts.map +1 -0
- package/dist/core/worktree.js +246 -0
- package/dist/core/worktree.js.map +1 -0
- package/dist/index.js +135 -5
- package/dist/index.js.map +1 -1
- package/dist/types/index.d.ts +288 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"single-task.js","sourceRoot":"","sources":["../../src/agents/single-task.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,13 +9,13 @@ import { StateAssessment, Action } from '../types/index.js';
|
|
|
9
9
|
* In the future, this could use an LLM to make smarter decisions about
|
|
10
10
|
* prioritization and workflow optimization.
|
|
11
11
|
*/
|
|
12
|
-
export declare function runStateAssessor(sdlcRoot: string): StateAssessment
|
|
12
|
+
export declare function runStateAssessor(sdlcRoot: string): Promise<StateAssessment>;
|
|
13
13
|
/**
|
|
14
14
|
* Get the next recommended action
|
|
15
15
|
*/
|
|
16
|
-
export declare function getNextAction(sdlcRoot: string): Action | null
|
|
16
|
+
export declare function getNextAction(sdlcRoot: string): Promise<Action | null>;
|
|
17
17
|
/**
|
|
18
18
|
* Check if there's any work to be done
|
|
19
19
|
*/
|
|
20
|
-
export declare function hasWork(sdlcRoot: string): boolean
|
|
20
|
+
export declare function hasWork(sdlcRoot: string): Promise<boolean>;
|
|
21
21
|
//# sourceMappingURL=state-assessor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-assessor.d.ts","sourceRoot":"","sources":["../../src/agents/state-assessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG5D;;;;;;;;;GASG;AACH,
|
|
1
|
+
{"version":3,"file":"state-assessor.d.ts","sourceRoot":"","sources":["../../src/agents/state-assessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG5D;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAEjF;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAG5E;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGhE"}
|
|
@@ -9,21 +9,21 @@ import { assessState } from '../core/kanban.js';
|
|
|
9
9
|
* In the future, this could use an LLM to make smarter decisions about
|
|
10
10
|
* prioritization and workflow optimization.
|
|
11
11
|
*/
|
|
12
|
-
export function runStateAssessor(sdlcRoot) {
|
|
13
|
-
return assessState(sdlcRoot);
|
|
12
|
+
export async function runStateAssessor(sdlcRoot) {
|
|
13
|
+
return await assessState(sdlcRoot);
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
16
|
* Get the next recommended action
|
|
17
17
|
*/
|
|
18
|
-
export function getNextAction(sdlcRoot) {
|
|
19
|
-
const assessment = assessState(sdlcRoot);
|
|
18
|
+
export async function getNextAction(sdlcRoot) {
|
|
19
|
+
const assessment = await assessState(sdlcRoot);
|
|
20
20
|
return assessment.recommendedActions[0] || null;
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
23
|
* Check if there's any work to be done
|
|
24
24
|
*/
|
|
25
|
-
export function hasWork(sdlcRoot) {
|
|
26
|
-
const assessment = assessState(sdlcRoot);
|
|
25
|
+
export async function hasWork(sdlcRoot) {
|
|
26
|
+
const assessment = await assessState(sdlcRoot);
|
|
27
27
|
return assessment.recommendedActions.length > 0;
|
|
28
28
|
}
|
|
29
29
|
//# sourceMappingURL=state-assessor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-assessor.js","sourceRoot":"","sources":["../../src/agents/state-assessor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;
|
|
1
|
+
{"version":3,"file":"state-assessor.js","sourceRoot":"","sources":["../../src/agents/state-assessor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IACrD,OAAO,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB;IAClD,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC/C,OAAO,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,QAAgB;IAC5C,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC/C,OAAO,UAAU,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { ReviewIssue } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Extract function names from file content using regex patterns
|
|
4
|
+
* Supports: function declarations, arrow functions, const functions
|
|
5
|
+
*
|
|
6
|
+
* @param fileContent - Source code to analyze
|
|
7
|
+
* @returns Array of function names found in the file
|
|
8
|
+
*/
|
|
9
|
+
export declare function extractFunctionNames(fileContent: string): string[];
|
|
10
|
+
/**
|
|
11
|
+
* Check if a function name matches legitimate test utility patterns
|
|
12
|
+
* Returns true if the function is a legitimate test helper (should NOT be flagged)
|
|
13
|
+
*
|
|
14
|
+
* Legitimate patterns:
|
|
15
|
+
* - Factory functions: create*, make*, build*, mock*, stub*, fake*
|
|
16
|
+
* - Setup/teardown: setup*, teardown*, before*, after*, cleanup*
|
|
17
|
+
* - Assertion helpers: assert*, expect*, verify*, check*, should*
|
|
18
|
+
* - Test data builders: with*, given*, having*
|
|
19
|
+
*
|
|
20
|
+
* @param functionName - Name of the function to check
|
|
21
|
+
* @returns true if legitimate test utility, false if potential anti-pattern
|
|
22
|
+
*/
|
|
23
|
+
export declare function isLegitimateTestUtility(functionName: string): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Find the corresponding production file for a test file
|
|
26
|
+
* Handles both colocated tests and centralized test directories
|
|
27
|
+
*
|
|
28
|
+
* @param testFilePath - Absolute path to test file
|
|
29
|
+
* @returns Absolute path to production file, or null if not found
|
|
30
|
+
*/
|
|
31
|
+
export declare function findProductionFile(testFilePath: string): string | null;
|
|
32
|
+
/**
|
|
33
|
+
* Analyze a single test file for duplication patterns
|
|
34
|
+
*
|
|
35
|
+
* @param testFilePath - Absolute path to test file
|
|
36
|
+
* @param testFileContent - Content of the test file
|
|
37
|
+
* @param productionFileContent - Content of the corresponding production file
|
|
38
|
+
* @returns Array of ReviewIssue objects for detected anti-patterns
|
|
39
|
+
*/
|
|
40
|
+
export declare function analyzeTestFile(testFilePath: string, testFileContent: string, productionFileContent: string): ReviewIssue[];
|
|
41
|
+
/**
|
|
42
|
+
* Detect test duplication patterns across all test files in working directory
|
|
43
|
+
* Main entry point for the detection system
|
|
44
|
+
*
|
|
45
|
+
* @param workingDir - Project root directory
|
|
46
|
+
* @returns Array of ReviewIssue objects for all detected anti-patterns
|
|
47
|
+
*/
|
|
48
|
+
export declare function detectTestDuplicationPatterns(workingDir: string): Promise<ReviewIssue[]>;
|
|
49
|
+
//# sourceMappingURL=test-pattern-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-pattern-detector.d.ts","sourceRoot":"","sources":["../../src/agents/test-pattern-detector.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAuBlE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAiCrE;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgCtE;AAyBD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,EACvB,qBAAqB,EAAE,MAAM,GAC5B,WAAW,EAAE,CAqCf;AA8DD;;;;;;GAMG;AACH,wBAAsB,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAiD9F"}
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import { glob } from 'glob';
|
|
4
|
+
/**
|
|
5
|
+
* Extract function names from file content using regex patterns
|
|
6
|
+
* Supports: function declarations, arrow functions, const functions
|
|
7
|
+
*
|
|
8
|
+
* @param fileContent - Source code to analyze
|
|
9
|
+
* @returns Array of function names found in the file
|
|
10
|
+
*/
|
|
11
|
+
export function extractFunctionNames(fileContent) {
|
|
12
|
+
const functionNames = [];
|
|
13
|
+
// Pattern 1: function declarations (function foo() {})
|
|
14
|
+
const functionDeclPattern = /function\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/g;
|
|
15
|
+
let match;
|
|
16
|
+
while ((match = functionDeclPattern.exec(fileContent)) !== null) {
|
|
17
|
+
functionNames.push(match[1]);
|
|
18
|
+
}
|
|
19
|
+
// Pattern 2: arrow functions (const foo = () => {})
|
|
20
|
+
const arrowFunctionPattern = /const\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=\s*\(/g;
|
|
21
|
+
while ((match = arrowFunctionPattern.exec(fileContent)) !== null) {
|
|
22
|
+
functionNames.push(match[1]);
|
|
23
|
+
}
|
|
24
|
+
// Pattern 3: function expressions (const foo = function() {})
|
|
25
|
+
const functionExprPattern = /const\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=\s*function/g;
|
|
26
|
+
while ((match = functionExprPattern.exec(fileContent)) !== null) {
|
|
27
|
+
functionNames.push(match[1]);
|
|
28
|
+
}
|
|
29
|
+
return functionNames;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Check if a function name matches legitimate test utility patterns
|
|
33
|
+
* Returns true if the function is a legitimate test helper (should NOT be flagged)
|
|
34
|
+
*
|
|
35
|
+
* Legitimate patterns:
|
|
36
|
+
* - Factory functions: create*, make*, build*, mock*, stub*, fake*
|
|
37
|
+
* - Setup/teardown: setup*, teardown*, before*, after*, cleanup*
|
|
38
|
+
* - Assertion helpers: assert*, expect*, verify*, check*, should*
|
|
39
|
+
* - Test data builders: with*, given*, having*
|
|
40
|
+
*
|
|
41
|
+
* @param functionName - Name of the function to check
|
|
42
|
+
* @returns true if legitimate test utility, false if potential anti-pattern
|
|
43
|
+
*/
|
|
44
|
+
export function isLegitimateTestUtility(functionName) {
|
|
45
|
+
const legitimatePatterns = [
|
|
46
|
+
// Factory functions
|
|
47
|
+
/^(create|make|build|mock|stub|fake)/i,
|
|
48
|
+
// Setup/teardown helpers
|
|
49
|
+
/^(setup|teardown|before|after|cleanup)/i,
|
|
50
|
+
// Assertion helpers
|
|
51
|
+
/^(assert|expect|verify|check|should)/i,
|
|
52
|
+
// Test data builders
|
|
53
|
+
/^(with|given|having)/i,
|
|
54
|
+
];
|
|
55
|
+
// Check if function matches any legitimate pattern
|
|
56
|
+
for (const pattern of legitimatePatterns) {
|
|
57
|
+
if (pattern.test(functionName)) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Check for anti-pattern indicators
|
|
62
|
+
const antiPatterns = [
|
|
63
|
+
/Test$/, // Ends with "Test"
|
|
64
|
+
/^test[A-Z]/, // Starts with "test" followed by capital letter
|
|
65
|
+
];
|
|
66
|
+
for (const pattern of antiPatterns) {
|
|
67
|
+
if (pattern.test(functionName)) {
|
|
68
|
+
return false; // This is a potential anti-pattern
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Default: consider it legitimate (avoid false positives)
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Find the corresponding production file for a test file
|
|
76
|
+
* Handles both colocated tests and centralized test directories
|
|
77
|
+
*
|
|
78
|
+
* @param testFilePath - Absolute path to test file
|
|
79
|
+
* @returns Absolute path to production file, or null if not found
|
|
80
|
+
*/
|
|
81
|
+
export function findProductionFile(testFilePath) {
|
|
82
|
+
// Remove .test.ts or .test.js extension
|
|
83
|
+
const withoutTestExt = testFilePath.replace(/\.test\.(ts|tsx|js|jsx)$/, '.$1');
|
|
84
|
+
// Case 1: Colocated test (src/core/story.test.ts -> src/core/story.ts)
|
|
85
|
+
if (fs.existsSync(withoutTestExt)) {
|
|
86
|
+
return withoutTestExt;
|
|
87
|
+
}
|
|
88
|
+
// Case 2: Test in tests/ directory (tests/integration/foo.test.ts -> src/integration/foo.ts)
|
|
89
|
+
if (testFilePath.includes('/tests/')) {
|
|
90
|
+
const relativePath = testFilePath.split('/tests/')[1];
|
|
91
|
+
const srcPath = testFilePath.split('/tests/')[0] + '/src/' + relativePath.replace(/\.test\.(ts|tsx|js|jsx)$/, '.$1');
|
|
92
|
+
if (fs.existsSync(srcPath)) {
|
|
93
|
+
return srcPath;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Case 3: Try replacing tests/ with src/ in path
|
|
97
|
+
const srcReplaced = testFilePath.replace('/tests/', '/src/').replace(/\.test\.(ts|tsx|js|jsx)$/, '.$1');
|
|
98
|
+
if (fs.existsSync(srcReplaced)) {
|
|
99
|
+
return srcReplaced;
|
|
100
|
+
}
|
|
101
|
+
// Fallback: return the properly transformed path even if it doesn't exist
|
|
102
|
+
// For tests/ directory files, return the src/ mapped path
|
|
103
|
+
// Caller can handle missing files
|
|
104
|
+
if (testFilePath.includes('/tests/')) {
|
|
105
|
+
const relativePath = testFilePath.split('/tests/')[1];
|
|
106
|
+
return testFilePath.split('/tests/')[0] + '/src/' + relativePath.replace(/\.test\.(ts|tsx|js|jsx)$/, '.$1');
|
|
107
|
+
}
|
|
108
|
+
return withoutTestExt;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Get line number for a function in source code
|
|
112
|
+
*
|
|
113
|
+
* @param fileContent - Source code
|
|
114
|
+
* @param functionName - Function to find
|
|
115
|
+
* @returns Line number (1-indexed) or undefined if not found
|
|
116
|
+
*/
|
|
117
|
+
function getFunctionLineNumber(fileContent, functionName) {
|
|
118
|
+
const lines = fileContent.split('\n');
|
|
119
|
+
for (let i = 0; i < lines.length; i++) {
|
|
120
|
+
const line = lines[i];
|
|
121
|
+
// Match function declaration with the exact function name
|
|
122
|
+
if (line.includes(`function ${functionName}(`) ||
|
|
123
|
+
line.includes(`function ${functionName} (`) ||
|
|
124
|
+
line.includes(`const ${functionName} =`)) {
|
|
125
|
+
return i + 1; // 1-indexed
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return undefined;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Analyze a single test file for duplication patterns
|
|
132
|
+
*
|
|
133
|
+
* @param testFilePath - Absolute path to test file
|
|
134
|
+
* @param testFileContent - Content of the test file
|
|
135
|
+
* @param productionFileContent - Content of the corresponding production file
|
|
136
|
+
* @returns Array of ReviewIssue objects for detected anti-patterns
|
|
137
|
+
*/
|
|
138
|
+
export function analyzeTestFile(testFilePath, testFileContent, productionFileContent) {
|
|
139
|
+
const issues = [];
|
|
140
|
+
// Extract function names from test file
|
|
141
|
+
const testFunctions = extractFunctionNames(testFileContent);
|
|
142
|
+
// Extract exported functions from production file
|
|
143
|
+
const productionExports = extractProductionExports(productionFileContent);
|
|
144
|
+
// Check each test function for anti-patterns
|
|
145
|
+
for (const functionName of testFunctions) {
|
|
146
|
+
// Skip legitimate test utilities
|
|
147
|
+
if (isLegitimateTestUtility(functionName)) {
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
// Check if this looks like a duplicated production function
|
|
151
|
+
const matchingExport = findMatchingProductionExport(functionName, productionExports);
|
|
152
|
+
if (matchingExport) {
|
|
153
|
+
const lineNumber = getFunctionLineNumber(testFileContent, functionName);
|
|
154
|
+
const productionFile = findProductionFile(testFilePath);
|
|
155
|
+
issues.push({
|
|
156
|
+
severity: 'major',
|
|
157
|
+
category: 'test_antipattern',
|
|
158
|
+
description: `Test helper function "${functionName}" appears to duplicate production logic. Tests should import actual functions instead of reimplementing them.`,
|
|
159
|
+
file: testFilePath,
|
|
160
|
+
line: lineNumber,
|
|
161
|
+
suggestedFix: productionFile
|
|
162
|
+
? `Export "${matchingExport}" from "${path.basename(productionFile)}" and import it in tests instead of duplicating the logic.`
|
|
163
|
+
: `Export the production version of "${matchingExport}" and import it in tests instead of duplicating the logic.`,
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return issues;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Extract exported function names from production file content
|
|
171
|
+
*
|
|
172
|
+
* @param fileContent - Production file source code
|
|
173
|
+
* @returns Array of exported function names
|
|
174
|
+
*/
|
|
175
|
+
function extractProductionExports(fileContent) {
|
|
176
|
+
const exports = [];
|
|
177
|
+
// Pattern 1: export function foo() {}
|
|
178
|
+
const exportFunctionPattern = /export\s+function\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/g;
|
|
179
|
+
let match;
|
|
180
|
+
while ((match = exportFunctionPattern.exec(fileContent)) !== null) {
|
|
181
|
+
exports.push(match[1]);
|
|
182
|
+
}
|
|
183
|
+
// Pattern 2: export const foo = () => {}
|
|
184
|
+
const exportConstPattern = /export\s+const\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=/g;
|
|
185
|
+
while ((match = exportConstPattern.exec(fileContent)) !== null) {
|
|
186
|
+
exports.push(match[1]);
|
|
187
|
+
}
|
|
188
|
+
// Pattern 3: export { foo, bar }
|
|
189
|
+
const exportBlockPattern = /export\s*\{\s*([^}]+)\s*\}/g;
|
|
190
|
+
while ((match = exportBlockPattern.exec(fileContent)) !== null) {
|
|
191
|
+
const names = match[1].split(',').map(n => n.trim().split(/\s+as\s+/)[0].trim());
|
|
192
|
+
exports.push(...names);
|
|
193
|
+
}
|
|
194
|
+
return exports;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Find matching production export for a test function name
|
|
198
|
+
* Handles naming patterns: fooTest -> foo, testFoo -> foo
|
|
199
|
+
*
|
|
200
|
+
* @param testFunctionName - Name of test helper function
|
|
201
|
+
* @param productionExports - Array of exported function names from production
|
|
202
|
+
* @returns Matching export name or null
|
|
203
|
+
*/
|
|
204
|
+
function findMatchingProductionExport(testFunctionName, productionExports) {
|
|
205
|
+
// Pattern 1: fooTest -> foo
|
|
206
|
+
if (testFunctionName.endsWith('Test')) {
|
|
207
|
+
const baseName = testFunctionName.slice(0, -4); // Remove "Test" suffix
|
|
208
|
+
if (productionExports.includes(baseName)) {
|
|
209
|
+
return baseName;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
// Pattern 2: testFoo -> foo
|
|
213
|
+
if (testFunctionName.startsWith('test') && testFunctionName.length > 4) {
|
|
214
|
+
const baseName = testFunctionName.charAt(4).toLowerCase() + testFunctionName.slice(5);
|
|
215
|
+
if (productionExports.includes(baseName)) {
|
|
216
|
+
return baseName;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return null;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Detect test duplication patterns across all test files in working directory
|
|
223
|
+
* Main entry point for the detection system
|
|
224
|
+
*
|
|
225
|
+
* @param workingDir - Project root directory
|
|
226
|
+
* @returns Array of ReviewIssue objects for all detected anti-patterns
|
|
227
|
+
*/
|
|
228
|
+
export async function detectTestDuplicationPatterns(workingDir) {
|
|
229
|
+
const allIssues = [];
|
|
230
|
+
try {
|
|
231
|
+
// Find all test files using glob patterns
|
|
232
|
+
const testPatterns = ['**/*.test.ts', '**/*.test.tsx', '**/*.test.js', '**/*.test.jsx'];
|
|
233
|
+
const testFiles = [];
|
|
234
|
+
for (const pattern of testPatterns) {
|
|
235
|
+
const matches = await glob(pattern, {
|
|
236
|
+
cwd: workingDir,
|
|
237
|
+
absolute: true,
|
|
238
|
+
ignore: ['**/node_modules/**', '**/dist/**', '**/build/**', '**/.git/**'],
|
|
239
|
+
});
|
|
240
|
+
testFiles.push(...matches);
|
|
241
|
+
}
|
|
242
|
+
// Analyze each test file
|
|
243
|
+
for (const testFilePath of testFiles) {
|
|
244
|
+
try {
|
|
245
|
+
// Read test file
|
|
246
|
+
const testFileContent = fs.readFileSync(testFilePath, 'utf-8');
|
|
247
|
+
// Find corresponding production file
|
|
248
|
+
const productionFilePath = findProductionFile(testFilePath);
|
|
249
|
+
if (!productionFilePath || !fs.existsSync(productionFilePath)) {
|
|
250
|
+
// No production file found - skip (might be integration test or test utilities)
|
|
251
|
+
continue;
|
|
252
|
+
}
|
|
253
|
+
// Read production file
|
|
254
|
+
const productionFileContent = fs.readFileSync(productionFilePath, 'utf-8');
|
|
255
|
+
// Analyze for anti-patterns
|
|
256
|
+
const issues = analyzeTestFile(testFilePath, testFileContent, productionFileContent);
|
|
257
|
+
allIssues.push(...issues);
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
// Skip files that can't be read (permissions, encoding issues, etc.)
|
|
261
|
+
console.debug(`Skipping test file ${testFilePath}: ${error}`);
|
|
262
|
+
continue;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
catch (error) {
|
|
267
|
+
// If glob fails or directory doesn't exist, return empty array
|
|
268
|
+
console.debug(`Test pattern detection failed: ${error}`);
|
|
269
|
+
return [];
|
|
270
|
+
}
|
|
271
|
+
return allIssues;
|
|
272
|
+
}
|
|
273
|
+
//# sourceMappingURL=test-pattern-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-pattern-detector.js","sourceRoot":"","sources":["../../src/agents/test-pattern-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,17 @@ export interface VerificationOptions {
|
|
|
16
16
|
output: string;
|
|
17
17
|
}>;
|
|
18
18
|
requirePassingTests?: boolean;
|
|
19
|
+
skipDependencyCheck?: boolean;
|
|
19
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Ensures dependencies are installed before running tests/build.
|
|
23
|
+
* Checks if node_modules exists and has packages. If not, runs the appropriate install command.
|
|
24
|
+
* @param workingDir - The directory to check for dependencies
|
|
25
|
+
* @returns Result indicating if install was needed and any error that occurred
|
|
26
|
+
*/
|
|
27
|
+
export declare function ensureDependenciesInstalled(workingDir: string): {
|
|
28
|
+
installed: boolean;
|
|
29
|
+
error?: string;
|
|
30
|
+
};
|
|
20
31
|
export declare function verifyImplementation(story: Story, workingDir: string, options?: VerificationOptions): Promise<VerificationResult>;
|
|
21
32
|
//# sourceMappingURL=verification.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../src/agents/verification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../src/agents/verification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAM1C,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClG,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClG,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAWD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAkDtG;AA6ED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,kBAAkB,CAAC,CAoE7B"}
|
|
@@ -1,5 +1,65 @@
|
|
|
1
1
|
import { loadConfig } from '../core/config.js';
|
|
2
|
-
import { spawn } from 'child_process';
|
|
2
|
+
import { spawn, spawnSync } from 'child_process';
|
|
3
|
+
import { existsSync, readdirSync } from 'fs';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
/**
|
|
6
|
+
* Lock file to package manager mapping
|
|
7
|
+
*/
|
|
8
|
+
const LOCK_FILE_TO_PM = {
|
|
9
|
+
'package-lock.json': 'npm',
|
|
10
|
+
'yarn.lock': 'yarn',
|
|
11
|
+
'pnpm-lock.yaml': 'pnpm',
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Ensures dependencies are installed before running tests/build.
|
|
15
|
+
* Checks if node_modules exists and has packages. If not, runs the appropriate install command.
|
|
16
|
+
* @param workingDir - The directory to check for dependencies
|
|
17
|
+
* @returns Result indicating if install was needed and any error that occurred
|
|
18
|
+
*/
|
|
19
|
+
export function ensureDependenciesInstalled(workingDir) {
|
|
20
|
+
const packageJsonPath = path.join(workingDir, 'package.json');
|
|
21
|
+
// Skip if not a Node.js project
|
|
22
|
+
if (!existsSync(packageJsonPath)) {
|
|
23
|
+
return { installed: false };
|
|
24
|
+
}
|
|
25
|
+
const nodeModulesPath = path.join(workingDir, 'node_modules');
|
|
26
|
+
// Check if node_modules exists and has contents
|
|
27
|
+
let hasNodeModules = false;
|
|
28
|
+
if (existsSync(nodeModulesPath)) {
|
|
29
|
+
try {
|
|
30
|
+
const contents = readdirSync(nodeModulesPath);
|
|
31
|
+
// node_modules should have more than just .bin to be considered populated
|
|
32
|
+
hasNodeModules = contents.length > 1 || (contents.length === 1 && contents[0] !== '.bin');
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
hasNodeModules = false;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (hasNodeModules) {
|
|
39
|
+
return { installed: false };
|
|
40
|
+
}
|
|
41
|
+
// Detect package manager from lock file
|
|
42
|
+
let packageManager = 'npm';
|
|
43
|
+
for (const [lockFile, pm] of Object.entries(LOCK_FILE_TO_PM)) {
|
|
44
|
+
if (existsSync(path.join(workingDir, lockFile))) {
|
|
45
|
+
packageManager = pm;
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// Run install command
|
|
50
|
+
const result = spawnSync(packageManager, ['install'], {
|
|
51
|
+
cwd: workingDir,
|
|
52
|
+
encoding: 'utf-8',
|
|
53
|
+
shell: false,
|
|
54
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
55
|
+
timeout: 120000, // 2 minute timeout
|
|
56
|
+
});
|
|
57
|
+
if (result.status !== 0) {
|
|
58
|
+
const stderr = result.stderr?.toString() || '';
|
|
59
|
+
return { installed: false, error: `Failed to install dependencies: ${stderr}` };
|
|
60
|
+
}
|
|
61
|
+
return { installed: true };
|
|
62
|
+
}
|
|
3
63
|
async function runCommandAsync(command, workingDir, timeout) {
|
|
4
64
|
return new Promise((resolve) => {
|
|
5
65
|
const outputChunks = [];
|
|
@@ -73,6 +133,19 @@ export async function verifyImplementation(story, workingDir, options = {}) {
|
|
|
73
133
|
let buildOutput = '';
|
|
74
134
|
let testsRan = false;
|
|
75
135
|
let buildRan = false;
|
|
136
|
+
// Ensure dependencies are installed before running tests/build
|
|
137
|
+
if (!options.skipDependencyCheck) {
|
|
138
|
+
const depResult = ensureDependenciesInstalled(workingDir);
|
|
139
|
+
if (depResult.error) {
|
|
140
|
+
return {
|
|
141
|
+
passed: false,
|
|
142
|
+
failures: 0,
|
|
143
|
+
timestamp,
|
|
144
|
+
testsOutput: '',
|
|
145
|
+
buildOutput: depResult.error,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
}
|
|
76
149
|
if (options.runTests) {
|
|
77
150
|
testsRan = true;
|
|
78
151
|
const testResult = await options.runTests(workingDir, testTimeout);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/agents/verification.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../src/agents/verification.ts"],"names":[],"mappings":"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"}
|
|
@@ -77,7 +77,7 @@ export async function migrateToFolderPerStory(sdlcRoot, options) {
|
|
|
77
77
|
const newFolder = path.dirname(item.newPath);
|
|
78
78
|
fs.mkdirSync(newFolder, { recursive: true });
|
|
79
79
|
story.path = item.newPath;
|
|
80
|
-
writeStory(story);
|
|
80
|
+
await writeStory(story);
|
|
81
81
|
fs.unlinkSync(item.oldPath);
|
|
82
82
|
}
|
|
83
83
|
for (const folder of oldFolders) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/cli/commands/migrate.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/cli/commands/migrate.ts"],"names":[],"mappings":"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"}
|