commic 1.0.0 → 1.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.
- 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/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/orchestrator/MainOrchestrator.ts +34 -23
- package/src/ui/UIManager.ts +34 -8
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Project Information
|
|
11
|
+
|
|
12
|
+
**Commic** - AI-powered commit messages with Conventional Commits
|
|
13
|
+
|
|
14
|
+
- **Repository**: [feyyazcigim/commic](https://github.com/feyyazcigim/commic)
|
|
15
|
+
- **Description**: AI-powered commit message generator that follows Conventional Commits specification
|
|
16
|
+
- **Technologies**: TypeScript (97%), JavaScript (3%)
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## [v1.0.1] - 2026-01-17
|
|
21
|
+
|
|
22
|
+
### Added
|
|
23
|
+
|
|
24
|
+
- **Custom instruction support for AI regeneration**: Users can now provide custom instructions when regenerating commit messages, allowing more control over AI-generated suggestions
|
|
25
|
+
- New `promptForCustomInstruction()` method in UIManager for collecting user input
|
|
26
|
+
- Added regeneration loop in MainOrchestrator to handle custom instructions
|
|
27
|
+
- Custom instruction parameter added to `buildCommitPrompt()` and `generateCommitMessages()`
|
|
28
|
+
|
|
29
|
+
- **Commit prompt template system**: New dedicated module for prompt construction
|
|
30
|
+
- Created `CommitPromptTemplate. ts` for centralized prompt management
|
|
31
|
+
- Improved prompt with language consistency rules (English-only output)
|
|
32
|
+
- Added file context prioritization logic for better change detection
|
|
33
|
+
- Enhanced handling of new files, renames, and changelogs
|
|
34
|
+
- Type consistency enforcement across all 5 suggestions
|
|
35
|
+
|
|
36
|
+
- **Interactive regenerate with prompt option**: New UI option to regenerate commit messages with custom instructions
|
|
37
|
+
- Added "🔄 Regenerate with prompt" choice in commit selection menu
|
|
38
|
+
- Selection value `-2` triggers custom instruction prompt flow
|
|
39
|
+
|
|
40
|
+
### Changed
|
|
41
|
+
|
|
42
|
+
- **Model upgrade to Gemini 3 Flash Preview**: Updated default AI model from Gemini 2.5 Flash to Gemini 3 Flash Preview
|
|
43
|
+
- Updated in ConfigManager available models list
|
|
44
|
+
- Updated in README documentation and examples
|
|
45
|
+
- Updated configuration version references
|
|
46
|
+
|
|
47
|
+
- **Fixed commit message count to 5**: Standardized AI-generated suggestions to always return exactly 5 commit messages
|
|
48
|
+
- Changed from variable count (3-5) to fixed count of 5
|
|
49
|
+
- Updated prompt to generate exactly 3 single-line and 2 multi-line messages
|
|
50
|
+
- Removed `count` parameter from `generateCommitMessages()` method
|
|
51
|
+
- Updated UI messaging to reflect fixed count of 5 suggestions
|
|
52
|
+
|
|
53
|
+
- **Stage changes earlier in workflow**: Restructured commit workflow to stage all changes before AI generation
|
|
54
|
+
- Moved staging from step 6 to step 2. 5 (before diff analysis)
|
|
55
|
+
- Renamed `stageChangesIfNeeded()` to `stageAllChanges()` - now unconditional
|
|
56
|
+
- Removed conditional logic for unstaged changes
|
|
57
|
+
- Updated success message from "Changes staged" to "All changes staged"
|
|
58
|
+
|
|
59
|
+
- **Improved diff statistics calculation**: Enhanced GitService to accurately track both staged and unstaged changes
|
|
60
|
+
- Combined staged and unstaged file statistics
|
|
61
|
+
- Fixed insertions/deletions count to include both staged and unstaged changes
|
|
62
|
+
- Uses Set to deduplicate files when counting total files changed
|
|
63
|
+
|
|
64
|
+
- **Refactored AI prompt construction**: Moved prompt building logic from AIService to dedicated template file
|
|
65
|
+
- `buildPrompt()` method now delegates to `buildCommitPrompt()` function
|
|
66
|
+
- Improved separation of concerns and maintainability
|
|
67
|
+
- Reduced AIService complexity
|
|
68
|
+
|
|
69
|
+
- **Updated UI generation info display**: Removed dynamic suggestion count parameter
|
|
70
|
+
- `showAIGenerationInfo()` now only takes model parameter
|
|
71
|
+
- Hard-coded "5" in display message since count is now fixed
|
|
72
|
+
|
|
73
|
+
### Fixed
|
|
74
|
+
|
|
75
|
+
- **Selection preview logic**: Fixed preview display to skip both cancel and regenerate options
|
|
76
|
+
- Changed condition from `!== -1` to `!== -1 && !== -2`
|
|
77
|
+
- Prevents preview display when regenerate option is selected
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Notes
|
|
82
|
+
|
|
83
|
+
These changes represent enhancements to the commit message generation workflow, adding user customization capabilities, improving AI model performance, and standardizing the output format for better consistency and user experience.
|
package/README.md
CHANGED
|
@@ -35,7 +35,7 @@ On your first run, Commic will guide you through a quick setup:
|
|
|
35
35
|
- Get your free API key at [Google AI Studio](https://makersuite.google.com/app/apikey)
|
|
36
36
|
|
|
37
37
|
2. **Model Selection**: Choose your preferred Gemini model
|
|
38
|
-
- Currently supports: Gemini
|
|
38
|
+
- Currently supports: Gemini 3 Flash Preview
|
|
39
39
|
|
|
40
40
|
Your configuration is saved to `~/.commic/config.json` for future use.
|
|
41
41
|
|
|
@@ -72,7 +72,7 @@ commic --reconfigure
|
|
|
72
72
|
## How It Works
|
|
73
73
|
|
|
74
74
|
1. 🔍 **Analyzes** your Git changes (staged and unstaged)
|
|
75
|
-
2. 🤖 **Generates**
|
|
75
|
+
2. 🤖 **Generates** 5 commit message suggestions using AI
|
|
76
76
|
3. 🎯 **Validates** all messages against Conventional Commits spec
|
|
77
77
|
4. ✨ **Presents** an interactive menu for selection
|
|
78
78
|
5. 🚀 **Commits** automatically with your chosen message
|
|
@@ -158,7 +158,7 @@ Configuration is stored at `~/.commic/config.json`:
|
|
|
158
158
|
```json
|
|
159
159
|
{
|
|
160
160
|
"apiKey": "your-api-key",
|
|
161
|
-
"model": "gemini-
|
|
161
|
+
"model": "gemini-3-flash-preview",
|
|
162
162
|
"version": "1.0.0"
|
|
163
163
|
}
|
|
164
164
|
```
|
package/dist/ai/AIService.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export declare class AIService {
|
|
|
9
9
|
/**
|
|
10
10
|
* Build prompt for Gemini API to generate commit messages
|
|
11
11
|
* @param diff Git diff information
|
|
12
|
-
* @param
|
|
12
|
+
* @param customInstruction Optional custom instruction to add to the prompt
|
|
13
13
|
* @returns Formatted prompt string
|
|
14
14
|
*/
|
|
15
15
|
private buildPrompt;
|
|
@@ -35,12 +35,12 @@ export declare class AIService {
|
|
|
35
35
|
/**
|
|
36
36
|
* Generate commit message suggestions using Gemini API
|
|
37
37
|
* @param diff Git diff information
|
|
38
|
-
* @param
|
|
38
|
+
* @param customInstruction Optional custom instruction to add to the prompt
|
|
39
39
|
* @returns Array of validated commit suggestions
|
|
40
40
|
* @throws APIError if API request fails
|
|
41
41
|
* @throws ValidationError if no valid suggestions generated
|
|
42
42
|
*/
|
|
43
|
-
generateCommitMessages(diff: GitDiff,
|
|
43
|
+
generateCommitMessages(diff: GitDiff, customInstruction?: string): Promise<CommitSuggestion[]>;
|
|
44
44
|
/**
|
|
45
45
|
* Generate a simple fallback commit message when AI fails
|
|
46
46
|
* @param diff Git diff information
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIService.d.ts","sourceRoot":"","sources":["../../src/ai/AIService.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AIService.d.ts","sourceRoot":"","sources":["../../src/ai/AIService.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGnE;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;gBAE5B,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAK7C;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAInB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAsHrB;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IAa9B;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IAehC;;;;;;;OAOG;IACG,sBAAsB,CAC1B,IAAI,EAAE,OAAO,EACb,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAsH9B;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;CAsChC"}
|
package/dist/ai/AIService.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { GoogleGenerativeAI } from '@google/generative-ai';
|
|
2
|
+
import { buildCommitPrompt } from '../config/CommitPromptTemplate.js';
|
|
2
3
|
import { APIError, ValidationError } from '../errors/CustomErrors.js';
|
|
3
4
|
import { ConventionalCommitsValidator } from '../validation/ConventionalCommitsValidator.js';
|
|
4
5
|
/**
|
|
@@ -14,60 +15,11 @@ export class AIService {
|
|
|
14
15
|
/**
|
|
15
16
|
* Build prompt for Gemini API to generate commit messages
|
|
16
17
|
* @param diff Git diff information
|
|
17
|
-
* @param
|
|
18
|
+
* @param customInstruction Optional custom instruction to add to the prompt
|
|
18
19
|
* @returns Formatted prompt string
|
|
19
20
|
*/
|
|
20
|
-
buildPrompt(diff,
|
|
21
|
-
|
|
22
|
-
const combinedDiff = [diff.staged, diff.unstaged].filter((d) => d.length > 0).join('\n\n');
|
|
23
|
-
// Truncate diff if too large (Gemini input token limit: 1,048,576 tokens)
|
|
24
|
-
// Using ~800K characters (approx 200K-266K tokens) leaves plenty of room for prompt
|
|
25
|
-
// 1 token ≈ 3-4 characters on average, so 800K chars ≈ 200K-266K tokens
|
|
26
|
-
const maxDiffLength = 800000;
|
|
27
|
-
const truncatedDiff = combinedDiff.length > maxDiffLength
|
|
28
|
-
? combinedDiff.substring(0, maxDiffLength) +
|
|
29
|
-
'\n\n[... diff truncated due to size limit ...]'
|
|
30
|
-
: combinedDiff;
|
|
31
|
-
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.
|
|
32
|
-
|
|
33
|
-
IMPORTANT:
|
|
34
|
-
- Analyze ALL changes in the diff as a single commit
|
|
35
|
-
- Each suggested message should describe the complete set of changes
|
|
36
|
-
- Do NOT create separate messages for different parts of the diff
|
|
37
|
-
- Consider all file changes, additions, deletions, and modifications together
|
|
38
|
-
- Provide different perspectives/styles for the SAME set of changes
|
|
39
|
-
|
|
40
|
-
CRITICAL RULES:
|
|
41
|
-
1. Format: type(scope)?: description
|
|
42
|
-
2. Valid types: feat, fix, docs, style, refactor, test, chore, perf, ci, build
|
|
43
|
-
3. Use imperative mood (add, fix, update - NOT added, fixed, updated)
|
|
44
|
-
4. Description starts with lowercase
|
|
45
|
-
5. Single-line messages: max 72 chars, no body
|
|
46
|
-
6. Multi-line messages: blank line between subject and body
|
|
47
|
-
7. At least 2 messages should be single-line
|
|
48
|
-
8. Each message must summarize ALL changes in the diff
|
|
49
|
-
|
|
50
|
-
OUTPUT FORMAT:
|
|
51
|
-
Separate each commit message with exactly "---" on its own line.
|
|
52
|
-
Return ONLY the messages, no explanations or numbering.
|
|
53
|
-
|
|
54
|
-
EXAMPLES (each covers all changes):
|
|
55
|
-
feat(auth): add JWT validation and user login flow
|
|
56
|
-
---
|
|
57
|
-
fix: resolve authentication issues and update error handling
|
|
58
|
-
---
|
|
59
|
-
refactor(auth): improve JWT implementation and error messages
|
|
60
|
-
|
|
61
|
-
Update token validation logic and add comprehensive error handling
|
|
62
|
-
---
|
|
63
|
-
feat: implement user authentication system
|
|
64
|
-
|
|
65
|
-
Add JWT token validation, login endpoints, and error handling
|
|
66
|
-
|
|
67
|
-
GIT DIFF:
|
|
68
|
-
${truncatedDiff}
|
|
69
|
-
|
|
70
|
-
Generate ${count} commit messages that each describe ALL the changes above:`;
|
|
21
|
+
buildPrompt(diff, customInstruction) {
|
|
22
|
+
return buildCommitPrompt(diff, customInstruction);
|
|
71
23
|
}
|
|
72
24
|
/**
|
|
73
25
|
* Parse API response into CommitSuggestion array
|
|
@@ -208,14 +160,12 @@ Generate ${count} commit messages that each describe ALL the changes above:`;
|
|
|
208
160
|
/**
|
|
209
161
|
* Generate commit message suggestions using Gemini API
|
|
210
162
|
* @param diff Git diff information
|
|
211
|
-
* @param
|
|
163
|
+
* @param customInstruction Optional custom instruction to add to the prompt
|
|
212
164
|
* @returns Array of validated commit suggestions
|
|
213
165
|
* @throws APIError if API request fails
|
|
214
166
|
* @throws ValidationError if no valid suggestions generated
|
|
215
167
|
*/
|
|
216
|
-
async generateCommitMessages(diff,
|
|
217
|
-
// Ensure count is within bounds
|
|
218
|
-
const requestCount = Math.max(3, Math.min(5, count));
|
|
168
|
+
async generateCommitMessages(diff, customInstruction) {
|
|
219
169
|
let attempts = 0;
|
|
220
170
|
const maxAttempts = 3;
|
|
221
171
|
let bestSuggestions = [];
|
|
@@ -223,7 +173,7 @@ Generate ${count} commit messages that each describe ALL the changes above:`;
|
|
|
223
173
|
attempts++;
|
|
224
174
|
try {
|
|
225
175
|
// Build prompt
|
|
226
|
-
const prompt = this.buildPrompt(diff,
|
|
176
|
+
const prompt = this.buildPrompt(diff, customInstruction);
|
|
227
177
|
// Call Gemini API with timeout
|
|
228
178
|
const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error('Request timeout')), 30000));
|
|
229
179
|
const result = await Promise.race([this.model.generateContent(prompt), timeoutPromise]);
|
|
@@ -243,7 +193,7 @@ Generate ${count} commit messages that each describe ALL the changes above:`;
|
|
|
243
193
|
if (validSuggestions.length > 0) {
|
|
244
194
|
// If we meet minimum requirements, return them
|
|
245
195
|
if (this.meetsMinimumRequirements(validSuggestions)) {
|
|
246
|
-
//
|
|
196
|
+
// Prioritize single-line messages
|
|
247
197
|
const sorted = validSuggestions.sort((a, b) => {
|
|
248
198
|
if (a.type === 'single-line' && b.type !== 'single-line')
|
|
249
199
|
return -1;
|
|
@@ -251,7 +201,8 @@ Generate ${count} commit messages that each describe ALL the changes above:`;
|
|
|
251
201
|
return 1;
|
|
252
202
|
return 0;
|
|
253
203
|
});
|
|
254
|
-
|
|
204
|
+
// Return up to 5 suggestions (as per prompt)
|
|
205
|
+
return sorted.slice(0, 5);
|
|
255
206
|
}
|
|
256
207
|
// Store best suggestions so far
|
|
257
208
|
if (validSuggestions.length > bestSuggestions.length) {
|
|
@@ -265,7 +216,7 @@ Generate ${count} commit messages that each describe ALL the changes above:`;
|
|
|
265
216
|
}
|
|
266
217
|
// If we have at least 2 valid suggestions, return them even if not perfect
|
|
267
218
|
if (validSuggestions.length >= 2) {
|
|
268
|
-
return validSuggestions.slice(0,
|
|
219
|
+
return validSuggestions.slice(0, 5);
|
|
269
220
|
}
|
|
270
221
|
}
|
|
271
222
|
catch (error) {
|
|
@@ -293,7 +244,7 @@ Generate ${count} commit messages that each describe ALL the changes above:`;
|
|
|
293
244
|
}
|
|
294
245
|
// If we have some valid suggestions, return them as fallback
|
|
295
246
|
if (bestSuggestions.length >= 1) {
|
|
296
|
-
return bestSuggestions.slice(0,
|
|
247
|
+
return bestSuggestions.slice(0, 5);
|
|
297
248
|
}
|
|
298
249
|
// Last resort: try to generate a simple fallback message
|
|
299
250
|
if (bestSuggestions.length === 0) {
|
package/dist/ai/AIService.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIService.js","sourceRoot":"","sources":["../../src/ai/AIService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC;AAE7F;;GAEG;AACH,MAAM,OAAO,SAAS;IACH,KAAK,CAAqB;IAC1B,KAAK,CAAkB;IAExC,YAAY,MAAc,EAAE,SAAiB;QAC3C,IAAI,CAAC,KAAK,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACnE,CAAC;IAED;;;;;OAKG;IACK,WAAW,CAAC,IAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"AIService.js","sourceRoot":"","sources":["../../src/ai/AIService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { GitDiff } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Builds the prompt template for generating commit messages
|
|
4
|
+
* @param diff Git diff information
|
|
5
|
+
* @param customInstruction Optional custom instruction from user
|
|
6
|
+
* @returns Formatted prompt string
|
|
7
|
+
*/
|
|
8
|
+
export declare function buildCommitPrompt(diff: GitDiff, customInstruction?: string): string;
|
|
9
|
+
//# sourceMappingURL=CommitPromptTemplate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommitPromptTemplate.d.ts","sourceRoot":"","sources":["../../src/config/CommitPromptTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAoFnF"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builds the prompt template for generating commit messages
|
|
3
|
+
* @param diff Git diff information
|
|
4
|
+
* @param customInstruction Optional custom instruction from user
|
|
5
|
+
* @returns Formatted prompt string
|
|
6
|
+
*/
|
|
7
|
+
export function buildCommitPrompt(diff, customInstruction) {
|
|
8
|
+
// Combine staged and unstaged diffs
|
|
9
|
+
const combinedDiff = [diff.staged, diff.unstaged].filter((d) => d.length > 0).join('\n\n');
|
|
10
|
+
// Truncate diff if too large (Gemini input token limit: 1,048,576 tokens)
|
|
11
|
+
// Using ~800K characters (approx 200K-266K tokens) leaves plenty of room for prompt
|
|
12
|
+
// 1 token ≈ 3-4 characters on average, so 800K chars ≈ 200K-266K tokens
|
|
13
|
+
const maxDiffLength = 800000;
|
|
14
|
+
const truncatedDiff = combinedDiff.length > maxDiffLength
|
|
15
|
+
? `${combinedDiff.substring(0, maxDiffLength)}\n\n[... diff truncated due to size limit ...]`
|
|
16
|
+
: combinedDiff;
|
|
17
|
+
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.
|
|
18
|
+
|
|
19
|
+
IMPORTANT:
|
|
20
|
+
- Analyze ALL changes in the diff as a single commit
|
|
21
|
+
- Each suggested message should describe the complete set of changes
|
|
22
|
+
- Do NOT create separate messages for different parts of the diff
|
|
23
|
+
- Consider all file changes, additions, deletions, and modifications together
|
|
24
|
+
- Provide different perspectives/styles for the SAME set of changes
|
|
25
|
+
|
|
26
|
+
LANGUAGE:
|
|
27
|
+
- Output must be in English only.
|
|
28
|
+
- Commit subjects and bodies must be English, even if the diff content or comments are in another language.
|
|
29
|
+
- Do NOT include any non-English words unless they are proper nouns or exact identifiers from the diff.
|
|
30
|
+
|
|
31
|
+
FILE CONTEXT FIRST (NEW / RENAMED FILES):
|
|
32
|
+
- Treat added, removed, or renamed files as high-signal context.
|
|
33
|
+
- When a new file is added, first infer its purpose from:
|
|
34
|
+
1) file path and directory (e.g., docs/, .github/, scripts/, src/, config/)
|
|
35
|
+
2) file name and extension (e.g., CHANGELOG.md, README.md, package.json, *.yml)
|
|
36
|
+
3) how or where it is referenced by other changes in the diff
|
|
37
|
+
- Only after that, use the file contents for details.
|
|
38
|
+
- Do NOT let incidental values inside the file override the primary change.
|
|
39
|
+
|
|
40
|
+
CONTEXT PRIORITY EXAMPLES:
|
|
41
|
+
- 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.
|
|
42
|
+
- For generated or aggregated artifacts (changelog entries, lockfiles, snapshots), summarize the artifact-level change rather than listing internal values.
|
|
43
|
+
|
|
44
|
+
ADDITIONAL CRITICAL RULE (TYPE CONSISTENCY):
|
|
45
|
+
- First, determine ONE primary commit type that best matches the ENTIRE diff.
|
|
46
|
+
- Then, ALL 5 suggested commit messages MUST use the SAME chosen type.
|
|
47
|
+
- Do NOT vary the type across suggestions.
|
|
48
|
+
- Vary only wording, style, emphasis, and optionally scope.
|
|
49
|
+
|
|
50
|
+
Type selection guidance (pick the single best fit for the whole diff):
|
|
51
|
+
- feat: new user-facing capability or new behavior
|
|
52
|
+
- fix: bug fix or incorrect behavior
|
|
53
|
+
- refactor: internal restructuring without behavior change
|
|
54
|
+
- perf: performance improvements
|
|
55
|
+
- docs: documentation-only changes (README, CHANGELOG, /docs)
|
|
56
|
+
- test: test-only changes
|
|
57
|
+
- ci: CI pipeline or workflow changes
|
|
58
|
+
- build: build system or dependency changes
|
|
59
|
+
- chore: maintenance, tooling, or non-functional changes
|
|
60
|
+
- style: formatting-only changes (no logic change)
|
|
61
|
+
If multiple apply, choose the most user-impacting one.
|
|
62
|
+
If unclear, choose chore.
|
|
63
|
+
Type selection must prioritize file context over content details.
|
|
64
|
+
|
|
65
|
+
Avoid overfitting to literal values (versions, numbers, dates) unless the main purpose of the diff is to change those values.
|
|
66
|
+
|
|
67
|
+
CRITICAL RULES:
|
|
68
|
+
1. Format: <CHOSEN_TYPE>(scope)?: description
|
|
69
|
+
2. Valid types: feat, fix, docs, style, refactor, test, chore, perf, ci, build
|
|
70
|
+
3. Use imperative mood (add, fix, update — NOT added, fixed, updated)
|
|
71
|
+
4. Description must start with lowercase
|
|
72
|
+
5. Single-line messages: max 72 characters, no body
|
|
73
|
+
6. Multi-line messages: blank line between subject and body
|
|
74
|
+
7. Output must include exactly:
|
|
75
|
+
- 3 single-line commit messages
|
|
76
|
+
- 2 multi-line commit messages
|
|
77
|
+
8. Each message must summarize ALL changes in the diff
|
|
78
|
+
9. Do NOT output the chosen type separately; it must only appear in the messages.
|
|
79
|
+
|
|
80
|
+
OUTPUT FORMAT:
|
|
81
|
+
- Separate each commit message with exactly "---" on its own line.
|
|
82
|
+
- Return ONLY the commit messages, no explanations, no numbering.
|
|
83
|
+
|
|
84
|
+
${customInstruction ? `USER INSTRUCTION:\n${customInstruction}\n\n` : ''}GIT DIFF:
|
|
85
|
+
${truncatedDiff}
|
|
86
|
+
|
|
87
|
+
Generate exactly 5 commit messages that each describe ALL the changes above:`;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=CommitPromptTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommitPromptTemplate.js","sourceRoot":"","sources":["../../src/config/CommitPromptTemplate.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAa,EAAE,iBAA0B;IACzE,oCAAoC;IACpC,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAE3F,0EAA0E;IAC1E,oFAAoF;IACpF,wEAAwE;IACxE,MAAM,aAAa,GAAG,MAAM,CAAC;IAC7B,MAAM,aAAa,GACjB,YAAY,CAAC,MAAM,GAAG,aAAa;QACjC,CAAC,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa,CAAC,gDAAgD;QAC7F,CAAC,CAAC,YAAY,CAAC;IAEnB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmEP,iBAAiB,CAAC,CAAC,CAAC,sBAAsB,iBAAiB,MAAM,CAAC,CAAC,CAAC,EAAE;EACtE,aAAa;;6EAE8D,CAAC;AAC9E,CAAC"}
|
|
@@ -112,7 +112,7 @@ export class ConfigManager {
|
|
|
112
112
|
throw ConfigurationError.invalidApiKey();
|
|
113
113
|
}
|
|
114
114
|
// Prompt for model selection
|
|
115
|
-
const availableModels = ['gemini-
|
|
115
|
+
const availableModels = ['gemini-3-flash-preview', 'gemini-flash-latest'];
|
|
116
116
|
const model = await ui.promptForModel(availableModels);
|
|
117
117
|
return {
|
|
118
118
|
apiKey,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigManager.js","sourceRoot":"","sources":["../../src/config/ConfigManager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ConfigManager.js","sourceRoot":"","sources":["../../src/config/ConfigManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitService.d.ts","sourceRoot":"","sources":["../../src/git/GitService.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEhE;;GAEG;AACH,qBAAa,UAAU;IACrB;;;;;OAKG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAoD/D;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAYrB;;;;;OAKG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWpD;;;;;OAKG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAyBjD;;;;OAIG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY/C;;;;;;OAMG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAchE;;;;OAIG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUzD;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAK3C;;;;OAIG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAC5C,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;
|
|
1
|
+
{"version":3,"file":"GitService.d.ts","sourceRoot":"","sources":["../../src/git/GitService.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEhE;;GAEG;AACH,qBAAa,UAAU;IACrB;;;;;OAKG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAoD/D;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAYrB;;;;;OAKG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWpD;;;;;OAKG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAyBjD;;;;OAIG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY/C;;;;;;OAMG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAchE;;;;OAIG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUzD;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAK3C;;;;OAIG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAC5C,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IA8BF;;;;;OAKG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,GAAE,MAAiB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAe5F"}
|
package/dist/git/GitService.js
CHANGED
|
@@ -180,11 +180,19 @@ export class GitService {
|
|
|
180
180
|
async getDiffStats(repoPath) {
|
|
181
181
|
try {
|
|
182
182
|
const git = simpleGit(repoPath);
|
|
183
|
-
|
|
183
|
+
// Get staged changes stats
|
|
184
|
+
const stagedSummary = await git.diffSummary(['--cached']);
|
|
185
|
+
// Get unstaged changes stats
|
|
186
|
+
const unstagedSummary = await git.diffSummary();
|
|
187
|
+
// Combine both staged and unstaged stats
|
|
188
|
+
const allFiles = new Set([
|
|
189
|
+
...stagedSummary.files.map((f) => f.file),
|
|
190
|
+
...unstagedSummary.files.map((f) => f.file),
|
|
191
|
+
]);
|
|
184
192
|
return {
|
|
185
|
-
filesChanged:
|
|
186
|
-
insertions:
|
|
187
|
-
deletions:
|
|
193
|
+
filesChanged: allFiles.size,
|
|
194
|
+
insertions: stagedSummary.insertions + unstagedSummary.insertions,
|
|
195
|
+
deletions: stagedSummary.deletions + unstagedSummary.deletions,
|
|
188
196
|
};
|
|
189
197
|
}
|
|
190
198
|
catch (_error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitService.js","sourceRoot":"","sources":["../../src/git/GitService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAkB,SAAS,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/D;;GAEG;AACH,MAAM,OAAO,UAAU;IACrB;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAAC,SAAiB;QACpC,IAAI,CAAC;YACH,iCAAiC;YACjC,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YACrD,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;YAE7C,yCAAyC;YACzC,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAChC,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,kBAAkB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAC3D,CAAC;YAED,iDAAiD;YACjD,IAAI,WAAW,GAAG,YAAY,CAAC;YAC/B,MAAM,IAAI,GAAG,GAAG,CAAC;YAEjB,OAAO,WAAW,KAAK,IAAI,EAAE,CAAC;gBAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;gBAE1C,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACrC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;wBACxB,uBAAuB;wBACvB,OAAO;4BACL,IAAI,EAAE,YAAY;4BAClB,QAAQ,EAAE,WAAW;yBACtB,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,4CAA4C;gBAC9C,CAAC;gBAED,wBAAwB;gBACxB,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;gBACxC,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;oBAC/B,oCAAoC;oBACpC,MAAM;gBACR,CAAC;gBACD,WAAW,GAAG,UAAU,CAAC;YAC3B,CAAC;YAED,0BAA0B;YAC1B,MAAM,kBAAkB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;gBACxC,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,kBAAkB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,aAAa,CAAC,IAAY;QAChC,0BAA0B;QAC1B,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAE1C,0CAA0C;QAC1C,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;YACtB,UAAU,GAAG,GAAG,CAAC;QACnB,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CAAC,QAAgB;QAC/B,IAAI,CAAC;YACH,MAAM,GAAG,GAAc,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;YAC3C,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;QACvB,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAChB,qDAAqD;YACrD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CAAC,QAAgB;QAC5B,IAAI,CAAC;YACH,MAAM,GAAG,GAAc,SAAS,CAAC,QAAQ,CAAC,CAAC;YAE3C,qCAAqC;YACrC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;YAE5C,8BAA8B;YAC9B,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAElC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YAE5D,OAAO;gBACL,MAAM;gBACN,QAAQ;gBACR,UAAU;aACX,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,kBAAkB,CAC1B,gCAAiC,KAAe,CAAC,OAAO,EAAE,EAC1D,mEAAmE,CACpE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,QAAQ,CAAC,QAAgB;QAC7B,IAAI,CAAC;YACH,MAAM,GAAG,GAAc,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,kBAAkB,CAC1B,4BAA6B,KAAe,CAAC,OAAO,EAAE,EACtD,wDAAwD,CACzD,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,OAAe;QAC5C,IAAI,CAAC;YACH,MAAM,GAAG,GAAc,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAEzC,kCAAkC;YAClC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC;YAE9C,OAAO,UAAU,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,kBAAkB,CAAC,YAAY,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,gBAAgB,CAAC,QAAgB;QACrC,IAAI,CAAC;YACH,MAAM,GAAG,GAAc,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;YAC5D,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;QACvB,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAChB,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,QAAgB;QAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC9D,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAAC,QAAgB;QAKjC,IAAI,CAAC;YACH,MAAM,GAAG,GAAc,SAAS,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"GitService.js","sourceRoot":"","sources":["../../src/git/GitService.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,15 +38,15 @@ export declare class MainOrchestrator {
|
|
|
38
38
|
* Generate commit message suggestions using AI
|
|
39
39
|
* @param config Configuration with API key
|
|
40
40
|
* @param diff Git diff
|
|
41
|
+
* @param customInstruction Optional custom instruction for regeneration
|
|
41
42
|
* @returns Array of suggestions
|
|
42
43
|
*/
|
|
43
44
|
private generateSuggestions;
|
|
44
45
|
/**
|
|
45
|
-
* Stage changes
|
|
46
|
+
* Stage all changes in the repository
|
|
46
47
|
* @param repoPath Repository root path
|
|
47
|
-
* @param diff Git diff
|
|
48
48
|
*/
|
|
49
|
-
private
|
|
49
|
+
private stageAllChanges;
|
|
50
50
|
/**
|
|
51
51
|
* Execute Git commit
|
|
52
52
|
* @param repoPath Repository root path
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MainOrchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/MainOrchestrator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAU,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;GAGG;AACH,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAFT,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS;IAGvC;;;OAGG;IACG,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"MainOrchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/MainOrchestrator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAU,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;GAGG;AACH,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAFT,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS;IAGvC;;;OAGG;IACG,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAkEjD;;;;OAIG;YACW,mBAAmB;IAgCjC;;;;OAIG;YACW,yBAAyB;IAgCvC;;;;OAIG;YACW,UAAU;IA0BxB;;;;;;OAMG;YACW,mBAAmB;IAqBjC;;;OAGG;YACW,eAAe;IAY7B;;;;;OAKG;YACW,aAAa;IAe3B;;;OAGG;IACH,OAAO,CAAC,WAAW;CAWpB"}
|
|
@@ -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
|
/**
|