@kosuke-ai/cli 0.0.57 ā 1.0.0
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 +31 -448
- package/dist/commands/auth.js +117 -0
- package/dist/generated/commands/deploy/cancel.js +17 -0
- package/dist/generated/commands/deploy/messages.js +17 -0
- package/dist/generated/commands/deploy/run.js +60 -0
- package/dist/generated/commands/index.js +132 -0
- package/dist/generated/commands/preview/get.js +25 -0
- package/dist/generated/commands/preview/health.js +25 -0
- package/dist/generated/commands/preview/reset.js +27 -0
- package/dist/generated/commands/preview/share-create.js +36 -0
- package/dist/generated/commands/preview/share-delete.js +26 -0
- package/dist/generated/commands/preview/share-get.js +26 -0
- package/dist/generated/commands/preview/shared.js +17 -0
- package/dist/generated/commands/projects/create.js +37 -0
- package/dist/generated/commands/projects/delete.js +17 -0
- package/dist/generated/commands/projects/env-vars-add.js +21 -0
- package/dist/generated/commands/projects/env-vars-remove.js +21 -0
- package/dist/generated/commands/projects/get.js +17 -0
- package/dist/generated/commands/projects/list.js +15 -0
- package/dist/generated/commands/projects/services-add.js +87 -0
- package/dist/generated/commands/projects/services-list.js +18 -0
- package/dist/generated/commands/projects/services-remove.js +19 -0
- package/dist/generated/commands/projects/services-update.js +81 -0
- package/dist/generated/commands/projects/settings-get.js +18 -0
- package/dist/generated/commands/projects/settings-import.js +91 -0
- package/dist/generated/commands/projects/settings-update.js +77 -0
- package/dist/generated/commands/projects/skills.js +35 -0
- package/dist/generated/commands/projects/update.js +27 -0
- package/dist/generated/commands/sessions/activate.js +18 -0
- package/dist/generated/commands/sessions/checklist-generate.js +19 -0
- package/dist/generated/commands/sessions/checklist-get.js +19 -0
- package/dist/generated/commands/sessions/comments-add.js +63 -0
- package/dist/generated/commands/sessions/comments-delete.js +20 -0
- package/dist/generated/commands/sessions/comments-list.js +19 -0
- package/dist/generated/commands/sessions/comments-update.js +23 -0
- package/dist/generated/commands/sessions/create.js +126 -0
- package/dist/generated/commands/sessions/delete.js +18 -0
- package/dist/generated/commands/sessions/diff-files.js +19 -0
- package/dist/generated/commands/sessions/diff-patch.js +86 -0
- package/dist/generated/commands/sessions/edit-prompt.js +59 -0
- package/dist/generated/commands/sessions/files-get.js +27 -0
- package/dist/generated/commands/sessions/files-list.js +19 -0
- package/dist/generated/commands/sessions/files-write.js +41 -0
- package/dist/generated/commands/sessions/get.js +18 -0
- package/dist/generated/commands/sessions/git-commit-message.js +19 -0
- package/dist/generated/commands/sessions/git-commit.js +29 -0
- package/dist/generated/commands/sessions/git-push.js +19 -0
- package/dist/generated/commands/sessions/git-state.js +19 -0
- package/dist/generated/commands/sessions/jobs-cancel.js +20 -0
- package/dist/generated/commands/sessions/jobs-get.js +20 -0
- package/dist/generated/commands/sessions/list.js +81 -0
- package/dist/generated/commands/sessions/messages.js +18 -0
- package/dist/generated/commands/sessions/search.js +23 -0
- package/dist/generated/commands/sessions/send.js +98 -0
- package/dist/generated/commands/sessions/update.js +72 -0
- package/dist/generated/commands/workspaces/access-status.js +29 -0
- package/dist/generated/commands/workspaces/ai-provider-get.js +18 -0
- package/dist/generated/commands/workspaces/ai-provider-remove.js +42 -0
- package/dist/generated/commands/workspaces/ai-provider-set.js +21 -0
- package/dist/generated/commands/workspaces/credits.js +17 -0
- package/dist/generated/commands/workspaces/get.js +17 -0
- package/dist/generated/commands/workspaces/getting-started-get.js +18 -0
- package/dist/generated/commands/workspaces/getting-started-update.js +32 -0
- package/dist/generated/commands/workspaces/list.js +15 -0
- package/dist/generated/commands/workspaces/members.js +25 -0
- package/dist/generated/commands/workspaces/sandbox-limit.js +17 -0
- package/dist/generated/commands/workspaces/stop-sandboxes.js +27 -0
- package/dist/generated/commands/workspaces/usage.js +32 -0
- package/dist/index.js +5 -595
- package/dist/program.js +46 -0
- package/dist/runtime/attach.js +139 -0
- package/dist/runtime/attachments.js +58 -0
- package/dist/runtime/client.js +12 -0
- package/dist/runtime/config.js +49 -0
- package/dist/runtime/credentials.js +24 -0
- package/dist/runtime/descriptor.js +7 -0
- package/dist/runtime/invoke.js +152 -0
- package/dist/runtime/runtime.js +41 -0
- package/dist/runtime/version.js +5 -0
- package/openapi.json +5222 -0
- package/package.json +21 -79
- package/LICENSE +0 -21
- package/claude.costs.json +0 -34
- package/dist/__tests__/utils/file-discovery.test.d.ts +0 -5
- package/dist/__tests__/utils/file-discovery.test.d.ts.map +0 -1
- package/dist/__tests__/utils/file-discovery.test.js +0 -51
- package/dist/__tests__/utils/file-discovery.test.js.map +0 -1
- package/dist/__tests__/utils/logger-nologs.test.d.ts +0 -5
- package/dist/__tests__/utils/logger-nologs.test.d.ts.map +0 -1
- package/dist/__tests__/utils/logger-nologs.test.js +0 -34
- package/dist/__tests__/utils/logger-nologs.test.js.map +0 -1
- package/dist/__tests__/utils/logger.test.d.ts +0 -5
- package/dist/__tests__/utils/logger.test.d.ts.map +0 -1
- package/dist/__tests__/utils/logger.test.js +0 -243
- package/dist/__tests__/utils/logger.test.js.map +0 -1
- package/dist/__tests__/utils/validator.test.d.ts +0 -5
- package/dist/__tests__/utils/validator.test.d.ts.map +0 -1
- package/dist/__tests__/utils/validator.test.js +0 -206
- package/dist/__tests__/utils/validator.test.js.map +0 -1
- package/dist/index.d.ts +0 -37
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/kosuke/commands/analyse.d.ts +0 -15
- package/dist/kosuke/commands/analyse.d.ts.map +0 -1
- package/dist/kosuke/commands/analyse.js +0 -304
- package/dist/kosuke/commands/analyse.js.map +0 -1
- package/dist/kosuke/commands/build.d.ts +0 -35
- package/dist/kosuke/commands/build.d.ts.map +0 -1
- package/dist/kosuke/commands/build.js +0 -660
- package/dist/kosuke/commands/build.js.map +0 -1
- package/dist/kosuke/commands/fix.d.ts +0 -21
- package/dist/kosuke/commands/fix.d.ts.map +0 -1
- package/dist/kosuke/commands/fix.js +0 -256
- package/dist/kosuke/commands/fix.js.map +0 -1
- package/dist/kosuke/commands/getcode.d.ts +0 -29
- package/dist/kosuke/commands/getcode.d.ts.map +0 -1
- package/dist/kosuke/commands/getcode.js +0 -248
- package/dist/kosuke/commands/getcode.js.map +0 -1
- package/dist/kosuke/commands/lint.d.ts +0 -21
- package/dist/kosuke/commands/lint.d.ts.map +0 -1
- package/dist/kosuke/commands/lint.js +0 -342
- package/dist/kosuke/commands/lint.js.map +0 -1
- package/dist/kosuke/commands/migrate.d.ts +0 -38
- package/dist/kosuke/commands/migrate.d.ts.map +0 -1
- package/dist/kosuke/commands/migrate.js +0 -284
- package/dist/kosuke/commands/migrate.js.map +0 -1
- package/dist/kosuke/commands/plan.d.ts +0 -28
- package/dist/kosuke/commands/plan.d.ts.map +0 -1
- package/dist/kosuke/commands/plan.js +0 -684
- package/dist/kosuke/commands/plan.js.map +0 -1
- package/dist/kosuke/commands/requirements.d.ts +0 -52
- package/dist/kosuke/commands/requirements.d.ts.map +0 -1
- package/dist/kosuke/commands/requirements.js +0 -615
- package/dist/kosuke/commands/requirements.js.map +0 -1
- package/dist/kosuke/commands/review.d.ts +0 -26
- package/dist/kosuke/commands/review.d.ts.map +0 -1
- package/dist/kosuke/commands/review.js +0 -303
- package/dist/kosuke/commands/review.js.map +0 -1
- package/dist/kosuke/commands/serve.d.ts +0 -9
- package/dist/kosuke/commands/serve.d.ts.map +0 -1
- package/dist/kosuke/commands/serve.js +0 -17
- package/dist/kosuke/commands/serve.js.map +0 -1
- package/dist/kosuke/commands/ship.d.ts +0 -37
- package/dist/kosuke/commands/ship.d.ts.map +0 -1
- package/dist/kosuke/commands/ship.js +0 -375
- package/dist/kosuke/commands/ship.js.map +0 -1
- package/dist/kosuke/commands/sync-rules.d.ts +0 -9
- package/dist/kosuke/commands/sync-rules.d.ts.map +0 -1
- package/dist/kosuke/commands/sync-rules.js +0 -414
- package/dist/kosuke/commands/sync-rules.js.map +0 -1
- package/dist/kosuke/commands/test.d.ts +0 -42
- package/dist/kosuke/commands/test.d.ts.map +0 -1
- package/dist/kosuke/commands/test.js +0 -540
- package/dist/kosuke/commands/test.js.map +0 -1
- package/dist/kosuke/commands/tickets.d.ts +0 -43
- package/dist/kosuke/commands/tickets.d.ts.map +0 -1
- package/dist/kosuke/commands/tickets.js +0 -876
- package/dist/kosuke/commands/tickets.js.map +0 -1
- package/dist/kosuke/commands/validate-tickets.d.ts +0 -23
- package/dist/kosuke/commands/validate-tickets.d.ts.map +0 -1
- package/dist/kosuke/commands/validate-tickets.js +0 -360
- package/dist/kosuke/commands/validate-tickets.js.map +0 -1
- package/dist/kosuke/serve/middleware/error-handler.d.ts +0 -14
- package/dist/kosuke/serve/middleware/error-handler.d.ts.map +0 -1
- package/dist/kosuke/serve/middleware/error-handler.js +0 -42
- package/dist/kosuke/serve/middleware/error-handler.js.map +0 -1
- package/dist/kosuke/serve/middleware/validation.d.ts +0 -13
- package/dist/kosuke/serve/middleware/validation.d.ts.map +0 -1
- package/dist/kosuke/serve/middleware/validation.js +0 -38
- package/dist/kosuke/serve/middleware/validation.js.map +0 -1
- package/dist/kosuke/serve/routes/build.d.ts +0 -6
- package/dist/kosuke/serve/routes/build.d.ts.map +0 -1
- package/dist/kosuke/serve/routes/build.js +0 -226
- package/dist/kosuke/serve/routes/build.js.map +0 -1
- package/dist/kosuke/serve/routes/health.d.ts +0 -6
- package/dist/kosuke/serve/routes/health.d.ts.map +0 -1
- package/dist/kosuke/serve/routes/health.js +0 -11
- package/dist/kosuke/serve/routes/health.js.map +0 -1
- package/dist/kosuke/serve/routes/plan.d.ts +0 -6
- package/dist/kosuke/serve/routes/plan.d.ts.map +0 -1
- package/dist/kosuke/serve/routes/plan.js +0 -106
- package/dist/kosuke/serve/routes/plan.js.map +0 -1
- package/dist/kosuke/serve/server.d.ts +0 -16
- package/dist/kosuke/serve/server.d.ts.map +0 -1
- package/dist/kosuke/serve/server.js +0 -67
- package/dist/kosuke/serve/server.js.map +0 -1
- package/dist/kosuke/serve/validation/build.d.ts +0 -41
- package/dist/kosuke/serve/validation/build.d.ts.map +0 -1
- package/dist/kosuke/serve/validation/build.js +0 -20
- package/dist/kosuke/serve/validation/build.js.map +0 -1
- package/dist/kosuke/serve/validation/plan.d.ts +0 -26
- package/dist/kosuke/serve/validation/plan.d.ts.map +0 -1
- package/dist/kosuke/serve/validation/plan.js +0 -15
- package/dist/kosuke/serve/validation/plan.js.map +0 -1
- package/dist/kosuke/types.d.ts +0 -539
- package/dist/kosuke/types.d.ts.map +0 -1
- package/dist/kosuke/types.js +0 -5
- package/dist/kosuke/types.js.map +0 -1
- package/dist/kosuke/utils/batch-creator.d.ts +0 -14
- package/dist/kosuke/utils/batch-creator.d.ts.map +0 -1
- package/dist/kosuke/utils/batch-creator.js +0 -76
- package/dist/kosuke/utils/batch-creator.js.map +0 -1
- package/dist/kosuke/utils/claude-agent.d.ts +0 -140
- package/dist/kosuke/utils/claude-agent.d.ts.map +0 -1
- package/dist/kosuke/utils/claude-agent.js +0 -388
- package/dist/kosuke/utils/claude-agent.js.map +0 -1
- package/dist/kosuke/utils/constants.d.ts +0 -40
- package/dist/kosuke/utils/constants.d.ts.map +0 -1
- package/dist/kosuke/utils/constants.js +0 -54
- package/dist/kosuke/utils/constants.js.map +0 -1
- package/dist/kosuke/utils/file-discovery.d.ts +0 -15
- package/dist/kosuke/utils/file-discovery.d.ts.map +0 -1
- package/dist/kosuke/utils/file-discovery.js +0 -80
- package/dist/kosuke/utils/file-discovery.js.map +0 -1
- package/dist/kosuke/utils/git.d.ts +0 -41
- package/dist/kosuke/utils/git.d.ts.map +0 -1
- package/dist/kosuke/utils/git.js +0 -145
- package/dist/kosuke/utils/git.js.map +0 -1
- package/dist/kosuke/utils/github.d.ts +0 -17
- package/dist/kosuke/utils/github.d.ts.map +0 -1
- package/dist/kosuke/utils/github.js +0 -22
- package/dist/kosuke/utils/github.js.map +0 -1
- package/dist/kosuke/utils/interactive-input.d.ts +0 -22
- package/dist/kosuke/utils/interactive-input.d.ts.map +0 -1
- package/dist/kosuke/utils/interactive-input.js +0 -124
- package/dist/kosuke/utils/interactive-input.js.map +0 -1
- package/dist/kosuke/utils/json-parser.d.ts +0 -14
- package/dist/kosuke/utils/json-parser.d.ts.map +0 -1
- package/dist/kosuke/utils/json-parser.js +0 -40
- package/dist/kosuke/utils/json-parser.js.map +0 -1
- package/dist/kosuke/utils/logger.d.ts +0 -161
- package/dist/kosuke/utils/logger.d.ts.map +0 -1
- package/dist/kosuke/utils/logger.js +0 -234
- package/dist/kosuke/utils/logger.js.map +0 -1
- package/dist/kosuke/utils/playwright-mcp-client.d.ts +0 -46
- package/dist/kosuke/utils/playwright-mcp-client.d.ts.map +0 -1
- package/dist/kosuke/utils/playwright-mcp-client.js +0 -135
- package/dist/kosuke/utils/playwright-mcp-client.js.map +0 -1
- package/dist/kosuke/utils/pr-orchestrator.d.ts +0 -49
- package/dist/kosuke/utils/pr-orchestrator.d.ts.map +0 -1
- package/dist/kosuke/utils/pr-orchestrator.js +0 -154
- package/dist/kosuke/utils/pr-orchestrator.js.map +0 -1
- package/dist/kosuke/utils/repository-manager.d.ts +0 -13
- package/dist/kosuke/utils/repository-manager.d.ts.map +0 -1
- package/dist/kosuke/utils/repository-manager.js +0 -94
- package/dist/kosuke/utils/repository-manager.js.map +0 -1
- package/dist/kosuke/utils/repository-resolver.d.ts +0 -12
- package/dist/kosuke/utils/repository-resolver.d.ts.map +0 -1
- package/dist/kosuke/utils/repository-resolver.js +0 -186
- package/dist/kosuke/utils/repository-resolver.js.map +0 -1
- package/dist/kosuke/utils/tickets-manager.d.ts +0 -34
- package/dist/kosuke/utils/tickets-manager.d.ts.map +0 -1
- package/dist/kosuke/utils/tickets-manager.js +0 -106
- package/dist/kosuke/utils/tickets-manager.js.map +0 -1
- package/dist/kosuke/utils/validator.d.ts +0 -45
- package/dist/kosuke/utils/validator.d.ts.map +0 -1
- package/dist/kosuke/utils/validator.js +0 -248
- package/dist/kosuke/utils/validator.js.map +0 -1
- package/dist/lib.d.ts +0 -104
- package/dist/lib.d.ts.map +0 -1
- package/dist/lib.js +0 -104
- package/dist/lib.js.map +0 -1
- package/dist/package.json +0 -99
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for validation utilities
|
|
3
|
-
*/
|
|
4
|
-
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
5
|
-
import { execSync } from 'child_process';
|
|
6
|
-
import { existsSync, readFileSync } from 'fs';
|
|
7
|
-
// Mock modules
|
|
8
|
-
vi.mock('child_process', () => ({
|
|
9
|
-
execSync: vi.fn(),
|
|
10
|
-
}));
|
|
11
|
-
vi.mock('fs', () => ({
|
|
12
|
-
existsSync: vi.fn(),
|
|
13
|
-
readFileSync: vi.fn(),
|
|
14
|
-
}));
|
|
15
|
-
describe('validator utilities', () => {
|
|
16
|
-
beforeEach(() => {
|
|
17
|
-
vi.clearAllMocks();
|
|
18
|
-
});
|
|
19
|
-
describe('exports', () => {
|
|
20
|
-
it('should export validation functions', async () => {
|
|
21
|
-
const validatorModule = await import('@/kosuke/utils/validator');
|
|
22
|
-
expect(typeof validatorModule.runLint).toBe('function');
|
|
23
|
-
expect(typeof validatorModule.runTypecheck).toBe('function');
|
|
24
|
-
expect(typeof validatorModule.runFormat).toBe('function');
|
|
25
|
-
expect(typeof validatorModule.detectPackageManager).toBe('function');
|
|
26
|
-
expect(typeof validatorModule.readPackageJsonScripts).toBe('function');
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
describe('detectPackageManager', () => {
|
|
30
|
-
it('should detect bun from lockfile', async () => {
|
|
31
|
-
const mockExistsSync = vi.mocked(existsSync);
|
|
32
|
-
mockExistsSync.mockImplementation((path) => {
|
|
33
|
-
return String(path).includes('bun.lockb');
|
|
34
|
-
});
|
|
35
|
-
const { detectPackageManager } = await import('@/kosuke/utils/validator');
|
|
36
|
-
const result = detectPackageManager('/test/path');
|
|
37
|
-
expect(result).toBe('bun');
|
|
38
|
-
});
|
|
39
|
-
it('should detect pnpm from lockfile', async () => {
|
|
40
|
-
const mockExistsSync = vi.mocked(existsSync);
|
|
41
|
-
mockExistsSync.mockImplementation((path) => {
|
|
42
|
-
return String(path).includes('pnpm-lock.yaml');
|
|
43
|
-
});
|
|
44
|
-
const { detectPackageManager } = await import('@/kosuke/utils/validator');
|
|
45
|
-
const result = detectPackageManager('/test/path');
|
|
46
|
-
expect(result).toBe('pnpm');
|
|
47
|
-
});
|
|
48
|
-
it('should detect yarn from lockfile', async () => {
|
|
49
|
-
const mockExistsSync = vi.mocked(existsSync);
|
|
50
|
-
mockExistsSync.mockImplementation((path) => {
|
|
51
|
-
return String(path).includes('yarn.lock');
|
|
52
|
-
});
|
|
53
|
-
const { detectPackageManager } = await import('@/kosuke/utils/validator');
|
|
54
|
-
const result = detectPackageManager('/test/path');
|
|
55
|
-
expect(result).toBe('yarn');
|
|
56
|
-
});
|
|
57
|
-
it('should detect npm from lockfile', async () => {
|
|
58
|
-
const mockExistsSync = vi.mocked(existsSync);
|
|
59
|
-
mockExistsSync.mockImplementation((path) => {
|
|
60
|
-
return String(path).includes('package-lock.json');
|
|
61
|
-
});
|
|
62
|
-
const { detectPackageManager } = await import('@/kosuke/utils/validator');
|
|
63
|
-
const result = detectPackageManager('/test/path');
|
|
64
|
-
expect(result).toBe('npm');
|
|
65
|
-
});
|
|
66
|
-
it('should default to npm if no lockfile found', async () => {
|
|
67
|
-
const mockExistsSync = vi.mocked(existsSync);
|
|
68
|
-
mockExistsSync.mockReturnValue(false);
|
|
69
|
-
const { detectPackageManager } = await import('@/kosuke/utils/validator');
|
|
70
|
-
const result = detectPackageManager('/test/path');
|
|
71
|
-
expect(result).toBe('npm');
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
describe('readPackageJsonScripts', () => {
|
|
75
|
-
it('should read scripts from package.json', async () => {
|
|
76
|
-
const mockExistsSync = vi.mocked(existsSync);
|
|
77
|
-
const mockReadFileSync = vi.mocked(readFileSync);
|
|
78
|
-
mockExistsSync.mockReturnValue(true);
|
|
79
|
-
mockReadFileSync.mockReturnValue(JSON.stringify({
|
|
80
|
-
scripts: {
|
|
81
|
-
format: 'prettier --write .',
|
|
82
|
-
lint: 'eslint .',
|
|
83
|
-
typecheck: 'tsc --noEmit',
|
|
84
|
-
},
|
|
85
|
-
}));
|
|
86
|
-
const { readPackageJsonScripts } = await import('@/kosuke/utils/validator');
|
|
87
|
-
const result = readPackageJsonScripts('/test/path');
|
|
88
|
-
expect(result).toEqual({
|
|
89
|
-
format: 'prettier --write .',
|
|
90
|
-
lint: 'eslint .',
|
|
91
|
-
typecheck: 'tsc --noEmit',
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
it('should return null if package.json does not exist', async () => {
|
|
95
|
-
const mockExistsSync = vi.mocked(existsSync);
|
|
96
|
-
mockExistsSync.mockReturnValue(false);
|
|
97
|
-
const { readPackageJsonScripts } = await import('@/kosuke/utils/validator');
|
|
98
|
-
const result = readPackageJsonScripts('/test/path');
|
|
99
|
-
expect(result).toBeNull();
|
|
100
|
-
});
|
|
101
|
-
it('should return null if package.json has no scripts', async () => {
|
|
102
|
-
const mockExistsSync = vi.mocked(existsSync);
|
|
103
|
-
const mockReadFileSync = vi.mocked(readFileSync);
|
|
104
|
-
mockExistsSync.mockReturnValue(true);
|
|
105
|
-
mockReadFileSync.mockReturnValue(JSON.stringify({}));
|
|
106
|
-
const { readPackageJsonScripts } = await import('@/kosuke/utils/validator');
|
|
107
|
-
const result = readPackageJsonScripts('/test/path');
|
|
108
|
-
expect(result).toBeNull();
|
|
109
|
-
});
|
|
110
|
-
});
|
|
111
|
-
describe('runFormat', () => {
|
|
112
|
-
it('should handle successful execution', async () => {
|
|
113
|
-
const mockExecSync = vi.mocked(execSync);
|
|
114
|
-
const mockExistsSync = vi.mocked(existsSync);
|
|
115
|
-
const mockReadFileSync = vi.mocked(readFileSync);
|
|
116
|
-
mockExistsSync.mockReturnValue(true);
|
|
117
|
-
mockReadFileSync.mockReturnValue(JSON.stringify({
|
|
118
|
-
scripts: { format: 'prettier --write .' },
|
|
119
|
-
}));
|
|
120
|
-
mockExecSync.mockReturnValue('success output');
|
|
121
|
-
const { runFormat } = await import('@/kosuke/utils/validator');
|
|
122
|
-
const result = await runFormat();
|
|
123
|
-
expect(result.success).toBe(true);
|
|
124
|
-
expect(result.output).toBe('success output');
|
|
125
|
-
});
|
|
126
|
-
it('should return warning if format script is missing', async () => {
|
|
127
|
-
const mockExistsSync = vi.mocked(existsSync);
|
|
128
|
-
const mockReadFileSync = vi.mocked(readFileSync);
|
|
129
|
-
mockExistsSync.mockReturnValue(true);
|
|
130
|
-
mockReadFileSync.mockReturnValue(JSON.stringify({
|
|
131
|
-
scripts: { lint: 'eslint .' },
|
|
132
|
-
}));
|
|
133
|
-
const { runFormat } = await import('@/kosuke/utils/validator');
|
|
134
|
-
const result = await runFormat();
|
|
135
|
-
expect(result.success).toBe(true);
|
|
136
|
-
expect(result.warning).toBeDefined();
|
|
137
|
-
expect(result.warning).toContain('format');
|
|
138
|
-
});
|
|
139
|
-
it('should handle execution errors', async () => {
|
|
140
|
-
const mockExecSync = vi.mocked(execSync);
|
|
141
|
-
const mockExistsSync = vi.mocked(existsSync);
|
|
142
|
-
const mockReadFileSync = vi.mocked(readFileSync);
|
|
143
|
-
mockExistsSync.mockReturnValue(true);
|
|
144
|
-
mockReadFileSync.mockReturnValue(JSON.stringify({
|
|
145
|
-
scripts: { format: 'prettier --write .' },
|
|
146
|
-
}));
|
|
147
|
-
const error = new Error('Command failed');
|
|
148
|
-
error.stdout = 'error output';
|
|
149
|
-
mockExecSync.mockImplementation(() => {
|
|
150
|
-
throw error;
|
|
151
|
-
});
|
|
152
|
-
const { runFormat } = await import('@/kosuke/utils/validator');
|
|
153
|
-
const result = await runFormat();
|
|
154
|
-
expect(result.success).toBe(false);
|
|
155
|
-
expect(result.error).toBeDefined();
|
|
156
|
-
});
|
|
157
|
-
});
|
|
158
|
-
describe('runLint', () => {
|
|
159
|
-
it('should handle successful execution', async () => {
|
|
160
|
-
const mockExecSync = vi.mocked(execSync);
|
|
161
|
-
const mockExistsSync = vi.mocked(existsSync);
|
|
162
|
-
const mockReadFileSync = vi.mocked(readFileSync);
|
|
163
|
-
mockExistsSync.mockReturnValue(true);
|
|
164
|
-
mockReadFileSync.mockReturnValue(JSON.stringify({
|
|
165
|
-
scripts: { lint: 'eslint .' },
|
|
166
|
-
}));
|
|
167
|
-
mockExecSync.mockReturnValue('success output');
|
|
168
|
-
const { runLint } = await import('@/kosuke/utils/validator');
|
|
169
|
-
const result = await runLint();
|
|
170
|
-
expect(result.success).toBe(true);
|
|
171
|
-
expect(result.output).toBe('success output');
|
|
172
|
-
});
|
|
173
|
-
it('should return warning if lint script is missing', async () => {
|
|
174
|
-
const mockExistsSync = vi.mocked(existsSync);
|
|
175
|
-
const mockReadFileSync = vi.mocked(readFileSync);
|
|
176
|
-
mockExistsSync.mockReturnValue(true);
|
|
177
|
-
mockReadFileSync.mockReturnValue(JSON.stringify({
|
|
178
|
-
scripts: { format: 'prettier --write .' },
|
|
179
|
-
}));
|
|
180
|
-
const { runLint } = await import('@/kosuke/utils/validator');
|
|
181
|
-
const result = await runLint();
|
|
182
|
-
expect(result.success).toBe(true);
|
|
183
|
-
expect(result.warning).toBeDefined();
|
|
184
|
-
expect(result.warning).toContain('lint');
|
|
185
|
-
});
|
|
186
|
-
it('should handle execution errors', async () => {
|
|
187
|
-
const mockExecSync = vi.mocked(execSync);
|
|
188
|
-
const mockExistsSync = vi.mocked(existsSync);
|
|
189
|
-
const mockReadFileSync = vi.mocked(readFileSync);
|
|
190
|
-
mockExistsSync.mockReturnValue(true);
|
|
191
|
-
mockReadFileSync.mockReturnValue(JSON.stringify({
|
|
192
|
-
scripts: { lint: 'eslint .' },
|
|
193
|
-
}));
|
|
194
|
-
const error = new Error('Command failed');
|
|
195
|
-
error.stdout = 'error output';
|
|
196
|
-
mockExecSync.mockImplementation(() => {
|
|
197
|
-
throw error;
|
|
198
|
-
});
|
|
199
|
-
const { runLint } = await import('@/kosuke/utils/validator');
|
|
200
|
-
const result = await runLint();
|
|
201
|
-
expect(result.success).toBe(false);
|
|
202
|
-
expect(result.error).toBeDefined();
|
|
203
|
-
});
|
|
204
|
-
});
|
|
205
|
-
});
|
|
206
|
-
//# sourceMappingURL=validator.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validator.test.js","sourceRoot":"","sources":["../../../__tests__/utils/validator.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Kosuke CLI - Development Automation Tool
|
|
4
|
-
*
|
|
5
|
-
* Commands:
|
|
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
|
-
* plan AI-driven ticket planning from feature/bug descriptions
|
|
11
|
-
* getcode Explore GitHub repositories and fetch code
|
|
12
|
-
* tickets Generate implementation tickets from requirements
|
|
13
|
-
* fix Extract and fix malformed JSON from LLM responses
|
|
14
|
-
* validate-tickets Validate and fix ticket structure
|
|
15
|
-
* build Batch process all tickets from tickets.json
|
|
16
|
-
* migrate Apply database migrations and validate schema
|
|
17
|
-
* review Review codebase against CLAUDE.md rules
|
|
18
|
-
* test Run atomic web E2E tests
|
|
19
|
-
*
|
|
20
|
-
* Usage:
|
|
21
|
-
* bun run kosuke sync-rules
|
|
22
|
-
* bun run kosuke analyse
|
|
23
|
-
* bun run kosuke lint
|
|
24
|
-
* bun run kosuke requirements
|
|
25
|
-
* bun run kosuke getcode "query"
|
|
26
|
-
* bun run kosuke tickets
|
|
27
|
-
* bun run kosuke build
|
|
28
|
-
* bun run kosuke migrate
|
|
29
|
-
* bun run kosuke review
|
|
30
|
-
* bun run kosuke test --prompt="Test user login flow"
|
|
31
|
-
*
|
|
32
|
-
* Environment Variables:
|
|
33
|
-
* ANTHROPIC_API_KEY - Required for Claude API
|
|
34
|
-
* GITHUB_TOKEN - Required for creating PRs
|
|
35
|
-
*/
|
|
36
|
-
import 'dotenv/config';
|
|
37
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,eAAe,CAAC"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzD,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAExB,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QAC/E,QAAQ,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,OAAO,GAAG;oBACd,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAC/B,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACzB,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC/E,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;iBACnC,CAAC;gBACF,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBAChC,MAAM;YACR,CAAC;YAED,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,OAAO,GAAG;oBACd,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACzB,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC/E,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACpE,KAAK,EAAE,IAAI;yBACR,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;wBAC1C,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBACf,EAAE,KAAK,CAAC,GAAG,CAAC;oBACd,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;iBACnC,CAAC;gBACF,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;gBAC9B,MAAM;YACR,CAAC;YAED,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,OAAO,GAAG;oBACd,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACzB,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC/E,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC5E,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;iBACnC,CAAC;gBACF,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC3B,MAAM;YACR,CAAC;YAED,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,MAAM,mBAAmB,EAAE,CAAC;gBAC5B,MAAM;YACR,CAAC;YAED,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,OAAO,GAAG;oBACd,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;oBAC5E,SAAS,EACP,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBACjE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC7D,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;oBAClC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;oBAClC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBACvE,CAAC;gBAEF,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;oBACpB,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;oBACnD,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;oBAC3D,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBAC1B,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;oBAC5E,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;oBAClF,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;oBACzE,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;oBAChE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;oBACzB,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;oBACtE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;oBAC7D,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;oBACnF,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;oBACzE,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;oBACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBAED,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC3B,MAAM;YACR,CAAC;YAED,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACvC,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;gBAC9B,MAAM;YACR,CAAC;YAED,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,OAAO,GAAG;oBACd,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAClE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACtE,SAAS,EACP,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBACjE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC7D,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;oBACrC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACtE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;oBAClC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;iBACnC,CAAC;gBACF,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;gBAC9B,MAAM;YACR,CAAC;YAED,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7E,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEjF,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;oBAC3B,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;oBACjE,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;oBACrE,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBAC1B,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;oBAC1E,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;oBACjE,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;oBAClF,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;oBACnF,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;oBAClE,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;oBACpF,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;oBACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBAED,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;oBACzB,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;oBAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBAED,MAAM,OAAO,GAAG;oBACd,MAAM,EAAE,MAAe;oBACvB,IAAI,EAAE,OAAO;oBACb,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACtE,SAAS,EACP,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBACjE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC7D,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;iBACnC,CAAC;gBACF,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;gBAC1B,MAAM;YACR,CAAC;YAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;gBACxB,MAAM,OAAO,GAAG;oBACd,SAAS,EACP,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBACjE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC7D,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACxE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;oBACjC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;iBACnC,CAAC;gBACF,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;gBACtC,MAAM;YACR,CAAC;YAED,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,OAAO,GAAG;oBACd,SAAS,EACP,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBACjE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC7D,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC5E,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACrE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAC/B,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;oBAC1C,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;oBACxC,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,0CAA0C;oBACjF,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,wCAAwC;oBAC3E,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAChE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;oBACrC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;oBACnC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;oBACzC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAC/B,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;iBACnC,CAAC;gBACF,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;gBAC5B,MAAM;YACR,CAAC;YAED,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,OAAO,GAAG;oBACd,SAAS,EACP,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBACjE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC7D,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACrE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;iBACnC,CAAC;gBACF,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;gBAC9B,MAAM;YACR,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,OAAO,GAAG;oBACd,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;iBACnC,CAAC;gBACF,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC7B,MAAM;YACR,CAAC;YAED,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEjF,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;oBACnD,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;oBAC3D,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBAC1B,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;oBACnE,OAAO,CAAC,GAAG,CACT,gFAAgF,CACjF,CAAC;oBACF,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;oBAC/E,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;oBAC5D,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;oBACvF,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;oBAC7D,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;oBAChF,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;oBACxF,OAAO,CAAC,GAAG,CAAC,+BAA+B,UAAU,kBAAkB,CAAC,CAAC;oBACzE,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;oBACvF,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;oBAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBAED,MAAM,OAAO,GAAG;oBACd,MAAM,EAAE,SAAS;oBACjB,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAChE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;oBACrC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;oBACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;oBACrC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;oBACzC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAC/B,SAAS,EACP,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBACjE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC7D,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;iBACnC,CAAC;gBACF,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC3B,MAAM;YACR,CAAC;YAED,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,OAAO,GAAG;oBACd,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;iBACvF,CAAC;gBACF,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;gBAC5B,MAAM;YACR,CAAC;YAED;gBACE,OAAO,CAAC,KAAK,CAAC,sBAAsB,OAAO,IAAI,CAAC,CAAC;gBACjD,QAAQ,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,QAAQ;IACf,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAgRoB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqC3C,CAAC,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Analyse command - Analyze and fix code quality issues
|
|
3
|
-
*
|
|
4
|
-
* Strategy: Single PR with multiple isolated Claude runs
|
|
5
|
-
* - Each batch of 10-12 files gets its own Claude run
|
|
6
|
-
* - Claude only sees those specific files (no repository-wide context)
|
|
7
|
-
* - Validate after each batch, commit locally
|
|
8
|
-
* - If --pr flag: Push all commits and create single PR
|
|
9
|
-
*/
|
|
10
|
-
import type { AnalyseOptions } from '../types.js';
|
|
11
|
-
/**
|
|
12
|
-
* Main analyse command
|
|
13
|
-
*/
|
|
14
|
-
export declare function analyseCommand(options?: AnalyseOptions): Promise<void>;
|
|
15
|
-
//# sourceMappingURL=analyse.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"analyse.d.ts","sourceRoot":"","sources":["../../../kosuke/commands/analyse.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAeH,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,aAAa,CAAC;AA2Q9D;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkFhF"}
|
|
@@ -1,304 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Analyse command - Analyze and fix code quality issues
|
|
3
|
-
*
|
|
4
|
-
* Strategy: Single PR with multiple isolated Claude runs
|
|
5
|
-
* - Each batch of 10-12 files gets its own Claude run
|
|
6
|
-
* - Claude only sees those specific files (no repository-wide context)
|
|
7
|
-
* - Validate after each batch, commit locally
|
|
8
|
-
* - If --pr flag: Push all commits and create single PR
|
|
9
|
-
*/
|
|
10
|
-
import { readFileSync } from 'fs';
|
|
11
|
-
import { join } from 'path';
|
|
12
|
-
import { discoverFiles } from '../utils/file-discovery.js';
|
|
13
|
-
import { createBatches } from '../utils/batch-creator.js';
|
|
14
|
-
import { runLint, runTypecheck } from '../utils/validator.js';
|
|
15
|
-
import { runWithPRBatched } from '../utils/pr-orchestrator.js';
|
|
16
|
-
import { runAgentStream, formatCostBreakdown, logAssistantMessage, logToolUsage, } from '../utils/claude-agent.js';
|
|
17
|
-
import { fixLintErrors } from './lint.js';
|
|
18
|
-
/**
|
|
19
|
-
* Run Claude analysis on a single batch
|
|
20
|
-
*/
|
|
21
|
-
async function analyzeBatch(batch, _claudeMdRules) {
|
|
22
|
-
console.log(`\n${'='.repeat(60)}`);
|
|
23
|
-
console.log(`š Analyzing: ${batch.name}`);
|
|
24
|
-
console.log(` Files: ${batch.files.join(', ')}`);
|
|
25
|
-
console.log(`${'='.repeat(60)}\n`);
|
|
26
|
-
const workspaceRoot = process.cwd();
|
|
27
|
-
// System prompt: Just point to CLAUDE.md
|
|
28
|
-
const systemPrompt = `You are a code quality analyzer and fixer for this repository.
|
|
29
|
-
|
|
30
|
-
Your task is to analyze specific files for code quality issues and IMMEDIATELY FIX them according to the rules in CLAUDE.md.
|
|
31
|
-
|
|
32
|
-
CRITICAL REQUIREMENTS:
|
|
33
|
-
- You MUST use the search_replace or write tools to fix ALL violations you find
|
|
34
|
-
- Simply identifying issues without fixing them is NOT acceptable
|
|
35
|
-
- You will ONLY be given access to a specific batch of files. Do NOT explore the entire repository.
|
|
36
|
-
|
|
37
|
-
The rules you must follow are provided in CLAUDE.md.`;
|
|
38
|
-
// User prompt: Simple and direct
|
|
39
|
-
const promptText = `Analyze and FIX code quality issues in these ${batch.files.length} files:
|
|
40
|
-
|
|
41
|
-
${batch.files.map((f) => `- ${f}`).join('\n')}
|
|
42
|
-
|
|
43
|
-
**Your task:**
|
|
44
|
-
1. Read CLAUDE.md to understand all the rules and best practices
|
|
45
|
-
2. Read ONLY the files listed above (these are the files in this batch)
|
|
46
|
-
3. Check each file against the CLAUDE.md rules
|
|
47
|
-
4. **IMMEDIATELY FIX any violations you find using search_replace or write tools**
|
|
48
|
-
5. Do NOT explore or modify other files outside this batch
|
|
49
|
-
|
|
50
|
-
**IMPORTANT:**
|
|
51
|
-
- Don't just describe issues - FIX them!
|
|
52
|
-
- Use search_replace for targeted fixes
|
|
53
|
-
- Use write for complete file rewrites if needed
|
|
54
|
-
- Every violation you identify MUST be fixed
|
|
55
|
-
|
|
56
|
-
**Rules reference:** ${join(workspaceRoot, 'CLAUDE.md')}
|
|
57
|
-
|
|
58
|
-
Start by reading CLAUDE.md, then analyze and fix the batch files.`;
|
|
59
|
-
try {
|
|
60
|
-
const stream = runAgentStream(promptText, {
|
|
61
|
-
systemPrompt,
|
|
62
|
-
maxTurns: 15,
|
|
63
|
-
cwd: workspaceRoot,
|
|
64
|
-
verbosity: 'normal',
|
|
65
|
-
});
|
|
66
|
-
let fixCount = 0;
|
|
67
|
-
let tokensUsed = { input: 0, output: 0, cacheCreation: 0, cacheRead: 0 };
|
|
68
|
-
let cost = 0;
|
|
69
|
-
// Process stream
|
|
70
|
-
const filesReferenced = new Set();
|
|
71
|
-
for await (const event of stream) {
|
|
72
|
-
if (event.type === 'message') {
|
|
73
|
-
const message = event.data;
|
|
74
|
-
if (message.type === 'assistant' && message.message?.content) {
|
|
75
|
-
for (const block of message.message.content) {
|
|
76
|
-
if (block.type === 'text' && block.text) {
|
|
77
|
-
logAssistantMessage(block.text, 'normal');
|
|
78
|
-
}
|
|
79
|
-
else if (block.type === 'tool_use' && block.name) {
|
|
80
|
-
logToolUsage(block.name, block.input, filesReferenced);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
else if (event.type === 'agent_result') {
|
|
86
|
-
fixCount = event.data.fixCount;
|
|
87
|
-
tokensUsed = event.data.tokensUsed;
|
|
88
|
-
cost = event.data.cost;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
// Return placeholder fixes (real fix tracking would require parsing Claude's edits)
|
|
92
|
-
const fixes = batch.files.map((file) => ({
|
|
93
|
-
file,
|
|
94
|
-
type: 'other',
|
|
95
|
-
description: 'Quality improvements',
|
|
96
|
-
linesChanged: 0,
|
|
97
|
-
}));
|
|
98
|
-
console.log(`\n ⨠Batch analysis complete (${fixCount} fixes applied)`);
|
|
99
|
-
console.log(` š° Cost: ${formatCostBreakdown({
|
|
100
|
-
fixCount,
|
|
101
|
-
tokensUsed,
|
|
102
|
-
cost,
|
|
103
|
-
response: '',
|
|
104
|
-
filesReferenced: new Set(),
|
|
105
|
-
})}`);
|
|
106
|
-
return {
|
|
107
|
-
batch,
|
|
108
|
-
fixes: fixCount > 0 ? fixes : [],
|
|
109
|
-
inputTokens: tokensUsed.input,
|
|
110
|
-
outputTokens: tokensUsed.output,
|
|
111
|
-
cacheCreationTokens: tokensUsed.cacheCreation,
|
|
112
|
-
cacheReadTokens: tokensUsed.cacheRead,
|
|
113
|
-
cost,
|
|
114
|
-
skipped: false,
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
catch (error) {
|
|
118
|
-
console.error(`\n ā Error analyzing batch:`, error);
|
|
119
|
-
throw error;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Validate fixes with lint and typecheck
|
|
124
|
-
* If lint fails, use Claude to fix the errors automatically
|
|
125
|
-
*/
|
|
126
|
-
async function validateBatch() {
|
|
127
|
-
console.log(` š§ Running validation...`);
|
|
128
|
-
let lintResult = await runLint();
|
|
129
|
-
if (!lintResult.success) {
|
|
130
|
-
console.log(` ā ļø Linting errors detected, attempting to fix...`);
|
|
131
|
-
// Try to fix lint errors with Claude (max 2 attempts)
|
|
132
|
-
let attempts = 0;
|
|
133
|
-
const maxAttempts = 2;
|
|
134
|
-
while (!lintResult.success && attempts < maxAttempts) {
|
|
135
|
-
attempts++;
|
|
136
|
-
console.log(`\n š Lint fix attempt ${attempts}/${maxAttempts}`);
|
|
137
|
-
const fixApplied = await fixLintErrors(lintResult.error || '');
|
|
138
|
-
if (!fixApplied) {
|
|
139
|
-
console.log(` ā ļø No fixes were applied by Claude`);
|
|
140
|
-
break;
|
|
141
|
-
}
|
|
142
|
-
// Re-run lint to check if errors are fixed
|
|
143
|
-
lintResult = await runLint();
|
|
144
|
-
}
|
|
145
|
-
if (!lintResult.success) {
|
|
146
|
-
console.error(` ā Linting failed after ${attempts} attempts:\n${lintResult.error}`);
|
|
147
|
-
return false;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
console.log(` ā
Lint passed`);
|
|
151
|
-
const typecheckResult = await runTypecheck();
|
|
152
|
-
if (!typecheckResult.success) {
|
|
153
|
-
console.error(` ā Type checking failed:\n${typecheckResult.error}`);
|
|
154
|
-
return false;
|
|
155
|
-
}
|
|
156
|
-
console.log(` ā
Typecheck passed`);
|
|
157
|
-
return true;
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Core analysis logic (git-agnostic)
|
|
161
|
-
* Returns batches and a function to process them
|
|
162
|
-
*/
|
|
163
|
-
async function prepareAnalysis(options) {
|
|
164
|
-
// Load CLAUDE.md rules
|
|
165
|
-
const claudeMdPath = join(process.cwd(), 'CLAUDE.md');
|
|
166
|
-
const claudeMdRules = readFileSync(claudeMdPath, 'utf-8');
|
|
167
|
-
console.log('š Loaded CLAUDE.md rules\n');
|
|
168
|
-
// Discover files
|
|
169
|
-
console.log('š Discovering files...');
|
|
170
|
-
const files = await discoverFiles({
|
|
171
|
-
scope: options.scope,
|
|
172
|
-
types: options.types,
|
|
173
|
-
});
|
|
174
|
-
console.log(`š Found ${files.length} files to analyze\n`);
|
|
175
|
-
if (files.length === 0) {
|
|
176
|
-
console.log('ā¹ļø No files found to analyze.');
|
|
177
|
-
return { batches: [], claudeMdRules };
|
|
178
|
-
}
|
|
179
|
-
// Create batches (10-12 files each, grouped by directory)
|
|
180
|
-
const batches = createBatches(files, { maxSize: 10, groupBy: 'directory' });
|
|
181
|
-
console.log(`š¦ Created ${batches.length} batches\n`);
|
|
182
|
-
return { batches, claudeMdRules };
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Process all batches sequentially (git-agnostic)
|
|
186
|
-
*/
|
|
187
|
-
async function analyzeAllBatches(batches, claudeMdRules) {
|
|
188
|
-
const processedBatches = [];
|
|
189
|
-
let totalFixes = 0;
|
|
190
|
-
let totalCost = 0;
|
|
191
|
-
let totalInputTokens = 0;
|
|
192
|
-
let totalOutputTokens = 0;
|
|
193
|
-
let totalCacheCreationTokens = 0;
|
|
194
|
-
let totalCacheReadTokens = 0;
|
|
195
|
-
for (const [index, batch] of batches.entries()) {
|
|
196
|
-
console.log(`\nš Progress: ${index + 1}/${batches.length}`);
|
|
197
|
-
// Analyze batch (isolated Claude run)
|
|
198
|
-
const result = await analyzeBatch(batch, claudeMdRules);
|
|
199
|
-
// Always validate changes
|
|
200
|
-
const isValid = await validateBatch();
|
|
201
|
-
if (isValid && result.fixes.length > 0) {
|
|
202
|
-
console.log(` ā
Batch validated and ready\n`);
|
|
203
|
-
processedBatches.push(result);
|
|
204
|
-
totalFixes += result.fixes.length;
|
|
205
|
-
totalCost += result.cost;
|
|
206
|
-
totalInputTokens += result.inputTokens;
|
|
207
|
-
totalOutputTokens += result.outputTokens;
|
|
208
|
-
totalCacheCreationTokens += result.cacheCreationTokens;
|
|
209
|
-
totalCacheReadTokens += result.cacheReadTokens;
|
|
210
|
-
}
|
|
211
|
-
else if (!isValid) {
|
|
212
|
-
// Validation failed, mark as skipped
|
|
213
|
-
console.warn(` ā ļø Validation failed, skipping batch\n`);
|
|
214
|
-
processedBatches.push({ ...result, skipped: true });
|
|
215
|
-
}
|
|
216
|
-
else {
|
|
217
|
-
console.log(` ā¹ļø No fixes needed for this batch\n`);
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
return {
|
|
221
|
-
processedBatches,
|
|
222
|
-
totalFixes,
|
|
223
|
-
totalCost,
|
|
224
|
-
totalInputTokens,
|
|
225
|
-
totalOutputTokens,
|
|
226
|
-
totalCacheCreationTokens,
|
|
227
|
-
totalCacheReadTokens,
|
|
228
|
-
};
|
|
229
|
-
}
|
|
230
|
-
/**
|
|
231
|
-
* Main analyse command
|
|
232
|
-
*/
|
|
233
|
-
export async function analyseCommand(options = {}) {
|
|
234
|
-
console.log('š Starting Kosuke Quality Analysis...\n');
|
|
235
|
-
try {
|
|
236
|
-
// Validate environment
|
|
237
|
-
if (!process.env.ANTHROPIC_API_KEY) {
|
|
238
|
-
throw new Error('ANTHROPIC_API_KEY environment variable is required');
|
|
239
|
-
}
|
|
240
|
-
// Prepare analysis (discover files, create batches)
|
|
241
|
-
const { batches, claudeMdRules } = await prepareAnalysis(options);
|
|
242
|
-
if (batches.length === 0) {
|
|
243
|
-
console.log('\nā
No files to analyze.\n');
|
|
244
|
-
return;
|
|
245
|
-
}
|
|
246
|
-
// If --pr flag is provided, wrap with PR workflow
|
|
247
|
-
if (options.pr) {
|
|
248
|
-
if (!process.env.GITHUB_TOKEN) {
|
|
249
|
-
throw new Error('GITHUB_TOKEN environment variable is required for --pr flag');
|
|
250
|
-
}
|
|
251
|
-
const date = new Date().toISOString().split('T')[0];
|
|
252
|
-
// Create batch processors
|
|
253
|
-
const batchProcessors = batches.map((batch, index) => async () => {
|
|
254
|
-
console.log(`\nBatch ${index + 1}/${batches.length}`);
|
|
255
|
-
const result = await analyzeBatch(batch, claudeMdRules);
|
|
256
|
-
return result;
|
|
257
|
-
});
|
|
258
|
-
try {
|
|
259
|
-
const { results, prInfo } = await runWithPRBatched({
|
|
260
|
-
branchPrefix: 'quality/kosuke-analysis',
|
|
261
|
-
baseBranch: options.baseBranch,
|
|
262
|
-
commitMessage: (batchIndex) => `fix(quality): ${batches[batchIndex].name} - improvements`,
|
|
263
|
-
prTitle: `chore: Quality Fixes (${date})`,
|
|
264
|
-
prBody: '', // TODO: Generate detailed PR body after processing
|
|
265
|
-
validateBeforeCommit: validateBatch,
|
|
266
|
-
}, batchProcessors);
|
|
267
|
-
// Calculate totals
|
|
268
|
-
const processedBatches = results.filter((r) => !r.skipped);
|
|
269
|
-
const totalFixes = processedBatches.reduce((sum, r) => sum + r.fixes.length, 0);
|
|
270
|
-
const totalCost = processedBatches.reduce((sum, r) => sum + r.cost, 0);
|
|
271
|
-
console.log('\nā
Analysis complete!');
|
|
272
|
-
console.log(`š Processed ${processedBatches.length}/${batches.length} batches`);
|
|
273
|
-
console.log(`š§ Applied ${totalFixes} fixes`);
|
|
274
|
-
console.log(`š° Total cost: $${totalCost.toFixed(4)}`);
|
|
275
|
-
console.log(`š PR: ${prInfo.prUrl}`);
|
|
276
|
-
}
|
|
277
|
-
catch (error) {
|
|
278
|
-
if (error instanceof Error && error.message === 'No changes to commit') {
|
|
279
|
-
console.log('\nā
No fixes needed! Codebase is already compliant.\n');
|
|
280
|
-
return;
|
|
281
|
-
}
|
|
282
|
-
throw error;
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
else {
|
|
286
|
-
// Run core logic without PR
|
|
287
|
-
const result = await analyzeAllBatches(batches, claudeMdRules);
|
|
288
|
-
if (result.processedBatches.length === 0) {
|
|
289
|
-
console.log('\nā
No fixes needed! Codebase is already compliant.\n');
|
|
290
|
-
return;
|
|
291
|
-
}
|
|
292
|
-
console.log('\nā
Analysis complete!');
|
|
293
|
-
console.log(`š Processed ${result.processedBatches.length}/${batches.length} batches`);
|
|
294
|
-
console.log(`š§ Applied ${result.totalFixes} fixes`);
|
|
295
|
-
console.log(`š° Total cost: $${result.totalCost.toFixed(4)}`);
|
|
296
|
-
console.log('\nā¹ļø Changes applied locally. Use --pr flag to create a pull request.');
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
catch (error) {
|
|
300
|
-
console.error('\nā Analysis failed:', error);
|
|
301
|
-
throw error;
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
//# sourceMappingURL=analyse.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"analyse.js","sourceRoot":"","sources":["../../../kosuke/commands/analyse.ts"],"names":[],"mappings":"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"}
|