@kosuke-ai/cli 0.0.11 ā 0.0.13
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 +12 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +94 -6
- package/dist/index.js.map +1 -1
- package/dist/kosuke/commands/build.d.ts +22 -0
- package/dist/kosuke/commands/build.d.ts.map +1 -0
- package/dist/kosuke/commands/build.js +135 -0
- package/dist/kosuke/commands/build.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 +181 -68
- package/dist/kosuke/commands/lint.js.map +1 -1
- package/dist/kosuke/commands/review.d.ts +21 -0
- package/dist/kosuke/commands/review.d.ts.map +1 -0
- package/dist/kosuke/commands/review.js +185 -0
- package/dist/kosuke/commands/review.js.map +1 -0
- package/dist/kosuke/commands/ship.d.ts +23 -0
- package/dist/kosuke/commands/ship.d.ts.map +1 -0
- package/dist/kosuke/commands/ship.js +419 -0
- package/dist/kosuke/commands/ship.js.map +1 -0
- package/dist/kosuke/types.d.ts +45 -1
- package/dist/kosuke/types.d.ts.map +1 -1
- package/dist/kosuke/utils/git.d.ts +12 -0
- package/dist/kosuke/utils/git.d.ts.map +1 -1
- package/dist/kosuke/utils/git.js +39 -0
- package/dist/kosuke/utils/git.js.map +1 -1
- package/dist/kosuke/utils/validator.d.ts +11 -0
- package/dist/kosuke/utils/validator.d.ts.map +1 -1
- package/dist/kosuke/utils/validator.js +100 -0
- package/dist/kosuke/utils/validator.js.map +1 -1
- package/dist/lib.d.ts +6 -3
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +5 -2
- package/dist/lib.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -3,12 +3,15 @@
|
|
|
3
3
|
* Kosuke CLI - Development Automation Tool
|
|
4
4
|
*
|
|
5
5
|
* Commands:
|
|
6
|
-
* sync-rules [--force]
|
|
7
|
-
* analyse
|
|
8
|
-
* lint
|
|
9
|
-
* requirements
|
|
10
|
-
* getcode
|
|
11
|
-
* tickets
|
|
6
|
+
* sync-rules [--force] Sync rules from kosuke-template
|
|
7
|
+
* analyse Analyze and fix code quality issues
|
|
8
|
+
* lint Fix linting errors with Claude AI
|
|
9
|
+
* requirements Interactive requirements gathering
|
|
10
|
+
* getcode Explore GitHub repositories and fetch code
|
|
11
|
+
* tickets Generate implementation tickets from requirements
|
|
12
|
+
* ship --ticket=<ID> Implement a single ticket from tickets.json
|
|
13
|
+
* build Batch process all tickets from tickets.json
|
|
14
|
+
* review Review codebase against CLAUDE.md rules
|
|
12
15
|
*
|
|
13
16
|
* Usage:
|
|
14
17
|
* bun run kosuke sync-rules
|
|
@@ -17,6 +20,9 @@
|
|
|
17
20
|
* bun run kosuke requirements
|
|
18
21
|
* bun run kosuke getcode "query"
|
|
19
22
|
* bun run kosuke tickets
|
|
23
|
+
* bun run kosuke ship --ticket=SCHEMA-1
|
|
24
|
+
* bun run kosuke build
|
|
25
|
+
* bun run kosuke review
|
|
20
26
|
*
|
|
21
27
|
* Environment Variables:
|
|
22
28
|
* ANTHROPIC_API_KEY - Required for Claude API
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,eAAe,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,12 +3,15 @@
|
|
|
3
3
|
* Kosuke CLI - Development Automation Tool
|
|
4
4
|
*
|
|
5
5
|
* Commands:
|
|
6
|
-
* sync-rules [--force]
|
|
7
|
-
* analyse
|
|
8
|
-
* lint
|
|
9
|
-
* requirements
|
|
10
|
-
* getcode
|
|
11
|
-
* tickets
|
|
6
|
+
* sync-rules [--force] Sync rules from kosuke-template
|
|
7
|
+
* analyse Analyze and fix code quality issues
|
|
8
|
+
* lint Fix linting errors with Claude AI
|
|
9
|
+
* requirements Interactive requirements gathering
|
|
10
|
+
* getcode Explore GitHub repositories and fetch code
|
|
11
|
+
* tickets Generate implementation tickets from requirements
|
|
12
|
+
* ship --ticket=<ID> Implement a single ticket from tickets.json
|
|
13
|
+
* build Batch process all tickets from tickets.json
|
|
14
|
+
* review Review codebase against CLAUDE.md rules
|
|
12
15
|
*
|
|
13
16
|
* Usage:
|
|
14
17
|
* bun run kosuke sync-rules
|
|
@@ -17,6 +20,9 @@
|
|
|
17
20
|
* bun run kosuke requirements
|
|
18
21
|
* bun run kosuke getcode "query"
|
|
19
22
|
* bun run kosuke tickets
|
|
23
|
+
* bun run kosuke ship --ticket=SCHEMA-1
|
|
24
|
+
* bun run kosuke build
|
|
25
|
+
* bun run kosuke review
|
|
20
26
|
*
|
|
21
27
|
* Environment Variables:
|
|
22
28
|
* ANTHROPIC_API_KEY - Required for Claude API
|
|
@@ -29,6 +35,9 @@ import { lintCommand } from './kosuke/commands/lint.js';
|
|
|
29
35
|
import { requirementsCommand } from './kosuke/commands/requirements.js';
|
|
30
36
|
import { getCodeCommand, parseGetCodeArgs } from './kosuke/commands/getcode.js';
|
|
31
37
|
import { ticketsCommand } from './kosuke/commands/tickets.js';
|
|
38
|
+
import { shipCommand } from './kosuke/commands/ship.js';
|
|
39
|
+
import { buildCommand } from './kosuke/commands/build.js';
|
|
40
|
+
import { reviewCommand } from './kosuke/commands/review.js';
|
|
32
41
|
async function main() {
|
|
33
42
|
const args = process.argv.slice(2);
|
|
34
43
|
const command = args[0];
|
|
@@ -86,6 +95,41 @@ async function main() {
|
|
|
86
95
|
await ticketsCommand(options);
|
|
87
96
|
break;
|
|
88
97
|
}
|
|
98
|
+
case 'ship': {
|
|
99
|
+
const ticketArg = args.find((arg) => arg.startsWith('--ticket='))?.split('=')[1];
|
|
100
|
+
if (!ticketArg) {
|
|
101
|
+
console.error('ā --ticket flag is required\n');
|
|
102
|
+
console.log('Usage: kosuke ship --ticket=SCHEMA-1 [--review] [--commit | --pr]');
|
|
103
|
+
console.log('\nExamples:');
|
|
104
|
+
console.log(' kosuke ship --ticket=SCHEMA-1 # Local only');
|
|
105
|
+
console.log(' kosuke ship --ticket=BACKEND-2 --review # With review');
|
|
106
|
+
console.log(' kosuke ship --ticket=FRONTEND-1 --commit # Commit to current branch');
|
|
107
|
+
console.log(' kosuke ship --ticket=BACKEND-3 --pr # Create PR (new branch)');
|
|
108
|
+
process.exit(1);
|
|
109
|
+
}
|
|
110
|
+
const options = {
|
|
111
|
+
ticket: ticketArg,
|
|
112
|
+
review: args.includes('--review'),
|
|
113
|
+
commit: args.includes('--commit'),
|
|
114
|
+
pr: args.includes('--pr'),
|
|
115
|
+
baseBranch: args.find((arg) => arg.startsWith('--base-branch='))?.split('=')[1],
|
|
116
|
+
ticketsFile: args.find((arg) => arg.startsWith('--tickets='))?.split('=')[1],
|
|
117
|
+
};
|
|
118
|
+
await shipCommand(options);
|
|
119
|
+
break;
|
|
120
|
+
}
|
|
121
|
+
case 'build': {
|
|
122
|
+
const options = {
|
|
123
|
+
ticketsFile: args.find((arg) => arg.startsWith('--tickets='))?.split('=')[1],
|
|
124
|
+
};
|
|
125
|
+
await buildCommand(options);
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
case 'review': {
|
|
129
|
+
const options = {};
|
|
130
|
+
await reviewCommand(options);
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
89
133
|
default:
|
|
90
134
|
console.error(`ā Unknown command: ${command}\n`);
|
|
91
135
|
showHelp();
|
|
@@ -187,6 +231,50 @@ COMMANDS:
|
|
|
187
231
|
kosuke tickets --path=requirements.md # Custom requirements file
|
|
188
232
|
kosuke tickets --output=my-tickets.json # Custom output file
|
|
189
233
|
|
|
234
|
+
ship --ticket=<ID> [options]
|
|
235
|
+
Implement a single ticket from tickets.json
|
|
236
|
+
Follows CLAUDE.md rules, runs linting, and optionally performs review
|
|
237
|
+
|
|
238
|
+
Options:
|
|
239
|
+
--ticket=<ID> Ticket ID to implement (required, e.g., SCHEMA-1)
|
|
240
|
+
--review Perform code review step after implementation
|
|
241
|
+
--commit Commit and push to current branch
|
|
242
|
+
--pr Create new branch and pull request (mutually exclusive with --commit)
|
|
243
|
+
--base-branch=<name> Base branch for PR (default: current branch)
|
|
244
|
+
--tickets=<file> Path to tickets file (default: tickets.json)
|
|
245
|
+
|
|
246
|
+
Examples:
|
|
247
|
+
kosuke ship --ticket=SCHEMA-1 # Implement locally only
|
|
248
|
+
kosuke ship --ticket=BACKEND-2 --review # Implement with review
|
|
249
|
+
kosuke ship --ticket=FRONTEND-1 --commit # Commit to current branch
|
|
250
|
+
kosuke ship --ticket=BACKEND-3 --pr # Create new branch + PR
|
|
251
|
+
kosuke ship --ticket=SCHEMA-1 --tickets=custom.json
|
|
252
|
+
|
|
253
|
+
build [options]
|
|
254
|
+
Batch process all "Todo" and "Error" tickets from tickets.json
|
|
255
|
+
Automatically commits each ticket to current branch
|
|
256
|
+
Processes tickets in order: Schema ā Backend ā Frontend
|
|
257
|
+
|
|
258
|
+
Options:
|
|
259
|
+
--tickets=<file> Path to tickets file (default: tickets.json)
|
|
260
|
+
|
|
261
|
+
Examples:
|
|
262
|
+
git checkout -b feat/implement-tickets # Create feature branch first
|
|
263
|
+
kosuke build # Process and commit all tickets
|
|
264
|
+
gh pr create # Create PR manually
|
|
265
|
+
|
|
266
|
+
kosuke build --tickets=custom.json # Use custom tickets file
|
|
267
|
+
|
|
268
|
+
Note: If a ticket fails, fix the issue and run build again to resume
|
|
269
|
+
|
|
270
|
+
review
|
|
271
|
+
Review current git diff against CLAUDE.md rules
|
|
272
|
+
Identifies and fixes compliance issues in uncommitted changes
|
|
273
|
+
Note: Changes applied locally only (no --pr support)
|
|
274
|
+
|
|
275
|
+
Examples:
|
|
276
|
+
kosuke review # Review uncommitted changes
|
|
277
|
+
|
|
190
278
|
WORKFLOW:
|
|
191
279
|
|
|
192
280
|
By default, all commands apply changes locally without git operations.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build command - Batch process all tickets from tickets.json
|
|
3
|
+
*
|
|
4
|
+
* This command processes all "Todo" and "Error" tickets sequentially,
|
|
5
|
+
* implementing each one using the ship command with --commit flag.
|
|
6
|
+
* Each ticket is committed individually to the current branch.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* kosuke build # Process and commit all tickets
|
|
10
|
+
* kosuke build --tickets=path/to/tickets.json
|
|
11
|
+
*
|
|
12
|
+
* Note: Create a feature branch before running build:
|
|
13
|
+
* git checkout -b feat/implement-tickets
|
|
14
|
+
* kosuke build
|
|
15
|
+
* gh pr create
|
|
16
|
+
*/
|
|
17
|
+
import type { BuildOptions } from '../types.js';
|
|
18
|
+
/**
|
|
19
|
+
* Main build command - processes all tickets and commits each one
|
|
20
|
+
*/
|
|
21
|
+
export declare function buildCommand(options: BuildOptions): Promise<void>;
|
|
22
|
+
//# sourceMappingURL=build.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../kosuke/commands/build.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAU,MAAM,aAAa,CAAC;AAyDxD;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA8EvE"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build command - Batch process all tickets from tickets.json
|
|
3
|
+
*
|
|
4
|
+
* This command processes all "Todo" and "Error" tickets sequentially,
|
|
5
|
+
* implementing each one using the ship command with --commit flag.
|
|
6
|
+
* Each ticket is committed individually to the current branch.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* kosuke build # Process and commit all tickets
|
|
10
|
+
* kosuke build --tickets=path/to/tickets.json
|
|
11
|
+
*
|
|
12
|
+
* Note: Create a feature branch before running build:
|
|
13
|
+
* git checkout -b feat/implement-tickets
|
|
14
|
+
* kosuke build
|
|
15
|
+
* gh pr create
|
|
16
|
+
*/
|
|
17
|
+
import { readFileSync, existsSync } from 'fs';
|
|
18
|
+
import { join } from 'path';
|
|
19
|
+
import { shipCommand } from './ship.js';
|
|
20
|
+
/**
|
|
21
|
+
* Load tickets from file
|
|
22
|
+
*/
|
|
23
|
+
function loadTicketsFile(ticketsPath) {
|
|
24
|
+
if (!existsSync(ticketsPath)) {
|
|
25
|
+
throw new Error(`Tickets file not found: ${ticketsPath}\n` +
|
|
26
|
+
`Please generate tickets first using: kosuke tickets`);
|
|
27
|
+
}
|
|
28
|
+
try {
|
|
29
|
+
const content = readFileSync(ticketsPath, 'utf-8');
|
|
30
|
+
return JSON.parse(content);
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
throw new Error(`Failed to parse tickets file: ${error instanceof Error ? error.message : String(error)}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Filter and sort tickets for processing
|
|
38
|
+
*/
|
|
39
|
+
function getTicketsToProcess(ticketsData) {
|
|
40
|
+
// Get all Todo and Error tickets (automatic retry on Error)
|
|
41
|
+
let tickets = ticketsData.tickets.filter((t) => t.status === 'Todo' || t.status === 'Error');
|
|
42
|
+
// Sort by phase: SCHEMA -> BACKEND -> FRONTEND
|
|
43
|
+
tickets.sort((a, b) => {
|
|
44
|
+
const getPhaseOrder = (id) => {
|
|
45
|
+
if (id.startsWith('SCHEMA-'))
|
|
46
|
+
return 1;
|
|
47
|
+
if (id.startsWith('BACKEND-'))
|
|
48
|
+
return 2;
|
|
49
|
+
if (id.startsWith('FRONTEND-'))
|
|
50
|
+
return 3;
|
|
51
|
+
return 4;
|
|
52
|
+
};
|
|
53
|
+
const phaseComparison = getPhaseOrder(a.id) - getPhaseOrder(b.id);
|
|
54
|
+
if (phaseComparison !== 0)
|
|
55
|
+
return phaseComparison;
|
|
56
|
+
// Within same phase, sort by ticket number
|
|
57
|
+
const aNum = parseInt(a.id.split('-')[1] || '0', 10);
|
|
58
|
+
const bNum = parseInt(b.id.split('-')[1] || '0', 10);
|
|
59
|
+
return aNum - bNum;
|
|
60
|
+
});
|
|
61
|
+
return tickets;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Main build command - processes all tickets and commits each one
|
|
65
|
+
*/
|
|
66
|
+
export async function buildCommand(options) {
|
|
67
|
+
console.log('šļø Starting Build - Batch Ticket Processing\n');
|
|
68
|
+
try {
|
|
69
|
+
// Validate environment
|
|
70
|
+
if (!process.env.ANTHROPIC_API_KEY) {
|
|
71
|
+
throw new Error('ANTHROPIC_API_KEY environment variable is required');
|
|
72
|
+
}
|
|
73
|
+
if (!process.env.GITHUB_TOKEN) {
|
|
74
|
+
throw new Error('GITHUB_TOKEN environment variable is required for build command');
|
|
75
|
+
}
|
|
76
|
+
const { ticketsFile = 'tickets.json' } = options;
|
|
77
|
+
const cwd = process.cwd();
|
|
78
|
+
const ticketsPath = join(cwd, ticketsFile);
|
|
79
|
+
// 1. Load tickets
|
|
80
|
+
console.log('š Loading tickets...');
|
|
81
|
+
const ticketsData = loadTicketsFile(ticketsPath);
|
|
82
|
+
const ticketsToProcess = getTicketsToProcess(ticketsData);
|
|
83
|
+
if (ticketsToProcess.length === 0) {
|
|
84
|
+
console.log('ā¹ļø No tickets found with status "Todo" or "Error"');
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
console.log(` ā
Found ${ticketsToProcess.length} ticket(s) to process\n`);
|
|
88
|
+
// Display tickets to be processed
|
|
89
|
+
console.log('š¦ Tickets to be processed:');
|
|
90
|
+
ticketsToProcess.forEach((ticket, index) => {
|
|
91
|
+
console.log(` ${index + 1}. ${ticket.id}: ${ticket.title}`);
|
|
92
|
+
});
|
|
93
|
+
console.log('');
|
|
94
|
+
// 2. Process each ticket sequentially with ship --commit
|
|
95
|
+
for (let i = 0; i < ticketsToProcess.length; i++) {
|
|
96
|
+
const ticket = ticketsToProcess[i];
|
|
97
|
+
console.log('\n' + '='.repeat(80));
|
|
98
|
+
console.log(`š¦ Processing Ticket ${i + 1}/${ticketsToProcess.length}: ${ticket.id}`);
|
|
99
|
+
console.log(`š ${ticket.title}`);
|
|
100
|
+
console.log('='.repeat(80) + '\n');
|
|
101
|
+
try {
|
|
102
|
+
// Use ship command with --commit flag
|
|
103
|
+
await shipCommand({
|
|
104
|
+
ticket: ticket.id,
|
|
105
|
+
commit: true,
|
|
106
|
+
ticketsFile,
|
|
107
|
+
});
|
|
108
|
+
console.log(`\nā
${ticket.id} completed and committed successfully\n`);
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
112
|
+
console.error(`\nā Failed to process ${ticket.id}: ${errorMessage}`);
|
|
113
|
+
console.error('\nā Build stopped due to ticket failure');
|
|
114
|
+
console.error('ā¹ļø Fix the issue and run build again to resume from failed tickets\n');
|
|
115
|
+
throw error;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// 3. Display final summary
|
|
119
|
+
console.log('\n' + '='.repeat(80));
|
|
120
|
+
console.log('ā
Build Completed Successfully!');
|
|
121
|
+
console.log('='.repeat(80));
|
|
122
|
+
console.log(`š¦ Total tickets processed: ${ticketsToProcess.length}`);
|
|
123
|
+
console.log(`ā
All tickets have been committed to current branch`);
|
|
124
|
+
console.log('='.repeat(80));
|
|
125
|
+
console.log('\nš” Next steps:');
|
|
126
|
+
console.log(' - Review the commits');
|
|
127
|
+
console.log(' - Create a PR using: gh pr create');
|
|
128
|
+
console.log(' - Or push to a remote branch and create PR manually\n');
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
console.error('\nā Build failed:', error);
|
|
132
|
+
throw error;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../../kosuke/commands/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,21 @@
|
|
|
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
7
|
import type { LintOptions } from '../types.js';
|
|
7
8
|
/**
|
|
8
|
-
* Run Claude
|
|
9
|
+
* Run Claude to fix code quality errors
|
|
9
10
|
* Exported so other commands can use it
|
|
10
11
|
*/
|
|
12
|
+
export declare function fixCodeQualityErrors(stepName: string, errors: string): Promise<boolean>;
|
|
13
|
+
/**
|
|
14
|
+
* Legacy export for backward compatibility
|
|
15
|
+
*/
|
|
11
16
|
export declare function fixLintErrors(lintErrors: string): Promise<boolean>;
|
|
12
17
|
/**
|
|
13
|
-
* Main lint command
|
|
18
|
+
* Main lint command (now runs comprehensive validation)
|
|
14
19
|
*/
|
|
15
20
|
export declare function lintCommand(options?: LintOptions): Promise<void>;
|
|
16
21
|
//# sourceMappingURL=lint.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../../kosuke/commands/lint.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../../kosuke/commands/lint.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA2F/C;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAiD7F;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAExE;AA6GD;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6D1E"}
|