@kosuke-ai/cli 0.0.12 → 0.0.14

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 (55) hide show
  1. package/dist/index.d.ts +14 -6
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +148 -6
  4. package/dist/index.js.map +1 -1
  5. package/dist/kosuke/commands/build.d.ts +22 -0
  6. package/dist/kosuke/commands/build.d.ts.map +1 -0
  7. package/dist/kosuke/commands/build.js +135 -0
  8. package/dist/kosuke/commands/build.js.map +1 -0
  9. package/dist/kosuke/commands/review.d.ts +21 -0
  10. package/dist/kosuke/commands/review.d.ts.map +1 -0
  11. package/dist/kosuke/commands/review.js +185 -0
  12. package/dist/kosuke/commands/review.js.map +1 -0
  13. package/dist/kosuke/commands/ship.d.ts +23 -0
  14. package/dist/kosuke/commands/ship.d.ts.map +1 -0
  15. package/dist/kosuke/commands/ship.js +419 -0
  16. package/dist/kosuke/commands/ship.js.map +1 -0
  17. package/dist/kosuke/commands/test.d.ts +27 -0
  18. package/dist/kosuke/commands/test.d.ts.map +1 -0
  19. package/dist/kosuke/commands/test.js +338 -0
  20. package/dist/kosuke/commands/test.js.map +1 -0
  21. package/dist/kosuke/types.d.ts +82 -2
  22. package/dist/kosuke/types.d.ts.map +1 -1
  23. package/dist/kosuke/utils/error-analyzer.d.ts +32 -0
  24. package/dist/kosuke/utils/error-analyzer.d.ts.map +1 -0
  25. package/dist/kosuke/utils/error-analyzer.js +129 -0
  26. package/dist/kosuke/utils/error-analyzer.js.map +1 -0
  27. package/dist/kosuke/utils/git.d.ts +12 -0
  28. package/dist/kosuke/utils/git.d.ts.map +1 -1
  29. package/dist/kosuke/utils/git.js +39 -0
  30. package/dist/kosuke/utils/git.js.map +1 -1
  31. package/dist/kosuke/utils/log-collector.d.ts +81 -0
  32. package/dist/kosuke/utils/log-collector.d.ts.map +1 -0
  33. package/dist/kosuke/utils/log-collector.js +226 -0
  34. package/dist/kosuke/utils/log-collector.js.map +1 -0
  35. package/dist/kosuke/utils/playwright-agent.d.ts +39 -0
  36. package/dist/kosuke/utils/playwright-agent.d.ts.map +1 -0
  37. package/dist/kosuke/utils/playwright-agent.js +245 -0
  38. package/dist/kosuke/utils/playwright-agent.js.map +1 -0
  39. package/dist/kosuke/utils/test-generator.d.ts +22 -0
  40. package/dist/kosuke/utils/test-generator.d.ts.map +1 -0
  41. package/dist/kosuke/utils/test-generator.js +174 -0
  42. package/dist/kosuke/utils/test-generator.js.map +1 -0
  43. package/dist/kosuke/utils/validator.d.ts +11 -0
  44. package/dist/kosuke/utils/validator.d.ts.map +1 -1
  45. package/dist/kosuke/utils/validator.js +100 -0
  46. package/dist/kosuke/utils/validator.js.map +1 -1
  47. package/dist/kosuke/utils/visual-tester.d.ts +71 -0
  48. package/dist/kosuke/utils/visual-tester.d.ts.map +1 -0
  49. package/dist/kosuke/utils/visual-tester.js +202 -0
  50. package/dist/kosuke/utils/visual-tester.js.map +1 -0
  51. package/dist/lib.d.ts +6 -2
  52. package/dist/lib.d.ts.map +1 -1
  53. package/dist/lib.js +5 -1
  54. package/dist/lib.js.map +1 -1
  55. package/package.json +6 -1
@@ -0,0 +1,338 @@
1
+ /**
2
+ * Test command - Automated E2E testing with iterative fixing
3
+ *
4
+ * This command:
5
+ * 1. Loads a ticket and generates/locates Playwright tests
6
+ * 2. Runs tests with visual regression, console/network/docker log collection
7
+ * 3. If tests fail: analyzes errors and applies fixes
8
+ * 4. Re-runs tests until passing or max retries reached
9
+ * 5. Runs linting after tests pass
10
+ *
11
+ * Usage:
12
+ * kosuke test --ticket=FRONTEND-1 # Test with auto-fix
13
+ * kosuke test --ticket=FRONTEND-1 --url=http://localhost:4000
14
+ * kosuke test --ticket=FRONTEND-1 --headed # Show browser
15
+ * kosuke test --ticket=FRONTEND-1 --update-baseline # Update visual baselines
16
+ * kosuke test --ticket=FRONTEND-1 --pr # Create PR with fixes
17
+ */
18
+ import { readFileSync, existsSync } from 'fs';
19
+ import { join } from 'path';
20
+ import { generateTest } from '../utils/test-generator.js';
21
+ import { runPlaywrightTests, isPlaywrightInstalled, installPlaywright, ensurePlaywrightConfig, } from '../utils/playwright-agent.js';
22
+ import { LogCollector } from '../utils/log-collector.js';
23
+ import { VisualTester } from '../utils/visual-tester.js';
24
+ import { analyzeAndFix } from '../utils/error-analyzer.js';
25
+ import { runComprehensiveLinting } from '../utils/validator.js';
26
+ import { runWithPR } from '../utils/pr-orchestrator.js';
27
+ /**
28
+ * Load tickets from file
29
+ */
30
+ function loadTicketsFile(ticketsPath) {
31
+ if (!existsSync(ticketsPath)) {
32
+ throw new Error(`Tickets file not found: ${ticketsPath}\n` +
33
+ `Please generate tickets first using: kosuke tickets`);
34
+ }
35
+ try {
36
+ const content = readFileSync(ticketsPath, 'utf-8');
37
+ return JSON.parse(content);
38
+ }
39
+ catch (error) {
40
+ throw new Error(`Failed to parse tickets file: ${error instanceof Error ? error.message : String(error)}`);
41
+ }
42
+ }
43
+ /**
44
+ * Find ticket by ID
45
+ */
46
+ function findTicket(ticketsData, ticketId) {
47
+ return ticketsData.tickets.find((t) => t.id === ticketId);
48
+ }
49
+ /**
50
+ * Core test logic (git-agnostic, reusable)
51
+ */
52
+ export async function testCore(options) {
53
+ const { ticket: ticketId, url = 'http://localhost:3000', headed = false, debug = false, maxRetries = 3, ticketsFile = 'tickets.json', } = options;
54
+ const cwd = process.cwd();
55
+ const ticketsPath = join(cwd, ticketsFile);
56
+ // Track metrics
57
+ let totalInputTokens = 0;
58
+ let totalOutputTokens = 0;
59
+ let totalCacheCreationTokens = 0;
60
+ let totalCacheReadTokens = 0;
61
+ let totalCost = 0;
62
+ let totalFixesApplied = 0;
63
+ let iterations = 0;
64
+ let testsRun = 0;
65
+ let testsPassed = 0;
66
+ let testsFailed = 0;
67
+ let visualDiffs = 0;
68
+ let testFilePath = '';
69
+ let tracePath = '';
70
+ try {
71
+ // 1. Load and validate ticket
72
+ console.log('šŸ“‹ Loading ticket...');
73
+ const ticketsData = loadTicketsFile(ticketsPath);
74
+ const ticket = findTicket(ticketsData, ticketId);
75
+ if (!ticket) {
76
+ throw new Error(`Ticket ${ticketId} not found in ${ticketsFile}\n` +
77
+ `Available tickets: ${ticketsData.tickets.map((t) => t.id).join(', ')}`);
78
+ }
79
+ if (ticket.status !== 'Done' && ticket.status !== 'InProgress') {
80
+ throw new Error(`Ticket ${ticketId} status is "${ticket.status}".\n` +
81
+ `Tests should only be run on tickets that have been implemented (Done or InProgress).`);
82
+ }
83
+ console.log(` āœ… Loaded: ${ticket.id} - ${ticket.title}\n`);
84
+ // 2. Ensure Playwright is set up
85
+ console.log('šŸŽ­ Checking Playwright setup...');
86
+ if (!isPlaywrightInstalled(cwd)) {
87
+ console.log(' ā„¹ļø Playwright not found, installing...');
88
+ await installPlaywright(cwd);
89
+ }
90
+ else {
91
+ console.log(' āœ… Playwright is installed\n');
92
+ }
93
+ ensurePlaywrightConfig(cwd);
94
+ // 3. Generate or locate test
95
+ console.log('šŸŽ­ Checking for existing tests...');
96
+ testFilePath = join(cwd, '.kosuke', 'tests', `${ticketId}.spec.ts`);
97
+ if (!existsSync(testFilePath)) {
98
+ console.log(' ā„¹ļø No test found, generating new test...');
99
+ const genResult = await generateTest(ticket, url, cwd);
100
+ testFilePath = genResult.filePath;
101
+ totalInputTokens += genResult.tokensUsed.input;
102
+ totalOutputTokens += genResult.tokensUsed.output;
103
+ totalCacheCreationTokens += genResult.tokensUsed.cacheCreation;
104
+ totalCacheReadTokens += genResult.tokensUsed.cacheRead;
105
+ totalCost += genResult.cost;
106
+ }
107
+ else {
108
+ console.log(' āœ… Test found:', testFilePath);
109
+ }
110
+ // 4. Test execution loop
111
+ let testsPassing = false;
112
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
113
+ iterations = attempt;
114
+ console.log(`\n${'='.repeat(60)}`);
115
+ console.log(`🧪 Test Execution (Attempt ${attempt}/${maxRetries})`);
116
+ console.log(`${'='.repeat(60)}\n`);
117
+ // Initialize log collector and visual tester
118
+ const logCollector = new LogCollector();
119
+ const visualTester = new VisualTester(cwd);
120
+ // Run tests with Playwright
121
+ const testResult = await runPlaywrightTests({
122
+ testFile: testFilePath,
123
+ baseUrl: url,
124
+ headed,
125
+ debug,
126
+ cwd,
127
+ });
128
+ testsRun = testResult.testsRun;
129
+ testsPassed = testResult.testsPassed;
130
+ testsFailed = testResult.testsFailed;
131
+ tracePath = testResult.tracePath;
132
+ // Collect Docker logs
133
+ await logCollector.collectDockerLogs('30s');
134
+ // Get visual diffs
135
+ visualDiffs = visualTester.getFailedDiffs().length;
136
+ // Display results
137
+ console.log(`\nšŸ“Š Test Results:`);
138
+ console.log(` āœ… Passed: ${testResult.testsPassed}`);
139
+ console.log(` āŒ Failed: ${testResult.testsFailed}`);
140
+ console.log(` šŸ“ø Visual diffs: ${visualDiffs}`);
141
+ console.log(` ā±ļø Duration: ${(testResult.duration / 1000).toFixed(2)}s`);
142
+ // Check if all tests passed
143
+ if (testResult.success && !visualTester.hasRegressions()) {
144
+ testsPassing = true;
145
+ console.log('\nāœ… All tests passed!');
146
+ break;
147
+ }
148
+ // If this is the last attempt, don't try to fix
149
+ if (attempt === maxRetries) {
150
+ console.log(`\nāŒ Max retries (${maxRetries}) reached. Tests still failing.`);
151
+ break;
152
+ }
153
+ // 5. Analyze errors and apply fixes
154
+ console.log(`\n${'='.repeat(60)}`);
155
+ console.log(`šŸ” Phase ${attempt}: Error Analysis & Fixing`);
156
+ console.log(`${'='.repeat(60)}\n`);
157
+ console.log('šŸ“ Collecting logs...');
158
+ const logs = logCollector.getErrors();
159
+ console.log(` šŸ”§ Console errors: ${logs.console.length}`);
160
+ console.log(` šŸ”§ Network failures: ${logs.network.length}`);
161
+ console.log(` šŸ”§ Docker logs: ${logs.docker.length}`);
162
+ // Analyze and fix
163
+ const analysisResult = await analyzeAndFix(ticket, testResult.failures, logs, testResult.tracePath, cwd);
164
+ totalFixesApplied += analysisResult.fixesApplied;
165
+ totalInputTokens += analysisResult.tokensUsed.input;
166
+ totalOutputTokens += analysisResult.tokensUsed.output;
167
+ totalCacheCreationTokens += analysisResult.tokensUsed.cacheCreation;
168
+ totalCacheReadTokens += analysisResult.tokensUsed.cacheRead;
169
+ totalCost += analysisResult.cost;
170
+ console.log(`\n šŸ”§ Applied ${analysisResult.fixesApplied} fixes`);
171
+ console.log(` šŸ’° Cost: $${analysisResult.cost.toFixed(4)}`);
172
+ // Continue to next iteration
173
+ console.log(`\nšŸ”„ Re-running tests in next iteration...`);
174
+ }
175
+ // 6. Linting phase (if tests passed)
176
+ if (testsPassing) {
177
+ console.log(`\n${'='.repeat(60)}`);
178
+ console.log(`šŸ”§ Linting & Quality Checks`);
179
+ console.log(`${'='.repeat(60)}\n`);
180
+ const lintResult = await runComprehensiveLinting();
181
+ console.log(`\nāœ… Linting completed (${lintResult.fixCount} fixes applied)`);
182
+ // Return success result
183
+ return {
184
+ ticketId,
185
+ success: true,
186
+ testsRun,
187
+ testsPassed,
188
+ testsFailed: 0,
189
+ visualDiffs: 0,
190
+ fixesApplied: totalFixesApplied,
191
+ lintFixCount: lintResult.fixCount,
192
+ iterations,
193
+ tokensUsed: {
194
+ input: totalInputTokens,
195
+ output: totalOutputTokens,
196
+ cacheCreation: totalCacheCreationTokens,
197
+ cacheRead: totalCacheReadTokens,
198
+ },
199
+ cost: totalCost,
200
+ testFilePath,
201
+ tracePath,
202
+ };
203
+ }
204
+ else {
205
+ // Return failure result
206
+ return {
207
+ ticketId,
208
+ success: false,
209
+ testsRun,
210
+ testsPassed,
211
+ testsFailed,
212
+ visualDiffs,
213
+ fixesApplied: totalFixesApplied,
214
+ lintFixCount: 0,
215
+ iterations,
216
+ tokensUsed: {
217
+ input: totalInputTokens,
218
+ output: totalOutputTokens,
219
+ cacheCreation: totalCacheCreationTokens,
220
+ cacheRead: totalCacheReadTokens,
221
+ },
222
+ cost: totalCost,
223
+ testFilePath,
224
+ tracePath,
225
+ error: 'Tests failed after maximum retry attempts',
226
+ };
227
+ }
228
+ }
229
+ catch (error) {
230
+ const errorMessage = error instanceof Error ? error.message : String(error);
231
+ console.error(`\nāŒ Test execution failed: ${errorMessage}`);
232
+ return {
233
+ ticketId,
234
+ success: false,
235
+ testsRun,
236
+ testsPassed,
237
+ testsFailed,
238
+ visualDiffs,
239
+ fixesApplied: totalFixesApplied,
240
+ lintFixCount: 0,
241
+ iterations,
242
+ tokensUsed: {
243
+ input: totalInputTokens,
244
+ output: totalOutputTokens,
245
+ cacheCreation: totalCacheCreationTokens,
246
+ cacheRead: totalCacheReadTokens,
247
+ },
248
+ cost: totalCost,
249
+ testFilePath,
250
+ tracePath,
251
+ error: errorMessage,
252
+ };
253
+ }
254
+ }
255
+ /**
256
+ * Main test command
257
+ */
258
+ export async function testCommand(options) {
259
+ const { ticket: ticketId, pr = false } = options;
260
+ console.log(`🧪 Testing Ticket: ${ticketId}\n`);
261
+ try {
262
+ // Validate environment
263
+ if (!process.env.ANTHROPIC_API_KEY) {
264
+ throw new Error('ANTHROPIC_API_KEY environment variable is required');
265
+ }
266
+ if (pr && !process.env.GITHUB_TOKEN) {
267
+ throw new Error('GITHUB_TOKEN environment variable is required for --pr flag');
268
+ }
269
+ // If --pr flag is provided, wrap with PR workflow
270
+ if (pr) {
271
+ const { result: testResult, prInfo } = await runWithPR({
272
+ branchPrefix: `test/fix-${ticketId}`,
273
+ baseBranch: options.baseBranch,
274
+ commitMessage: `test: fix issues found in ${ticketId}`,
275
+ prTitle: `test: Fix issues in ${ticketId}`,
276
+ prBody: `## 🧪 Test Fixes for ${ticketId}
277
+
278
+ This PR contains automated fixes for issues found during E2E testing of ticket ${ticketId}.
279
+
280
+ ### šŸ“Š Test Results
281
+ - Tests run: ${0} (will be filled by result)
282
+ - Fixes applied: ${0}
283
+ - Iterations: ${0}
284
+
285
+ ---
286
+
287
+ šŸ¤– *Generated by Kosuke CLI (\`kosuke test --ticket=${ticketId} --pr\`)*`,
288
+ }, async () => testCore(options));
289
+ // Display summary
290
+ displayTestSummary(testResult, prInfo.prUrl);
291
+ }
292
+ else {
293
+ // Run core logic without PR
294
+ const result = await testCore(options);
295
+ displayTestSummary(result);
296
+ }
297
+ }
298
+ catch (error) {
299
+ console.error('\nāŒ Test command failed:', error);
300
+ throw error;
301
+ }
302
+ }
303
+ /**
304
+ * Display test summary
305
+ */
306
+ function displayTestSummary(result, prUrl) {
307
+ console.log(`\n${'='.repeat(60)}`);
308
+ console.log('šŸ“Š Test Summary');
309
+ console.log('='.repeat(60));
310
+ if (result.success) {
311
+ console.log('āœ… Status: All tests passed');
312
+ }
313
+ else {
314
+ console.log('āŒ Status: Tests failed');
315
+ }
316
+ console.log(`🧪 Tests: ${result.testsPassed} passed, ${result.testsFailed} failed (${result.testsRun} total)`);
317
+ console.log(`šŸ“ø Visual: ${result.visualDiffs} regressions found`);
318
+ console.log(`šŸ”§ Fixes: ${result.fixesApplied} applied`);
319
+ console.log(`🧹 Lint: ${result.lintFixCount} fixes applied`);
320
+ console.log(`šŸ”„ Iterations: ${result.iterations}`);
321
+ console.log(`šŸ’° Total cost: $${result.cost.toFixed(4)}`);
322
+ console.log(`šŸŽ­ Test file: ${result.testFilePath}`);
323
+ console.log(`šŸ“Š Trace: ${result.tracePath}`);
324
+ if (prUrl) {
325
+ console.log(`šŸ”— PR: ${prUrl}`);
326
+ }
327
+ console.log('='.repeat(60));
328
+ if (result.success) {
329
+ console.log('\nāœ… Testing completed successfully!');
330
+ }
331
+ else {
332
+ console.log(`\nāŒ Testing failed: ${result.error || 'Unknown error'}`);
333
+ if (!prUrl) {
334
+ console.log('ā„¹ļø Review the logs and trace file above for more details.');
335
+ }
336
+ }
337
+ }
338
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../../kosuke/commands/test.ts"],"names":[],"mappings":"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"}
@@ -72,7 +72,8 @@ export interface Ticket {
72
72
  title: string;
73
73
  description: string;
74
74
  estimatedEffort: number;
75
- status: 'Todo' | 'Done';
75
+ status: 'Todo' | 'InProgress' | 'Done' | 'Error';
76
+ error?: string;
76
77
  }
77
78
  export interface TicketsResult {
78
79
  schemaTickets: Ticket[];
@@ -87,5 +88,84 @@ export interface TicketsResult {
87
88
  };
88
89
  cost: number;
89
90
  }
90
- export {};
91
+ export interface ShipOptions {
92
+ ticket: string;
93
+ review?: boolean;
94
+ commit?: boolean;
95
+ pr?: boolean;
96
+ baseBranch?: string;
97
+ ticketsFile?: string;
98
+ }
99
+ export interface BuildOptions {
100
+ ticketsFile?: string;
101
+ }
102
+ export interface ReviewOptions {
103
+ }
104
+ export interface ShipResult {
105
+ ticketId: string;
106
+ success: boolean;
107
+ implementationFixCount: number;
108
+ lintFixCount: number;
109
+ reviewPerformed: boolean;
110
+ reviewFixCount: number;
111
+ gitDiffReviewed: boolean;
112
+ gitDiffReviewFixCount: number;
113
+ tokensUsed: {
114
+ input: number;
115
+ output: number;
116
+ cacheCreation: number;
117
+ cacheRead: number;
118
+ };
119
+ cost: number;
120
+ error?: string;
121
+ }
122
+ export interface ReviewResult {
123
+ success: boolean;
124
+ issuesFound: number;
125
+ fixesApplied: number;
126
+ tokensUsed: {
127
+ input: number;
128
+ output: number;
129
+ cacheCreation: number;
130
+ cacheRead: number;
131
+ };
132
+ cost: number;
133
+ }
134
+ export interface TestOptions {
135
+ ticket: string;
136
+ url?: string;
137
+ headed?: boolean;
138
+ debug?: boolean;
139
+ updateBaseline?: boolean;
140
+ maxRetries?: number;
141
+ ticketsFile?: string;
142
+ pr?: boolean;
143
+ baseBranch?: string;
144
+ }
145
+ export interface TestResult {
146
+ ticketId: string;
147
+ success: boolean;
148
+ testsRun: number;
149
+ testsPassed: number;
150
+ testsFailed: number;
151
+ visualDiffs: number;
152
+ fixesApplied: number;
153
+ lintFixCount: number;
154
+ iterations: number;
155
+ tokensUsed: {
156
+ input: number;
157
+ output: number;
158
+ cacheCreation: number;
159
+ cacheRead: number;
160
+ };
161
+ cost: number;
162
+ testFilePath: string;
163
+ tracePath: string;
164
+ error?: string;
165
+ }
166
+ export type { AnalysisResult, TestFailure } from './utils/error-analyzer.js';
167
+ export type { ConsoleLog, NetworkLog, DockerLog, CollectedLogs } from './utils/log-collector.js';
168
+ export type { PlaywrightResult, PlaywrightOptions } from './utils/playwright-agent.js';
169
+ export type { GeneratedTest } from './utils/test-generator.js';
170
+ export type { VisualDiff, VisualTestOptions } from './utils/visual-tester.js';
91
171
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../kosuke/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../kosuke/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Error Analyzer - Analyze test failures and apply fixes
3
+ *
4
+ * Uses Claude to:
5
+ * - Analyze test failures, console errors, network failures, and backend logs
6
+ * - Identify root causes
7
+ * - Apply fixes to the codebase
8
+ */
9
+ import type { Ticket } from '../types.js';
10
+ import type { CollectedLogs } from './log-collector.js';
11
+ export interface AnalysisResult {
12
+ rootCause: string;
13
+ fixesApplied: number;
14
+ tokensUsed: {
15
+ input: number;
16
+ output: number;
17
+ cacheCreation: number;
18
+ cacheRead: number;
19
+ };
20
+ cost: number;
21
+ }
22
+ export interface TestFailure {
23
+ testName: string;
24
+ errorMessage: string;
25
+ expected?: string;
26
+ received?: string;
27
+ }
28
+ /**
29
+ * Analyze test failures and apply fixes
30
+ */
31
+ export declare function analyzeAndFix(ticket: Ticket, testFailures: TestFailure[], logs: CollectedLogs, tracePath: string, cwd?: string): Promise<AnalysisResult>;
32
+ //# sourceMappingURL=error-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-analyzer.d.ts","sourceRoot":"","sources":["../../../kosuke/utils/error-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,WAAW,EAAE,EAC3B,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,cAAc,CAAC,CAuBzB"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Error Analyzer - Analyze test failures and apply fixes
3
+ *
4
+ * Uses Claude to:
5
+ * - Analyze test failures, console errors, network failures, and backend logs
6
+ * - Identify root causes
7
+ * - Apply fixes to the codebase
8
+ */
9
+ import { runAgent } from './claude-agent.js';
10
+ /**
11
+ * Analyze test failures and apply fixes
12
+ */
13
+ export async function analyzeAndFix(ticket, testFailures, logs, tracePath, cwd = process.cwd()) {
14
+ console.log(`\n${'='.repeat(60)}`);
15
+ console.log(`šŸ” Analyzing Test Failures`);
16
+ console.log(`${'='.repeat(60)}\n`);
17
+ const systemPrompt = buildAnalysisPrompt(ticket, testFailures, logs, tracePath);
18
+ const result = await runAgent(`Analyze and fix test failures for ticket ${ticket.id}`, {
19
+ systemPrompt,
20
+ cwd,
21
+ maxTurns: 30,
22
+ verbosity: 'normal',
23
+ });
24
+ console.log(`\n✨ Analysis complete`);
25
+ console.log(` šŸ”§ Fixes applied: ${result.fixCount}`);
26
+ return {
27
+ rootCause: result.response,
28
+ fixesApplied: result.fixCount,
29
+ tokensUsed: result.tokensUsed,
30
+ cost: result.cost,
31
+ };
32
+ }
33
+ /**
34
+ * Build system prompt for error analysis
35
+ */
36
+ function buildAnalysisPrompt(ticket, testFailures, logs, tracePath) {
37
+ const sections = [];
38
+ // Ticket context
39
+ sections.push(`You are debugging failed end-to-end tests for a feature implementation.
40
+
41
+ **Ticket Information:**
42
+ - ID: ${ticket.id}
43
+ - Title: ${ticket.title}
44
+ - Description:
45
+ ${ticket.description}
46
+
47
+ **Your Task:**
48
+ 1. Analyze the test failures, logs, and errors below
49
+ 2. Identify the root cause of the failures
50
+ 3. Apply fixes to resolve the issues
51
+ 4. Make minimal, targeted changes that align with the ticket requirements`);
52
+ // Test failures
53
+ if (testFailures.length > 0) {
54
+ sections.push(`\n**Test Failures (${testFailures.length}):**`);
55
+ for (const failure of testFailures) {
56
+ sections.push(`\nTest: ${failure.testName}`);
57
+ sections.push(`Error: ${failure.errorMessage}`);
58
+ if (failure.expected) {
59
+ sections.push(`Expected: ${failure.expected}`);
60
+ }
61
+ if (failure.received) {
62
+ sections.push(`Received: ${failure.received}`);
63
+ }
64
+ }
65
+ }
66
+ // Console errors
67
+ if (logs.console.length > 0) {
68
+ sections.push(`\n**Console Errors (${logs.console.length}):**`);
69
+ for (const log of logs.console) {
70
+ const location = log.location ? ` (${log.location})` : '';
71
+ sections.push(`[${log.type.toUpperCase()}]${location} ${log.message}`);
72
+ }
73
+ }
74
+ // Network failures
75
+ if (logs.network.length > 0) {
76
+ sections.push(`\n**Network Failures (${logs.network.length}):**`);
77
+ for (const log of logs.network) {
78
+ sections.push(`\n[${log.method}] ${log.url}`);
79
+ sections.push(`Status: ${log.status} ${log.statusText}`);
80
+ if (log.requestBody) {
81
+ sections.push(`Request: ${log.requestBody.substring(0, 300)}`);
82
+ }
83
+ if (log.responseBody) {
84
+ sections.push(`Response: ${log.responseBody.substring(0, 300)}`);
85
+ }
86
+ }
87
+ }
88
+ // Docker logs
89
+ if (logs.docker.length > 0) {
90
+ sections.push(`\n**Backend Logs (Docker Compose - last ${logs.docker.length} entries):**`);
91
+ for (const log of logs.docker) {
92
+ sections.push(`[${log.service}] ${log.message}`);
93
+ }
94
+ }
95
+ // Trace information
96
+ sections.push(`\n**Playwright Trace:**`);
97
+ sections.push(`Available at: ${tracePath}`);
98
+ sections.push(`(Contains detailed timeline, screenshots, network activity)`);
99
+ // Instructions
100
+ sections.push(`\n**Critical Instructions:**
101
+ 1. Read the relevant source files in the current workspace
102
+ 2. Identify the root cause by correlating:
103
+ - Test failures (what the test expected vs what happened)
104
+ - Console errors (frontend runtime issues)
105
+ - Network failures (API/backend issues)
106
+ - Backend logs (server-side errors)
107
+ 3. Determine if the issue is:
108
+ - Frontend code (React components, forms, routing, state)
109
+ - Backend code (tRPC routes, database, validation)
110
+ - Test code (incorrect selectors, wrong assertions, timing issues)
111
+ - Configuration (environment, API endpoints, CORS)
112
+ 4. Apply fixes using search_replace or write tools
113
+ 5. Focus on the specific feature described in the ticket
114
+ 6. Ensure fixes are production-ready and follow best practices
115
+
116
+ **Common Issues to Check:**
117
+ - Mismatched field names between frontend and backend
118
+ - Missing tRPC route definitions
119
+ - Incorrect API endpoint URLs
120
+ - Missing form validation
121
+ - Async timing issues (missing awaits, race conditions)
122
+ - Incorrect Playwright selectors (wrong role, text, or ID)
123
+ - CORS or authentication issues
124
+ - Database schema mismatches
125
+
126
+ Begin by exploring the codebase, then identify and fix the root cause.`);
127
+ return sections.join('\n');
128
+ }
129
+ //# sourceMappingURL=error-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-analyzer.js","sourceRoot":"","sources":["../../../kosuke/utils/error-analyzer.ts"],"names":[],"mappings":"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"}
@@ -26,4 +26,16 @@ export declare function push(branchName: string): Promise<void>;
26
26
  * Get the current branch name
27
27
  */
28
28
  export declare function getCurrentBranch(): Promise<string>;
29
+ /**
30
+ * Commit and push to current branch (no branch creation, no PR)
31
+ */
32
+ export declare function commitAndPushCurrentBranch(message: string): Promise<void>;
33
+ /**
34
+ * Get git diff of current changes (staged and unstaged)
35
+ */
36
+ export declare function getGitDiff(): Promise<string>;
37
+ /**
38
+ * Check if there are any uncommitted changes
39
+ */
40
+ export declare function hasUncommittedChanges(): Promise<boolean>;
29
41
  //# sourceMappingURL=git.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../kosuke/utils/git.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAyC3C;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAkBvD;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAO7D;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,GAAE,MAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAejG;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI3D;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5D;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAGxD"}
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../kosuke/utils/git.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAyC3C;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAkBvD;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAO7D;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,GAAE,MAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAejG;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI3D;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5D;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAGxD;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB/E;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CASlD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC,CAG9D"}