commic 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +83 -0
- package/README.md +3 -3
- package/dist/ai/AIService.d.ts +3 -3
- package/dist/ai/AIService.d.ts.map +1 -1
- package/dist/ai/AIService.js +12 -61
- package/dist/ai/AIService.js.map +1 -1
- package/dist/config/CommitPromptTemplate.d.ts +9 -0
- package/dist/config/CommitPromptTemplate.d.ts.map +1 -0
- package/dist/config/CommitPromptTemplate.js +89 -0
- package/dist/config/CommitPromptTemplate.js.map +1 -0
- package/dist/config/ConfigManager.js +1 -1
- package/dist/config/ConfigManager.js.map +1 -1
- package/dist/git/GitService.d.ts.map +1 -1
- package/dist/git/GitService.js +12 -4
- package/dist/git/GitService.js.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/orchestrator/MainOrchestrator.d.ts +3 -3
- package/dist/orchestrator/MainOrchestrator.d.ts.map +1 -1
- package/dist/orchestrator/MainOrchestrator.js +31 -23
- package/dist/orchestrator/MainOrchestrator.js.map +1 -1
- package/dist/ui/UIManager.d.ts +6 -2
- package/dist/ui/UIManager.d.ts.map +1 -1
- package/dist/ui/UIManager.js +31 -6
- package/dist/ui/UIManager.js.map +1 -1
- package/package.json +1 -1
- package/src/ai/AIService.ts +15 -65
- package/src/config/CommitPromptTemplate.ts +93 -0
- package/src/config/ConfigManager.ts +1 -1
- package/src/git/GitService.ts +15 -4
- package/src/index.ts +11 -1
- package/src/orchestrator/MainOrchestrator.ts +34 -23
- package/src/ui/UIManager.ts +34 -8
|
@@ -26,20 +26,31 @@ export class MainOrchestrator {
|
|
|
26
26
|
// Step 2: Find and validate repository
|
|
27
27
|
const repositoryPath = options.path || '.';
|
|
28
28
|
const repository = await this.findAndValidateRepository(repositoryPath);
|
|
29
|
+
// Step 2.5: Stage all changes
|
|
30
|
+
await this.stageAllChanges(repository.rootPath);
|
|
29
31
|
// Step 3: Get Git diff
|
|
30
32
|
const diff = await this.getGitDiff(repository.rootPath);
|
|
31
33
|
// Step 4: Generate commit suggestions
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
34
|
+
let suggestions = await this.generateSuggestions(config, diff);
|
|
35
|
+
let customInstruction;
|
|
36
|
+
// Step 5: Let user select a commit message (with regenerate option)
|
|
37
|
+
let selectedIndex = await this.uiManager.promptForCommitSelection(suggestions);
|
|
38
|
+
// Handle regenerate with prompt loop
|
|
39
|
+
while (selectedIndex === -2) {
|
|
40
|
+
// Get custom instruction from user
|
|
41
|
+
customInstruction = await this.uiManager.promptForCustomInstruction();
|
|
42
|
+
// Regenerate suggestions with custom instruction
|
|
43
|
+
this.uiManager.newLine();
|
|
44
|
+
suggestions = await this.generateSuggestions(config, diff, customInstruction);
|
|
45
|
+
// Prompt again with new suggestions
|
|
46
|
+
selectedIndex = await this.uiManager.promptForCommitSelection(suggestions);
|
|
47
|
+
}
|
|
35
48
|
// Handle cancellation
|
|
36
49
|
if (selectedIndex === -1) {
|
|
37
50
|
this.uiManager.showInfo('Commit cancelled. No changes were made.');
|
|
38
51
|
return;
|
|
39
52
|
}
|
|
40
|
-
// Step 6:
|
|
41
|
-
await this.stageChangesIfNeeded(repository.rootPath, diff);
|
|
42
|
-
// Step 7: Execute commit
|
|
53
|
+
// Step 6: Execute commit (changes already staged)
|
|
43
54
|
const commitHash = await this.executeCommit(repository.rootPath, suggestions[selectedIndex].message);
|
|
44
55
|
// Step 8: Show success with more details
|
|
45
56
|
const shortHash = commitHash.substring(0, 7);
|
|
@@ -148,16 +159,17 @@ export class MainOrchestrator {
|
|
|
148
159
|
* Generate commit message suggestions using AI
|
|
149
160
|
* @param config Configuration with API key
|
|
150
161
|
* @param diff Git diff
|
|
162
|
+
* @param customInstruction Optional custom instruction for regeneration
|
|
151
163
|
* @returns Array of suggestions
|
|
152
164
|
*/
|
|
153
|
-
async generateSuggestions(config, diff) {
|
|
165
|
+
async generateSuggestions(config, diff, customInstruction) {
|
|
154
166
|
this.uiManager.newLine();
|
|
155
167
|
this.uiManager.showSectionHeader('🤖 AI Generation');
|
|
156
|
-
this.uiManager.showAIGenerationInfo(config.model
|
|
168
|
+
this.uiManager.showAIGenerationInfo(config.model);
|
|
157
169
|
const spinner = this.uiManager.showLoading(' Generating commit messages...');
|
|
158
170
|
try {
|
|
159
171
|
const aiService = new AIService(config.apiKey, config.model);
|
|
160
|
-
const suggestions = await aiService.generateCommitMessages(diff,
|
|
172
|
+
const suggestions = await aiService.generateCommitMessages(diff, customInstruction);
|
|
161
173
|
spinner.succeed(` Generated ${suggestions.length} suggestions`);
|
|
162
174
|
this.uiManager.newLine();
|
|
163
175
|
return suggestions;
|
|
@@ -168,23 +180,19 @@ export class MainOrchestrator {
|
|
|
168
180
|
}
|
|
169
181
|
}
|
|
170
182
|
/**
|
|
171
|
-
* Stage changes
|
|
183
|
+
* Stage all changes in the repository
|
|
172
184
|
* @param repoPath Repository root path
|
|
173
|
-
* @param diff Git diff
|
|
174
185
|
*/
|
|
175
|
-
async
|
|
176
|
-
|
|
186
|
+
async stageAllChanges(repoPath) {
|
|
187
|
+
const spinner = this.uiManager.showLoading('Staging all changes...');
|
|
188
|
+
try {
|
|
189
|
+
await this.gitService.stageAll(repoPath);
|
|
190
|
+
spinner.succeed('All changes staged');
|
|
177
191
|
this.uiManager.newLine();
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
this.uiManager.newLine();
|
|
183
|
-
}
|
|
184
|
-
catch (error) {
|
|
185
|
-
spinner.fail('Failed to stage changes');
|
|
186
|
-
throw error;
|
|
187
|
-
}
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
spinner.fail('Failed to stage changes');
|
|
195
|
+
throw error;
|
|
188
196
|
}
|
|
189
197
|
}
|
|
190
198
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MainOrchestrator.js","sourceRoot":"","sources":["../../src/orchestrator/MainOrchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAK7F;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IAER;IACA;IACA;IAHnB,YACmB,aAA4B,EAC5B,UAAsB,EACtB,SAAoB;QAFpB,kBAAa,GAAb,aAAa,CAAe;QAC5B,eAAU,GAAV,UAAU,CAAY;QACtB,cAAS,GAAT,SAAS,CAAW;IACpC,CAAC;IAEJ;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,OAAmB;QAC/B,IAAI,CAAC;YACH,uBAAuB;YACvB,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;YAE7B,+BAA+B;YAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAEnE,uCAAuC;YACvC,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,IAAI,GAAG,CAAC;YAC3C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,CAAC;YAExE,uBAAuB;YACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAExD,sCAAsC;YACtC,
|
|
1
|
+
{"version":3,"file":"MainOrchestrator.js","sourceRoot":"","sources":["../../src/orchestrator/MainOrchestrator.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/UIManager.d.ts
CHANGED
|
@@ -88,9 +88,8 @@ export declare class UIManager {
|
|
|
88
88
|
/**
|
|
89
89
|
* Display AI generation info
|
|
90
90
|
* @param model Model name being used
|
|
91
|
-
* @param suggestionCount Number of suggestions generated
|
|
92
91
|
*/
|
|
93
|
-
showAIGenerationInfo(model: string
|
|
92
|
+
showAIGenerationInfo(model: string): void;
|
|
94
93
|
/**
|
|
95
94
|
* Prompt user for API key
|
|
96
95
|
* @returns Entered API key
|
|
@@ -114,5 +113,10 @@ export declare class UIManager {
|
|
|
114
113
|
* @returns true if confirmed, false otherwise
|
|
115
114
|
*/
|
|
116
115
|
promptForConfirmation(message: string): Promise<boolean>;
|
|
116
|
+
/**
|
|
117
|
+
* Prompt user for custom instruction to regenerate commit messages
|
|
118
|
+
* @returns Custom instruction string or empty string if cancelled
|
|
119
|
+
*/
|
|
120
|
+
promptForCustomInstruction(): Promise<string>;
|
|
117
121
|
}
|
|
118
122
|
//# sourceMappingURL=UIManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UIManager.d.ts","sourceRoot":"","sources":["../../src/ui/UIManager.ts"],"names":[],"mappings":"AAGA,OAAY,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAOrB;IAEF;;OAEG;IACH,WAAW,IAAI,IAAI;IA0CnB;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIlC;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAQlD;;;;OAIG;IACH,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAKlE;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI/B;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIlC;;;;OAIG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI3B;;;;OAIG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG;IAQjC;;;OAGG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMtC;;;;OAIG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAgBxD;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf;;;;;;OAMG;IACH,kBAAkB,CAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,IAAI;IAgBP;;;OAGG;IACH,eAAe,CAAC,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IA6B7F
|
|
1
|
+
{"version":3,"file":"UIManager.d.ts","sourceRoot":"","sources":["../../src/ui/UIManager.ts"],"names":[],"mappings":"AAGA,OAAY,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAOrB;IAEF;;OAEG;IACH,WAAW,IAAI,IAAI;IA0CnB;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIlC;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAQlD;;;;OAIG;IACH,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAKlE;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI/B;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIlC;;;;OAIG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI3B;;;;OAIG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG;IAQjC;;;OAGG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMtC;;;;OAIG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAgBxD;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf;;;;;;OAMG;IACH,kBAAkB,CAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,IAAI;IAgBP;;;OAGG;IACH,eAAe,CAAC,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IA6B7F;;;OAGG;IACH,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQzC;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAsBxC;;;;OAIG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IA8BvD;;;;OAIG;IACG,wBAAwB,CAAC,WAAW,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAwFhF;;;;OAIG;IACG,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAa9D;;;OAGG;IACG,0BAA0B,IAAI,OAAO,CAAC,MAAM,CAAC;CAiBpD"}
|
package/dist/ui/UIManager.js
CHANGED
|
@@ -207,11 +207,10 @@ export class UIManager {
|
|
|
207
207
|
/**
|
|
208
208
|
* Display AI generation info
|
|
209
209
|
* @param model Model name being used
|
|
210
|
-
* @param suggestionCount Number of suggestions generated
|
|
211
210
|
*/
|
|
212
|
-
showAIGenerationInfo(model
|
|
211
|
+
showAIGenerationInfo(model) {
|
|
213
212
|
console.log(this.colors.muted(` 🤖 Model: ${chalk.cyan.bold(model)}`));
|
|
214
|
-
console.log(this.colors.muted(` 📝 Generating ${chalk.cyan.bold(
|
|
213
|
+
console.log(this.colors.muted(` 📝 Generating ${chalk.cyan.bold(5)} commit message suggestions...`));
|
|
215
214
|
console.log();
|
|
216
215
|
}
|
|
217
216
|
/**
|
|
@@ -250,7 +249,7 @@ export class UIManager {
|
|
|
250
249
|
name: 'model',
|
|
251
250
|
message: 'Select Gemini model:',
|
|
252
251
|
choices: models.map((model) => {
|
|
253
|
-
if (model === 'gemini-
|
|
252
|
+
if (model === 'gemini-3-flash-preview') {
|
|
254
253
|
return {
|
|
255
254
|
name: `${model} ${chalk.gray('(stable)')}`,
|
|
256
255
|
value: model,
|
|
@@ -311,6 +310,12 @@ export class UIManager {
|
|
|
311
310
|
short: firstLine,
|
|
312
311
|
};
|
|
313
312
|
});
|
|
313
|
+
// Add regenerate with prompt option
|
|
314
|
+
choices.push({
|
|
315
|
+
name: chalk.cyan('🔄 Regenerate with prompt'),
|
|
316
|
+
value: -2,
|
|
317
|
+
short: 'Regenerate',
|
|
318
|
+
});
|
|
314
319
|
// Add cancel option
|
|
315
320
|
choices.push({
|
|
316
321
|
name: chalk.red("✖ Cancel (don't commit)"),
|
|
@@ -327,8 +332,8 @@ export class UIManager {
|
|
|
327
332
|
loop: false,
|
|
328
333
|
},
|
|
329
334
|
]);
|
|
330
|
-
// Show preview of selected message if not cancelled
|
|
331
|
-
if (answer.selection !== -1) {
|
|
335
|
+
// Show preview of selected message if not cancelled and not regenerate
|
|
336
|
+
if (answer.selection !== -1 && answer.selection !== -2) {
|
|
332
337
|
this.newLine();
|
|
333
338
|
this.showSectionHeader('✅ Selected commit message');
|
|
334
339
|
console.log();
|
|
@@ -365,5 +370,25 @@ export class UIManager {
|
|
|
365
370
|
]);
|
|
366
371
|
return answer.confirmed;
|
|
367
372
|
}
|
|
373
|
+
/**
|
|
374
|
+
* Prompt user for custom instruction to regenerate commit messages
|
|
375
|
+
* @returns Custom instruction string or empty string if cancelled
|
|
376
|
+
*/
|
|
377
|
+
async promptForCustomInstruction() {
|
|
378
|
+
const answer = await inquirer.prompt([
|
|
379
|
+
{
|
|
380
|
+
type: 'input',
|
|
381
|
+
name: 'instruction',
|
|
382
|
+
message: 'Enter your instruction for regenerating commit messages:',
|
|
383
|
+
validate: (input) => {
|
|
384
|
+
if (!input || input.trim().length === 0) {
|
|
385
|
+
return 'Instruction cannot be empty';
|
|
386
|
+
}
|
|
387
|
+
return true;
|
|
388
|
+
},
|
|
389
|
+
},
|
|
390
|
+
]);
|
|
391
|
+
return answer.instruction.trim();
|
|
392
|
+
}
|
|
368
393
|
}
|
|
369
394
|
//# sourceMappingURL=UIManager.js.map
|
package/dist/ui/UIManager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UIManager.js","sourceRoot":"","sources":["../../src/ui/UIManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"UIManager.js","sourceRoot":"","sources":["../../src/ui/UIManager.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/ai/AIService.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type GenerativeModel, GoogleGenerativeAI } from '@google/generative-ai';
|
|
2
|
+
import { buildCommitPrompt } from '../config/CommitPromptTemplate.js';
|
|
2
3
|
import { APIError, ValidationError } from '../errors/CustomErrors.js';
|
|
3
4
|
import type { CommitSuggestion, GitDiff } from '../types/index.js';
|
|
4
5
|
import { ConventionalCommitsValidator } from '../validation/ConventionalCommitsValidator.js';
|
|
@@ -18,63 +19,11 @@ export class AIService {
|
|
|
18
19
|
/**
|
|
19
20
|
* Build prompt for Gemini API to generate commit messages
|
|
20
21
|
* @param diff Git diff information
|
|
21
|
-
* @param
|
|
22
|
+
* @param customInstruction Optional custom instruction to add to the prompt
|
|
22
23
|
* @returns Formatted prompt string
|
|
23
24
|
*/
|
|
24
|
-
private buildPrompt(diff: GitDiff,
|
|
25
|
-
|
|
26
|
-
const combinedDiff = [diff.staged, diff.unstaged].filter((d) => d.length > 0).join('\n\n');
|
|
27
|
-
|
|
28
|
-
// Truncate diff if too large (Gemini input token limit: 1,048,576 tokens)
|
|
29
|
-
// Using ~800K characters (approx 200K-266K tokens) leaves plenty of room for prompt
|
|
30
|
-
// 1 token ≈ 3-4 characters on average, so 800K chars ≈ 200K-266K tokens
|
|
31
|
-
const maxDiffLength = 800000;
|
|
32
|
-
const truncatedDiff =
|
|
33
|
-
combinedDiff.length > maxDiffLength
|
|
34
|
-
? combinedDiff.substring(0, maxDiffLength) +
|
|
35
|
-
'\n\n[... diff truncated due to size limit ...]'
|
|
36
|
-
: combinedDiff;
|
|
37
|
-
|
|
38
|
-
return `You are an expert Git commit message writer. Analyze the ENTIRE Git diff below and generate ${count} commit messages that summarize ALL changes together. Each commit message should cover the complete set of changes, not individual features.
|
|
39
|
-
|
|
40
|
-
IMPORTANT:
|
|
41
|
-
- Analyze ALL changes in the diff as a single commit
|
|
42
|
-
- Each suggested message should describe the complete set of changes
|
|
43
|
-
- Do NOT create separate messages for different parts of the diff
|
|
44
|
-
- Consider all file changes, additions, deletions, and modifications together
|
|
45
|
-
- Provide different perspectives/styles for the SAME set of changes
|
|
46
|
-
|
|
47
|
-
CRITICAL RULES:
|
|
48
|
-
1. Format: type(scope)?: description
|
|
49
|
-
2. Valid types: feat, fix, docs, style, refactor, test, chore, perf, ci, build
|
|
50
|
-
3. Use imperative mood (add, fix, update - NOT added, fixed, updated)
|
|
51
|
-
4. Description starts with lowercase
|
|
52
|
-
5. Single-line messages: max 72 chars, no body
|
|
53
|
-
6. Multi-line messages: blank line between subject and body
|
|
54
|
-
7. At least 2 messages should be single-line
|
|
55
|
-
8. Each message must summarize ALL changes in the diff
|
|
56
|
-
|
|
57
|
-
OUTPUT FORMAT:
|
|
58
|
-
Separate each commit message with exactly "---" on its own line.
|
|
59
|
-
Return ONLY the messages, no explanations or numbering.
|
|
60
|
-
|
|
61
|
-
EXAMPLES (each covers all changes):
|
|
62
|
-
feat(auth): add JWT validation and user login flow
|
|
63
|
-
---
|
|
64
|
-
fix: resolve authentication issues and update error handling
|
|
65
|
-
---
|
|
66
|
-
refactor(auth): improve JWT implementation and error messages
|
|
67
|
-
|
|
68
|
-
Update token validation logic and add comprehensive error handling
|
|
69
|
-
---
|
|
70
|
-
feat: implement user authentication system
|
|
71
|
-
|
|
72
|
-
Add JWT token validation, login endpoints, and error handling
|
|
73
|
-
|
|
74
|
-
GIT DIFF:
|
|
75
|
-
${truncatedDiff}
|
|
76
|
-
|
|
77
|
-
Generate ${count} commit messages that each describe ALL the changes above:`;
|
|
25
|
+
private buildPrompt(diff: GitDiff, customInstruction?: string): string {
|
|
26
|
+
return buildCommitPrompt(diff, customInstruction);
|
|
78
27
|
}
|
|
79
28
|
|
|
80
29
|
/**
|
|
@@ -242,15 +191,15 @@ Generate ${count} commit messages that each describe ALL the changes above:`;
|
|
|
242
191
|
/**
|
|
243
192
|
* Generate commit message suggestions using Gemini API
|
|
244
193
|
* @param diff Git diff information
|
|
245
|
-
* @param
|
|
194
|
+
* @param customInstruction Optional custom instruction to add to the prompt
|
|
246
195
|
* @returns Array of validated commit suggestions
|
|
247
196
|
* @throws APIError if API request fails
|
|
248
197
|
* @throws ValidationError if no valid suggestions generated
|
|
249
198
|
*/
|
|
250
|
-
async generateCommitMessages(
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
199
|
+
async generateCommitMessages(
|
|
200
|
+
diff: GitDiff,
|
|
201
|
+
customInstruction?: string
|
|
202
|
+
): Promise<CommitSuggestion[]> {
|
|
254
203
|
let attempts = 0;
|
|
255
204
|
const maxAttempts = 3;
|
|
256
205
|
let bestSuggestions: CommitSuggestion[] = [];
|
|
@@ -260,7 +209,7 @@ Generate ${count} commit messages that each describe ALL the changes above:`;
|
|
|
260
209
|
|
|
261
210
|
try {
|
|
262
211
|
// Build prompt
|
|
263
|
-
const prompt = this.buildPrompt(diff,
|
|
212
|
+
const prompt = this.buildPrompt(diff, customInstruction);
|
|
264
213
|
|
|
265
214
|
// Call Gemini API with timeout
|
|
266
215
|
const timeoutPromise = new Promise<never>((_, reject) =>
|
|
@@ -290,13 +239,14 @@ Generate ${count} commit messages that each describe ALL the changes above:`;
|
|
|
290
239
|
if (validSuggestions.length > 0) {
|
|
291
240
|
// If we meet minimum requirements, return them
|
|
292
241
|
if (this.meetsMinimumRequirements(validSuggestions)) {
|
|
293
|
-
//
|
|
242
|
+
// Prioritize single-line messages
|
|
294
243
|
const sorted = validSuggestions.sort((a, b) => {
|
|
295
244
|
if (a.type === 'single-line' && b.type !== 'single-line') return -1;
|
|
296
245
|
if (a.type !== 'single-line' && b.type === 'single-line') return 1;
|
|
297
246
|
return 0;
|
|
298
247
|
});
|
|
299
|
-
|
|
248
|
+
// Return up to 5 suggestions (as per prompt)
|
|
249
|
+
return sorted.slice(0, 5);
|
|
300
250
|
}
|
|
301
251
|
|
|
302
252
|
// Store best suggestions so far
|
|
@@ -313,7 +263,7 @@ Generate ${count} commit messages that each describe ALL the changes above:`;
|
|
|
313
263
|
|
|
314
264
|
// If we have at least 2 valid suggestions, return them even if not perfect
|
|
315
265
|
if (validSuggestions.length >= 2) {
|
|
316
|
-
return validSuggestions.slice(0,
|
|
266
|
+
return validSuggestions.slice(0, 5);
|
|
317
267
|
}
|
|
318
268
|
} catch (error) {
|
|
319
269
|
const errorMessage = (error as Error).message.toLowerCase();
|
|
@@ -347,7 +297,7 @@ Generate ${count} commit messages that each describe ALL the changes above:`;
|
|
|
347
297
|
|
|
348
298
|
// If we have some valid suggestions, return them as fallback
|
|
349
299
|
if (bestSuggestions.length >= 1) {
|
|
350
|
-
return bestSuggestions.slice(0,
|
|
300
|
+
return bestSuggestions.slice(0, 5);
|
|
351
301
|
}
|
|
352
302
|
|
|
353
303
|
// Last resort: try to generate a simple fallback message
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { GitDiff } from '../types/index.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Builds the prompt template for generating commit messages
|
|
5
|
+
* @param diff Git diff information
|
|
6
|
+
* @param customInstruction Optional custom instruction from user
|
|
7
|
+
* @returns Formatted prompt string
|
|
8
|
+
*/
|
|
9
|
+
export function buildCommitPrompt(diff: GitDiff, customInstruction?: string): string {
|
|
10
|
+
// Combine staged and unstaged diffs
|
|
11
|
+
const combinedDiff = [diff.staged, diff.unstaged].filter((d) => d.length > 0).join('\n\n');
|
|
12
|
+
|
|
13
|
+
// Truncate diff if too large (Gemini input token limit: 1,048,576 tokens)
|
|
14
|
+
// Using ~800K characters (approx 200K-266K tokens) leaves plenty of room for prompt
|
|
15
|
+
// 1 token ≈ 3-4 characters on average, so 800K chars ≈ 200K-266K tokens
|
|
16
|
+
const maxDiffLength = 800000;
|
|
17
|
+
const truncatedDiff =
|
|
18
|
+
combinedDiff.length > maxDiffLength
|
|
19
|
+
? `${combinedDiff.substring(0, maxDiffLength)}\n\n[... diff truncated due to size limit ...]`
|
|
20
|
+
: combinedDiff;
|
|
21
|
+
|
|
22
|
+
return `You are an expert Git commit message writer. Analyze the ENTIRE Git diff below and generate exactly 5 commit messages that summarize ALL changes together. Each commit message should cover the complete set of changes, not individual features.
|
|
23
|
+
|
|
24
|
+
IMPORTANT:
|
|
25
|
+
- Analyze ALL changes in the diff as a single commit
|
|
26
|
+
- Each suggested message should describe the complete set of changes
|
|
27
|
+
- Do NOT create separate messages for different parts of the diff
|
|
28
|
+
- Consider all file changes, additions, deletions, and modifications together
|
|
29
|
+
- Provide different perspectives/styles for the SAME set of changes
|
|
30
|
+
|
|
31
|
+
LANGUAGE:
|
|
32
|
+
- Output must be in English only.
|
|
33
|
+
- Commit subjects and bodies must be English, even if the diff content or comments are in another language.
|
|
34
|
+
- Do NOT include any non-English words unless they are proper nouns or exact identifiers from the diff.
|
|
35
|
+
|
|
36
|
+
FILE CONTEXT FIRST (NEW / RENAMED FILES):
|
|
37
|
+
- Treat added, removed, or renamed files as high-signal context.
|
|
38
|
+
- When a new file is added, first infer its purpose from:
|
|
39
|
+
1) file path and directory (e.g., docs/, .github/, scripts/, src/, config/)
|
|
40
|
+
2) file name and extension (e.g., CHANGELOG.md, README.md, package.json, *.yml)
|
|
41
|
+
3) how or where it is referenced by other changes in the diff
|
|
42
|
+
- Only after that, use the file contents for details.
|
|
43
|
+
- Do NOT let incidental values inside the file override the primary change.
|
|
44
|
+
|
|
45
|
+
CONTEXT PRIORITY EXAMPLES:
|
|
46
|
+
- If CHANGELOG.md (or similar release notes) is added or newly introduced, the message must mention adding or updating the changelog as a primary change.
|
|
47
|
+
- For generated or aggregated artifacts (changelog entries, lockfiles, snapshots), summarize the artifact-level change rather than listing internal values.
|
|
48
|
+
|
|
49
|
+
ADDITIONAL CRITICAL RULE (TYPE CONSISTENCY):
|
|
50
|
+
- First, determine ONE primary commit type that best matches the ENTIRE diff.
|
|
51
|
+
- Then, ALL 5 suggested commit messages MUST use the SAME chosen type.
|
|
52
|
+
- Do NOT vary the type across suggestions.
|
|
53
|
+
- Vary only wording, style, emphasis, and optionally scope.
|
|
54
|
+
|
|
55
|
+
Type selection guidance (pick the single best fit for the whole diff):
|
|
56
|
+
- feat: new user-facing capability or new behavior
|
|
57
|
+
- fix: bug fix or incorrect behavior
|
|
58
|
+
- refactor: internal restructuring without behavior change
|
|
59
|
+
- perf: performance improvements
|
|
60
|
+
- docs: documentation-only changes (README, CHANGELOG, /docs)
|
|
61
|
+
- test: test-only changes
|
|
62
|
+
- ci: CI pipeline or workflow changes
|
|
63
|
+
- build: build system or dependency changes
|
|
64
|
+
- chore: maintenance, tooling, or non-functional changes
|
|
65
|
+
- style: formatting-only changes (no logic change)
|
|
66
|
+
If multiple apply, choose the most user-impacting one.
|
|
67
|
+
If unclear, choose chore.
|
|
68
|
+
Type selection must prioritize file context over content details.
|
|
69
|
+
|
|
70
|
+
Avoid overfitting to literal values (versions, numbers, dates) unless the main purpose of the diff is to change those values.
|
|
71
|
+
|
|
72
|
+
CRITICAL RULES:
|
|
73
|
+
1. Format: <CHOSEN_TYPE>(scope)?: description
|
|
74
|
+
2. Valid types: feat, fix, docs, style, refactor, test, chore, perf, ci, build
|
|
75
|
+
3. Use imperative mood (add, fix, update — NOT added, fixed, updated)
|
|
76
|
+
4. Description must start with lowercase
|
|
77
|
+
5. Single-line messages: max 72 characters, no body
|
|
78
|
+
6. Multi-line messages: blank line between subject and body
|
|
79
|
+
7. Output must include exactly:
|
|
80
|
+
- 3 single-line commit messages
|
|
81
|
+
- 2 multi-line commit messages
|
|
82
|
+
8. Each message must summarize ALL changes in the diff
|
|
83
|
+
9. Do NOT output the chosen type separately; it must only appear in the messages.
|
|
84
|
+
|
|
85
|
+
OUTPUT FORMAT:
|
|
86
|
+
- Separate each commit message with exactly "---" on its own line.
|
|
87
|
+
- Return ONLY the commit messages, no explanations, no numbering.
|
|
88
|
+
|
|
89
|
+
${customInstruction ? `USER INSTRUCTION:\n${customInstruction}\n\n` : ''}GIT DIFF:
|
|
90
|
+
${truncatedDiff}
|
|
91
|
+
|
|
92
|
+
Generate exactly 5 commit messages that each describe ALL the changes above:`;
|
|
93
|
+
}
|
|
@@ -129,7 +129,7 @@ export class ConfigManager {
|
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
// Prompt for model selection
|
|
132
|
-
const availableModels = ['gemini-
|
|
132
|
+
const availableModels = ['gemini-3-flash-preview', 'gemini-flash-latest'];
|
|
133
133
|
const model = await ui.promptForModel(availableModels);
|
|
134
134
|
|
|
135
135
|
return {
|
package/src/git/GitService.ts
CHANGED
|
@@ -206,12 +206,23 @@ export class GitService {
|
|
|
206
206
|
}> {
|
|
207
207
|
try {
|
|
208
208
|
const git: SimpleGit = simpleGit(repoPath);
|
|
209
|
-
|
|
209
|
+
|
|
210
|
+
// Get staged changes stats
|
|
211
|
+
const stagedSummary = await git.diffSummary(['--cached']);
|
|
212
|
+
|
|
213
|
+
// Get unstaged changes stats
|
|
214
|
+
const unstagedSummary = await git.diffSummary();
|
|
215
|
+
|
|
216
|
+
// Combine both staged and unstaged stats
|
|
217
|
+
const allFiles = new Set([
|
|
218
|
+
...stagedSummary.files.map((f) => f.file),
|
|
219
|
+
...unstagedSummary.files.map((f) => f.file),
|
|
220
|
+
]);
|
|
210
221
|
|
|
211
222
|
return {
|
|
212
|
-
filesChanged:
|
|
213
|
-
insertions:
|
|
214
|
-
deletions:
|
|
223
|
+
filesChanged: allFiles.size,
|
|
224
|
+
insertions: stagedSummary.insertions + unstagedSummary.insertions,
|
|
225
|
+
deletions: stagedSummary.deletions + unstagedSummary.deletions,
|
|
215
226
|
};
|
|
216
227
|
} catch (_error) {
|
|
217
228
|
return {
|
package/src/index.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
+
import { readFileSync } from 'node:fs';
|
|
4
|
+
import { dirname, join } from 'node:path';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
3
6
|
import { Command } from 'commander';
|
|
4
7
|
import { ConfigManager } from './config/ConfigManager.js';
|
|
5
8
|
import { GitService } from './git/GitService.js';
|
|
@@ -7,6 +10,13 @@ import { MainOrchestrator } from './orchestrator/MainOrchestrator.js';
|
|
|
7
10
|
import type { CLIOptions } from './types/index.js';
|
|
8
11
|
import { UIManager } from './ui/UIManager.js';
|
|
9
12
|
|
|
13
|
+
// Get package.json version dynamically
|
|
14
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
15
|
+
const __dirname = dirname(__filename);
|
|
16
|
+
const packageJsonPath = join(__dirname, '..', 'package.json');
|
|
17
|
+
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
18
|
+
const version = packageJson.version;
|
|
19
|
+
|
|
10
20
|
/**
|
|
11
21
|
* Main entry point for the Commit CLI
|
|
12
22
|
*/
|
|
@@ -16,7 +26,7 @@ async function main() {
|
|
|
16
26
|
program
|
|
17
27
|
.name('commic')
|
|
18
28
|
.description('AI-powered Git commit message generator with Conventional Commits support')
|
|
19
|
-
.version('
|
|
29
|
+
.version(version, '-v, --version')
|
|
20
30
|
.argument('[path]', 'Path to Git repository', '.')
|
|
21
31
|
.option('-r, --reconfigure', 'Reconfigure API key and model settings')
|
|
22
32
|
.action(async (path: string, options: { reconfigure?: boolean }) => {
|