@kosuke-ai/cli 0.0.30 → 0.0.31

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 (38) hide show
  1. package/dist/kosuke/commands/ship.d.ts.map +1 -1
  2. package/dist/kosuke/commands/ship.js +57 -22
  3. package/dist/kosuke/commands/ship.js.map +1 -1
  4. package/dist/kosuke/commands/test.d.ts +8 -9
  5. package/dist/kosuke/commands/test.d.ts.map +1 -1
  6. package/dist/kosuke/commands/test.js +68 -288
  7. package/dist/kosuke/commands/test.js.map +1 -1
  8. package/dist/kosuke/types.d.ts +8 -16
  9. package/dist/kosuke/types.d.ts.map +1 -1
  10. package/dist/kosuke/utils/browser-agent.d.ts +33 -0
  11. package/dist/kosuke/utils/browser-agent.d.ts.map +1 -0
  12. package/dist/kosuke/utils/browser-agent.js +102 -0
  13. package/dist/kosuke/utils/browser-agent.js.map +1 -0
  14. package/dist/kosuke/utils/error-analyzer.d.ts +6 -3
  15. package/dist/kosuke/utils/error-analyzer.d.ts.map +1 -1
  16. package/dist/kosuke/utils/error-analyzer.js +35 -57
  17. package/dist/kosuke/utils/error-analyzer.js.map +1 -1
  18. package/dist/kosuke/utils/prompt-generator.d.ts +13 -0
  19. package/dist/kosuke/utils/prompt-generator.d.ts.map +1 -0
  20. package/dist/kosuke/utils/prompt-generator.js +44 -0
  21. package/dist/kosuke/utils/prompt-generator.js.map +1 -0
  22. package/dist/lib.d.ts +1 -1
  23. package/dist/lib.d.ts.map +1 -1
  24. package/dist/lib.js.map +1 -1
  25. package/dist/package.json +3 -6
  26. package/package.json +3 -6
  27. package/dist/kosuke/utils/playwright-agent.d.ts +0 -47
  28. package/dist/kosuke/utils/playwright-agent.d.ts.map +0 -1
  29. package/dist/kosuke/utils/playwright-agent.js +0 -278
  30. package/dist/kosuke/utils/playwright-agent.js.map +0 -1
  31. package/dist/kosuke/utils/test-generator.d.ts +0 -22
  32. package/dist/kosuke/utils/test-generator.d.ts.map +0 -1
  33. package/dist/kosuke/utils/test-generator.js +0 -174
  34. package/dist/kosuke/utils/test-generator.js.map +0 -1
  35. package/dist/kosuke/utils/visual-tester.d.ts +0 -71
  36. package/dist/kosuke/utils/visual-tester.d.ts.map +0 -1
  37. package/dist/kosuke/utils/visual-tester.js +0 -202
  38. package/dist/kosuke/utils/visual-tester.js.map +0 -1
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Browser Agent - Stagehand-powered browser automation
3
+ *
4
+ * Uses Stagehand with Anthropic Claude for AI-driven browser testing.
5
+ * Provides simple boolean success/failure results with logs.
6
+ */
7
+ import { Stagehand } from '@browserbasehq/stagehand';
8
+ /**
9
+ * Run browser test using Stagehand
10
+ */
11
+ export async function runBrowserTest(options) {
12
+ const { url, task, headed = false, debug = false } = options;
13
+ if (!process.env.ANTHROPIC_API_KEY) {
14
+ throw new Error('ANTHROPIC_API_KEY environment variable is required for Stagehand');
15
+ }
16
+ console.log(`🌐 Navigating to: ${url}`);
17
+ console.log(`🎯 Task: ${task}\n`);
18
+ const stagehand = new Stagehand({
19
+ env: 'LOCAL',
20
+ apiKey: process.env.ANTHROPIC_API_KEY,
21
+ headless: !headed,
22
+ debugDom: debug,
23
+ modelName: (process.env.STAGEHAND_MODEL ||
24
+ 'claude-3-5-sonnet-20240620'),
25
+ modelClientOptions: {
26
+ apiKey: process.env.ANTHROPIC_API_KEY,
27
+ },
28
+ });
29
+ const consoleLogs = [];
30
+ const errors = [];
31
+ try {
32
+ // Initialize Stagehand
33
+ await stagehand.init();
34
+ // Set up log collectors
35
+ stagehand.page.on('console', (msg) => {
36
+ const text = msg.text();
37
+ consoleLogs.push(`[${msg.type()}] ${text}`);
38
+ // Track errors
39
+ if (msg.type() === 'error') {
40
+ errors.push(text);
41
+ }
42
+ });
43
+ stagehand.page.on('pageerror', (error) => {
44
+ errors.push(error.message);
45
+ });
46
+ // Navigate to URL
47
+ await stagehand.page.goto(url, { waitUntil: 'networkidle' });
48
+ // Execute task with Stagehand
49
+ console.log('🤖 Executing task with Claude...');
50
+ const result = await stagehand.act({ action: task });
51
+ // Close browser
52
+ await stagehand.close();
53
+ // Convert result to string for processing
54
+ const resultText = typeof result === 'string' ? result : JSON.stringify(result);
55
+ // Determine success based on result
56
+ const success = !resultText.toLowerCase().includes('error') &&
57
+ !resultText.toLowerCase().includes('failed') &&
58
+ errors.length === 0;
59
+ const output = success
60
+ ? `✅ Test passed: ${resultText}`
61
+ : `❌ Test failed: ${resultText}${errors.length > 0 ? `\n\nErrors found:\n${errors.join('\n')}` : ''}`;
62
+ console.log(`\n${output}\n`);
63
+ return {
64
+ success,
65
+ output,
66
+ logs: {
67
+ console: consoleLogs,
68
+ errors,
69
+ },
70
+ tokensUsed: {
71
+ input: 0, // Stagehand doesn't expose this yet
72
+ output: 0,
73
+ cacheCreation: 0,
74
+ cacheRead: 0,
75
+ },
76
+ cost: 0, // Will be added later when Stagehand exposes metrics
77
+ };
78
+ }
79
+ catch (error) {
80
+ // Ensure browser is closed on error
81
+ await stagehand.close();
82
+ const errorMessage = error instanceof Error ? error.message : String(error);
83
+ errors.push(errorMessage);
84
+ console.error(`\n❌ Browser test failed: ${errorMessage}\n`);
85
+ return {
86
+ success: false,
87
+ output: `❌ Test failed with error: ${errorMessage}`,
88
+ logs: {
89
+ console: consoleLogs,
90
+ errors,
91
+ },
92
+ tokensUsed: {
93
+ input: 0,
94
+ output: 0,
95
+ cacheCreation: 0,
96
+ cacheRead: 0,
97
+ },
98
+ cost: 0,
99
+ };
100
+ }
101
+ }
102
+ //# sourceMappingURL=browser-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-agent.js","sourceRoot":"","sources":["../../../kosuke/utils/browser-agent.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * Error Analyzer - Analyze test failures and apply fixes
3
3
  *
4
4
  * Uses Claude to:
5
- * - Analyze test failures, console errors, network failures, and backend logs
5
+ * - Analyze browser test failures, console errors, and backend logs
6
6
  * - Identify root causes
7
7
  * - Apply fixes to the codebase
8
8
  */
@@ -26,7 +26,10 @@ export interface TestFailure {
26
26
  received?: string;
27
27
  }
28
28
  /**
29
- * Analyze test failures and apply fixes
29
+ * Analyze browser test failures and apply fixes
30
30
  */
31
- export declare function analyzeAndFix(ticket: Ticket, testFailures: TestFailure[], logs: CollectedLogs, tracePath: string, cwd?: string): Promise<AnalysisResult>;
31
+ export declare function analyzeAndFix(ticket: Ticket, testOutput: string, logs: {
32
+ console: string[];
33
+ errors: string[];
34
+ }, dockerLogs?: CollectedLogs, cwd?: string): Promise<AnalysisResult>;
32
35
  //# sourceMappingURL=error-analyzer.d.ts.map
@@ -1 +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"}
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,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE;IACJ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,EACD,UAAU,CAAC,EAAE,aAAa,EAC1B,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,cAAc,CAAC,CAuBzB"}
@@ -2,19 +2,19 @@
2
2
  * Error Analyzer - Analyze test failures and apply fixes
3
3
  *
4
4
  * Uses Claude to:
5
- * - Analyze test failures, console errors, network failures, and backend logs
5
+ * - Analyze browser test failures, console errors, and backend logs
6
6
  * - Identify root causes
7
7
  * - Apply fixes to the codebase
8
8
  */
9
9
  import { runAgent } from './claude-agent.js';
10
10
  /**
11
- * Analyze test failures and apply fixes
11
+ * Analyze browser test failures and apply fixes
12
12
  */
13
- export async function analyzeAndFix(ticket, testFailures, logs, tracePath, cwd = process.cwd()) {
13
+ export async function analyzeAndFix(ticket, testOutput, logs, dockerLogs, cwd = process.cwd()) {
14
14
  console.log(`\n${'='.repeat(60)}`);
15
15
  console.log(`🔍 Analyzing Test Failures`);
16
16
  console.log(`${'='.repeat(60)}\n`);
17
- const systemPrompt = buildAnalysisPrompt(ticket, testFailures, logs, tracePath);
17
+ const systemPrompt = buildAnalysisPrompt(ticket, testOutput, logs, dockerLogs);
18
18
  const result = await runAgent(`Analyze and fix test failures for ticket ${ticket.id}`, {
19
19
  systemPrompt,
20
20
  cwd,
@@ -33,10 +33,10 @@ export async function analyzeAndFix(ticket, testFailures, logs, tracePath, cwd =
33
33
  /**
34
34
  * Build system prompt for error analysis
35
35
  */
36
- function buildAnalysisPrompt(ticket, testFailures, logs, tracePath) {
36
+ function buildAnalysisPrompt(ticket, testOutput, logs, dockerLogs) {
37
37
  const sections = [];
38
38
  // Ticket context
39
- sections.push(`You are debugging failed end-to-end tests for a feature implementation.
39
+ sections.push(`You are debugging a failed browser test for a feature implementation.
40
40
 
41
41
  **Ticket Information:**
42
42
  - ID: ${ticket.id}
@@ -45,83 +45,61 @@ function buildAnalysisPrompt(ticket, testFailures, logs, tracePath) {
45
45
  ${ticket.description}
46
46
 
47
47
  **Your Task:**
48
- 1. Analyze the test failures, logs, and errors below
49
- 2. Identify the root cause of the failures
48
+ 1. Analyze the test output, console logs, and errors below
49
+ 2. Identify the root cause of the test failure
50
50
  3. Apply fixes to resolve the issues
51
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
52
+ // Test output
53
+ sections.push(`\n**Browser Test Output:**`);
54
+ sections.push(testOutput);
55
+ // Console logs
67
56
  if (logs.console.length > 0) {
68
- sections.push(`\n**Console Errors (${logs.console.length}):**`);
57
+ sections.push(`\n**Browser Console Logs (${logs.console.length}):**`);
69
58
  for (const log of logs.console) {
70
- const location = log.location ? ` (${log.location})` : '';
71
- sections.push(`[${log.type.toUpperCase()}]${location} ${log.message}`);
59
+ sections.push(log);
72
60
  }
73
61
  }
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
- }
62
+ // Errors
63
+ if (logs.errors.length > 0) {
64
+ sections.push(`\n**Errors Found (${logs.errors.length}):**`);
65
+ for (const error of logs.errors) {
66
+ sections.push(error);
86
67
  }
87
68
  }
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) {
69
+ // Docker logs (if provided)
70
+ if (dockerLogs?.docker && dockerLogs.docker.length > 0) {
71
+ sections.push(`\n**Backend Logs (Docker Compose - last ${dockerLogs.docker.length} entries):**`);
72
+ for (const log of dockerLogs.docker) {
92
73
  sections.push(`[${log.service}] ${log.message}`);
93
74
  }
94
75
  }
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
76
  // Instructions
100
77
  sections.push(`\n**Critical Instructions:**
101
78
  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)
79
+ 2. Identify the root cause by analyzing:
80
+ - What the test was trying to accomplish
81
+ - What errors occurred in the browser console
82
+ - Any backend errors from Docker logs
83
+ - The current state of the codebase
107
84
  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)
85
+ - Frontend code (React components, forms, routing, state, UI elements)
86
+ - Backend code (API routes, database, validation, authentication)
87
+ - Configuration (environment variables, API endpoints, CORS)
88
+ - Missing implementation (feature not fully implemented)
112
89
  4. Apply fixes using search_replace or write tools
113
90
  5. Focus on the specific feature described in the ticket
114
91
  6. Ensure fixes are production-ready and follow best practices
115
92
 
116
93
  **Common Issues to Check:**
94
+ - Missing UI elements or incorrect component rendering
117
95
  - Mismatched field names between frontend and backend
118
- - Missing tRPC route definitions
96
+ - Missing API route definitions
119
97
  - Incorrect API endpoint URLs
120
98
  - Missing form validation
121
99
  - Async timing issues (missing awaits, race conditions)
122
- - Incorrect Playwright selectors (wrong role, text, or ID)
123
100
  - CORS or authentication issues
124
101
  - Database schema mismatches
102
+ - Missing error handling
125
103
 
126
104
  Begin by exploring the codebase, then identify and fix the root cause.`);
127
105
  return sections.join('\n');
@@ -1 +1 @@
1
- {"version":3,"file":"error-analyzer.js","sourceRoot":"","sources":["../../../kosuke/utils/error-analyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"error-analyzer.js","sourceRoot":"","sources":["../../../kosuke/utils/error-analyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Prompt Generator - Generate structured test prompts from tickets
3
+ */
4
+ import type { Ticket } from '../types.js';
5
+ /**
6
+ * Generate a structured test prompt from a ticket
7
+ */
8
+ export declare function generateTestPrompt(ticket: Ticket): string;
9
+ /**
10
+ * Generate a test prompt from a custom string
11
+ */
12
+ export declare function generateCustomTestPrompt(customPrompt: string, url: string): string;
13
+ //# sourceMappingURL=prompt-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-generator.d.ts","sourceRoot":"","sources":["../../../kosuke/utils/prompt-generator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAsBzD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAUlF"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Prompt Generator - Generate structured test prompts from tickets
3
+ */
4
+ /**
5
+ * Generate a structured test prompt from a ticket
6
+ */
7
+ export function generateTestPrompt(ticket) {
8
+ return `Test the following feature implementation:
9
+
10
+ **Feature:** ${ticket.title}
11
+
12
+ **Requirements:**
13
+ ${ticket.description}
14
+
15
+ **Testing Instructions:**
16
+ 1. Navigate to the relevant page(s) for this feature
17
+ 2. Verify all functionality described in the requirements works correctly
18
+ 3. Check for any console errors or warnings
19
+ 4. Confirm the implementation matches the ticket description
20
+ 5. Test both happy path and edge cases
21
+
22
+ **Success Criteria:**
23
+ - All functionality works as described
24
+ - No console errors
25
+ - User experience is smooth and intuitive
26
+ - Feature behaves correctly in different scenarios
27
+
28
+ Return a clear success or failure status with details about what was tested and any issues found.`;
29
+ }
30
+ /**
31
+ * Generate a test prompt from a custom string
32
+ */
33
+ export function generateCustomTestPrompt(customPrompt, url) {
34
+ return `${customPrompt}
35
+
36
+ **Testing Instructions:**
37
+ 1. Navigate to ${url}
38
+ 2. Execute the test scenario described above
39
+ 3. Check for console errors or warnings
40
+ 4. Verify expected behavior
41
+
42
+ Return success if the test passes, or failure with details about what went wrong.`;
43
+ }
44
+ //# sourceMappingURL=prompt-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-generator.js","sourceRoot":"","sources":["../../../kosuke/utils/prompt-generator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,OAAO;;eAEM,MAAM,CAAC,KAAK;;;EAGzB,MAAM,CAAC,WAAW;;;;;;;;;;;;;;;kGAe8E,CAAC;AACnG,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,YAAoB,EAAE,GAAW;IACxE,OAAO,GAAG,YAAY;;;iBAGP,GAAG;;;;;kFAK8D,CAAC;AACnF,CAAC"}
package/dist/lib.d.ts CHANGED
@@ -56,7 +56,7 @@ export { runLint, runTypecheck, runFormat, runTests, runComprehensiveLinting, de
56
56
  export { getRepoLocalPath } from './kosuke/utils/repository-manager.js';
57
57
  export { validateRepoAccess } from './kosuke/utils/repository-resolver.js';
58
58
  export { logger, withCommandTracking, setupCancellationHandler } from './kosuke/utils/logger.js';
59
- export type { Batch, Fix, AnalyseOptions, LintOptions, SyncRulesOptions, RulesAdaptation, GitInfo, GetCodeOptions, CodeExplorationResult, TicketsOptions, TicketsResult, Ticket, ShipOptions, ShipResult, BuildOptions, ReviewOptions, ReviewResult, TestOptions, TestResult, AnalysisResult, TestFailure, ConsoleLog, NetworkLog, DockerLog, CollectedLogs, PlaywrightResult, PlaywrightOptions, GeneratedTest, VisualDiff, VisualTestOptions, CommandName, ExecutionStatus, CliLogData, CommandExecutionContext, } from './kosuke/types.js';
59
+ export type { Batch, Fix, AnalyseOptions, LintOptions, SyncRulesOptions, RulesAdaptation, GitInfo, GetCodeOptions, CodeExplorationResult, TicketsOptions, TicketsResult, Ticket, ShipOptions, ShipResult, BuildOptions, ReviewOptions, ReviewResult, TestOptions, TestResult, AnalysisResult, TestFailure, ConsoleLog, NetworkLog, DockerLog, CollectedLogs, CommandName, ExecutionStatus, CliLogData, CommandExecutionContext, } from './kosuke/types.js';
60
60
  export type { ValidationResult } from './kosuke/utils/validator.js';
61
61
  export type { AgentVerbosity, AgentConfig, AgentResult } from './kosuke/utils/claude-agent.js';
62
62
  export type { RequirementsOptions, RequirementsResult } from './kosuke/commands/requirements.js';
package/dist/lib.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAKH,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAGlE,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EACL,OAAO,EACP,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAGjG,YAAY,EACV,KAAK,EACL,GAAG,EACH,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,OAAO,EACP,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,aAAa,EACb,MAAM,EACN,WAAW,EACX,UAAU,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,UAAU,EAEV,cAAc,EACd,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,iBAAiB,EAEjB,WAAW,EACX,eAAe,EACf,UAAU,EACV,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC/F,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAGjG,eAAO,MAAM,OAAO,QAAsB,CAAC"}
1
+ {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAKH,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAGlE,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EACL,OAAO,EACP,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAGjG,YAAY,EACV,KAAK,EACL,GAAG,EACH,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,OAAO,EACP,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,aAAa,EACb,MAAM,EACN,WAAW,EACX,UAAU,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,UAAU,EAEV,cAAc,EACd,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,aAAa,EAEb,WAAW,EACX,eAAe,EACf,UAAU,EACV,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACpE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC/F,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAGjG,eAAO,MAAM,OAAO,QAAsB,CAAC"}
package/dist/lib.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lib.js","sourceRoot":"","sources":["../lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,WAAW,MAAM,gBAAgB,CAAC;AAEzC,qBAAqB;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAElE,sBAAsB;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EACL,OAAO,EACP,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AA8CjG,mCAAmC;AACnC,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC"}
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,WAAW,MAAM,gBAAgB,CAAC;AAEzC,qBAAqB;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAElE,sBAAsB;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EACL,OAAO,EACP,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAyCjG,mCAAmC;AACnC,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC"}
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kosuke-ai/cli",
3
- "version": "0.0.30",
3
+ "version": "0.0.31",
4
4
  "description": "Kosuke CLI - Development automation tool for syncing rules and analyzing code quality",
5
5
  "keywords": [
6
6
  "CLI",
@@ -60,19 +60,16 @@
60
60
  "dependencies": {
61
61
  "@anthropic-ai/claude-agent-sdk": "^0.1.0",
62
62
  "@anthropic-ai/sdk": "^0.32.1",
63
+ "@browserbasehq/stagehand": "^1.5.0",
63
64
  "@octokit/rest": "^20.0.0",
64
65
  "dotenv": "^16.4.0",
65
66
  "glob": "^10.3.0",
66
67
  "ignore": "^5.3.0",
67
- "pixelmatch": "^5.3.0",
68
- "pngjs": "^7.0.0",
69
68
  "simple-git": "^3.22.0"
70
69
  },
71
70
  "devDependencies": {
72
- "@playwright/test": "^1.40.0",
71
+ "@playwright/test": "^1.49.1",
73
72
  "@types/node": "^20.11.0",
74
- "@types/pixelmatch": "^5.2.6",
75
- "@types/pngjs": "^6.0.5",
76
73
  "@typescript-eslint/eslint-plugin": "^8.19.1",
77
74
  "@typescript-eslint/parser": "^8.19.1",
78
75
  "@vitest/coverage-v8": "^3.1.3",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kosuke-ai/cli",
3
- "version": "0.0.30",
3
+ "version": "0.0.31",
4
4
  "description": "Kosuke CLI - Development automation tool for syncing rules and analyzing code quality",
5
5
  "keywords": [
6
6
  "CLI",
@@ -60,19 +60,16 @@
60
60
  "dependencies": {
61
61
  "@anthropic-ai/claude-agent-sdk": "^0.1.0",
62
62
  "@anthropic-ai/sdk": "^0.32.1",
63
+ "@browserbasehq/stagehand": "^1.5.0",
63
64
  "@octokit/rest": "^20.0.0",
64
65
  "dotenv": "^16.4.0",
65
66
  "glob": "^10.3.0",
66
67
  "ignore": "^5.3.0",
67
- "pixelmatch": "^5.3.0",
68
- "pngjs": "^7.0.0",
69
68
  "simple-git": "^3.22.0"
70
69
  },
71
70
  "devDependencies": {
72
- "@playwright/test": "^1.40.0",
71
+ "@playwright/test": "^1.49.1",
73
72
  "@types/node": "^20.11.0",
74
- "@types/pixelmatch": "^5.2.6",
75
- "@types/pngjs": "^6.0.5",
76
73
  "@typescript-eslint/eslint-plugin": "^8.19.1",
77
74
  "@typescript-eslint/parser": "^8.19.1",
78
75
  "@vitest/coverage-v8": "^3.1.3",
@@ -1,47 +0,0 @@
1
- /**
2
- * Playwright Agent - Test execution orchestration
3
- *
4
- * Executes Playwright tests with logging and visual regression
5
- */
6
- import type { TestFailure } from './error-analyzer.js';
7
- export interface PlaywrightResult {
8
- success: boolean;
9
- testsRun: number;
10
- testsPassed: number;
11
- testsFailed: number;
12
- failures: TestFailure[];
13
- tracePath: string;
14
- duration: number;
15
- }
16
- export interface PlaywrightOptions {
17
- testFile: string;
18
- baseUrl: string;
19
- headed?: boolean;
20
- debug?: boolean;
21
- cwd?: string;
22
- }
23
- /**
24
- * Run Playwright tests
25
- */
26
- export declare function runPlaywrightTests(options: PlaywrightOptions): Promise<PlaywrightResult>;
27
- /**
28
- * Check if Playwright is installed
29
- */
30
- export declare function isPlaywrightInstalled(cwd?: string): boolean;
31
- /**
32
- * Check if Playwright browsers are installed
33
- */
34
- export declare function areBrowsersInstalled(): boolean;
35
- /**
36
- * Install Playwright
37
- */
38
- export declare function installPlaywright(cwd?: string): Promise<void>;
39
- /**
40
- * Install Playwright browsers only
41
- */
42
- export declare function installBrowsers(): Promise<void>;
43
- /**
44
- * Ensure Playwright config exists
45
- */
46
- export declare function ensurePlaywrightConfig(cwd?: string): void;
47
- //# sourceMappingURL=playwright-agent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"playwright-agent.d.ts","sourceRoot":"","sources":["../../../kosuke/utils/playwright-agent.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA6D9F;AA4HD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAW1E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAoB9C;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBlF;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAUrD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,GAAE,MAAsB,GAAG,IAAI,CAmCxE"}