@kosuke-ai/cli 0.0.7 ā 0.0.9
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 +104 -18
- package/dist/index.js +42 -26
- package/dist/index.js.map +1 -1
- package/dist/kosuke/commands/analyse.d.ts +1 -1
- package/dist/kosuke/commands/analyse.d.ts.map +1 -1
- package/dist/kosuke/commands/analyse.js +124 -180
- package/dist/kosuke/commands/analyse.js.map +1 -1
- package/dist/kosuke/commands/lint.d.ts +1 -5
- package/dist/kosuke/commands/lint.d.ts.map +1 -1
- package/dist/kosuke/commands/lint.js +78 -97
- package/dist/kosuke/commands/lint.js.map +1 -1
- package/dist/kosuke/commands/sync-rules.d.ts +2 -1
- package/dist/kosuke/commands/sync-rules.d.ts.map +1 -1
- package/dist/kosuke/commands/sync-rules.js +106 -102
- package/dist/kosuke/commands/sync-rules.js.map +1 -1
- package/dist/kosuke/types.d.ts +11 -1
- package/dist/kosuke/types.d.ts.map +1 -1
- package/dist/kosuke/utils/git.d.ts +0 -4
- package/dist/kosuke/utils/git.d.ts.map +1 -1
- package/dist/kosuke/utils/git.js +0 -6
- package/dist/kosuke/utils/git.js.map +1 -1
- package/dist/kosuke/utils/pr-orchestrator.d.ts +47 -0
- package/dist/kosuke/utils/pr-orchestrator.d.ts.map +1 -0
- package/dist/kosuke/utils/pr-orchestrator.js +152 -0
- package/dist/kosuke/utils/pr-orchestrator.js.map +1 -0
- package/dist/lib.d.ts +26 -0
- package/dist/lib.d.ts.map +1 -0
- package/dist/lib.js +27 -0
- package/dist/lib.js.map +1 -0
- package/package.json +13 -4
|
@@ -5,17 +5,15 @@
|
|
|
5
5
|
* - Each batch of 10-12 files gets its own Claude run
|
|
6
6
|
* - Claude only sees those specific files (no repository-wide context)
|
|
7
7
|
* - Validate after each batch, commit locally
|
|
8
|
-
* - Push all commits
|
|
8
|
+
* - If --pr flag: Push all commits and create single PR
|
|
9
9
|
*/
|
|
10
10
|
import { query } from '@anthropic-ai/claude-agent-sdk';
|
|
11
|
-
import simpleGit from 'simple-git';
|
|
12
11
|
import { readFileSync } from 'fs';
|
|
13
12
|
import { join } from 'path';
|
|
14
13
|
import { discoverFiles } from '../utils/file-discovery.js';
|
|
15
14
|
import { createBatches } from '../utils/batch-creator.js';
|
|
16
15
|
import { runLint, runTypecheck } from '../utils/validator.js';
|
|
17
|
-
import {
|
|
18
|
-
import { createPullRequest } from '../utils/github.js';
|
|
16
|
+
import { runWithPRBatched } from '../utils/pr-orchestrator.js';
|
|
19
17
|
/**
|
|
20
18
|
* Calculate cost based on Claude Sonnet 4.5 pricing
|
|
21
19
|
* - $3 per million input tokens
|
|
@@ -26,8 +24,8 @@ import { createPullRequest } from '../utils/github.js';
|
|
|
26
24
|
function calculateCost(inputTokens, outputTokens, cacheCreationTokens = 0, cacheReadTokens = 0) {
|
|
27
25
|
const INPUT_COST_PER_MILLION = 3.0;
|
|
28
26
|
const OUTPUT_COST_PER_MILLION = 15.0;
|
|
29
|
-
const CACHE_CREATION_COST_PER_MILLION = 3.75;
|
|
30
|
-
const CACHE_READ_COST_PER_MILLION = 0.3;
|
|
27
|
+
const CACHE_CREATION_COST_PER_MILLION = 3.75;
|
|
28
|
+
const CACHE_READ_COST_PER_MILLION = 0.3;
|
|
31
29
|
const inputCost = (inputTokens / 1000000) * INPUT_COST_PER_MILLION;
|
|
32
30
|
const outputCost = (outputTokens / 1000000) * OUTPUT_COST_PER_MILLION;
|
|
33
31
|
const cacheCreationCost = (cacheCreationTokens / 1000000) * CACHE_CREATION_COST_PER_MILLION;
|
|
@@ -106,8 +104,6 @@ Start by reading CLAUDE.md, then analyze the batch files.`;
|
|
|
106
104
|
}
|
|
107
105
|
// Track token usage from the response
|
|
108
106
|
if (message.type === 'result' && message.subtype === 'success') {
|
|
109
|
-
// Log the complete usage object to see all available fields
|
|
110
|
-
console.log('š Usage data:', JSON.stringify(message.usage, null, 2));
|
|
111
107
|
// Capture all token types including cache-related tokens
|
|
112
108
|
inputTokens += message.usage.input_tokens || 0;
|
|
113
109
|
outputTokens += message.usage.output_tokens || 0;
|
|
@@ -137,12 +133,14 @@ Start by reading CLAUDE.md, then analyze the batch files.`;
|
|
|
137
133
|
tokenBreakdown.push(`${cacheReadTokens.toLocaleString()} cache read`);
|
|
138
134
|
console.log(` š° Cost: $${cost.toFixed(4)} (${tokenBreakdown.join(' + ')} tokens)`);
|
|
139
135
|
return {
|
|
136
|
+
batch,
|
|
140
137
|
fixes: fixCount > 0 ? fixes : [],
|
|
141
138
|
inputTokens,
|
|
142
139
|
outputTokens,
|
|
143
140
|
cacheCreationTokens,
|
|
144
141
|
cacheReadTokens,
|
|
145
142
|
cost,
|
|
143
|
+
skipped: false,
|
|
146
144
|
};
|
|
147
145
|
}
|
|
148
146
|
catch (error) {
|
|
@@ -170,70 +168,75 @@ async function validateBatch() {
|
|
|
170
168
|
return true;
|
|
171
169
|
}
|
|
172
170
|
/**
|
|
173
|
-
*
|
|
171
|
+
* Core analysis logic (git-agnostic)
|
|
172
|
+
* Returns batches and a function to process them
|
|
174
173
|
*/
|
|
175
|
-
async function
|
|
176
|
-
|
|
177
|
-
const
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
This PR contains automated fixes to align the codebase with **CLAUDE.md** standards.
|
|
186
|
-
|
|
187
|
-
### š Summary
|
|
188
|
-
- **Batches Processed**: ${batches.length}
|
|
189
|
-
- **Files Modified**: ${batches.reduce((sum, b) => sum + b.files.length, 0)}
|
|
190
|
-
- **Fixes Applied**: ${totalFixes}
|
|
191
|
-
- **š° Total Cost**: $${totalCost.toFixed(4)}
|
|
192
|
-
|
|
193
|
-
### š¢ Token Usage
|
|
194
|
-
- **Input tokens**: ${totalInputTokens.toLocaleString()} ($3/M)
|
|
195
|
-
- **Output tokens**: ${totalOutputTokens.toLocaleString()} ($15/M)
|
|
196
|
-
- **Cache write tokens**: ${totalCacheCreationTokens.toLocaleString()} ($3.75/M)
|
|
197
|
-
- **Cache read tokens**: ${totalCacheReadTokens.toLocaleString()} ($0.30/M)
|
|
198
|
-
- **Model**: Claude Sonnet 4.5
|
|
199
|
-
|
|
200
|
-
### š¦ Batches
|
|
201
|
-
|
|
202
|
-
${Object.entries(dirSummary)
|
|
203
|
-
.map(([dir, count]) => `- **${dir}**: ${count} files`)
|
|
204
|
-
.join('\n')}
|
|
205
|
-
|
|
206
|
-
### ā
Validation
|
|
207
|
-
- Linting: **PASSED**
|
|
208
|
-
- Type checking: **PASSED**
|
|
209
|
-
|
|
210
|
-
### šÆ Fix Categories
|
|
211
|
-
|
|
212
|
-
All fixes follow the comprehensive rules in CLAUDE.md, including:
|
|
213
|
-
- ā
Type inference from tRPC routers
|
|
214
|
-
- ā
Centralized type management
|
|
215
|
-
- ā
Navigation patterns (Link vs Button)
|
|
216
|
-
- ā
Loading states (Skeleton components)
|
|
217
|
-
- ā
Component colocation
|
|
218
|
-
- ā
Server-side filtering
|
|
219
|
-
- ā
Python code quality (if applicable)
|
|
220
|
-
|
|
221
|
-
---
|
|
222
|
-
|
|
223
|
-
š¤ *Generated by Kosuke CLI (\`bun run kosuke analyse\`)*
|
|
224
|
-
`;
|
|
225
|
-
// Get current branch name from git
|
|
226
|
-
const git = simpleGit();
|
|
227
|
-
const currentBranch = await git.revparse(['--abbrev-ref', 'HEAD']);
|
|
228
|
-
const prUrl = await createPullRequest({
|
|
229
|
-
owner,
|
|
230
|
-
repo,
|
|
231
|
-
title: `chore: Quality Fixes (${date})`,
|
|
232
|
-
head: currentBranch.trim(),
|
|
233
|
-
base: baseBranch,
|
|
234
|
-
body: prBody,
|
|
174
|
+
async function prepareAnalysis(options) {
|
|
175
|
+
// Load CLAUDE.md rules
|
|
176
|
+
const claudeMdPath = join(process.cwd(), 'CLAUDE.md');
|
|
177
|
+
const claudeMdRules = readFileSync(claudeMdPath, 'utf-8');
|
|
178
|
+
console.log('š Loaded CLAUDE.md rules\n');
|
|
179
|
+
// Discover files
|
|
180
|
+
console.log('š Discovering files...');
|
|
181
|
+
const files = await discoverFiles({
|
|
182
|
+
scope: options.scope,
|
|
183
|
+
types: options.types,
|
|
235
184
|
});
|
|
236
|
-
console.log(
|
|
185
|
+
console.log(`š Found ${files.length} files to analyze\n`);
|
|
186
|
+
if (files.length === 0) {
|
|
187
|
+
console.log('ā¹ļø No files found to analyze.');
|
|
188
|
+
return { batches: [], claudeMdRules };
|
|
189
|
+
}
|
|
190
|
+
// Create batches (10-12 files each, grouped by directory)
|
|
191
|
+
const batches = createBatches(files, { maxSize: 10, groupBy: 'directory' });
|
|
192
|
+
console.log(`š¦ Created ${batches.length} batches\n`);
|
|
193
|
+
return { batches, claudeMdRules };
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Process all batches sequentially (git-agnostic)
|
|
197
|
+
*/
|
|
198
|
+
async function analyzeAllBatches(batches, claudeMdRules) {
|
|
199
|
+
const processedBatches = [];
|
|
200
|
+
let totalFixes = 0;
|
|
201
|
+
let totalCost = 0;
|
|
202
|
+
let totalInputTokens = 0;
|
|
203
|
+
let totalOutputTokens = 0;
|
|
204
|
+
let totalCacheCreationTokens = 0;
|
|
205
|
+
let totalCacheReadTokens = 0;
|
|
206
|
+
for (const [index, batch] of batches.entries()) {
|
|
207
|
+
console.log(`\nš Progress: ${index + 1}/${batches.length}`);
|
|
208
|
+
// Analyze batch (isolated Claude run)
|
|
209
|
+
const result = await analyzeBatch(batch, claudeMdRules);
|
|
210
|
+
// Always validate changes
|
|
211
|
+
const isValid = await validateBatch();
|
|
212
|
+
if (isValid && result.fixes.length > 0) {
|
|
213
|
+
console.log(` ā
Batch validated and ready\n`);
|
|
214
|
+
processedBatches.push(result);
|
|
215
|
+
totalFixes += result.fixes.length;
|
|
216
|
+
totalCost += result.cost;
|
|
217
|
+
totalInputTokens += result.inputTokens;
|
|
218
|
+
totalOutputTokens += result.outputTokens;
|
|
219
|
+
totalCacheCreationTokens += result.cacheCreationTokens;
|
|
220
|
+
totalCacheReadTokens += result.cacheReadTokens;
|
|
221
|
+
}
|
|
222
|
+
else if (!isValid) {
|
|
223
|
+
// Validation failed, mark as skipped
|
|
224
|
+
console.warn(` ā ļø Validation failed, skipping batch\n`);
|
|
225
|
+
processedBatches.push({ ...result, skipped: true });
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
console.log(` ā¹ļø No fixes needed for this batch\n`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return {
|
|
232
|
+
processedBatches,
|
|
233
|
+
totalFixes,
|
|
234
|
+
totalCost,
|
|
235
|
+
totalInputTokens,
|
|
236
|
+
totalOutputTokens,
|
|
237
|
+
totalCacheCreationTokens,
|
|
238
|
+
totalCacheReadTokens,
|
|
239
|
+
};
|
|
237
240
|
}
|
|
238
241
|
/**
|
|
239
242
|
* Main analyse command
|
|
@@ -245,123 +248,64 @@ export async function analyseCommand(options = {}) {
|
|
|
245
248
|
if (!process.env.ANTHROPIC_API_KEY) {
|
|
246
249
|
throw new Error('ANTHROPIC_API_KEY environment variable is required');
|
|
247
250
|
}
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
const claudeMdPath = join(process.cwd(), 'CLAUDE.md');
|
|
253
|
-
const claudeMdRules = readFileSync(claudeMdPath, 'utf-8');
|
|
254
|
-
console.log('š Loaded CLAUDE.md rules\n');
|
|
255
|
-
// Discover files
|
|
256
|
-
console.log('š Discovering files...');
|
|
257
|
-
const files = await discoverFiles({
|
|
258
|
-
scope: options.scope,
|
|
259
|
-
types: options.types,
|
|
260
|
-
});
|
|
261
|
-
console.log(`š Found ${files.length} files to analyze\n`);
|
|
262
|
-
if (files.length === 0) {
|
|
263
|
-
console.log('ā¹ļø No files found to analyze.');
|
|
251
|
+
// Prepare analysis (discover files, create batches)
|
|
252
|
+
const { batches, claudeMdRules } = await prepareAnalysis(options);
|
|
253
|
+
if (batches.length === 0) {
|
|
254
|
+
console.log('\nā
No files to analyze.\n');
|
|
264
255
|
return;
|
|
265
256
|
}
|
|
266
|
-
//
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
if (options.dryRun) {
|
|
271
|
-
console.log('š DRY RUN MODE: Analyzing without creating PR...\n');
|
|
272
|
-
for (const [index, batch] of batches.entries()) {
|
|
273
|
-
console.log(`\nBatch ${index + 1}/${batches.length}: ${batch.name}`);
|
|
274
|
-
console.log(`Files: ${batch.files.join(', ')}`);
|
|
257
|
+
// If --pr flag is provided, wrap with PR workflow
|
|
258
|
+
if (options.pr) {
|
|
259
|
+
if (!process.env.GITHUB_TOKEN) {
|
|
260
|
+
throw new Error('GITHUB_TOKEN environment variable is required for --pr flag');
|
|
275
261
|
}
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
const isValid = await validateBatch();
|
|
302
|
-
if (isValid) {
|
|
303
|
-
// Commit batch
|
|
304
|
-
try {
|
|
305
|
-
await commit(`fix(quality): ${batch.name} - ${result.fixes.length} improvements`);
|
|
306
|
-
console.log(` ā
Batch committed\n`);
|
|
307
|
-
processedBatches.push(batch);
|
|
308
|
-
totalFixes += result.fixes.length;
|
|
309
|
-
totalCost += result.cost;
|
|
310
|
-
totalInputTokens += result.inputTokens;
|
|
311
|
-
totalOutputTokens += result.outputTokens;
|
|
312
|
-
totalCacheCreationTokens += result.cacheCreationTokens;
|
|
313
|
-
totalCacheReadTokens += result.cacheReadTokens;
|
|
314
|
-
}
|
|
315
|
-
catch (error) {
|
|
316
|
-
console.error(` ā Failed to commit batch:`, error);
|
|
317
|
-
console.warn(` ā ļø Rolling back batch\n`);
|
|
318
|
-
await reset();
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
else {
|
|
322
|
-
// Validation failed, rollback
|
|
323
|
-
console.warn(` ā ļø Validation failed, rolling back batch\n`);
|
|
324
|
-
await reset();
|
|
325
|
-
}
|
|
262
|
+
const date = new Date().toISOString().split('T')[0];
|
|
263
|
+
// Create batch processors
|
|
264
|
+
const batchProcessors = batches.map((batch, index) => async () => {
|
|
265
|
+
console.log(`\nBatch ${index + 1}/${batches.length}`);
|
|
266
|
+
const result = await analyzeBatch(batch, claudeMdRules);
|
|
267
|
+
return result;
|
|
268
|
+
});
|
|
269
|
+
try {
|
|
270
|
+
const { results, prInfo } = await runWithPRBatched({
|
|
271
|
+
branchPrefix: 'quality/kosuke-analysis',
|
|
272
|
+
baseBranch: options.baseBranch,
|
|
273
|
+
commitMessage: (batchIndex) => `fix(quality): ${batches[batchIndex].name} - improvements`,
|
|
274
|
+
prTitle: `chore: Quality Fixes (${date})`,
|
|
275
|
+
prBody: '', // TODO: Generate detailed PR body after processing
|
|
276
|
+
validateBeforeCommit: validateBatch,
|
|
277
|
+
}, batchProcessors);
|
|
278
|
+
// Calculate totals
|
|
279
|
+
const processedBatches = results.filter((r) => !r.skipped);
|
|
280
|
+
const totalFixes = processedBatches.reduce((sum, r) => sum + r.fixes.length, 0);
|
|
281
|
+
const totalCost = processedBatches.reduce((sum, r) => sum + r.cost, 0);
|
|
282
|
+
console.log('\nā
Analysis complete!');
|
|
283
|
+
console.log(`š Processed ${processedBatches.length}/${batches.length} batches`);
|
|
284
|
+
console.log(`š§ Applied ${totalFixes} fixes`);
|
|
285
|
+
console.log(`š° Total cost: $${totalCost.toFixed(4)}`);
|
|
286
|
+
console.log(`š PR: ${prInfo.prUrl}`);
|
|
326
287
|
}
|
|
327
|
-
|
|
328
|
-
|
|
288
|
+
catch (error) {
|
|
289
|
+
if (error instanceof Error && error.message === 'No changes to commit') {
|
|
290
|
+
console.log('\nā
No fixes needed! Codebase is already compliant.\n');
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
throw error;
|
|
329
294
|
}
|
|
330
295
|
}
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
await push(branchName);
|
|
344
|
-
console.log('ā
Commits pushed successfully\n');
|
|
345
|
-
}
|
|
346
|
-
catch (error) {
|
|
347
|
-
console.error('ā Failed to push commits:', error);
|
|
348
|
-
throw new Error(`Failed to push branch ${branchName}: ${error instanceof Error ? error.message : String(error)}`);
|
|
349
|
-
}
|
|
350
|
-
// Create PR
|
|
351
|
-
console.log('š Creating pull request...\n');
|
|
352
|
-
try {
|
|
353
|
-
await createQualityPR(processedBatches, totalFixes, totalCost, totalInputTokens, totalOutputTokens, totalCacheCreationTokens, totalCacheReadTokens, baseBranch);
|
|
354
|
-
}
|
|
355
|
-
catch (error) {
|
|
356
|
-
console.error('ā Failed to create pull request:', error);
|
|
357
|
-
console.log(`\nā¹ļø Changes have been pushed to branch: ${branchName}`);
|
|
358
|
-
console.log(` You can manually create a PR from this branch.`);
|
|
359
|
-
throw new Error(`Failed to create PR: ${error instanceof Error ? error.message : String(error)}`);
|
|
296
|
+
else {
|
|
297
|
+
// Run core logic without PR
|
|
298
|
+
const result = await analyzeAllBatches(batches, claudeMdRules);
|
|
299
|
+
if (result.processedBatches.length === 0) {
|
|
300
|
+
console.log('\nā
No fixes needed! Codebase is already compliant.\n');
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
console.log('\nā
Analysis complete!');
|
|
304
|
+
console.log(`š Processed ${result.processedBatches.length}/${batches.length} batches`);
|
|
305
|
+
console.log(`š§ Applied ${result.totalFixes} fixes`);
|
|
306
|
+
console.log(`š° Total cost: $${result.totalCost.toFixed(4)}`);
|
|
307
|
+
console.log('\nā¹ļø Changes applied locally. Use --pr flag to create a pull request.');
|
|
360
308
|
}
|
|
361
|
-
console.log('\nā
Quality analysis complete!');
|
|
362
|
-
console.log(`š Processed ${processedBatches.length}/${batches.length} batches`);
|
|
363
|
-
console.log(`š§ Applied ${totalFixes} fixes`);
|
|
364
|
-
console.log(`š° Total cost: $${totalCost.toFixed(4)}`);
|
|
365
309
|
}
|
|
366
310
|
catch (error) {
|
|
367
311
|
console.error('\nā Analysis failed:', error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyse.js","sourceRoot":"","sources":["../../../kosuke/commands/analyse.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"analyse.js","sourceRoot":"","sources":["../../../kosuke/commands/analyse.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,13 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Strategy: Run linter, give errors to Claude, let it fix them
|
|
5
5
|
*/
|
|
6
|
-
|
|
7
|
-
dryRun?: boolean;
|
|
8
|
-
noPr?: boolean;
|
|
9
|
-
}
|
|
6
|
+
import type { LintOptions } from '../types.js';
|
|
10
7
|
/**
|
|
11
8
|
* Main lint command
|
|
12
9
|
*/
|
|
13
10
|
export declare function lintCommand(options?: LintOptions): Promise<void>;
|
|
14
|
-
export {};
|
|
15
11
|
//# sourceMappingURL=lint.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../../kosuke/commands/lint.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../../kosuke/commands/lint.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAqJ/C;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmD1E"}
|
|
@@ -5,8 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { query } from '@anthropic-ai/claude-agent-sdk';
|
|
7
7
|
import { runLint } from '../utils/validator.js';
|
|
8
|
-
import {
|
|
9
|
-
import { createPullRequest } from '../utils/github.js';
|
|
8
|
+
import { runWithPR } from '../utils/pr-orchestrator.js';
|
|
10
9
|
/**
|
|
11
10
|
* Run Claude-powered lint fixing
|
|
12
11
|
*/
|
|
@@ -77,91 +76,79 @@ Start by reading the files with errors and fixing them one by one.`;
|
|
|
77
76
|
}
|
|
78
77
|
}
|
|
79
78
|
/**
|
|
80
|
-
*
|
|
79
|
+
* Core lint fixing logic (git-agnostic)
|
|
81
80
|
*/
|
|
82
|
-
|
|
83
|
-
console.log('
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
81
|
+
async function fixLintErrorsCore() {
|
|
82
|
+
console.log('š Running linter...\n');
|
|
83
|
+
let lintResult = await runLint();
|
|
84
|
+
if (lintResult.success) {
|
|
85
|
+
console.log('ā
No linting errors found! Code is clean.\n');
|
|
86
|
+
return { success: true, attempts: 0, fixesApplied: 0 };
|
|
87
|
+
}
|
|
88
|
+
console.log('ā Linting errors found:\n');
|
|
89
|
+
console.log(lintResult.error);
|
|
90
|
+
// Use Claude to fix errors (up to 3 attempts)
|
|
91
|
+
let attemptCount = 0;
|
|
92
|
+
const maxAttempts = 3;
|
|
93
|
+
let totalFixes = 0;
|
|
94
|
+
while (!lintResult.success && attemptCount < maxAttempts) {
|
|
95
|
+
attemptCount++;
|
|
96
|
+
console.log(`\n${'='.repeat(60)}`);
|
|
97
|
+
console.log(`š Fix Attempt ${attemptCount}/${maxAttempts}`);
|
|
98
|
+
console.log(`${'='.repeat(60)}`);
|
|
99
|
+
const fixApplied = await fixLintErrors(lintResult.error || '');
|
|
100
|
+
if (!fixApplied) {
|
|
101
|
+
console.log('\nā ļø No fixes were applied by Claude');
|
|
102
|
+
break;
|
|
93
103
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
104
|
+
totalFixes++;
|
|
105
|
+
// Verify fixes by running lint again
|
|
106
|
+
console.log('\nš Verifying fixes...\n');
|
|
107
|
+
lintResult = await runLint();
|
|
97
108
|
if (lintResult.success) {
|
|
98
|
-
console.log('ā
|
|
99
|
-
|
|
109
|
+
console.log('ā
All linting errors fixed!\n');
|
|
110
|
+
break;
|
|
100
111
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
if (options.dryRun) {
|
|
104
|
-
console.log('\nš DRY RUN MODE: Not fixing errors.');
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
// Create working branch
|
|
108
|
-
let branchName = '';
|
|
109
|
-
if (!options.noPr) {
|
|
110
|
-
const timestamp = new Date().toISOString().replace(/[:.]/g, '-').split('.')[0];
|
|
111
|
-
branchName = `fix/kosuke-lint-${timestamp}`;
|
|
112
|
-
console.log(`\nšæ Creating branch: ${branchName}\n`);
|
|
113
|
-
await createBranch(branchName);
|
|
114
|
-
}
|
|
115
|
-
// Use Claude to fix errors (up to 3 attempts)
|
|
116
|
-
let attemptCount = 0;
|
|
117
|
-
const maxAttempts = 3;
|
|
118
|
-
while (!lintResult.success && attemptCount < maxAttempts) {
|
|
119
|
-
attemptCount++;
|
|
120
|
-
console.log(`\n${'='.repeat(60)}`);
|
|
121
|
-
console.log(`š Fix Attempt ${attemptCount}/${maxAttempts}`);
|
|
122
|
-
console.log(`${'='.repeat(60)}`);
|
|
123
|
-
const fixApplied = await fixLintErrors(lintResult.error || '');
|
|
124
|
-
if (!fixApplied) {
|
|
125
|
-
console.log('\nā ļø No fixes were applied by Claude');
|
|
126
|
-
break;
|
|
127
|
-
}
|
|
128
|
-
// Verify fixes by running lint again
|
|
129
|
-
console.log('\nš Verifying fixes...\n');
|
|
130
|
-
lintResult = await runLint();
|
|
131
|
-
if (lintResult.success) {
|
|
132
|
-
console.log('ā
All linting errors fixed!\n');
|
|
133
|
-
break;
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
console.log(`\nā ļø Some errors remain (${lintResult.error?.split('\n').length || 0} lines):`);
|
|
137
|
-
console.log(lintResult.error);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
// Check final result
|
|
141
|
-
if (!lintResult.success) {
|
|
142
|
-
console.error('\nā Could not fix all linting errors after 3 attempts');
|
|
143
|
-
console.log('\nRemaining errors:');
|
|
112
|
+
else {
|
|
113
|
+
console.log(`\nā ļø Some errors remain (${lintResult.error?.split('\n').length || 0} lines):`);
|
|
144
114
|
console.log(lintResult.error);
|
|
145
|
-
throw new Error('Linting errors remain after maximum attempts');
|
|
146
115
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
116
|
+
}
|
|
117
|
+
// Check final result
|
|
118
|
+
if (!lintResult.success) {
|
|
119
|
+
console.error('\nā Could not fix all linting errors after 3 attempts');
|
|
120
|
+
console.log('\nRemaining errors:');
|
|
121
|
+
console.log(lintResult.error);
|
|
122
|
+
throw new Error('Linting errors remain after maximum attempts');
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
success: true,
|
|
126
|
+
attempts: attemptCount,
|
|
127
|
+
fixesApplied: totalFixes,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Main lint command
|
|
132
|
+
*/
|
|
133
|
+
export async function lintCommand(options = {}) {
|
|
134
|
+
console.log('š Starting Kosuke Lint Fix...\n');
|
|
135
|
+
try {
|
|
136
|
+
// Validate environment
|
|
137
|
+
if (!process.env.ANTHROPIC_API_KEY) {
|
|
138
|
+
throw new Error('ANTHROPIC_API_KEY environment variable is required');
|
|
139
|
+
}
|
|
140
|
+
// If --pr flag is provided, wrap with PR workflow
|
|
141
|
+
if (options.pr) {
|
|
142
|
+
const { result, prInfo } = await runWithPR({
|
|
143
|
+
branchPrefix: 'fix/kosuke-lint',
|
|
144
|
+
baseBranch: options.baseBranch,
|
|
145
|
+
commitMessage: 'chore: fix linting errors',
|
|
146
|
+
prTitle: 'chore: Fix linting errors',
|
|
147
|
+
prBody: `## š§ Automated Lint Fixes
|
|
160
148
|
|
|
161
149
|
This PR contains automated fixes for linting errors.
|
|
162
150
|
|
|
163
151
|
### š Summary
|
|
164
|
-
- **Fix Attempts**: ${attemptCount}
|
|
165
152
|
- **Status**: ā
All errors fixed
|
|
166
153
|
|
|
167
154
|
### ā
Validation
|
|
@@ -169,27 +156,21 @@ This PR contains automated fixes for linting errors.
|
|
|
169
156
|
|
|
170
157
|
---
|
|
171
158
|
|
|
172
|
-
š¤ *Generated by Kosuke CLI (\`kosuke lint\`)
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
console.log(`\nā¹ļø Changes may be on branch: ${branchName}`);
|
|
187
|
-
console.log(` You can manually create a PR from this branch.`);
|
|
188
|
-
}
|
|
189
|
-
throw error;
|
|
190
|
-
}
|
|
159
|
+
š¤ *Generated by Kosuke CLI (\`kosuke lint --pr\`)*`,
|
|
160
|
+
}, fixLintErrorsCore);
|
|
161
|
+
console.log('\nā
Lint fixing complete!');
|
|
162
|
+
console.log(`š Attempts: ${result.attempts}`);
|
|
163
|
+
console.log(`š§ Fixes applied: ${result.fixesApplied}`);
|
|
164
|
+
console.log(`š PR: ${prInfo.prUrl}`);
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
// Run core logic without PR
|
|
168
|
+
const result = await fixLintErrorsCore();
|
|
169
|
+
console.log('\nā
Lint fixing complete!');
|
|
170
|
+
console.log(`š Attempts: ${result.attempts}`);
|
|
171
|
+
console.log(`š§ Fixes applied: ${result.fixesApplied}`);
|
|
172
|
+
console.log('\nā¹ļø Changes applied locally. Use --pr flag to create a pull request.');
|
|
191
173
|
}
|
|
192
|
-
console.log('\nā
Lint fixing complete!');
|
|
193
174
|
}
|
|
194
175
|
catch (error) {
|
|
195
176
|
console.error('\nā Lint fixing failed:', error);
|