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,56 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.configSchema = void 0;
4
- const zod_1 = require("zod");
5
- const cleanerSchema = zod_1.z.object({
6
- whitelist: zod_1.z.array(zod_1.z.string()).default(['//!']),
7
- keepJSDoc: zod_1.z.boolean().default(true),
8
- useGitignore: zod_1.z.boolean().default(true),
9
- ignore: zod_1.z.array(zod_1.z.string()).default([]),
10
- });
11
- const packerSchema = zod_1.z.object({
12
- ignore: zod_1.z
13
- .array(zod_1.z.string())
14
- .default([
15
- 'package-lock.json',
16
- 'yarn.lock',
17
- 'pnpm-lock.yaml',
18
- '.git',
19
- '.kodu',
20
- 'node_modules',
21
- 'dist',
22
- 'coverage',
23
- ]),
24
- useGitignore: zod_1.z.boolean().default(true),
25
- contentBasedBinaryDetection: zod_1.z.boolean().default(false),
26
- });
27
- const promptsSchema = zod_1.z
28
- .object({
29
- pack: zod_1.z.string().optional(),
30
- })
31
- .optional();
32
- exports.configSchema = zod_1.z.object({
33
- $schema: zod_1.z.string().optional(),
34
- cleaner: cleanerSchema.default({
35
- whitelist: ['//!'],
36
- keepJSDoc: true,
37
- useGitignore: true,
38
- ignore: [],
39
- }),
40
- packer: packerSchema.default({
41
- ignore: [
42
- 'package-lock.json',
43
- 'yarn.lock',
44
- 'pnpm-lock.yaml',
45
- '.git',
46
- '.kodu',
47
- 'node_modules',
48
- 'dist',
49
- 'coverage',
50
- ],
51
- useGitignore: true,
52
- contentBasedBinaryDetection: false,
53
- }),
54
- prompts: promptsSchema,
55
- });
56
- //# sourceMappingURL=config.schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.schema.js","sourceRoot":"","sources":["../../../../src/core/config/config.schema.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,MAAM,aAAa,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7B,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC;IAC/C,SAAS,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACpC,YAAY,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACvC,MAAM,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACxC,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5B,MAAM,EAAE,OAAC;SACN,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC;SACjB,OAAO,CAAC;QACP,mBAAmB;QACnB,WAAW;QACX,gBAAgB;QAChB,MAAM;QACN,OAAO;QACP,cAAc;QACd,MAAM;QACN,UAAU;KACX,CAAC;IACJ,YAAY,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACvC,2BAA2B,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CACxD,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,OAAC;KACpB,MAAM,CAAC;IACN,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC;KACD,QAAQ,EAAE,CAAC;AAED,QAAA,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC;IACnC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC;QAC7B,SAAS,EAAE,CAAC,KAAK,CAAC;QAClB,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,IAAI;QAClB,MAAM,EAAE,EAAE;KACX,CAAC;IACF,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC;QAC3B,MAAM,EAAE;YACN,mBAAmB;YACnB,WAAW;YACX,gBAAgB;YAChB,MAAM;YACN,OAAO;YACP,cAAc;YACd,MAAM;YACN,UAAU;SACX;QACD,YAAY,EAAE,IAAI;QAClB,2BAA2B,EAAE,KAAK;KACnC,CAAC;IACF,OAAO,EAAE,aAAa;CACvB,CAAC,CAAC"}
@@ -1,7 +0,0 @@
1
- import { type KoduConfig } from './config.schema';
2
- export declare class ConfigService {
3
- private config?;
4
- getConfig(): KoduConfig;
5
- private loadConfig;
6
- private terminate;
7
- }
@@ -1,49 +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 __importDefault = (this && this.__importDefault) || function (mod) {
9
- return (mod && mod.__esModule) ? mod : { "default": mod };
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.ConfigService = void 0;
13
- const common_1 = require("@nestjs/common");
14
- const lilconfig_1 = require("lilconfig");
15
- const picocolors_1 = __importDefault(require("picocolors"));
16
- const config_schema_1 = require("./config.schema");
17
- let ConfigService = class ConfigService {
18
- config;
19
- getConfig() {
20
- if (!this.config) {
21
- this.config = this.loadConfig();
22
- }
23
- return this.config;
24
- }
25
- loadConfig() {
26
- const explorer = (0, lilconfig_1.lilconfigSync)('kodu', { searchPlaces: ['kodu.json'] });
27
- const result = explorer.search(process.cwd());
28
- const rawConfig = result && !result.isEmpty && result.config ? result.config : {};
29
- const parsed = config_schema_1.configSchema.safeParse(rawConfig);
30
- if (!parsed.success) {
31
- console.error(picocolors_1.default.red('kodu.json is invalid:'));
32
- parsed.error.issues.forEach((issue) => {
33
- const path = issue.path.join('.') || '(root)';
34
- console.error(picocolors_1.default.red(`- ${path}: ${issue.message}`));
35
- });
36
- this.terminate('Fix the config and run the command again.');
37
- }
38
- return parsed.data;
39
- }
40
- terminate(message) {
41
- console.error(picocolors_1.default.red(message));
42
- process.exit(1);
43
- }
44
- };
45
- exports.ConfigService = ConfigService;
46
- exports.ConfigService = ConfigService = __decorate([
47
- (0, common_1.Injectable)()
48
- ], ConfigService);
49
- //# sourceMappingURL=config.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.service.js","sourceRoot":"","sources":["../../../../src/core/config/config.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,yCAA0C;AAC1C,4DAA4B;AAC5B,mDAAgE;AAGzD,IAAM,aAAa,GAAnB,MAAM,aAAa;IAChB,MAAM,CAAc;IAE5B,SAAS;QACP,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEO,UAAU;QAChB,MAAM,QAAQ,GAAG,IAAA,yBAAa,EAAC,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAE9C,MAAM,SAAS,GACb,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAElE,MAAM,MAAM,GAAG,4BAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAEjD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,oBAAE,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACpC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC;gBAC9C,OAAO,CAAC,KAAK,CAAC,oBAAE,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,SAAS,CAAC,2CAA2C,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAEO,SAAS,CAAC,OAAe;QAC/B,OAAO,CAAC,KAAK,CAAC,oBAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;CACF,CAAA;AApCY,sCAAa;wBAAb,aAAa;IADzB,IAAA,mBAAU,GAAE;GACA,aAAa,CAoCzB"}
@@ -1,10 +0,0 @@
1
- export declare class PromptService {
2
- private readonly cache;
3
- load(source: string): Promise<string>;
4
- loadFromPromptsDir(name: string): Promise<string>;
5
- private readSource;
6
- private readAndCache;
7
- private looksLikeInline;
8
- private buildCandidates;
9
- private exists;
10
- }
@@ -1,80 +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 __importDefault = (this && this.__importDefault) || function (mod) {
9
- return (mod && mod.__esModule) ? mod : { "default": mod };
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.PromptService = void 0;
13
- const node_fs_1 = require("node:fs");
14
- const node_path_1 = __importDefault(require("node:path"));
15
- const common_1 = require("@nestjs/common");
16
- let PromptService = class PromptService {
17
- cache = new Map();
18
- async load(source) {
19
- return this.readSource(source);
20
- }
21
- async loadFromPromptsDir(name) {
22
- const candidates = this.buildCandidates(name);
23
- for (const candidate of candidates) {
24
- if (await this.exists(candidate)) {
25
- return this.readAndCache(candidate);
26
- }
27
- }
28
- throw new Error(`Template ${name} not found. Expected files: ${candidates
29
- .map((c) => node_path_1.default.relative(process.cwd(), c))
30
- .join(', ')}`);
31
- }
32
- async readSource(source) {
33
- const resolved = node_path_1.default.isAbsolute(source)
34
- ? source
35
- : node_path_1.default.resolve(process.cwd(), source);
36
- if (await this.exists(resolved)) {
37
- return this.readAndCache(resolved);
38
- }
39
- if (this.looksLikeInline(source)) {
40
- return source;
41
- }
42
- throw new Error(`Prompt file not found: ${node_path_1.default.relative(process.cwd(), resolved)}`);
43
- }
44
- async readAndCache(target) {
45
- const cached = this.cache.get(target);
46
- if (cached) {
47
- return cached;
48
- }
49
- const content = await node_fs_1.promises.readFile(target, 'utf8');
50
- this.cache.set(target, content);
51
- return content;
52
- }
53
- looksLikeInline(value) {
54
- if (value.includes('\n')) {
55
- return true;
56
- }
57
- const hasPathSegments = value.includes('/') || value.includes('\\');
58
- const hasExtension = node_path_1.default.extname(value) !== '';
59
- return value.trim().length > 0 && !hasPathSegments && !hasExtension;
60
- }
61
- buildCandidates(name) {
62
- const names = node_path_1.default.extname(name) ? [name] : [`${name}.md`, `${name}.txt`];
63
- const root = node_path_1.default.join(process.cwd(), '.kodu', 'prompts');
64
- return names.map((variant) => node_path_1.default.join(root, variant));
65
- }
66
- async exists(target) {
67
- try {
68
- await node_fs_1.promises.access(target);
69
- return true;
70
- }
71
- catch {
72
- return false;
73
- }
74
- }
75
- };
76
- exports.PromptService = PromptService;
77
- exports.PromptService = PromptService = __decorate([
78
- (0, common_1.Injectable)()
79
- ], PromptService);
80
- //# sourceMappingURL=prompt.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompt.service.js","sourceRoot":"","sources":["../../../../src/core/config/prompt.service.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare class FsModule {
2
- }
@@ -1,21 +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.FsModule = void 0;
10
- const common_1 = require("@nestjs/common");
11
- const fs_service_1 = require("./fs.service");
12
- let FsModule = class FsModule {
13
- };
14
- exports.FsModule = FsModule;
15
- exports.FsModule = FsModule = __decorate([
16
- (0, common_1.Module)({
17
- providers: [fs_service_1.FsService],
18
- exports: [fs_service_1.FsService],
19
- })
20
- ], FsModule);
21
- //# sourceMappingURL=fs.module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs.module.js","sourceRoot":"","sources":["../../../../src/core/file-system/fs.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,6CAAyC;AAMlC,IAAM,QAAQ,GAAd,MAAM,QAAQ;CAAG,CAAA;AAAX,4BAAQ;mBAAR,QAAQ;IAJpB,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,sBAAS,CAAC;QACtB,OAAO,EAAE,CAAC,sBAAS,CAAC;KACrB,CAAC;GACW,QAAQ,CAAG"}
@@ -1,27 +0,0 @@
1
- import { ConfigService } from '../config/config.service';
2
- import { UiService } from '../ui/ui.service';
3
- type FindProjectFilesOptions = {
4
- ignore?: string[];
5
- useGitignore?: boolean;
6
- excludeBinary?: boolean;
7
- contentBasedBinaryDetection?: boolean;
8
- maxFileSizeBytes?: number;
9
- rootPaths?: string[];
10
- };
11
- export declare class FsService {
12
- private readonly configService;
13
- private readonly ui;
14
- constructor(configService: ConfigService, ui: UiService);
15
- findProjectFiles(options?: FindProjectFilesOptions): Promise<string[]>;
16
- readFileRelative(relativePath: string): Promise<string>;
17
- private toPosixPath;
18
- private normalizeIgnorePatterns;
19
- private buildGlobIgnorePatterns;
20
- private readIgnoreFile;
21
- private parseIgnoreContent;
22
- private isBinaryExtension;
23
- private isKnownTextFile;
24
- private shouldExcludeBinary;
25
- private hasNullByte;
26
- }
27
- export {};
@@ -1,203 +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
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.FsService = void 0;
16
- const node_fs_1 = require("node:fs");
17
- const node_path_1 = __importDefault(require("node:path"));
18
- const common_1 = require("@nestjs/common");
19
- const ignore_1 = __importDefault(require("ignore"));
20
- const tinyglobby_1 = require("tinyglobby");
21
- const constants_1 = require("../../shared/constants");
22
- const config_service_1 = require("../config/config.service");
23
- const ui_service_1 = require("../ui/ui.service");
24
- const BINARY_PROBE_SIZE = 8192;
25
- const GLOB_IGNORE = ['.git/**'];
26
- let FsService = class FsService {
27
- configService;
28
- ui;
29
- constructor(configService, ui) {
30
- this.configService = configService;
31
- this.ui = ui;
32
- }
33
- async findProjectFiles(options = {}) {
34
- const { packer } = this.configService.getConfig();
35
- const shouldUseGitignore = options.useGitignore ?? packer.useGitignore;
36
- const gitignorePatterns = shouldUseGitignore
37
- ? await this.readIgnoreFile('.gitignore')
38
- : [];
39
- const koduignorePatterns = await this.readIgnoreFile('.koduignore');
40
- const baseIgnore = options.ignore ?? packer.ignore ?? [];
41
- const normalizedBase = this.normalizeIgnorePatterns(baseIgnore);
42
- const combinedIgnore = [
43
- ...normalizedBase,
44
- ...gitignorePatterns,
45
- ...koduignorePatterns,
46
- ].map((pattern) => pattern.replace(/\\/g, '/'));
47
- const ig = (0, ignore_1.default)();
48
- if (combinedIgnore.length > 0) {
49
- ig.add(combinedIgnore);
50
- }
51
- const globIgnore = this.buildGlobIgnorePatterns(combinedIgnore);
52
- const patterns = options.rootPaths?.length
53
- ? options.rootPaths.map((p) => `${p}/**`)
54
- : ['**/*'];
55
- const entries = await (0, tinyglobby_1.glob)(patterns, {
56
- onlyFiles: true,
57
- absolute: true,
58
- dot: true,
59
- ignore: [...GLOB_IGNORE, ...globIgnore],
60
- });
61
- const relativePaths = entries
62
- .map((entry) => node_path_1.default.relative(process.cwd(), entry))
63
- .map((relative) => this.toPosixPath(relative))
64
- .filter((relative) => relative.length > 0);
65
- const filtered = ig
66
- .filter(relativePaths)
67
- .sort((a, b) => a.localeCompare(b));
68
- const excludeBinary = options.excludeBinary ?? true;
69
- const useContentDetection = options.contentBasedBinaryDetection ??
70
- packer.contentBasedBinaryDetection ??
71
- false;
72
- const maxFileSize = options.maxFileSizeBytes ?? constants_1.MAX_FILE_SIZE_BYTES;
73
- const textFiles = [];
74
- for (const rel of filtered) {
75
- const abs = node_path_1.default.resolve(process.cwd(), rel);
76
- let stats;
77
- try {
78
- stats = await node_fs_1.promises.stat(abs);
79
- }
80
- catch {
81
- continue;
82
- }
83
- if (stats.size > maxFileSize) {
84
- this.ui.log.warn(`Skipping large file: ${rel} (>${(maxFileSize / (1024 * 1024)).toFixed(0)}MB)`);
85
- continue;
86
- }
87
- if (excludeBinary &&
88
- (await this.shouldExcludeBinary(rel, abs, useContentDetection))) {
89
- continue;
90
- }
91
- textFiles.push(rel);
92
- }
93
- return textFiles;
94
- }
95
- async readFileRelative(relativePath) {
96
- const absolute = node_path_1.default.resolve(process.cwd(), relativePath);
97
- return node_fs_1.promises.readFile(absolute, 'utf8');
98
- }
99
- toPosixPath(relativePath) {
100
- return relativePath.split(node_path_1.default.sep).join(node_path_1.default.posix.sep);
101
- }
102
- normalizeIgnorePatterns(patterns) {
103
- return patterns
104
- .map((pattern) => pattern.trim())
105
- .filter((pattern) => pattern.length > 0 && !pattern.startsWith('#'));
106
- }
107
- buildGlobIgnorePatterns(patterns) {
108
- const normalized = patterns
109
- .map((pattern) => pattern.trim())
110
- .filter((pattern) => pattern.length > 0 &&
111
- !pattern.startsWith('#') &&
112
- !pattern.startsWith('!'))
113
- .map((pattern) => pattern.replace(/\\/g, '/'));
114
- const result = new Set();
115
- for (const pattern of normalized) {
116
- const trimmed = pattern.replace(/\/+$/, '');
117
- result.add(pattern);
118
- if (trimmed.length === 0) {
119
- continue;
120
- }
121
- if (!pattern.includes('*')) {
122
- result.add(`${trimmed}/**`);
123
- result.add(`**/${trimmed}/**`);
124
- }
125
- if (!pattern.startsWith('**/')) {
126
- result.add(`**/${trimmed}`);
127
- }
128
- if (pattern.endsWith('/')) {
129
- result.add(`${trimmed}/**`);
130
- }
131
- }
132
- return [...result];
133
- }
134
- async readIgnoreFile(fileName) {
135
- const target = node_path_1.default.join(process.cwd(), fileName);
136
- try {
137
- const content = await node_fs_1.promises.readFile(target, 'utf8');
138
- return this.parseIgnoreContent(content);
139
- }
140
- catch {
141
- return [];
142
- }
143
- }
144
- parseIgnoreContent(content) {
145
- return content
146
- .split(/\r?\n/)
147
- .map((line) => line.trim())
148
- .filter((line) => line.length > 0 && !line.startsWith('#'));
149
- }
150
- isBinaryExtension(relativePath) {
151
- const ext = node_path_1.default.extname(relativePath).toLowerCase();
152
- return ext.length > 0 && constants_1.BINARY_EXTENSIONS.has(ext);
153
- }
154
- isKnownTextFile(relativePath) {
155
- const ext = node_path_1.default.extname(relativePath).toLowerCase();
156
- if (ext && constants_1.KNOWN_TEXT_EXTENSIONS.has(ext)) {
157
- return true;
158
- }
159
- const baseName = node_path_1.default.basename(relativePath).toLowerCase();
160
- return constants_1.KNOWN_TEXT_EXTENSIONS.has(baseName);
161
- }
162
- async shouldExcludeBinary(relativePath, absolutePath, detectByContent) {
163
- if (this.isKnownTextFile(relativePath)) {
164
- return false;
165
- }
166
- if (this.isBinaryExtension(relativePath)) {
167
- return true;
168
- }
169
- if (!detectByContent) {
170
- return false;
171
- }
172
- return this.hasNullByte(absolutePath);
173
- }
174
- async hasNullByte(absolutePath) {
175
- let handle;
176
- try {
177
- handle = await node_fs_1.promises.open(absolutePath, 'r');
178
- const buffer = Buffer.alloc(BINARY_PROBE_SIZE);
179
- const { bytesRead } = await handle.read(buffer, 0, buffer.length, 0);
180
- for (let i = 0; i < bytesRead; i += 1) {
181
- if (buffer[i] === 0) {
182
- return true;
183
- }
184
- }
185
- return false;
186
- }
187
- catch {
188
- return true;
189
- }
190
- finally {
191
- if (handle) {
192
- await handle.close();
193
- }
194
- }
195
- }
196
- };
197
- exports.FsService = FsService;
198
- exports.FsService = FsService = __decorate([
199
- (0, common_1.Injectable)(),
200
- __metadata("design:paramtypes", [config_service_1.ConfigService,
201
- ui_service_1.UiService])
202
- ], FsService);
203
- //# sourceMappingURL=fs.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs.service.js","sourceRoot":"","sources":["../../../../src/core/file-system/fs.service.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare class UiModule {
2
- }
@@ -1,22 +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.UiModule = void 0;
10
- const common_1 = require("@nestjs/common");
11
- const ui_service_1 = require("./ui.service");
12
- let UiModule = class UiModule {
13
- };
14
- exports.UiModule = UiModule;
15
- exports.UiModule = UiModule = __decorate([
16
- (0, common_1.Global)(),
17
- (0, common_1.Module)({
18
- providers: [ui_service_1.UiService],
19
- exports: [ui_service_1.UiService],
20
- })
21
- ], UiModule);
22
- //# sourceMappingURL=ui.module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ui.module.js","sourceRoot":"","sources":["../../../../src/core/ui/ui.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAgD;AAChD,6CAAyC;AAOlC,IAAM,QAAQ,GAAd,MAAM,QAAQ;CAAG,CAAA;AAAX,4BAAQ;mBAAR,QAAQ;IALpB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,sBAAS,CAAC;QACtB,OAAO,EAAE,CAAC,sBAAS,CAAC;KACrB,CAAC;GACW,QAAQ,CAAG"}
@@ -1,22 +0,0 @@
1
- import confirm from '@inquirer/confirm';
2
- import input from '@inquirer/input';
3
- import select from '@inquirer/select';
4
- import { type Spinner, type Options as SpinnerOptions } from 'yocto-spinner';
5
- type InputOptions = Parameters<typeof input>[0];
6
- type ConfirmOptions = Parameters<typeof confirm>[0];
7
- type SelectOptions<TValue> = Parameters<typeof select<TValue>>[0];
8
- export declare class UiService {
9
- readonly log: {
10
- success: (message: string) => void;
11
- warn: (message: string) => void;
12
- error: (message: string) => void;
13
- info: (message: string) => void;
14
- };
15
- createSpinner(options?: SpinnerOptions & {
16
- text?: string;
17
- }): Spinner;
18
- promptInput(options: InputOptions): Promise<string>;
19
- promptConfirm(options: ConfirmOptions): Promise<boolean>;
20
- promptSelect<TValue>(options: SelectOptions<TValue>): Promise<TValue>;
21
- }
22
- export {};
@@ -1,43 +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 __importDefault = (this && this.__importDefault) || function (mod) {
9
- return (mod && mod.__esModule) ? mod : { "default": mod };
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.UiService = void 0;
13
- const confirm_1 = __importDefault(require("@inquirer/confirm"));
14
- const input_1 = __importDefault(require("@inquirer/input"));
15
- const select_1 = __importDefault(require("@inquirer/select"));
16
- const common_1 = require("@nestjs/common");
17
- const picocolors_1 = __importDefault(require("picocolors"));
18
- const yocto_spinner_1 = __importDefault(require("yocto-spinner"));
19
- let UiService = class UiService {
20
- log = {
21
- success: (message) => console.log(picocolors_1.default.green(`✔ ${message}`)),
22
- warn: (message) => console.log(picocolors_1.default.yellow(`⚠ ${message}`)),
23
- error: (message) => console.log(picocolors_1.default.red(`✖ ${message}`)),
24
- info: (message) => console.log(picocolors_1.default.cyan(`ℹ ${message}`)),
25
- };
26
- createSpinner(options) {
27
- return (0, yocto_spinner_1.default)({ text: options?.text ?? '', ...options });
28
- }
29
- promptInput(options) {
30
- return (0, input_1.default)(options);
31
- }
32
- promptConfirm(options) {
33
- return (0, confirm_1.default)(options);
34
- }
35
- promptSelect(options) {
36
- return (0, select_1.default)(options);
37
- }
38
- };
39
- exports.UiService = UiService;
40
- exports.UiService = UiService = __decorate([
41
- (0, common_1.Injectable)()
42
- ], UiService);
43
- //# sourceMappingURL=ui.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ui.service.js","sourceRoot":"","sources":["../../../../src/core/ui/ui.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gEAAwC;AACxC,4DAAoC;AACpC,8DAAsC;AACtC,2CAA4C;AAC5C,4DAA4B;AAC5B,kEAGuB;AAOhB,IAAM,SAAS,GAAf,MAAM,SAAS;IACX,GAAG,GAAG;QACb,OAAO,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAE,CAAC,KAAK,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;QACnE,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAE,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;QACjE,KAAK,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAE,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;QAC/D,IAAI,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAE,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;KAChE,CAAC;IAEF,aAAa,CAAC,OAA4C;QACxD,OAAO,IAAA,uBAAY,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,WAAW,CAAC,OAAqB;QAC/B,OAAO,IAAA,eAAK,EAAC,OAAO,CAAC,CAAC;IACxB,CAAC;IAED,aAAa,CAAC,OAAuB;QACnC,OAAO,IAAA,iBAAO,EAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;IAED,YAAY,CAAS,OAA8B;QACjD,OAAO,IAAA,gBAAM,EAAS,OAAO,CAAC,CAAC;IACjC,CAAC;CACF,CAAA;AAvBY,8BAAS;oBAAT,SAAS;IADrB,IAAA,mBAAU,GAAE;GACA,SAAS,CAuBrB"}
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
package/dist/src/main.js DELETED
@@ -1,16 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- const nest_commander_1 = require("nest-commander");
8
- const package_json_1 = __importDefault(require("../package.json"));
9
- const app_module_1 = require("./app.module");
10
- async function bootstrap() {
11
- await nest_commander_1.CommandFactory.run(app_module_1.AppModule, {
12
- version: package_json_1.default.version,
13
- });
14
- }
15
- bootstrap();
16
- //# sourceMappingURL=main.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";;;;;;AAEA,mDAAgD;AAChD,mEAA0C;AAC1C,6CAAyC;AAEzC,KAAK,UAAU,SAAS;IACtB,MAAM,+BAAc,CAAC,GAAG,CAAC,sBAAS,EAAE;QAClC,OAAO,EAAE,sBAAW,CAAC,OAAO;KAC7B,CAAC,CAAC;AACL,CAAC;AACD,SAAS,EAAE,CAAC"}