@kosuke-ai/cli 0.0.10 → 0.0.12
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/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -1
- package/dist/kosuke/commands/analyse.d.ts.map +1 -1
- package/dist/kosuke/commands/analyse.js +15 -85
- package/dist/kosuke/commands/analyse.js.map +1 -1
- package/dist/kosuke/commands/getcode.d.ts +29 -0
- package/dist/kosuke/commands/getcode.d.ts.map +1 -0
- package/dist/kosuke/commands/getcode.js +204 -0
- package/dist/kosuke/commands/getcode.js.map +1 -0
- package/dist/kosuke/commands/lint.d.ts +9 -4
- package/dist/kosuke/commands/lint.d.ts.map +1 -1
- package/dist/kosuke/commands/lint.js +190 -104
- package/dist/kosuke/commands/lint.js.map +1 -1
- package/dist/kosuke/commands/requirements.d.ts.map +1 -1
- package/dist/kosuke/commands/requirements.js +1 -18
- package/dist/kosuke/commands/requirements.js.map +1 -1
- package/dist/kosuke/commands/sync-rules.d.ts.map +1 -1
- package/dist/kosuke/commands/sync-rules.js +30 -48
- package/dist/kosuke/commands/sync-rules.js.map +1 -1
- package/dist/kosuke/commands/tickets.d.ts +24 -0
- package/dist/kosuke/commands/tickets.d.ts.map +1 -0
- package/dist/kosuke/commands/tickets.js +298 -0
- package/dist/kosuke/commands/tickets.js.map +1 -0
- package/dist/kosuke/types.d.ts +50 -0
- package/dist/kosuke/types.d.ts.map +1 -1
- package/dist/kosuke/utils/claude-agent.d.ts +57 -0
- package/dist/kosuke/utils/claude-agent.d.ts.map +1 -0
- package/dist/kosuke/utils/claude-agent.js +177 -0
- package/dist/kosuke/utils/claude-agent.js.map +1 -0
- package/dist/kosuke/utils/repository-manager.d.ts +13 -0
- package/dist/kosuke/utils/repository-manager.d.ts.map +1 -0
- package/dist/kosuke/utils/repository-manager.js +94 -0
- package/dist/kosuke/utils/repository-manager.js.map +1 -0
- package/dist/kosuke/utils/repository-resolver.d.ts +12 -0
- package/dist/kosuke/utils/repository-resolver.d.ts.map +1 -0
- package/dist/kosuke/utils/repository-resolver.js +186 -0
- package/dist/kosuke/utils/repository-resolver.js.map +1 -0
- package/dist/kosuke/utils/validator.d.ts +19 -7
- package/dist/kosuke/utils/validator.d.ts.map +1 -1
- package/dist/kosuke/utils/validator.js +102 -24
- package/dist/kosuke/utils/validator.js.map +1 -1
- package/dist/lib.d.ts +26 -5
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +23 -4
- package/dist/lib.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,36 +1,98 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Lint command -
|
|
2
|
+
* Lint command - Comprehensive code quality validation and fixing
|
|
3
3
|
*
|
|
4
|
-
* Strategy: Run
|
|
4
|
+
* Strategy: Run all validation steps (format, lint, typecheck, test, knip),
|
|
5
|
+
* give errors to Claude, let it fix them
|
|
5
6
|
*/
|
|
6
|
-
import {
|
|
7
|
-
import { runLint } from '../utils/validator.js';
|
|
7
|
+
import { runLint, runFormat, runTypecheck } from '../utils/validator.js';
|
|
8
8
|
import { runWithPR } from '../utils/pr-orchestrator.js';
|
|
9
|
+
import { runAgent } from '../utils/claude-agent.js';
|
|
10
|
+
import { execSync } from 'child_process';
|
|
9
11
|
/**
|
|
10
|
-
* Run
|
|
12
|
+
* Run tests using package.json test script
|
|
13
|
+
*/
|
|
14
|
+
async function runTests() {
|
|
15
|
+
const { readPackageJsonScripts, detectPackageManager } = await import('../utils/validator.js');
|
|
16
|
+
const scripts = readPackageJsonScripts();
|
|
17
|
+
if (!scripts || !scripts.test) {
|
|
18
|
+
return {
|
|
19
|
+
success: true,
|
|
20
|
+
warning: '⚠️ No test script found in package.json. Skipping tests.',
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
const packageManager = detectPackageManager();
|
|
24
|
+
const command = `${packageManager} run test`;
|
|
25
|
+
try {
|
|
26
|
+
const output = execSync(command, {
|
|
27
|
+
cwd: process.cwd(),
|
|
28
|
+
encoding: 'utf-8',
|
|
29
|
+
stdio: 'pipe',
|
|
30
|
+
});
|
|
31
|
+
return { success: true, output };
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
const err = error;
|
|
35
|
+
return {
|
|
36
|
+
success: false,
|
|
37
|
+
error: `$ ${command}\n\n${err.stdout || err.stderr || err.message}`,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Run knip to check for unused exports
|
|
43
|
+
*/
|
|
44
|
+
async function runKnip() {
|
|
45
|
+
const { readPackageJsonScripts, detectPackageManager } = await import('../utils/validator.js');
|
|
46
|
+
const scripts = readPackageJsonScripts();
|
|
47
|
+
if (!scripts || !scripts.knip) {
|
|
48
|
+
return {
|
|
49
|
+
success: true,
|
|
50
|
+
warning: '⚠️ No knip script found in package.json. Skipping knip check.',
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
const packageManager = detectPackageManager();
|
|
54
|
+
const command = `${packageManager} run knip`;
|
|
55
|
+
try {
|
|
56
|
+
const output = execSync(command, {
|
|
57
|
+
cwd: process.cwd(),
|
|
58
|
+
encoding: 'utf-8',
|
|
59
|
+
stdio: 'pipe',
|
|
60
|
+
});
|
|
61
|
+
return { success: true, output };
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
const err = error;
|
|
65
|
+
return {
|
|
66
|
+
success: false,
|
|
67
|
+
error: `$ ${command}\n\n${err.stdout || err.stderr || err.message}`,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Run Claude to fix code quality errors
|
|
11
73
|
* Exported so other commands can use it
|
|
12
74
|
*/
|
|
13
|
-
export async function
|
|
14
|
-
console.log(
|
|
75
|
+
export async function fixCodeQualityErrors(stepName, errors) {
|
|
76
|
+
console.log(`\n🤖 Using Claude to fix ${stepName} errors...\n`);
|
|
15
77
|
const workspaceRoot = process.cwd();
|
|
16
78
|
// System prompt
|
|
17
|
-
const systemPrompt = `You are a code quality expert specialized in fixing
|
|
79
|
+
const systemPrompt = `You are a code quality expert specialized in fixing ${stepName} errors.
|
|
18
80
|
|
|
19
|
-
Your task is to analyze
|
|
81
|
+
Your task is to analyze errors and fix them according to the project's quality standards.
|
|
20
82
|
|
|
21
83
|
CRITICAL REQUIREMENTS:
|
|
22
|
-
- You MUST use the search_replace or write tools to fix ALL
|
|
84
|
+
- You MUST use the search_replace or write tools to fix ALL errors
|
|
23
85
|
- Simply identifying issues without fixing them is NOT acceptable
|
|
24
|
-
- Focus ONLY on fixing the specific
|
|
86
|
+
- Focus ONLY on fixing the specific errors provided. Do not make unnecessary changes.`;
|
|
25
87
|
// User prompt
|
|
26
|
-
const promptText = `The following
|
|
88
|
+
const promptText = `The following ${stepName} errors need to be fixed:
|
|
27
89
|
|
|
28
90
|
\`\`\`
|
|
29
|
-
${
|
|
91
|
+
${errors}
|
|
30
92
|
\`\`\`
|
|
31
93
|
|
|
32
94
|
**Your task:**
|
|
33
|
-
1. Analyze each
|
|
95
|
+
1. Analyze each error carefully
|
|
34
96
|
2. Read the files that have errors
|
|
35
97
|
3. **IMMEDIATELY FIX each error using search_replace or write tools**
|
|
36
98
|
4. Make minimal changes - only fix what's broken
|
|
@@ -41,42 +103,15 @@ ${lintErrors}
|
|
|
41
103
|
- Every error you identify MUST be fixed
|
|
42
104
|
|
|
43
105
|
Start by reading the files with errors and fixing them one by one.`;
|
|
44
|
-
const options = {
|
|
45
|
-
model: 'claude-sonnet-4-5',
|
|
46
|
-
systemPrompt,
|
|
47
|
-
maxTurns: 20,
|
|
48
|
-
cwd: workspaceRoot,
|
|
49
|
-
permissionMode: 'bypassPermissions',
|
|
50
|
-
};
|
|
51
106
|
try {
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const text = block.text.trim();
|
|
61
|
-
// Show key insights
|
|
62
|
-
if (text.includes('fix') ||
|
|
63
|
-
text.includes('error') ||
|
|
64
|
-
text.includes('✅') ||
|
|
65
|
-
text.includes('❌')) {
|
|
66
|
-
console.log(` 💭 ${text}`);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
else if (block.type === 'tool_use') {
|
|
70
|
-
if (block.name === 'write' || block.name === 'search_replace') {
|
|
71
|
-
fixCount++;
|
|
72
|
-
console.log(` 🔧 Applying fix ${fixCount}...`);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
console.log(`\n✨ Claude completed (${fixCount} fixes applied)`);
|
|
79
|
-
return fixCount > 0;
|
|
107
|
+
const result = await runAgent(promptText, {
|
|
108
|
+
systemPrompt,
|
|
109
|
+
maxTurns: 20,
|
|
110
|
+
cwd: workspaceRoot,
|
|
111
|
+
verbosity: 'normal',
|
|
112
|
+
});
|
|
113
|
+
console.log(`\n✨ Claude completed (${result.fixCount} fixes applied)`);
|
|
114
|
+
return result.fixCount > 0;
|
|
80
115
|
}
|
|
81
116
|
catch (error) {
|
|
82
117
|
console.error('\n❌ Error during Claude fixing:', error);
|
|
@@ -84,63 +119,104 @@ Start by reading the files with errors and fixing them one by one.`;
|
|
|
84
119
|
}
|
|
85
120
|
}
|
|
86
121
|
/**
|
|
87
|
-
*
|
|
122
|
+
* Legacy export for backward compatibility
|
|
123
|
+
*/
|
|
124
|
+
export async function fixLintErrors(lintErrors) {
|
|
125
|
+
return fixCodeQualityErrors('linting', lintErrors);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Core comprehensive validation and fixing logic (git-agnostic)
|
|
88
129
|
* Used internally by lintCommand
|
|
89
130
|
*/
|
|
90
131
|
async function fixLintErrorsCore() {
|
|
91
|
-
console.log('🔍 Running
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
132
|
+
console.log('🔍 Running comprehensive code quality checks...\n');
|
|
133
|
+
// Define all validation steps
|
|
134
|
+
const validationSteps = [
|
|
135
|
+
{ name: '🎨 Format', run: runFormat, fixable: true },
|
|
136
|
+
{ name: '🔍 Lint', run: runLint, fixable: true },
|
|
137
|
+
{ name: '🔎 TypeCheck', run: runTypecheck, fixable: true },
|
|
138
|
+
{ name: '🧪 Tests', run: runTests, fixable: true },
|
|
139
|
+
{ name: '🔪 Knip', run: runKnip, fixable: true },
|
|
140
|
+
];
|
|
141
|
+
const stepsFixed = [];
|
|
142
|
+
let totalAttempts = 0;
|
|
102
143
|
let totalFixes = 0;
|
|
103
|
-
|
|
104
|
-
|
|
144
|
+
// Run each validation step
|
|
145
|
+
for (const step of validationSteps) {
|
|
105
146
|
console.log(`\n${'='.repeat(60)}`);
|
|
106
|
-
console.log(
|
|
107
|
-
console.log(`${'='.repeat(60)}`);
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
147
|
+
console.log(`Running: ${step.name}`);
|
|
148
|
+
console.log(`${'='.repeat(60)}\n`);
|
|
149
|
+
let result = await step.run();
|
|
150
|
+
// Handle warnings (non-blocking)
|
|
151
|
+
if (result.warning) {
|
|
152
|
+
console.log(result.warning);
|
|
153
|
+
console.log(`✅ ${step.name} - SKIPPED\n`);
|
|
154
|
+
continue;
|
|
112
155
|
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
if (lintResult.success) {
|
|
118
|
-
console.log('✅ All linting errors fixed!\n');
|
|
119
|
-
break;
|
|
156
|
+
// Handle success
|
|
157
|
+
if (result.success) {
|
|
158
|
+
console.log(`✅ ${step.name} - PASSED\n`);
|
|
159
|
+
continue;
|
|
120
160
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
161
|
+
// Handle errors
|
|
162
|
+
console.log(`❌ ${step.name} - FAILED:\n`);
|
|
163
|
+
console.log(result.error);
|
|
164
|
+
if (!step.fixable) {
|
|
165
|
+
console.log(`\n⚠️ ${step.name} errors cannot be auto-fixed by Claude`);
|
|
166
|
+
throw new Error(`${step.name} validation failed`);
|
|
167
|
+
}
|
|
168
|
+
// Attempt to fix errors with Claude (max 3 attempts per step)
|
|
169
|
+
let attemptCount = 0;
|
|
170
|
+
const maxAttempts = 3;
|
|
171
|
+
while (!result.success && attemptCount < maxAttempts) {
|
|
172
|
+
attemptCount++;
|
|
173
|
+
totalAttempts++;
|
|
174
|
+
console.log(`\n${'='.repeat(60)}`);
|
|
175
|
+
console.log(`🔄 ${step.name} Fix Attempt ${attemptCount}/${maxAttempts}`);
|
|
176
|
+
console.log(`${'='.repeat(60)}`);
|
|
177
|
+
const fixApplied = await fixCodeQualityErrors(step.name, result.error || '');
|
|
178
|
+
if (!fixApplied) {
|
|
179
|
+
console.log(`\n⚠️ No fixes were applied by Claude for ${step.name}`);
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
totalFixes++;
|
|
183
|
+
// Verify fixes by running validation again
|
|
184
|
+
console.log(`\n🔍 Verifying ${step.name} fixes...\n`);
|
|
185
|
+
result = await step.run();
|
|
186
|
+
if (result.success) {
|
|
187
|
+
console.log(`✅ ${step.name} - All errors fixed!\n`);
|
|
188
|
+
stepsFixed.push(step.name);
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
const errorLines = result.error?.split('\n').length || 0;
|
|
193
|
+
console.log(`\n⚠️ Some ${step.name} errors remain (${errorLines} lines):`);
|
|
194
|
+
console.log(result.error);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
// Check if step still has errors after attempts
|
|
198
|
+
if (!result.success) {
|
|
199
|
+
console.error(`\n❌ Could not fix all ${step.name} errors after ${maxAttempts} attempts`);
|
|
200
|
+
console.log('\nRemaining errors:');
|
|
201
|
+
console.log(result.error);
|
|
202
|
+
throw new Error(`${step.name} errors remain after maximum attempts`);
|
|
124
203
|
}
|
|
125
204
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
console.log('\nRemaining errors:');
|
|
130
|
-
console.log(lintResult.error);
|
|
131
|
-
throw new Error('Linting errors remain after maximum attempts');
|
|
132
|
-
}
|
|
205
|
+
console.log('\n' + '='.repeat(60));
|
|
206
|
+
console.log('✅ All validation steps passed!');
|
|
207
|
+
console.log('='.repeat(60));
|
|
133
208
|
return {
|
|
134
209
|
success: true,
|
|
135
|
-
attempts:
|
|
210
|
+
attempts: totalAttempts,
|
|
136
211
|
fixesApplied: totalFixes,
|
|
212
|
+
stepsFixed,
|
|
137
213
|
};
|
|
138
214
|
}
|
|
139
215
|
/**
|
|
140
|
-
* Main lint command
|
|
216
|
+
* Main lint command (now runs comprehensive validation)
|
|
141
217
|
*/
|
|
142
218
|
export async function lintCommand(options = {}) {
|
|
143
|
-
console.log('🚀 Starting Kosuke
|
|
219
|
+
console.log('🚀 Starting Kosuke Code Quality Check & Fix...\n');
|
|
144
220
|
try {
|
|
145
221
|
// Validate environment
|
|
146
222
|
if (!process.env.ANTHROPIC_API_KEY) {
|
|
@@ -148,41 +224,51 @@ export async function lintCommand(options = {}) {
|
|
|
148
224
|
}
|
|
149
225
|
// If --pr flag is provided, wrap with PR workflow
|
|
150
226
|
if (options.pr) {
|
|
151
|
-
const { result, prInfo } = await runWithPR({
|
|
152
|
-
branchPrefix: 'fix/kosuke-
|
|
227
|
+
const { result: fixResult, prInfo } = await runWithPR({
|
|
228
|
+
branchPrefix: 'fix/kosuke-quality',
|
|
153
229
|
baseBranch: options.baseBranch,
|
|
154
|
-
commitMessage: 'chore: fix
|
|
155
|
-
prTitle: 'chore: Fix
|
|
156
|
-
prBody: `## 🔧 Automated
|
|
230
|
+
commitMessage: 'chore: fix code quality issues',
|
|
231
|
+
prTitle: 'chore: Fix code quality issues',
|
|
232
|
+
prBody: `## 🔧 Automated Code Quality Fixes
|
|
157
233
|
|
|
158
|
-
This PR contains automated fixes for
|
|
234
|
+
This PR contains automated fixes for code quality issues detected by comprehensive validation.
|
|
159
235
|
|
|
160
|
-
###
|
|
161
|
-
- **
|
|
236
|
+
### 📋 Validation Steps Performed
|
|
237
|
+
- 🎨 **Format**: Code formatting check
|
|
238
|
+
- 🔍 **Lint**: ESLint validation
|
|
239
|
+
- 🔎 **TypeCheck**: TypeScript type checking
|
|
240
|
+
- 🧪 **Tests**: Unit/integration tests
|
|
241
|
+
- 🔪 **Knip**: Unused exports detection
|
|
162
242
|
|
|
163
|
-
### ✅
|
|
164
|
-
|
|
243
|
+
### ✅ Result
|
|
244
|
+
All validation steps passed! Code quality issues have been automatically fixed by Claude.
|
|
165
245
|
|
|
166
246
|
---
|
|
167
247
|
|
|
168
248
|
🤖 *Generated by Kosuke CLI (\`kosuke lint --pr\`)*`,
|
|
169
249
|
}, fixLintErrorsCore);
|
|
170
|
-
console.log('\n✅
|
|
171
|
-
console.log(`📊 Attempts: ${
|
|
172
|
-
console.log(`🔧 Fixes applied: ${
|
|
250
|
+
console.log('\n✅ Code quality check complete!');
|
|
251
|
+
console.log(`📊 Attempts: ${fixResult.attempts}`);
|
|
252
|
+
console.log(`🔧 Fixes applied: ${fixResult.fixesApplied}`);
|
|
253
|
+
if (fixResult.stepsFixed.length > 0) {
|
|
254
|
+
console.log(`🎯 Steps fixed: ${fixResult.stepsFixed.join(', ')}`);
|
|
255
|
+
}
|
|
173
256
|
console.log(`🔗 PR: ${prInfo.prUrl}`);
|
|
174
257
|
}
|
|
175
258
|
else {
|
|
176
259
|
// Run core logic without PR
|
|
177
260
|
const result = await fixLintErrorsCore();
|
|
178
|
-
console.log('\n✅
|
|
261
|
+
console.log('\n✅ Code quality check complete!');
|
|
179
262
|
console.log(`📊 Attempts: ${result.attempts}`);
|
|
180
263
|
console.log(`🔧 Fixes applied: ${result.fixesApplied}`);
|
|
264
|
+
if (result.stepsFixed.length > 0) {
|
|
265
|
+
console.log(`🎯 Steps fixed: ${result.stepsFixed.join(', ')}`);
|
|
266
|
+
}
|
|
181
267
|
console.log('\nℹ️ Changes applied locally. Use --pr flag to create a pull request.');
|
|
182
268
|
}
|
|
183
269
|
}
|
|
184
270
|
catch (error) {
|
|
185
|
-
console.error('\n❌
|
|
271
|
+
console.error('\n❌ Code quality check failed:', error);
|
|
186
272
|
throw error;
|
|
187
273
|
}
|
|
188
274
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint.js","sourceRoot":"","sources":["../../../kosuke/commands/lint.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"lint.js","sourceRoot":"","sources":["../../../kosuke/commands/lint.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requirements.d.ts","sourceRoot":"","sources":["../../../kosuke/commands/requirements.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"requirements.d.ts","sourceRoot":"","sources":["../../../kosuke/commands/requirements.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAqUH;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAazD"}
|
|
@@ -11,24 +11,7 @@
|
|
|
11
11
|
import { query } from '@anthropic-ai/claude-agent-sdk';
|
|
12
12
|
import * as readline from 'readline';
|
|
13
13
|
import { join } from 'path';
|
|
14
|
-
|
|
15
|
-
* Calculate cost based on Claude Sonnet 4.5 pricing
|
|
16
|
-
* - $3 per million input tokens
|
|
17
|
-
* - $15 per million output tokens
|
|
18
|
-
* - $3.75 per million cache creation tokens
|
|
19
|
-
* - $0.30 per million cache read tokens
|
|
20
|
-
*/
|
|
21
|
-
function calculateCost(inputTokens, outputTokens, cacheCreationTokens = 0, cacheReadTokens = 0) {
|
|
22
|
-
const INPUT_COST_PER_MILLION = 3.0;
|
|
23
|
-
const OUTPUT_COST_PER_MILLION = 15.0;
|
|
24
|
-
const CACHE_CREATION_COST_PER_MILLION = 3.75;
|
|
25
|
-
const CACHE_READ_COST_PER_MILLION = 0.3;
|
|
26
|
-
const inputCost = (inputTokens / 1000000) * INPUT_COST_PER_MILLION;
|
|
27
|
-
const outputCost = (outputTokens / 1000000) * OUTPUT_COST_PER_MILLION;
|
|
28
|
-
const cacheCreationCost = (cacheCreationTokens / 1000000) * CACHE_CREATION_COST_PER_MILLION;
|
|
29
|
-
const cacheReadCost = (cacheReadTokens / 1000000) * CACHE_READ_COST_PER_MILLION;
|
|
30
|
-
return inputCost + outputCost + cacheCreationCost + cacheReadCost;
|
|
31
|
-
}
|
|
14
|
+
import { calculateCost } from '../utils/claude-agent.js';
|
|
32
15
|
/**
|
|
33
16
|
* Format token usage for display
|
|
34
17
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requirements.js","sourceRoot":"","sources":["../../../kosuke/commands/requirements.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,KAAK,EAAgB,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"requirements.js","sourceRoot":"","sources":["../../../kosuke/commands/requirements.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-rules.d.ts","sourceRoot":"","sources":["../../../kosuke/commands/sync-rules.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"sync-rules.d.ts","sourceRoot":"","sources":["../../../kosuke/commands/sync-rules.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,aAAa,CAAC;AA2UrE;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4FpF"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Sync rules command - Syncs rules and documentation from kosuke-template
|
|
3
3
|
*/
|
|
4
|
-
import { query } from '@anthropic-ai/claude-agent-sdk';
|
|
5
4
|
import simpleGit from 'simple-git';
|
|
6
5
|
import { readFileSync, writeFileSync, existsSync, mkdirSync, rmSync } from 'fs';
|
|
7
6
|
import { join, dirname } from 'path';
|
|
8
7
|
import { isKosukeTemplateRepo } from '../utils/git.js';
|
|
9
8
|
import { runWithPR } from '../utils/pr-orchestrator.js';
|
|
10
9
|
import { runFormat, runLint } from '../utils/validator.js';
|
|
10
|
+
import { runAgent } from '../utils/claude-agent.js';
|
|
11
11
|
import { fixLintErrors } from './lint.js';
|
|
12
12
|
// Constants
|
|
13
13
|
const KOSUKE_TEMPLATE_REPO = 'https://github.com/Kosuke-Org/kosuke-template.git';
|
|
@@ -90,32 +90,15 @@ Take your time to explore the codebase and understand the context before making
|
|
|
90
90
|
- Current version: ${currentFilePath}
|
|
91
91
|
|
|
92
92
|
Explore the repository, read both files, identify improvements, and update the current version conservatively.`;
|
|
93
|
-
const options = {
|
|
94
|
-
model: 'claude-sonnet-4-5',
|
|
95
|
-
systemPrompt,
|
|
96
|
-
maxTurns: 30,
|
|
97
|
-
cwd: workspaceRoot,
|
|
98
|
-
permissionMode: 'bypassPermissions',
|
|
99
|
-
additionalDirectories: [TEMP_DIR, workspaceRoot],
|
|
100
|
-
};
|
|
101
93
|
try {
|
|
102
|
-
|
|
103
|
-
//
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
}
|
|
111
|
-
else if (block.type === 'tool_use') {
|
|
112
|
-
const inputStr = JSON.stringify(block.input, null, 0);
|
|
113
|
-
const shortInput = inputStr.length > 100 ? inputStr.substring(0, 97) + '...' : inputStr;
|
|
114
|
-
console.log(` 🔧 ${block.name}: ${shortInput}`);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
94
|
+
// Note: Claude Agent SDK doesn't support additionalDirectories in AgentConfig
|
|
95
|
+
// The agent can access TEMP_DIR via relative paths from workspaceRoot
|
|
96
|
+
await runAgent(promptText, {
|
|
97
|
+
systemPrompt,
|
|
98
|
+
maxTurns: 30,
|
|
99
|
+
cwd: workspaceRoot,
|
|
100
|
+
verbosity: 'verbose',
|
|
101
|
+
});
|
|
119
102
|
// Read the adapted content
|
|
120
103
|
const adaptedContent = existsSync(currentFilePath)
|
|
121
104
|
? readFileSync(currentFilePath, 'utf-8')
|
|
@@ -180,26 +163,15 @@ Provide a brief summary (3-5 bullet points) highlighting:
|
|
|
180
163
|
- Removed or deprecated items
|
|
181
164
|
|
|
182
165
|
Keep it concise and developer-friendly. Use bullet points starting with emojis.`;
|
|
183
|
-
const options = {
|
|
184
|
-
model: 'claude-sonnet-4-5',
|
|
185
|
-
maxTurns: 1,
|
|
186
|
-
cwd: process.cwd(),
|
|
187
|
-
};
|
|
188
166
|
try {
|
|
189
|
-
const
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
if (block.type === 'text') {
|
|
196
|
-
summary += block.text;
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
}
|
|
167
|
+
const result = await runAgent(prompt, {
|
|
168
|
+
maxTurns: 1,
|
|
169
|
+
cwd: process.cwd(),
|
|
170
|
+
verbosity: 'minimal',
|
|
171
|
+
systemPrompt: '', // No system prompt needed for this simple task
|
|
172
|
+
});
|
|
201
173
|
console.log(' ✅ Summary generated\n');
|
|
202
|
-
return
|
|
174
|
+
return result.response.trim();
|
|
203
175
|
}
|
|
204
176
|
catch {
|
|
205
177
|
console.warn(' ⚠️ Failed to generate summary, using fallback');
|
|
@@ -270,13 +242,21 @@ async function syncRulesCore(force) {
|
|
|
270
242
|
// Run formatting and linting
|
|
271
243
|
console.log('\n🔧 Running formatting and linting...');
|
|
272
244
|
const formatResult = await runFormat();
|
|
273
|
-
if (
|
|
245
|
+
if (formatResult.warning) {
|
|
246
|
+
console.log(` ${formatResult.warning}`);
|
|
247
|
+
}
|
|
248
|
+
else if (!formatResult.success) {
|
|
274
249
|
console.error(' ❌ Formatting failed:\n', formatResult.error);
|
|
275
250
|
throw new Error('Formatting validation failed');
|
|
276
251
|
}
|
|
277
|
-
|
|
252
|
+
else {
|
|
253
|
+
console.log(' ✅ Formatting completed');
|
|
254
|
+
}
|
|
278
255
|
let lintResult = await runLint();
|
|
279
|
-
if (
|
|
256
|
+
if (lintResult.warning) {
|
|
257
|
+
console.log(` ${lintResult.warning}`);
|
|
258
|
+
}
|
|
259
|
+
else if (!lintResult.success) {
|
|
280
260
|
console.log(' ⚠️ Linting errors detected, attempting to fix...');
|
|
281
261
|
// Try to fix lint errors with Claude (max 2 attempts)
|
|
282
262
|
let attempts = 0;
|
|
@@ -297,7 +277,9 @@ async function syncRulesCore(force) {
|
|
|
297
277
|
throw new Error('Linting validation failed');
|
|
298
278
|
}
|
|
299
279
|
}
|
|
300
|
-
|
|
280
|
+
else {
|
|
281
|
+
console.log(' ✅ Linting completed');
|
|
282
|
+
}
|
|
301
283
|
return {
|
|
302
284
|
adaptation,
|
|
303
285
|
claudeMdContent,
|