kodu 2.1.3 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/README.md +24 -3
  2. package/bin/kodu.js +23 -0
  3. package/package.json +11 -67
  4. package/scripts/postinstall.js +69 -0
  5. package/AGENTS.md +0 -214
  6. package/__tests__/core/fs/fs.service.test.ts +0 -72
  7. package/__tests__/shared/cleaner/cleaner.service.test.ts +0 -102
  8. package/__tests__/shared/git/git.service.test.ts +0 -84
  9. package/__tests__/shared/tokenizer/tokenizer.service.test.ts +0 -45
  10. package/biome.json +0 -50
  11. package/dist/package.json +0 -96
  12. package/dist/src/app.module.d.ts +0 -2
  13. package/dist/src/app.module.js +0 -36
  14. package/dist/src/app.module.js.map +0 -1
  15. package/dist/src/commands/clean/clean.command.d.ts +0 -37
  16. package/dist/src/commands/clean/clean.command.js +0 -240
  17. package/dist/src/commands/clean/clean.command.js.map +0 -1
  18. package/dist/src/commands/clean/clean.module.d.ts +0 -2
  19. package/dist/src/commands/clean/clean.module.js +0 -26
  20. package/dist/src/commands/clean/clean.module.js.map +0 -1
  21. package/dist/src/commands/init/init.command.d.ts +0 -10
  22. package/dist/src/commands/init/init.command.js +0 -96
  23. package/dist/src/commands/init/init.command.js.map +0 -1
  24. package/dist/src/commands/init/init.module.d.ts +0 -2
  25. package/dist/src/commands/init/init.module.js +0 -22
  26. package/dist/src/commands/init/init.module.js.map +0 -1
  27. package/dist/src/commands/pack/pack.command.d.ts +0 -51
  28. package/dist/src/commands/pack/pack.command.js +0 -355
  29. package/dist/src/commands/pack/pack.command.js.map +0 -1
  30. package/dist/src/commands/pack/pack.module.d.ts +0 -2
  31. package/dist/src/commands/pack/pack.module.js +0 -27
  32. package/dist/src/commands/pack/pack.module.js.map +0 -1
  33. package/dist/src/core/config/config.module.d.ts +0 -2
  34. package/dist/src/core/config/config.module.js +0 -23
  35. package/dist/src/core/config/config.module.js.map +0 -1
  36. package/dist/src/core/config/config.schema.d.ts +0 -19
  37. package/dist/src/core/config/config.schema.js +0 -56
  38. package/dist/src/core/config/config.schema.js.map +0 -1
  39. package/dist/src/core/config/config.service.d.ts +0 -7
  40. package/dist/src/core/config/config.service.js +0 -49
  41. package/dist/src/core/config/config.service.js.map +0 -1
  42. package/dist/src/core/config/prompt.service.d.ts +0 -10
  43. package/dist/src/core/config/prompt.service.js +0 -80
  44. package/dist/src/core/config/prompt.service.js.map +0 -1
  45. package/dist/src/core/file-system/fs.module.d.ts +0 -2
  46. package/dist/src/core/file-system/fs.module.js +0 -21
  47. package/dist/src/core/file-system/fs.module.js.map +0 -1
  48. package/dist/src/core/file-system/fs.service.d.ts +0 -27
  49. package/dist/src/core/file-system/fs.service.js +0 -203
  50. package/dist/src/core/file-system/fs.service.js.map +0 -1
  51. package/dist/src/core/ui/ui.module.d.ts +0 -2
  52. package/dist/src/core/ui/ui.module.js +0 -22
  53. package/dist/src/core/ui/ui.module.js.map +0 -1
  54. package/dist/src/core/ui/ui.service.d.ts +0 -22
  55. package/dist/src/core/ui/ui.service.js +0 -43
  56. package/dist/src/core/ui/ui.service.js.map +0 -1
  57. package/dist/src/main.d.ts +0 -2
  58. package/dist/src/main.js +0 -16
  59. package/dist/src/main.js.map +0 -1
  60. package/dist/src/shared/cleaner/cleaner.service.d.ts +0 -23
  61. package/dist/src/shared/cleaner/cleaner.service.js +0 -223
  62. package/dist/src/shared/cleaner/cleaner.service.js.map +0 -1
  63. package/dist/src/shared/cleaner/cleaner.types.d.ts +0 -21
  64. package/dist/src/shared/cleaner/cleaner.types.js +0 -3
  65. package/dist/src/shared/cleaner/cleaner.types.js.map +0 -1
  66. package/dist/src/shared/constants.d.ts +0 -4
  67. package/dist/src/shared/constants.js +0 -113
  68. package/dist/src/shared/constants.js.map +0 -1
  69. package/dist/src/shared/deps/deps.module.d.ts +0 -2
  70. package/dist/src/shared/deps/deps.module.js +0 -21
  71. package/dist/src/shared/deps/deps.module.js.map +0 -1
  72. package/dist/src/shared/deps/deps.service.d.ts +0 -15
  73. package/dist/src/shared/deps/deps.service.js +0 -114
  74. package/dist/src/shared/deps/deps.service.js.map +0 -1
  75. package/dist/src/shared/git/git.module.d.ts +0 -2
  76. package/dist/src/shared/git/git.module.js +0 -21
  77. package/dist/src/shared/git/git.module.js.map +0 -1
  78. package/dist/src/shared/git/git.service.d.ts +0 -5
  79. package/dist/src/shared/git/git.service.js +0 -56
  80. package/dist/src/shared/git/git.service.js.map +0 -1
  81. package/dist/src/shared/tokenizer/tokenizer.module.d.ts +0 -2
  82. package/dist/src/shared/tokenizer/tokenizer.module.js +0 -21
  83. package/dist/src/shared/tokenizer/tokenizer.module.js.map +0 -1
  84. package/dist/src/shared/tokenizer/tokenizer.service.d.ts +0 -10
  85. package/dist/src/shared/tokenizer/tokenizer.service.js +0 -36
  86. package/dist/src/shared/tokenizer/tokenizer.service.js.map +0 -1
  87. package/dist/tsconfig.build.tsbuildinfo +0 -1
  88. package/docs/todo.md +0 -7
  89. package/knip.json +0 -10
  90. package/kodu.json +0 -63
  91. package/kodu.schema.json +0 -100
  92. package/lefthook.yml +0 -11
  93. package/nest-cli.json +0 -8
  94. package/scripts/generate-json-schema.ts +0 -18
  95. package/skills/doc-gen/SKILL.md +0 -490
  96. package/skills/doc-gen/scripts/doc_gen.py +0 -911
  97. package/skills/implement-project/SKILL.md +0 -409
  98. package/skills/liteend-init/SKILL.md +0 -84
  99. package/skills/litefront-init/SKILL.md +0 -96
  100. package/skills/litefront-prototype/SKILL.md +0 -484
  101. package/skills/project-setup-standardizer/SKILL.md +0 -285
  102. package/skills/start/SKILL.md +0 -319
  103. package/skills/tech-blueprint/SKILL.md +0 -890
  104. package/skills/tech-blueprint/scripts/blueprint_validator.py +0 -417
  105. package/src/app.module.ts +0 -23
  106. package/src/commands/clean/clean.command.ts +0 -235
  107. package/src/commands/clean/clean.module.ts +0 -13
  108. package/src/commands/init/init.command.ts +0 -92
  109. package/src/commands/init/init.module.ts +0 -9
  110. package/src/commands/pack/pack.command.ts +0 -347
  111. package/src/commands/pack/pack.module.ts +0 -14
  112. package/src/core/config/config.module.ts +0 -10
  113. package/src/core/config/config.schema.ts +0 -58
  114. package/src/core/config/config.service.ts +0 -43
  115. package/src/core/config/prompt.service.ts +0 -80
  116. package/src/core/file-system/fs.module.ts +0 -8
  117. package/src/core/file-system/fs.service.ts +0 -248
  118. package/src/core/ui/ui.module.ts +0 -9
  119. package/src/core/ui/ui.service.ts +0 -39
  120. package/src/main.ts +0 -12
  121. package/src/shared/cleaner/cleaner.service.ts +0 -289
  122. package/src/shared/cleaner/cleaner.types.ts +0 -23
  123. package/src/shared/constants.ts +0 -118
  124. package/src/shared/deps/deps.module.ts +0 -8
  125. package/src/shared/deps/deps.service.ts +0 -175
  126. package/src/shared/git/git.module.ts +0 -8
  127. package/src/shared/git/git.service.ts +0 -47
  128. package/src/shared/tokenizer/tokenizer.module.ts +0 -8
  129. package/src/shared/tokenizer/tokenizer.service.ts +0 -30
  130. package/tsconfig.build.json +0 -7
  131. package/tsconfig.json +0 -28
@@ -1,84 +0,0 @@
1
- import { execa } from 'execa';
2
- import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
3
- import { GitService } from '../../../src/shared/git/git.service';
4
-
5
- vi.mock('execa');
6
-
7
- const mockExeca = vi.mocked(execa);
8
-
9
- describe('GitService', () => {
10
- let gitService: GitService;
11
-
12
- beforeEach(() => {
13
- vi.clearAllMocks();
14
- gitService = new GitService();
15
- });
16
-
17
- afterEach(() => {
18
- vi.resetAllMocks();
19
- });
20
-
21
- describe('ensureRepo', () => {
22
- it('should resolve when inside git repo', async () => {
23
- mockExeca.mockResolvedValue({ stdout: '' } as never);
24
-
25
- await expect(gitService.ensureRepo()).resolves.not.toThrow();
26
- });
27
-
28
- it('should reject when not in git repo', async () => {
29
- mockExeca.mockRejectedValue(new Error('fatal: not a git repository'));
30
-
31
- await expect(gitService.ensureRepo()).rejects.toThrow();
32
- });
33
- });
34
-
35
- describe('getChangedFiles', () => {
36
- it('should return empty array when no changes', async () => {
37
- mockExeca.mockResolvedValue({ stdout: '' } as never);
38
-
39
- const files = await gitService.getChangedFiles();
40
-
41
- expect(files).toEqual([]);
42
- });
43
-
44
- it('should return changed files from all sources', async () => {
45
- const mockCalls = [
46
- { stdout: '' }, // ensureRepo
47
- { stdout: 'src/a.ts\nsrc/b.ts' }, // diff
48
- { stdout: '' }, // diff --staged
49
- { stdout: '' }, // ls-files
50
- ];
51
- mockExeca
52
- .mockResolvedValueOnce(mockCalls[0] as never)
53
- .mockResolvedValueOnce(mockCalls[1] as never)
54
- .mockResolvedValueOnce(mockCalls[2] as never)
55
- .mockResolvedValueOnce(mockCalls[3] as never);
56
-
57
- const files = await gitService.getChangedFiles();
58
-
59
- expect(files).toEqual(['src/a.ts', 'src/b.ts']);
60
- });
61
- });
62
-
63
- describe('getStagedFiles', () => {
64
- it('should return empty array when no staged files', async () => {
65
- mockExeca
66
- .mockResolvedValueOnce({ stdout: '' } as never)
67
- .mockResolvedValueOnce({ stdout: '' } as never);
68
-
69
- const files = await gitService.getStagedFiles();
70
-
71
- expect(files).toEqual([]);
72
- });
73
-
74
- it('should return staged files', async () => {
75
- mockExeca
76
- .mockResolvedValueOnce({ stdout: '' } as never)
77
- .mockResolvedValueOnce({ stdout: 'src/new.ts' } as never);
78
-
79
- const files = await gitService.getStagedFiles();
80
-
81
- expect(files).toEqual(['src/new.ts']);
82
- });
83
- });
84
- });
@@ -1,45 +0,0 @@
1
- import { beforeEach, describe, expect, it } from 'vitest';
2
-
3
- describe('TokenizerService', () => {
4
- let tokenizer: {
5
- count: (text: string) => { tokens: number; usdEstimate: number };
6
- };
7
-
8
- beforeEach(async () => {
9
- const { TokenizerService } = await import(
10
- '../../../src/shared/tokenizer/tokenizer.service'
11
- );
12
- tokenizer = new TokenizerService();
13
- });
14
-
15
- it('should count tokens for empty string', () => {
16
- const result = tokenizer.count('');
17
-
18
- expect(result.tokens).toBe(0);
19
- expect(result.usdEstimate).toBe(0);
20
- });
21
-
22
- it('should count tokens for simple text', () => {
23
- const result = tokenizer.count('hello world');
24
-
25
- expect(result.tokens).toBeGreaterThan(0);
26
- expect(result.usdEstimate).toBeGreaterThan(0);
27
- });
28
-
29
- it('should estimate cost correctly based on DEFAULT_PRICE_PER_MILLION', () => {
30
- const result = tokenizer.count('a'.repeat(1000));
31
-
32
- expect(result.tokens).toBeGreaterThan(0);
33
- // DEFAULT_PRICE_PER_MILLION = 5 means $5 per 1M tokens
34
- const expectedCost = (result.tokens / 1_000_000) * 5;
35
- expect(result.usdEstimate).toBe(expectedCost);
36
- });
37
-
38
- it('should handle large text', () => {
39
- const longText = 'test '.repeat(10000);
40
- const result = tokenizer.count(longText);
41
-
42
- expect(result.tokens).toBeGreaterThan(10000);
43
- expect(result.usdEstimate).toBeGreaterThan(0);
44
- });
45
- });
package/biome.json DELETED
@@ -1,50 +0,0 @@
1
- {
2
- "$schema": "./node_modules/@biomejs/biome/configuration_schema.json",
3
- "assist": {
4
- "actions": {
5
- "source": {
6
- "organizeImports": "on"
7
- }
8
- }
9
- },
10
- "files": {
11
- "ignoreUnknown": false,
12
- "includes": ["**", "!**/node_modules", "!**/dist"]
13
- },
14
- "formatter": {
15
- "enabled": true,
16
- "indentStyle": "space",
17
- "lineEnding": "lf"
18
- },
19
- "javascript": {
20
- "formatter": {
21
- "quoteStyle": "single"
22
- },
23
- "parser": {
24
- "unsafeParameterDecoratorsEnabled": true
25
- }
26
- },
27
- "linter": {
28
- "enabled": true,
29
- "rules": {
30
- "correctness": {
31
- "noUnusedFunctionParameters": "error",
32
- "noUnusedImports": "error",
33
- "noUnusedVariables": "error"
34
- },
35
- "recommended": true,
36
- "style": {
37
- "noNonNullAssertion": "off",
38
- "useImportType": "off"
39
- },
40
- "suspicious": {
41
- "noPrototypeBuiltins": "off"
42
- }
43
- }
44
- },
45
- "vcs": {
46
- "clientKind": "git",
47
- "enabled": true,
48
- "useIgnoreFile": true
49
- }
50
- }
package/dist/package.json DELETED
@@ -1,96 +0,0 @@
1
- {
2
- "name": "kodu",
3
- "version": "2.1.3",
4
- "description": "High-performance CLI to prepare codebase for LLMs, automate reviews, and draft commits.",
5
- "repository": {
6
- "type": "git",
7
- "url": "git+https://github.com/uxname/kodu.git"
8
- },
9
- "bugs": {
10
- "url": "https://github.com/uxname/kodu/issues"
11
- },
12
- "homepage": "https://github.com/uxname/kodu#readme",
13
- "keywords": [
14
- "cli",
15
- "ai",
16
- "llm",
17
- "developer-tools",
18
- "productivity",
19
- "typescript",
20
- "openai",
21
- "automation",
22
- "code-review",
23
- "context-window",
24
- "git-tools"
25
- ],
26
- "private": false,
27
- "license": "MIT",
28
- "bin": {
29
- "kodu": "dist/src/main.js"
30
- },
31
- "scripts": {
32
- "________________ BUILD AND RUN ________________": "",
33
- "build": "nest build && chmod +x dist/src/main.js",
34
- "generate:schema": "ts-node scripts/generate-json-schema.ts",
35
- "postbuild": "npm run generate:schema",
36
- "start:prod": "node dist/main.js",
37
- "start:dev": "nest start --watch",
38
- "new:command": "nest g -c nest-commander-schematics command",
39
- "new:question": "nest g -c nest-commander-schematics question",
40
- "________________ FORMAT AND LINT ________________": "",
41
- "lint": "biome check",
42
- "lint:fix": "biome check --write",
43
- "lint:fix:unsafe": "biome check --write --unsafe",
44
- "ts:check": "tsc --noEmit",
45
- "knip": "knip --production",
46
- "check": "run-p ts:check lint:fix knip",
47
- "________________ TEST ________________": "",
48
- "test": "vitest run",
49
- "test:watch": "vitest",
50
- "test:cov": "vitest run --coverage",
51
- "________________ OTHER ________________": "",
52
- "prepare": "is-ci || lefthook install",
53
- "update": "npx npm-check-updates -u && rimraf node_modules package-lock.json && npm i",
54
- "postupdate": "npm run lint:fix && npm run check"
55
- },
56
- "dependencies": {
57
- "@inquirer/confirm": "^6.0.4",
58
- "@inquirer/input": "^5.0.4",
59
- "@inquirer/select": "^5.0.4",
60
- "@nestjs/common": "^11.0.1",
61
- "@nestjs/core": "^11.0.1",
62
- "clipboardy": "^5.0.2",
63
- "execa": "^9.6.1",
64
- "ignore": "^7.0.5",
65
- "js-tiktoken": "^1.0.21",
66
- "lilconfig": "^3.1.3",
67
- "nest-commander": "^3.20.1",
68
- "picocolors": "^1.1.1",
69
- "reflect-metadata": "^0.2.2",
70
- "rxjs": "^7.8.1",
71
- "source-map-support": "^0.5.21",
72
- "tinyglobby": "^0.2.15",
73
- "ts-morph": "^24.0.0",
74
- "yocto-spinner": "^1.0.0",
75
- "zod": "^4.3.6"
76
- },
77
- "devDependencies": {
78
- "@biomejs/biome": "^2.3.12",
79
- "@nestjs/cli": "^11.0.0",
80
- "@nestjs/schematics": "^11.0.0",
81
- "@nestjs/testing": "^11.0.1",
82
- "@types/node": "^22.10.7",
83
- "is-ci": "^4.1.0",
84
- "knip": "^5.82.1",
85
- "lefthook": "^2.0.15",
86
- "nest-commander-schematics": "^3.2.0",
87
- "npm-check-updates": "^18.3.1",
88
- "npm-run-all": "^4.1.5",
89
- "rimraf": "^6.1.3",
90
- "ts-loader": "^9.5.2",
91
- "ts-node": "^10.9.2",
92
- "tsconfig-paths": "^4.2.0",
93
- "typescript": "^5.7.3",
94
- "vitest": "^3.2.4"
95
- }
96
- }
@@ -1,2 +0,0 @@
1
- export declare class AppModule {
2
- }
@@ -1,36 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.AppModule = void 0;
10
- const common_1 = require("@nestjs/common");
11
- const clean_module_1 = require("./commands/clean/clean.module");
12
- const init_module_1 = require("./commands/init/init.module");
13
- const pack_module_1 = require("./commands/pack/pack.module");
14
- const config_module_1 = require("./core/config/config.module");
15
- const fs_module_1 = require("./core/file-system/fs.module");
16
- const ui_module_1 = require("./core/ui/ui.module");
17
- const git_module_1 = require("./shared/git/git.module");
18
- const tokenizer_module_1 = require("./shared/tokenizer/tokenizer.module");
19
- let AppModule = class AppModule {
20
- };
21
- exports.AppModule = AppModule;
22
- exports.AppModule = AppModule = __decorate([
23
- (0, common_1.Module)({
24
- imports: [
25
- config_module_1.ConfigModule,
26
- ui_module_1.UiModule,
27
- fs_module_1.FsModule,
28
- git_module_1.GitModule,
29
- tokenizer_module_1.TokenizerModule,
30
- init_module_1.InitModule,
31
- pack_module_1.PackModule,
32
- clean_module_1.CleanModule,
33
- ],
34
- })
35
- ], AppModule);
36
- //# sourceMappingURL=app.module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app.module.js","sourceRoot":"","sources":["../../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,gEAA4D;AAC5D,6DAAyD;AACzD,6DAAyD;AACzD,+DAA2D;AAC3D,4DAAwD;AACxD,mDAA+C;AAC/C,wDAAoD;AACpD,0EAAsE;AAc/D,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IAZrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,4BAAY;YACZ,oBAAQ;YACR,oBAAQ;YACR,sBAAS;YACT,kCAAe;YACf,wBAAU;YACV,wBAAU;YACV,0BAAW;SACZ;KACF,CAAC;GACW,SAAS,CAAG"}
@@ -1,37 +0,0 @@
1
- import { CommandRunner } from 'nest-commander';
2
- import { ConfigService } from '../../core/config/config.service';
3
- import { FsService } from '../../core/file-system/fs.service';
4
- import { UiService } from '../../core/ui/ui.service';
5
- import { CleanerService } from '../../shared/cleaner/cleaner.service';
6
- import { GitService } from '../../shared/git/git.service';
7
- type CleanOptions = {
8
- dryRun?: boolean;
9
- changed?: boolean;
10
- staged?: boolean;
11
- backup?: boolean;
12
- noJsdoc?: boolean;
13
- verbose?: boolean;
14
- stdin?: boolean;
15
- };
16
- export declare class CleanCommand extends CommandRunner {
17
- private readonly ui;
18
- private readonly fsService;
19
- private readonly cleaner;
20
- private readonly config;
21
- private readonly git;
22
- constructor(ui: UiService, fsService: FsService, cleaner: CleanerService, config: ConfigService, git: GitService);
23
- parseDryRun(): boolean;
24
- parseChanged(): boolean;
25
- parseStaged(): boolean;
26
- parseBackup(): boolean;
27
- parseNoJsdoc(): boolean;
28
- parseVerbose(): boolean;
29
- parseStdin(): boolean;
30
- run(inputs: string[], options?: CleanOptions): Promise<void>;
31
- private runStdin;
32
- private readStdin;
33
- private buildSpinnerText;
34
- private noFilesMessage;
35
- private collectTargets;
36
- }
37
- export {};
@@ -1,240 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.CleanCommand = void 0;
13
- const node_fs_1 = require("node:fs");
14
- const nest_commander_1 = require("nest-commander");
15
- const config_service_1 = require("../../core/config/config.service");
16
- const fs_service_1 = require("../../core/file-system/fs.service");
17
- const ui_service_1 = require("../../core/ui/ui.service");
18
- const cleaner_service_1 = require("../../shared/cleaner/cleaner.service");
19
- const git_service_1 = require("../../shared/git/git.service");
20
- const SUPPORTED_EXTENSIONS = /\.(ts|tsx|js|jsx|mjs|cjs|html|htm)$/i;
21
- let CleanCommand = class CleanCommand extends nest_commander_1.CommandRunner {
22
- ui;
23
- fsService;
24
- cleaner;
25
- config;
26
- git;
27
- constructor(ui, fsService, cleaner, config, git) {
28
- super();
29
- this.ui = ui;
30
- this.fsService = fsService;
31
- this.cleaner = cleaner;
32
- this.config = config;
33
- this.git = git;
34
- }
35
- parseDryRun() {
36
- return true;
37
- }
38
- parseChanged() {
39
- return true;
40
- }
41
- parseStaged() {
42
- return true;
43
- }
44
- parseBackup() {
45
- return true;
46
- }
47
- parseNoJsdoc() {
48
- return true;
49
- }
50
- parseVerbose() {
51
- return true;
52
- }
53
- parseStdin() {
54
- return true;
55
- }
56
- async run(inputs, options = {}) {
57
- if (options.stdin) {
58
- await this.runStdin(options);
59
- return;
60
- }
61
- const spinner = this.ui
62
- .createSpinner({ text: this.buildSpinnerText(options) })
63
- .start();
64
- try {
65
- const { cleaner: cleanerConfig, packer } = this.config.getConfig();
66
- const ignorePatterns = [
67
- ...(packer.ignore ?? []),
68
- ...(cleanerConfig.ignore ?? []),
69
- ];
70
- const allFiles = await this.fsService.findProjectFiles({
71
- useGitignore: cleanerConfig.useGitignore,
72
- ignore: ignorePatterns,
73
- });
74
- const targets = await this.collectTargets(allFiles, inputs, options);
75
- if (targets.length === 0) {
76
- const msg = this.noFilesMessage(options);
77
- spinner.stop(msg);
78
- this.ui.log.warn(msg);
79
- return;
80
- }
81
- const summary = await this.cleaner.cleanFiles(targets, {
82
- dryRun: options.dryRun,
83
- backup: options.backup,
84
- keepJSDoc: options.noJsdoc ? false : undefined,
85
- onProgress: (current, total) => {
86
- spinner.text = `${this.buildSpinnerText(options)} (${current}/${total})`;
87
- },
88
- });
89
- spinner.success(options.dryRun ? 'Analysis complete' : 'Cleaning complete');
90
- const bytesSaved = summary.bytesBefore - summary.bytesAfter;
91
- const tokensSaved = Math.round(bytesSaved / 4);
92
- if (options.dryRun) {
93
- this.ui.log.info(`Files affected: ${summary.filesChanged}/${summary.filesProcessed}, comments: ${summary.commentsRemoved}`);
94
- this.ui.log.info(`Bytes saved: ${bytesSaved} (~${tokensSaved} tokens)`);
95
- const limit = options.verbose ? Number.POSITIVE_INFINITY : 3;
96
- for (const report of summary.reports.filter((r) => r.removed > 0)) {
97
- const previews = options.verbose
98
- ? report.previews
99
- : report.previews.slice(0, limit);
100
- const more = !options.verbose && report.previews.length > limit
101
- ? ` +${report.previews.length - limit} more`
102
- : '';
103
- this.ui.log.info(` ${report.file} (${report.removed}): ${previews.map((p) => `"${p}"`).join(', ')}${more}`);
104
- }
105
- return;
106
- }
107
- this.ui.log.success(`Files cleaned: ${summary.filesChanged}, comments removed: ${summary.commentsRemoved}`);
108
- this.ui.log.info(`Bytes saved: ${bytesSaved} (~${tokensSaved} tokens)`);
109
- if (options.backup && summary.filesChanged > 0) {
110
- this.ui.log.info('Originals backed up to .kodu/backup/');
111
- }
112
- }
113
- catch (error) {
114
- spinner.error('Error during cleaning');
115
- const message = error instanceof Error ? error.message : 'Unknown error';
116
- this.ui.log.error(message);
117
- process.exitCode = 1;
118
- }
119
- }
120
- async runStdin(options) {
121
- try {
122
- const input = await this.readStdin();
123
- const cleaned = this.cleaner.cleanContent('stdin.ts', input, options.noJsdoc ? false : undefined);
124
- process.stdout.write(cleaned);
125
- }
126
- catch (error) {
127
- const message = error instanceof Error ? error.message : 'Unknown error';
128
- this.ui.log.error(message);
129
- process.exitCode = 1;
130
- }
131
- }
132
- readStdin() {
133
- return new Promise((resolve, reject) => {
134
- const chunks = [];
135
- const stream = (0, node_fs_1.createReadStream)('/dev/stdin');
136
- stream.on('data', (chunk) => chunks.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk));
137
- stream.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')));
138
- stream.on('error', reject);
139
- });
140
- }
141
- buildSpinnerText(options) {
142
- if (options.staged)
143
- return 'Cleaning staged files...';
144
- if (options.changed)
145
- return 'Cleaning changed files...';
146
- return options.dryRun ? 'Analysing...' : 'Cleaning...';
147
- }
148
- noFilesMessage(options) {
149
- if (options.staged)
150
- return 'No staged files to clean.';
151
- if (options.changed)
152
- return 'No changed files to clean.';
153
- return 'No files to clean.';
154
- }
155
- async collectTargets(allFiles, inputs, options) {
156
- const supported = allFiles.filter((f) => SUPPORTED_EXTENSIONS.test(f));
157
- if (inputs.length > 0) {
158
- return supported.filter((f) => inputs.some((i) => f === i || f.startsWith(`${i.replace(/\/$/, '')}/`)));
159
- }
160
- if (options.staged) {
161
- const staged = new Set(await this.git.getStagedFiles());
162
- return supported.filter((f) => staged.has(f));
163
- }
164
- if (options.changed) {
165
- const changed = new Set(await this.git.getChangedFiles());
166
- return supported.filter((f) => changed.has(f));
167
- }
168
- return supported;
169
- }
170
- };
171
- exports.CleanCommand = CleanCommand;
172
- __decorate([
173
- (0, nest_commander_1.Option)({ flags: '-d, --dry-run', description: 'Show what will be removed' }),
174
- __metadata("design:type", Function),
175
- __metadata("design:paramtypes", []),
176
- __metadata("design:returntype", Boolean)
177
- ], CleanCommand.prototype, "parseDryRun", null);
178
- __decorate([
179
- (0, nest_commander_1.Option)({
180
- flags: '-c, --changed',
181
- description: 'Clean only git-changed files (staged + unstaged + untracked)',
182
- }),
183
- __metadata("design:type", Function),
184
- __metadata("design:paramtypes", []),
185
- __metadata("design:returntype", Boolean)
186
- ], CleanCommand.prototype, "parseChanged", null);
187
- __decorate([
188
- (0, nest_commander_1.Option)({
189
- flags: '-s, --staged',
190
- description: 'Clean only git-staged files',
191
- }),
192
- __metadata("design:type", Function),
193
- __metadata("design:paramtypes", []),
194
- __metadata("design:returntype", Boolean)
195
- ], CleanCommand.prototype, "parseStaged", null);
196
- __decorate([
197
- (0, nest_commander_1.Option)({
198
- flags: '-b, --backup',
199
- description: 'Save originals to .kodu/backup/ before modifying',
200
- }),
201
- __metadata("design:type", Function),
202
- __metadata("design:paramtypes", []),
203
- __metadata("design:returntype", Boolean)
204
- ], CleanCommand.prototype, "parseBackup", null);
205
- __decorate([
206
- (0, nest_commander_1.Option)({
207
- flags: '-n, --no-jsdoc',
208
- description: 'Remove JSDoc comments (overrides config keepJSDoc)',
209
- }),
210
- __metadata("design:type", Function),
211
- __metadata("design:paramtypes", []),
212
- __metadata("design:returntype", Boolean)
213
- ], CleanCommand.prototype, "parseNoJsdoc", null);
214
- __decorate([
215
- (0, nest_commander_1.Option)({
216
- flags: '-v, --verbose',
217
- description: 'Show all removed comments in dry-run (not just first 3)',
218
- }),
219
- __metadata("design:type", Function),
220
- __metadata("design:paramtypes", []),
221
- __metadata("design:returntype", Boolean)
222
- ], CleanCommand.prototype, "parseVerbose", null);
223
- __decorate([
224
- (0, nest_commander_1.Option)({
225
- flags: '--stdin',
226
- description: 'Read from stdin, write cleaned result to stdout',
227
- }),
228
- __metadata("design:type", Function),
229
- __metadata("design:paramtypes", []),
230
- __metadata("design:returntype", Boolean)
231
- ], CleanCommand.prototype, "parseStdin", null);
232
- exports.CleanCommand = CleanCommand = __decorate([
233
- (0, nest_commander_1.Command)({ name: 'clean', description: 'Remove comments from code' }),
234
- __metadata("design:paramtypes", [ui_service_1.UiService,
235
- fs_service_1.FsService,
236
- cleaner_service_1.CleanerService,
237
- config_service_1.ConfigService,
238
- git_service_1.GitService])
239
- ], CleanCommand);
240
- //# sourceMappingURL=clean.command.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clean.command.js","sourceRoot":"","sources":["../../../../src/commands/clean/clean.command.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare class CleanModule {
2
- }
@@ -1,26 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.CleanModule = void 0;
10
- const common_1 = require("@nestjs/common");
11
- const config_module_1 = require("../../core/config/config.module");
12
- const fs_module_1 = require("../../core/file-system/fs.module");
13
- const ui_module_1 = require("../../core/ui/ui.module");
14
- const cleaner_service_1 = require("../../shared/cleaner/cleaner.service");
15
- const git_module_1 = require("../../shared/git/git.module");
16
- const clean_command_1 = require("./clean.command");
17
- let CleanModule = class CleanModule {
18
- };
19
- exports.CleanModule = CleanModule;
20
- exports.CleanModule = CleanModule = __decorate([
21
- (0, common_1.Module)({
22
- imports: [fs_module_1.FsModule, ui_module_1.UiModule, config_module_1.ConfigModule, git_module_1.GitModule],
23
- providers: [clean_command_1.CleanCommand, cleaner_service_1.CleanerService],
24
- })
25
- ], CleanModule);
26
- //# sourceMappingURL=clean.module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clean.module.js","sourceRoot":"","sources":["../../../../src/commands/clean/clean.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,mEAA+D;AAC/D,gEAA4D;AAC5D,uDAAmD;AACnD,0EAAsE;AACtE,4DAAwD;AACxD,mDAA+C;AAMxC,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,kCAAW;sBAAX,WAAW;IAJvB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,oBAAQ,EAAE,oBAAQ,EAAE,4BAAY,EAAE,sBAAS,CAAC;QACtD,SAAS,EAAE,CAAC,4BAAY,EAAE,gCAAc,CAAC;KAC1C,CAAC;GACW,WAAW,CAAG"}
@@ -1,10 +0,0 @@
1
- import { CommandRunner } from 'nest-commander';
2
- import { UiService } from '../../core/ui/ui.service';
3
- export declare class InitCommand extends CommandRunner {
4
- private readonly ui;
5
- constructor(ui: UiService);
6
- run(): Promise<void>;
7
- private ensureKoduJson;
8
- private updateGitignore;
9
- private exists;
10
- }