kodu 1.2.0 → 2.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 (138) hide show
  1. package/AGENTS.md +36 -68
  2. package/README.md +128 -96
  3. package/dist/package.json +1 -2
  4. package/dist/src/app.module.js +0 -8
  5. package/dist/src/app.module.js.map +1 -1
  6. package/dist/src/commands/clean/clean.command.d.ts +14 -1
  7. package/dist/src/commands/clean/clean.command.js +142 -32
  8. package/dist/src/commands/clean/clean.command.js.map +1 -1
  9. package/dist/src/commands/init/init.command.d.ts +2 -9
  10. package/dist/src/commands/init/init.command.js +15 -241
  11. package/dist/src/commands/init/init.command.js.map +1 -1
  12. package/dist/src/commands/pack/pack.command.d.ts +12 -1
  13. package/dist/src/commands/pack/pack.command.js +81 -6
  14. package/dist/src/commands/pack/pack.command.js.map +1 -1
  15. package/dist/src/commands/pack/pack.module.js +2 -1
  16. package/dist/src/commands/pack/pack.module.js.map +1 -1
  17. package/dist/src/core/config/config.schema.d.ts +0 -46
  18. package/dist/src/core/config/config.schema.js +1 -51
  19. package/dist/src/core/config/config.schema.js.map +1 -1
  20. package/dist/src/core/config/config.service.js +2 -2
  21. package/dist/src/core/config/config.service.js.map +1 -1
  22. package/dist/src/core/config/prompt.service.d.ts +1 -4
  23. package/dist/src/core/config/prompt.service.js +4 -17
  24. package/dist/src/core/config/prompt.service.js.map +1 -1
  25. package/dist/src/shared/cleaner/cleaner.service.d.ts +2 -0
  26. package/dist/src/shared/cleaner/cleaner.service.js +32 -7
  27. package/dist/src/shared/cleaner/cleaner.service.js.map +1 -1
  28. package/dist/src/shared/cleaner/cleaner.types.d.ts +7 -0
  29. package/dist/src/shared/constants.d.ts +0 -4
  30. package/dist/src/shared/constants.js +1 -5
  31. package/dist/src/shared/constants.js.map +1 -1
  32. package/dist/src/shared/git/git.module.js +0 -2
  33. package/dist/src/shared/git/git.module.js.map +1 -1
  34. package/dist/src/shared/git/git.service.d.ts +1 -8
  35. package/dist/src/shared/git/git.service.js +10 -33
  36. package/dist/src/shared/git/git.service.js.map +1 -1
  37. package/dist/src/shared/tokenizer/tokenizer.module.js +0 -2
  38. package/dist/src/shared/tokenizer/tokenizer.module.js.map +1 -1
  39. package/dist/src/shared/tokenizer/tokenizer.service.d.ts +0 -6
  40. package/dist/src/shared/tokenizer/tokenizer.service.js +8 -38
  41. package/dist/src/shared/tokenizer/tokenizer.service.js.map +1 -1
  42. package/dist/tsconfig.build.tsbuildinfo +1 -1
  43. package/kodu.schema.json +0 -139
  44. package/package.json +1 -2
  45. package/src/app.module.ts +0 -8
  46. package/src/commands/clean/clean.command.ts +143 -33
  47. package/src/commands/init/init.command.ts +15 -310
  48. package/src/commands/pack/pack.command.ts +74 -4
  49. package/src/commands/pack/pack.module.ts +2 -1
  50. package/src/core/config/config.schema.ts +1 -68
  51. package/src/core/config/config.service.ts +2 -2
  52. package/src/core/config/prompt.service.ts +4 -26
  53. package/src/shared/cleaner/cleaner.service.ts +43 -12
  54. package/src/shared/cleaner/cleaner.types.ts +7 -0
  55. package/src/shared/constants.ts +0 -4
  56. package/src/shared/git/git.module.ts +0 -2
  57. package/src/shared/git/git.service.ts +9 -31
  58. package/src/shared/tokenizer/tokenizer.module.ts +0 -2
  59. package/src/shared/tokenizer/tokenizer.service.ts +9 -39
  60. package/.kodu/prompts/.keep +0 -0
  61. package/.kodu/prompts/commit.md +0 -9
  62. package/.kodu/prompts/pack.md +0 -7
  63. package/.kodu/prompts/review-bug.md +0 -6
  64. package/.kodu/prompts/review-security.md +0 -6
  65. package/.kodu/prompts/review-style.md +0 -6
  66. package/.opencode/command/openspec-apply.md +0 -24
  67. package/.opencode/command/openspec-archive.md +0 -27
  68. package/.opencode/command/openspec-proposal.md +0 -29
  69. package/.opencode/skills/kodu-ops/SKILL.md +0 -184
  70. package/dist/src/commands/commit/commit.command.d.ts +0 -18
  71. package/dist/src/commands/commit/commit.command.js +0 -149
  72. package/dist/src/commands/commit/commit.command.js.map +0 -1
  73. package/dist/src/commands/commit/commit.module.d.ts +0 -2
  74. package/dist/src/commands/commit/commit.module.js +0 -25
  75. package/dist/src/commands/commit/commit.module.js.map +0 -1
  76. package/dist/src/commands/ops/ops.command.d.ts +0 -4
  77. package/dist/src/commands/ops/ops.command.js +0 -39
  78. package/dist/src/commands/ops/ops.command.js.map +0 -1
  79. package/dist/src/commands/ops/ops.module.d.ts +0 -2
  80. package/dist/src/commands/ops/ops.module.js +0 -33
  81. package/dist/src/commands/ops/ops.module.js.map +0 -1
  82. package/dist/src/commands/ops/ops.types.d.ts +0 -13
  83. package/dist/src/commands/ops/ops.types.js +0 -12
  84. package/dist/src/commands/ops/ops.types.js.map +0 -1
  85. package/dist/src/commands/ops/ops.utils.d.ts +0 -13
  86. package/dist/src/commands/ops/ops.utils.js +0 -121
  87. package/dist/src/commands/ops/ops.utils.js.map +0 -1
  88. package/dist/src/commands/ops/subcommands/ops-env.command.d.ts +0 -24
  89. package/dist/src/commands/ops/subcommands/ops-env.command.js +0 -156
  90. package/dist/src/commands/ops/subcommands/ops-env.command.js.map +0 -1
  91. package/dist/src/commands/ops/subcommands/ops-routes.command.d.ts +0 -22
  92. package/dist/src/commands/ops/subcommands/ops-routes.command.js +0 -203
  93. package/dist/src/commands/ops/subcommands/ops-routes.command.js.map +0 -1
  94. package/dist/src/commands/ops/subcommands/ops-service.command.d.ts +0 -22
  95. package/dist/src/commands/ops/subcommands/ops-service.command.js +0 -169
  96. package/dist/src/commands/ops/subcommands/ops-service.command.js.map +0 -1
  97. package/dist/src/commands/ops/subcommands/ops-sysinfo.command.d.ts +0 -14
  98. package/dist/src/commands/ops/subcommands/ops-sysinfo.command.js +0 -75
  99. package/dist/src/commands/ops/subcommands/ops-sysinfo.command.js.map +0 -1
  100. package/dist/src/commands/review/review.command.d.ts +0 -26
  101. package/dist/src/commands/review/review.command.js +0 -205
  102. package/dist/src/commands/review/review.command.js.map +0 -1
  103. package/dist/src/commands/review/review.module.d.ts +0 -2
  104. package/dist/src/commands/review/review.module.js +0 -26
  105. package/dist/src/commands/review/review.module.js.map +0 -1
  106. package/dist/src/core/config/default-prompts.d.ts +0 -9
  107. package/dist/src/core/config/default-prompts.js +0 -49
  108. package/dist/src/core/config/default-prompts.js.map +0 -1
  109. package/dist/src/shared/ai/ai.module.d.ts +0 -2
  110. package/dist/src/shared/ai/ai.module.js +0 -23
  111. package/dist/src/shared/ai/ai.module.js.map +0 -1
  112. package/dist/src/shared/ai/ai.service.d.ts +0 -22
  113. package/dist/src/shared/ai/ai.service.js +0 -164
  114. package/dist/src/shared/ai/ai.service.js.map +0 -1
  115. package/dist/src/shared/ssh/ssh.module.d.ts +0 -2
  116. package/dist/src/shared/ssh/ssh.module.js +0 -21
  117. package/dist/src/shared/ssh/ssh.module.js.map +0 -1
  118. package/dist/src/shared/ssh/ssh.service.d.ts +0 -11
  119. package/dist/src/shared/ssh/ssh.service.js +0 -53
  120. package/dist/src/shared/ssh/ssh.service.js.map +0 -1
  121. package/dist/tsconfig.tsbuildinfo +0 -1
  122. package/src/commands/commit/commit.command.ts +0 -139
  123. package/src/commands/commit/commit.module.ts +0 -12
  124. package/src/commands/ops/ops.command.ts +0 -30
  125. package/src/commands/ops/ops.module.ts +0 -20
  126. package/src/commands/ops/ops.types.ts +0 -24
  127. package/src/commands/ops/ops.utils.ts +0 -160
  128. package/src/commands/ops/subcommands/ops-env.command.ts +0 -165
  129. package/src/commands/ops/subcommands/ops-routes.command.ts +0 -221
  130. package/src/commands/ops/subcommands/ops-service.command.ts +0 -190
  131. package/src/commands/ops/subcommands/ops-sysinfo.command.ts +0 -77
  132. package/src/commands/review/review.command.ts +0 -199
  133. package/src/commands/review/review.module.ts +0 -13
  134. package/src/core/config/default-prompts.ts +0 -53
  135. package/src/shared/ai/ai.module.ts +0 -10
  136. package/src/shared/ai/ai.service.ts +0 -216
  137. package/src/shared/ssh/ssh.module.ts +0 -8
  138. package/src/shared/ssh/ssh.service.ts +0 -61
@@ -10,12 +10,14 @@ var __metadata = (this && this.__metadata) || function (k, v) {
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.CleanCommand = void 0;
13
+ const node_fs_1 = require("node:fs");
13
14
  const nest_commander_1 = require("nest-commander");
14
15
  const config_service_1 = require("../../core/config/config.service");
15
16
  const fs_service_1 = require("../../core/file-system/fs.service");
16
17
  const ui_service_1 = require("../../core/ui/ui.service");
17
18
  const cleaner_service_1 = require("../../shared/cleaner/cleaner.service");
18
19
  const git_service_1 = require("../../shared/git/git.service");
20
+ const SUPPORTED_EXTENSIONS = /\.(ts|tsx|js|jsx|mjs|cjs|html|htm)$/i;
19
21
  let CleanCommand = class CleanCommand extends nest_commander_1.CommandRunner {
20
22
  ui;
21
23
  fsService;
@@ -36,7 +38,26 @@ let CleanCommand = class CleanCommand extends nest_commander_1.CommandRunner {
36
38
  parseChanged() {
37
39
  return true;
38
40
  }
39
- async run(_inputs, options = {}) {
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
+ }
40
61
  const spinner = this.ui
41
62
  .createSpinner({ text: this.buildSpinnerText(options) })
42
63
  .start();
@@ -50,32 +71,44 @@ let CleanCommand = class CleanCommand extends nest_commander_1.CommandRunner {
50
71
  useGitignore: cleanerConfig.useGitignore,
51
72
  ignore: ignorePatterns,
52
73
  });
53
- const targets = await this.collectTargets(allFiles, options);
74
+ const targets = await this.collectTargets(allFiles, inputs, options);
54
75
  if (targets.length === 0) {
55
- const noFilesMessage = options.changed
56
- ? 'No changed files to clean.'
57
- : 'No files to clean.';
58
- spinner.stop(noFilesMessage);
59
- this.ui.log.warn(noFilesMessage);
76
+ const msg = this.noFilesMessage(options);
77
+ spinner.stop(msg);
78
+ this.ui.log.warn(msg);
60
79
  return;
61
80
  }
62
81
  const summary = await this.cleaner.cleanFiles(targets, {
63
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
+ },
64
88
  });
65
89
  spinner.success(options.dryRun ? 'Analysis complete' : 'Cleaning complete');
90
+ const bytesSaved = summary.bytesBefore - summary.bytesAfter;
91
+ const tokensSaved = Math.round(bytesSaved / 4);
66
92
  if (options.dryRun) {
67
- this.ui.log.info(`Files to be affected: ${summary.filesChanged}, comments: ${summary.commentsRemoved}`);
68
- summary.reports
69
- .filter((report) => report.removed > 0)
70
- .forEach((report) => {
71
- const previews = report.previews
72
- .map((item) => `"${item}"`)
73
- .join(', ');
74
- this.ui.log.info(`- ${report.file} (${report.removed}): ${previews}`);
75
- });
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
+ }
76
105
  return;
77
106
  }
78
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
+ }
79
112
  }
80
113
  catch (error) {
81
114
  spinner.error('Error during cleaning');
@@ -84,28 +117,60 @@ let CleanCommand = class CleanCommand extends nest_commander_1.CommandRunner {
84
117
  process.exitCode = 1;
85
118
  }
86
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
+ }
87
141
  buildSpinnerText(options) {
88
- const action = options.dryRun ? 'Analysis' : 'Cleaning';
89
- const target = options.changed ? ' changed files' : ' comments';
90
- return `${action}${target}...`;
142
+ if (options.staged)
143
+ return 'Cleaning staged files...';
144
+ if (options.changed)
145
+ return 'Cleaning changed files...';
146
+ return options.dryRun ? 'Analysing...' : 'Cleaning...';
91
147
  }
92
- async collectTargets(allFiles, options) {
93
- const matcher = /\.(ts|tsx|js|jsx|html)$/i;
94
- const filtered = allFiles.filter((file) => matcher.test(file));
95
- if (!options.changed) {
96
- return filtered;
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));
97
163
  }
98
- const changedFiles = await this.git.getChangedFiles();
99
- const changedSet = new Set(changedFiles);
100
- return filtered.filter((file) => changedSet.has(file));
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;
101
169
  }
102
170
  };
103
171
  exports.CleanCommand = CleanCommand;
104
172
  __decorate([
105
- (0, nest_commander_1.Option)({
106
- flags: '-d, --dry-run',
107
- description: 'Show what will be removed',
108
- }),
173
+ (0, nest_commander_1.Option)({ flags: '-d, --dry-run', description: 'Show what will be removed' }),
109
174
  __metadata("design:type", Function),
110
175
  __metadata("design:paramtypes", []),
111
176
  __metadata("design:returntype", Boolean)
@@ -113,12 +178,57 @@ __decorate([
113
178
  __decorate([
114
179
  (0, nest_commander_1.Option)({
115
180
  flags: '-c, --changed',
116
- description: 'Clean only changed files',
181
+ description: 'Clean only git-changed files (staged + unstaged + untracked)',
117
182
  }),
118
183
  __metadata("design:type", Function),
119
184
  __metadata("design:paramtypes", []),
120
185
  __metadata("design:returntype", Boolean)
121
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);
122
232
  exports.CleanCommand = CleanCommand = __decorate([
123
233
  (0, nest_commander_1.Command)({ name: 'clean', description: 'Remove comments from code' }),
124
234
  __metadata("design:paramtypes", [ui_service_1.UiService,
@@ -1 +1 @@
1
- {"version":3,"file":"clean.command.js","sourceRoot":"","sources":["../../../../src/commands/clean/clean.command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clean.command.js","sourceRoot":"","sources":["../../../../src/commands/clean/clean.command.ts"],"names":[],"mappings":"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"}
@@ -4,13 +4,6 @@ export declare class InitCommand extends CommandRunner {
4
4
  private readonly ui;
5
5
  constructor(ui: UiService);
6
6
  run(): Promise<void>;
7
- private buildModelQuestion;
8
- private askIgnoreList;
9
- private mergeWhitelist;
10
- private writeConfig;
11
- private ensurePromptFiles;
12
- private buildPromptPaths;
13
- private writePromptIfMissing;
14
- private ensureGitignore;
15
- private fileExists;
7
+ private updateGitignore;
8
+ private exists;
16
9
  }
@@ -16,13 +16,8 @@ exports.InitCommand = void 0;
16
16
  const node_fs_1 = require("node:fs");
17
17
  const node_path_1 = __importDefault(require("node:path"));
18
18
  const nest_commander_1 = require("nest-commander");
19
- const default_prompts_1 = require("../../core/config/default-prompts");
20
19
  const ui_service_1 = require("../../core/ui/ui.service");
21
- const constants_1 = require("../../shared/constants");
22
- const buildDefaultCommandSettings = () => ({
23
- commit: { modelSettings: { maxOutputTokens: constants_1.DEFAULT_COMMIT_TOKENS } },
24
- review: { modelSettings: { maxOutputTokens: constants_1.DEFAULT_REVIEW_TOKENS } },
25
- });
20
+ const GITIGNORE_ENTRY = '.kodu/context.txt';
26
21
  let InitCommand = class InitCommand extends nest_commander_1.CommandRunner {
27
22
  ui;
28
23
  constructor(ui) {
@@ -30,250 +25,29 @@ let InitCommand = class InitCommand extends nest_commander_1.CommandRunner {
30
25
  this.ui = ui;
31
26
  }
32
27
  async run() {
33
- const configPath = node_path_1.default.join(process.cwd(), 'kodu.json');
34
- const defaultLlmConfig = {
35
- model: `openai/${constants_1.DEFAULT_LLM_MODEL}`,
36
- apiKeyEnv: 'OPENAI_API_KEY',
37
- };
38
- const defaultConfig = {
39
- $schema: 'https://raw.githubusercontent.com/uxname/kodu/refs/heads/master/kodu.schema.json',
40
- llm: defaultLlmConfig,
41
- ops: {
42
- servers: {
43
- dev: {
44
- host: 'example.com',
45
- port: 22,
46
- user: 'ubuntu',
47
- sshKeyPath: '~/.ssh/id_rsa',
48
- description: 'Example AgentOps server',
49
- paths: {
50
- apps: '/var/agent-apps',
51
- caddy: '/var/agent-apps/caddy',
52
- },
53
- },
54
- },
55
- },
56
- cleaner: {
57
- whitelist: ['//!'],
58
- keepJSDoc: true,
59
- useGitignore: true,
60
- ignore: [],
61
- },
62
- packer: {
63
- ignore: [
64
- 'package-lock.json',
65
- 'yarn.lock',
66
- 'pnpm-lock.yaml',
67
- '.git',
68
- '.kodu',
69
- 'node_modules',
70
- 'dist',
71
- 'coverage',
72
- ],
73
- useGitignore: true,
74
- contentBasedBinaryDetection: false,
75
- },
76
- };
77
- const useAi = await this.ui.promptConfirm({
78
- message: 'Will you use AI functions?',
79
- default: true,
80
- });
81
- let llmConfig;
82
- if (useAi) {
83
- const useCustomModel = await this.ui.promptConfirm({
84
- message: 'Use your own model?',
85
- default: false,
86
- });
87
- let model;
88
- if (useCustomModel) {
89
- model = await this.ui.promptInput({
90
- message: 'Enter model in format provider/model-name (e.g., openai/gpt-4o):',
91
- default: defaultLlmConfig.model,
92
- validate: (input) => {
93
- if (!input.includes('/')) {
94
- return 'Model must be in format provider/model-name';
95
- }
96
- return true;
97
- },
98
- });
99
- }
100
- else {
101
- model = await this.ui.promptSelect(this.buildModelQuestion(defaultLlmConfig.model));
102
- }
103
- llmConfig = {
104
- model,
105
- apiKeyEnv: defaultLlmConfig.apiKeyEnv,
106
- commands: buildDefaultCommandSettings(),
107
- };
108
- }
109
- const extendIgnore = await this.ui.promptConfirm({
110
- message: 'Modify standard ignore list?',
111
- default: false,
112
- });
113
- const ignoreList = extendIgnore
114
- ? await this.askIgnoreList(defaultConfig.packer.ignore)
115
- : defaultConfig.packer.ignore;
116
- const additionalWhitelist = await this.ui.promptInput({
117
- message: 'Additional whitelist prefixes (comma-separated, empty - keep default):',
118
- default: '',
119
- });
120
- const whitelist = this.mergeWhitelist(defaultConfig.cleaner.whitelist, additionalWhitelist);
121
- const promptPaths = this.buildPromptPaths();
122
- const configToSave = {
123
- $schema: defaultConfig.$schema,
124
- ...(llmConfig && { llm: llmConfig }),
125
- cleaner: {
126
- whitelist,
127
- keepJSDoc: defaultConfig.cleaner.keepJSDoc,
128
- useGitignore: defaultConfig.cleaner.useGitignore,
129
- ignore: defaultConfig.cleaner.ignore,
130
- },
131
- packer: {
132
- ignore: ignoreList,
133
- useGitignore: defaultConfig.packer.useGitignore,
134
- contentBasedBinaryDetection: defaultConfig.packer.contentBasedBinaryDetection,
135
- },
136
- ops: defaultConfig.ops,
137
- prompts: {
138
- review: {
139
- bug: promptPaths.review.bug,
140
- style: promptPaths.review.style,
141
- security: promptPaths.review.security,
142
- },
143
- commit: promptPaths.commit,
144
- pack: promptPaths.pack,
145
- },
146
- };
147
- await this.writeConfig(configPath, configToSave);
148
- await this.ensurePromptFiles(promptPaths);
149
- await this.ensureGitignore();
150
- this.ui.log.success('Kodu configuration created.');
151
- if (useAi) {
152
- this.ui.log.info('🎉 Kodu initialized! Run `kodu pack` to continue.');
153
- }
154
- else {
155
- this.ui.log.info('🎉 Kodu initialized! Available commands: pack, clean.');
156
- this.ui.log.info('To use AI functions (review, commit) add llm section to kodu.json.');
157
- }
158
- }
159
- buildModelQuestion(defaultModel) {
160
- return {
161
- message: 'Select AI model',
162
- choices: [
163
- {
164
- name: 'OpenAI GPT-4o (recommended)',
165
- value: `openai/${constants_1.DEFAULT_LLM_MODEL}`,
166
- },
167
- { name: 'OpenAI GPT-4o Mini', value: 'openai/gpt-4o-mini' },
168
- { name: 'OpenAI GPT-4o', value: 'openai/gpt-4o' },
169
- {
170
- name: 'Anthropic Claude 3.5 Sonnet',
171
- value: 'anthropic/claude-3-5-sonnet-20241022',
172
- },
173
- { name: 'Google Gemini 2.5 Flash', value: 'google/gemini-2.5-flash' },
174
- ],
175
- default: defaultModel,
176
- };
177
- }
178
- async askIgnoreList(defaultIgnore) {
179
- const answer = await this.ui.promptInput({
180
- message: 'Specify ignore patterns (comma-separated)',
181
- default: defaultIgnore.join(', '),
182
- });
183
- return answer
184
- .split(',')
185
- .map((item) => item.trim())
186
- .filter((item) => item.length > 0);
187
- }
188
- mergeWhitelist(defaultWhitelist, extra) {
189
- if (!extra.trim()) {
190
- return defaultWhitelist;
191
- }
192
- const additions = extra
193
- .split(',')
194
- .map((item) => item.trim())
195
- .filter((item) => item.length > 0);
196
- return Array.from(new Set([...defaultWhitelist, ...additions]));
197
- }
198
- async writeConfig(configPath, config) {
199
- if (await this.fileExists(configPath)) {
200
- const overwrite = await this.ui.promptConfirm({
201
- message: 'kodu.json already exists. Overwrite?',
202
- default: false,
203
- });
204
- if (!overwrite) {
205
- this.ui.log.warn('Initialization cancelled: kodu.json file already exists.');
206
- return;
207
- }
208
- }
209
- await node_fs_1.promises.writeFile(configPath, `${JSON.stringify(config, null, 2)}\n`, 'utf8');
210
- this.ui.log.success(`Saved ${configPath}`);
211
- }
212
- async ensurePromptFiles(paths) {
213
- const promptDir = node_path_1.default.join(process.cwd(), '.kodu', 'prompts');
214
- await node_fs_1.promises.mkdir(promptDir, { recursive: true });
215
- const keepFile = node_path_1.default.join(promptDir, '.keep');
216
- if (!(await this.fileExists(keepFile))) {
217
- await node_fs_1.promises.writeFile(keepFile, '');
218
- }
219
- await Promise.all([
220
- this.writePromptIfMissing(paths.review.bug, default_prompts_1.DEFAULT_REVIEW_PROMPTS.bug),
221
- this.writePromptIfMissing(paths.review.style, default_prompts_1.DEFAULT_REVIEW_PROMPTS.style),
222
- this.writePromptIfMissing(paths.review.security, default_prompts_1.DEFAULT_REVIEW_PROMPTS.security),
223
- this.writePromptIfMissing(paths.commit, default_prompts_1.DEFAULT_COMMIT_PROMPT),
224
- this.writePromptIfMissing(paths.pack, default_prompts_1.DEFAULT_PACK_PROMPT),
225
- ]);
226
- }
227
- buildPromptPaths() {
228
- return {
229
- review: {
230
- bug: node_path_1.default.posix.join('.kodu', 'prompts', 'review-bug.md'),
231
- style: node_path_1.default.posix.join('.kodu', 'prompts', 'review-style.md'),
232
- security: node_path_1.default.posix.join('.kodu', 'prompts', 'review-security.md'),
233
- },
234
- commit: node_path_1.default.posix.join('.kodu', 'prompts', 'commit.md'),
235
- pack: node_path_1.default.posix.join('.kodu', 'prompts', 'pack.md'),
236
- };
28
+ await this.updateGitignore();
29
+ this.ui.log.success('Done.');
237
30
  }
238
- async writePromptIfMissing(target, content) {
239
- const absolute = node_path_1.default.isAbsolute(target)
240
- ? target
241
- : node_path_1.default.join(process.cwd(), target);
242
- if (await this.fileExists(absolute)) {
31
+ async updateGitignore() {
32
+ const gitignorePath = node_path_1.default.join(process.cwd(), '.gitignore');
33
+ if (!(await this.exists(gitignorePath))) {
34
+ this.ui.log.warn('.gitignore not found, skipping.');
243
35
  return;
244
36
  }
245
- await node_fs_1.promises.mkdir(node_path_1.default.dirname(absolute), { recursive: true });
246
- await node_fs_1.promises.writeFile(absolute, `${content}\n`, 'utf8');
247
- }
248
- async ensureGitignore() {
249
- const gitignorePath = node_path_1.default.join(process.cwd(), '.gitignore');
250
- const content = (await this.fileExists(gitignorePath))
251
- ? await node_fs_1.promises.readFile(gitignorePath, 'utf8')
252
- : '';
37
+ const content = await node_fs_1.promises.readFile(gitignorePath, 'utf8');
253
38
  const lines = content.split(/\r?\n/);
254
- const additions = [];
255
- if (!lines.some((line) => line.trim() === '.env')) {
256
- const addEnv = await this.ui.promptConfirm({
257
- message: '.env not in .gitignore. Add it?',
258
- default: true,
259
- });
260
- if (addEnv) {
261
- additions.push('.env');
262
- }
263
- }
264
- if (additions.length === 0) {
39
+ if (lines.some((line) => line.trim() === GITIGNORE_ENTRY)) {
40
+ this.ui.log.info(`${GITIGNORE_ENTRY} already in .gitignore`);
265
41
  return;
266
42
  }
267
43
  const trimmed = content.trimEnd();
268
- const next = trimmed.length > 0
269
- ? `${trimmed}\n${additions.join('\n')}`
270
- : additions.join('\n');
44
+ const next = trimmed.length > 0 ? `${trimmed}\n${GITIGNORE_ENTRY}` : GITIGNORE_ENTRY;
271
45
  await node_fs_1.promises.writeFile(gitignorePath, `${next}\n`, 'utf8');
272
- this.ui.log.success('Updated .gitignore');
46
+ this.ui.log.success(`Added ${GITIGNORE_ENTRY} to .gitignore`);
273
47
  }
274
- async fileExists(targetPath) {
48
+ async exists(target) {
275
49
  try {
276
- await node_fs_1.promises.access(targetPath);
50
+ await node_fs_1.promises.access(target);
277
51
  return true;
278
52
  }
279
53
  catch {
@@ -283,7 +57,7 @@ let InitCommand = class InitCommand extends nest_commander_1.CommandRunner {
283
57
  };
284
58
  exports.InitCommand = InitCommand;
285
59
  exports.InitCommand = InitCommand = __decorate([
286
- (0, nest_commander_1.Command)({ name: 'init', description: 'Initialize Kodu configuration' }),
60
+ (0, nest_commander_1.Command)({ name: 'init', description: 'Add kodu output to .gitignore' }),
287
61
  __metadata("design:paramtypes", [ui_service_1.UiService])
288
62
  ], InitCommand);
289
63
  //# sourceMappingURL=init.command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.command.js","sourceRoot":"","sources":["../../../../src/commands/init/init.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,qCAAyC;AACzC,0DAA6B;AAC7B,mDAAwD;AAExD,uEAI2C;AAC3C,yDAAqD;AACrD,sDAIgC;AAEhC,MAAM,2BAA2B,GAAG,GAAG,EAAE,CAAC,CAAC;IACzC,MAAM,EAAE,EAAE,aAAa,EAAE,EAAE,eAAe,EAAE,iCAAqB,EAAE,EAAE;IACrE,MAAM,EAAE,EAAE,aAAa,EAAE,EAAE,eAAe,EAAE,iCAAqB,EAAE,EAAE;CACtE,CAAC,CAAC;AAGI,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,8BAAa;IACf;IAA7B,YAA6B,EAAa;QACxC,KAAK,EAAE,CAAC;QADmB,OAAE,GAAF,EAAE,CAAW;IAE1C,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,UAAU,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;QAEzD,MAAM,gBAAgB,GAAG;YACvB,KAAK,EAAE,UAAU,6BAAiB,EAAE;YACpC,SAAS,EAAE,gBAAgB;SAC5B,CAAC;QAEF,MAAM,aAAa,GAAe;YAChC,OAAO,EACL,kFAAkF;YACpF,GAAG,EAAE,gBAAgB;YACrB,GAAG,EAAE;gBACH,OAAO,EAAE;oBACP,GAAG,EAAE;wBACH,IAAI,EAAE,aAAa;wBACnB,IAAI,EAAE,EAAE;wBACR,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,eAAe;wBAC3B,WAAW,EAAE,yBAAyB;wBACtC,KAAK,EAAE;4BACL,IAAI,EAAE,iBAAiB;4BACvB,KAAK,EAAE,uBAAuB;yBAC/B;qBACF;iBACF;aACF;YACD,OAAO,EAAE;gBACP,SAAS,EAAE,CAAC,KAAK,CAAC;gBAClB,SAAS,EAAE,IAAI;gBACf,YAAY,EAAE,IAAI;gBAClB,MAAM,EAAE,EAAE;aACX;YACD,MAAM,EAAE;gBACN,MAAM,EAAE;oBACN,mBAAmB;oBACnB,WAAW;oBACX,gBAAgB;oBAChB,MAAM;oBACN,OAAO;oBACP,cAAc;oBACd,MAAM;oBACN,UAAU;iBACX;gBACD,YAAY,EAAE,IAAI;gBAClB,2BAA2B,EAAE,KAAK;aACnC;SACF,CAAC;QAEF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;YACxC,OAAO,EAAE,4BAA4B;YACrC,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QAEH,IAAI,SAAwC,CAAC;QAC7C,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;gBACjD,OAAO,EAAE,qBAAqB;gBAC9B,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YAEH,IAAI,KAAa,CAAC;YAClB,IAAI,cAAc,EAAE,CAAC;gBACnB,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC;oBAChC,OAAO,EACL,kEAAkE;oBACpE,OAAO,EAAE,gBAAgB,CAAC,KAAK;oBAC/B,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;wBAClB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;4BACzB,OAAO,6CAA6C,CAAC;wBACvD,CAAC;wBACD,OAAO,IAAI,CAAC;oBACd,CAAC;iBACF,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,YAAY,CAChC,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAChD,CAAC;YACJ,CAAC;YAED,SAAS,GAAG;gBACV,KAAK;gBACL,SAAS,EAAE,gBAAgB,CAAC,SAAS;gBACrC,QAAQ,EAAE,2BAA2B,EAAE;aACxC,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;YAC/C,OAAO,EAAE,8BAA8B;YACvC,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,YAAY;YAC7B,CAAC,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC;YACvD,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC;QAEhC,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC;YACpD,OAAO,EACL,wEAAwE;YAC1E,OAAO,EAAE,EAAE;SACZ,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CACnC,aAAa,CAAC,OAAO,CAAC,SAAS,EAC/B,mBAAmB,CACpB,CAAC;QAEF,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE5C,MAAM,YAAY,GAAe;YAC/B,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,GAAG,CAAC,SAAS,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;YACpC,OAAO,EAAE;gBACP,SAAS;gBACT,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC,SAAS;gBAC1C,YAAY,EAAE,aAAa,CAAC,OAAO,CAAC,YAAY;gBAChD,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM;aACrC;YACD,MAAM,EAAE;gBACN,MAAM,EAAE,UAAU;gBAClB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,YAAY;gBAC/C,2BAA2B,EACzB,aAAa,CAAC,MAAM,CAAC,2BAA2B;aACnD;YACD,GAAG,EAAE,aAAa,CAAC,GAAG;YACtB,OAAO,EAAE;gBACP,MAAM,EAAE;oBACN,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG;oBAC3B,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK;oBAC/B,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,QAAQ;iBACtC;gBACD,MAAM,EAAE,WAAW,CAAC,MAAM;gBAC1B,IAAI,EAAE,WAAW,CAAC,IAAI;aACvB;SACF,CAAC;QAEF,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACjD,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAE7B,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;QACnD,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;YAC1E,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CACd,oEAAoE,CACrE,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,kBAAkB,CAAC,YAAoB;QAC7C,OAAO;YACL,OAAO,EAAE,iBAAiB;YAC1B,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,6BAA6B;oBACnC,KAAK,EAAE,UAAU,6BAAiB,EAAE;iBACrC;gBACD,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,oBAAoB,EAAE;gBAC3D,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE;gBACjD;oBACE,IAAI,EAAE,6BAA6B;oBACnC,KAAK,EAAE,sCAAsC;iBAC9C;gBACD,EAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,yBAAyB,EAAE;aACtE;YACD,OAAO,EAAE,YAAY;SACtB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,aAAuB;QACjD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC;YACvC,OAAO,EAAE,2CAA2C;YACpD,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;QAEH,OAAO,MAAM;aACV,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;IAEO,cAAc,CAAC,gBAA0B,EAAE,KAAa;QAC9D,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAClB,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QAED,MAAM,SAAS,GAAG,KAAK;aACpB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAErC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,gBAAgB,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,UAAkB,EAClB,MAAkB;QAElB,IAAI,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;gBAC5C,OAAO,EAAE,sCAAsC;gBAC/C,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CACd,0DAA0D,CAC3D,CAAC;gBACF,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,kBAAE,CAAC,SAAS,CAChB,UAAU,EACV,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EACtC,MAAM,CACP,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CAAC;IAC7C,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAC7B,KAAkD;QAElD,MAAM,SAAS,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC/D,MAAM,kBAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/C,MAAM,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YACvC,MAAM,kBAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,wCAAsB,CAAC,GAAG,CAAC;YACvE,IAAI,CAAC,oBAAoB,CACvB,KAAK,CAAC,MAAM,CAAC,KAAK,EAClB,wCAAsB,CAAC,KAAK,CAC7B;YACD,IAAI,CAAC,oBAAoB,CACvB,KAAK,CAAC,MAAM,CAAC,QAAQ,EACrB,wCAAsB,CAAC,QAAQ,CAChC;YACD,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,EAAE,uCAAqB,CAAC;YAC9D,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,qCAAmB,CAAC;SAC3D,CAAC,CAAC;IACL,CAAC;IAEO,gBAAgB;QACtB,OAAO;YACL,MAAM,EAAE;gBACN,GAAG,EAAE,mBAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC;gBACzD,KAAK,EAAE,mBAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,iBAAiB,CAAC;gBAC7D,QAAQ,EAAE,mBAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,oBAAoB,CAAC;aACpE;YACD,MAAM,EAAE,mBAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC;YACxD,IAAI,EAAE,mBAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC;SAC5C,CAAC;IACb,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAChC,MAAc,EACd,OAAe;QAEf,MAAM,QAAQ,GAAG,mBAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YACtC,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;QAErC,IAAI,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,OAAO;QACT,CAAC;QAED,MAAM,kBAAE,CAAC,KAAK,CAAC,mBAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,MAAM,kBAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,OAAO,IAAI,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,MAAM,aAAa,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YACpD,CAAC,CAAC,MAAM,kBAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;YAC1C,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;gBACzC,OAAO,EAAE,iCAAiC;gBAC1C,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,IAAI,MAAM,EAAE,CAAC;gBACX,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,IAAI,GACR,OAAO,CAAC,MAAM,GAAG,CAAC;YAChB,CAAC,CAAC,GAAG,OAAO,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACvC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,kBAAE,CAAC,SAAS,CAAC,aAAa,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC5C,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,UAAkB;QACzC,IAAI,CAAC;YACH,MAAM,kBAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF,CAAA;AAlUY,kCAAW;sBAAX,WAAW;IADvB,IAAA,wBAAO,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;qCAErC,sBAAS;GAD/B,WAAW,CAkUvB"}
1
+ {"version":3,"file":"init.command.js","sourceRoot":"","sources":["../../../../src/commands/init/init.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,qCAAyC;AACzC,0DAA6B;AAC7B,mDAAwD;AACxD,yDAAqD;AAErD,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAGrC,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,8BAAa;IACf;IAA7B,YAA6B,EAAa;QACxC,KAAK,EAAE,CAAC;QADmB,OAAE,GAAF,EAAE,CAAW;IAE1C,CAAC;IAED,KAAK,CAAC,GAAG;QACP,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7B,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,MAAM,aAAa,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,CAAC,CAAC;QAE7D,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAErC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,eAAe,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,eAAe,wBAAwB,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,IAAI,GACR,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,eAAe,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;QAC1E,MAAM,kBAAE,CAAC,SAAS,CAAC,aAAa,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,eAAe,gBAAgB,CAAC,CAAC;IAChE,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,MAAc;QACjC,IAAI,CAAC;YACH,MAAM,kBAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF,CAAA;AAzCY,kCAAW;sBAAX,WAAW;IADvB,IAAA,wBAAO,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;qCAErC,sBAAS;GAD/B,WAAW,CAyCvB"}
@@ -3,12 +3,18 @@ import { ConfigService } from '../../core/config/config.service';
3
3
  import { PromptService } from '../../core/config/prompt.service';
4
4
  import { FsService } from '../../core/file-system/fs.service';
5
5
  import { UiService } from '../../core/ui/ui.service';
6
+ import { CleanerService } from '../../shared/cleaner/cleaner.service';
6
7
  import { TokenizerService } from '../../shared/tokenizer/tokenizer.service';
8
+ type OutputFormat = 'xml' | 'text';
7
9
  type PackOptions = {
8
10
  copy?: boolean;
9
11
  template?: string;
10
12
  out?: string;
11
13
  path?: string[];
14
+ exclude?: string[];
15
+ list?: boolean;
16
+ format?: OutputFormat;
17
+ clean?: boolean;
12
18
  };
13
19
  export declare class PackCommand extends CommandRunner {
14
20
  private readonly ui;
@@ -16,11 +22,16 @@ export declare class PackCommand extends CommandRunner {
16
22
  private readonly promptService;
17
23
  private readonly fsService;
18
24
  private readonly tokenizer;
19
- constructor(ui: UiService, configService: ConfigService, promptService: PromptService, fsService: FsService, tokenizer: TokenizerService);
25
+ private readonly cleaner;
26
+ constructor(ui: UiService, configService: ConfigService, promptService: PromptService, fsService: FsService, tokenizer: TokenizerService, cleaner: CleanerService);
20
27
  parseCopy(): boolean;
21
28
  parseTemplate(value: string): string;
22
29
  parseOut(value: string): string;
23
30
  parsePath(value: string, previous?: string[]): string[];
31
+ parseExclude(value: string, previous?: string[]): string[];
32
+ parseList(): boolean;
33
+ parseClean(): boolean;
34
+ parseFormat(value: string): OutputFormat;
24
35
  run(_inputs: string[], options: PackOptions): Promise<void>;
25
36
  private buildContext;
26
37
  private applyTemplate;