@mehmetsagir/git-ai 0.0.6 → 0.0.9
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/dist/commit-processor.d.ts.map +1 -1
- package/dist/commit-processor.js +117 -46
- package/dist/commit-processor.js.map +1 -1
- package/dist/commit.d.ts.map +1 -1
- package/dist/commit.js +41 -7
- package/dist/commit.js.map +1 -1
- package/dist/git.d.ts +2 -2
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +95 -6
- package/dist/git.js.map +1 -1
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +74 -20
- package/dist/prompts.js.map +1 -1
- package/package.json +7 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commit-processor.d.ts","sourceRoot":"","sources":["../src/commit-processor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"commit-processor.d.ts","sourceRoot":"","sources":["../src/commit-processor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AA4KjE;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,WAAW,EAAE,EACrB,YAAY,EAAE,WAAW,GAAG,IAAI,GAC/B,OAAO,CAAC,YAAY,EAAE,CAAC,CAqGzB"}
|
package/dist/commit-processor.js
CHANGED
|
@@ -44,65 +44,87 @@ const errors_1 = require("./utils/errors");
|
|
|
44
44
|
/**
|
|
45
45
|
* Process and commit a single group
|
|
46
46
|
*/
|
|
47
|
-
async function processCommitGroup(group, selectedUser,
|
|
48
|
-
if (
|
|
49
|
-
console.log(chalk_1.default.yellow(`⚠ Group ${group.number}: No files
|
|
47
|
+
async function processCommitGroup(group, selectedUser, filesToUse, processedFiles) {
|
|
48
|
+
if (filesToUse.length === 0) {
|
|
49
|
+
console.log(chalk_1.default.yellow(`⚠ Group ${group.number}: No files to process, skipping.\n`));
|
|
50
50
|
return { success: false, filesProcessed: [] };
|
|
51
51
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
const stageSpinner = (0, ora_1.default)(`Group ${group.number}: Staging files...`).start();
|
|
72
|
-
try {
|
|
73
|
-
await git.stageFiles(filesToStage);
|
|
74
|
-
stageSpinner.succeed(`Group ${group.number}: Files staged`);
|
|
52
|
+
// Mark files as processed
|
|
53
|
+
filesToUse.forEach((file) => processedFiles.add(file));
|
|
54
|
+
// Check if files are already staged
|
|
55
|
+
const currentlyStaged = await git.getStagedFiles();
|
|
56
|
+
const filesAlreadyStaged = filesToUse.filter((file) => currentlyStaged.includes(file));
|
|
57
|
+
const filesToStage = filesAlreadyStaged.length === filesToUse.length
|
|
58
|
+
? [] // All files already staged
|
|
59
|
+
: filesToUse.filter((file) => !currentlyStaged.includes(file));
|
|
60
|
+
// Stage files if needed
|
|
61
|
+
if (filesToStage.length > 0) {
|
|
62
|
+
const stageSpinner = (0, ora_1.default)(`Group ${group.number}: Staging ${filesToStage.length} file(s)...`).start();
|
|
63
|
+
try {
|
|
64
|
+
await git.stageFiles(filesToStage);
|
|
65
|
+
stageSpinner.succeed(`Group ${group.number}: Files staged`);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
stageSpinner.fail(`Group ${group.number}: Error staging files: ${(0, errors_1.getErrorMessage)(error)}`);
|
|
69
|
+
return { success: false, filesProcessed: filesToUse };
|
|
70
|
+
}
|
|
75
71
|
}
|
|
76
|
-
|
|
77
|
-
stageSpinner.fail(`Group ${group.number}: Error staging files: ${(0, errors_1.getErrorMessage)(error)}`);
|
|
78
|
-
return { success: false, filesProcessed: filesToStage };
|
|
72
|
+
else if (filesAlreadyStaged.length > 0) {
|
|
79
73
|
}
|
|
80
74
|
// Set git user before committing (local scope to not affect global config)
|
|
81
75
|
if (selectedUser?.name && selectedUser?.email) {
|
|
82
76
|
try {
|
|
83
|
-
await git.
|
|
77
|
+
const currentUser = await git.getGitUserInfo();
|
|
78
|
+
const needsChange = currentUser.name !== selectedUser.name ||
|
|
79
|
+
currentUser.email !== selectedUser.email;
|
|
80
|
+
if (needsChange) {
|
|
81
|
+
await git.setGitUser(selectedUser.name, selectedUser.email, "local");
|
|
82
|
+
console.log(chalk_1.default.green(`✓ Group ${group.number}: Git user changed to ${selectedUser.name} <${selectedUser.email}>\n`));
|
|
83
|
+
}
|
|
84
84
|
}
|
|
85
85
|
catch (error) {
|
|
86
|
-
console.log(chalk_1.default.yellow(`⚠ Group ${group.number}:
|
|
86
|
+
console.log(chalk_1.default.yellow(`⚠ Group ${group.number}: Failed to set git user: ${(0, errors_1.getErrorMessage)(error)}\n`));
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
const fullMessage = group.commitBody
|
|
90
90
|
? `${group.commitMessage}\n\n${group.commitBody}`
|
|
91
91
|
: group.commitMessage;
|
|
92
|
+
// Verify only the intended files are staged before committing
|
|
93
|
+
const stagedBeforeCommit = await git.getStagedFiles();
|
|
94
|
+
const unexpectedStaged = stagedBeforeCommit.filter((file) => !filesToUse.includes(file));
|
|
95
|
+
if (unexpectedStaged.length > 0) {
|
|
96
|
+
console.log(chalk_1.default.yellow(`⚠ Group ${group.number}: Fixing staging (unexpected files detected)\n`));
|
|
97
|
+
try {
|
|
98
|
+
await git.unstageAll();
|
|
99
|
+
if (filesToUse.length > 0) {
|
|
100
|
+
await git.stageFiles(filesToUse);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
console.log(chalk_1.default.yellow(`⚠ Group ${group.number}: Staging fix failed: ${(0, errors_1.getErrorMessage)(error)}\n`));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// Final check - ensure we have files to commit
|
|
108
|
+
const finalStaged = await git.getStagedFiles();
|
|
109
|
+
if (finalStaged.length === 0) {
|
|
110
|
+
console.log(chalk_1.default.yellow(`⚠ Group ${group.number}: No files staged, skipping commit.\n`));
|
|
111
|
+
return { success: false, filesProcessed: filesToUse };
|
|
112
|
+
}
|
|
92
113
|
const commitSpinner = (0, ora_1.default)(`Group ${group.number}: Creating commit "${group.commitMessage}"...`).start();
|
|
93
114
|
try {
|
|
94
115
|
await git.createCommit(fullMessage, selectedUser?.name || null, selectedUser?.email || null);
|
|
95
116
|
// Verify the commit was made with the correct user
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
(currentUser.name !== selectedUser.name ||
|
|
99
|
-
currentUser.email !== selectedUser.email)
|
|
100
|
-
|
|
117
|
+
if (selectedUser) {
|
|
118
|
+
const currentUser = await git.getGitUserInfo();
|
|
119
|
+
if (currentUser.name !== selectedUser.name ||
|
|
120
|
+
currentUser.email !== selectedUser.email) {
|
|
121
|
+
console.log(chalk_1.default.yellow(`⚠ Group ${group.number}: User mismatch (expected: ${selectedUser.name}, got: ${currentUser.name})\n`));
|
|
122
|
+
}
|
|
101
123
|
}
|
|
102
124
|
commitSpinner.succeed(`Group ${group.number}: Committed - ${group.commitMessage}`);
|
|
103
125
|
return {
|
|
104
126
|
success: true,
|
|
105
|
-
filesProcessed:
|
|
127
|
+
filesProcessed: filesToUse,
|
|
106
128
|
message: group.commitMessage,
|
|
107
129
|
};
|
|
108
130
|
}
|
|
@@ -111,7 +133,7 @@ async function processCommitGroup(group, selectedUser, remainingFiles, processed
|
|
|
111
133
|
commitSpinner.fail(`Group ${group.number}: Commit error - ${errorMessage}`);
|
|
112
134
|
return {
|
|
113
135
|
success: false,
|
|
114
|
-
filesProcessed:
|
|
136
|
+
filesProcessed: filesToUse,
|
|
115
137
|
message: group.commitMessage,
|
|
116
138
|
error: errorMessage,
|
|
117
139
|
};
|
|
@@ -122,19 +144,67 @@ async function processCommitGroup(group, selectedUser, remainingFiles, processed
|
|
|
122
144
|
*/
|
|
123
145
|
async function processAllCommitGroups(groups, selectedUser) {
|
|
124
146
|
const prepareSpinner = (0, ora_1.default)("Preparing files...").start();
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
147
|
+
// Check if there are already staged files
|
|
148
|
+
const initialStaged = await git.getStagedFiles();
|
|
149
|
+
const hasStagedFiles = initialStaged.length > 0;
|
|
150
|
+
if (!hasStagedFiles) {
|
|
151
|
+
try {
|
|
152
|
+
await git.unstageAll();
|
|
153
|
+
prepareSpinner.succeed("Ready");
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
prepareSpinner.fail(`Error: ${(0, errors_1.getErrorMessage)(error)}`);
|
|
157
|
+
}
|
|
128
158
|
}
|
|
129
|
-
|
|
130
|
-
prepareSpinner.
|
|
159
|
+
else {
|
|
160
|
+
prepareSpinner.succeed(`${initialStaged.length} staged file(s) ready`);
|
|
131
161
|
}
|
|
132
162
|
const commitResults = [];
|
|
133
|
-
let remainingFiles = await git.getAllChangedFiles();
|
|
134
163
|
const processedFiles = new Set();
|
|
135
164
|
console.log(chalk_1.default.blue(`\n📦 Creating ${groups.length} commits...\n`));
|
|
136
165
|
for (const group of groups) {
|
|
137
|
-
|
|
166
|
+
// Get current git status - this will exclude already committed files
|
|
167
|
+
const currentStaged = await git.getStagedFiles();
|
|
168
|
+
const currentChanged = await git.getAllChangedFiles();
|
|
169
|
+
// If there are staged files, use them for this commit
|
|
170
|
+
// Otherwise, use unstaged files from the group
|
|
171
|
+
let filesToUse = [];
|
|
172
|
+
if (currentStaged.length > 0 && processedFiles.size === 0) {
|
|
173
|
+
// First group and we have staged files - use them
|
|
174
|
+
filesToUse = currentStaged;
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
// Get remaining files (exclude already processed ones)
|
|
178
|
+
const remainingFiles = currentChanged.filter((file) => !processedFiles.has(file));
|
|
179
|
+
// Match group files with remaining files
|
|
180
|
+
const groupFiles = group.files
|
|
181
|
+
.map((file) => {
|
|
182
|
+
const normalizedFile = file.replace(/^\.\//, "").replace(/^\//, "");
|
|
183
|
+
return remainingFiles.find((changed) => {
|
|
184
|
+
const normalizedChanged = changed
|
|
185
|
+
.replace(/^\.\//, "")
|
|
186
|
+
.replace(/^\//, "");
|
|
187
|
+
return (normalizedChanged === normalizedFile ||
|
|
188
|
+
normalizedChanged.endsWith(normalizedFile) ||
|
|
189
|
+
normalizedFile.endsWith(normalizedChanged));
|
|
190
|
+
});
|
|
191
|
+
})
|
|
192
|
+
.filter((file) => Boolean(file));
|
|
193
|
+
filesToUse =
|
|
194
|
+
groupFiles.length > 0 ? groupFiles : remainingFiles.slice(0, 1);
|
|
195
|
+
}
|
|
196
|
+
if (filesToUse.length === 0) {
|
|
197
|
+
console.log(chalk_1.default.yellow(`⚠ Group ${group.number}: No files available, skipping.\n`));
|
|
198
|
+
commitResults.push({
|
|
199
|
+
group: group.number,
|
|
200
|
+
message: group.commitMessage,
|
|
201
|
+
files: 0,
|
|
202
|
+
success: false,
|
|
203
|
+
error: "No files available",
|
|
204
|
+
});
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
207
|
+
const result = await processCommitGroup(group, selectedUser, filesToUse, processedFiles);
|
|
138
208
|
commitResults.push({
|
|
139
209
|
group: group.number,
|
|
140
210
|
message: result.message || group.commitMessage,
|
|
@@ -142,7 +212,8 @@ async function processAllCommitGroups(groups, selectedUser) {
|
|
|
142
212
|
success: result.success,
|
|
143
213
|
error: result.error,
|
|
144
214
|
});
|
|
145
|
-
|
|
215
|
+
// After each commit, unstage any remaining staged files
|
|
216
|
+
// This ensures the next group only stages its own files
|
|
146
217
|
try {
|
|
147
218
|
await git.unstageAll();
|
|
148
219
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commit-processor.js","sourceRoot":"","sources":["../src/commit-processor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"commit-processor.js","sourceRoot":"","sources":["../src/commit-processor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkLA,wDAwGC;AA1RD,kDAA0B;AAC1B,8CAAsB;AACtB,2CAA6B;AAE7B,2CAAiD;AASjD;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAC/B,KAAkB,EAClB,YAAgC,EAChC,UAAoB,EACpB,cAA2B;IAE3B,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,MAAM,CAAC,WAAW,KAAK,CAAC,MAAM,oCAAoC,CAAC,CAC1E,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;IAChD,CAAC;IAED,0BAA0B;IAC1B,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAEvD,oCAAoC;IACpC,MAAM,eAAe,GAAG,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC;IACnD,MAAM,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACpD,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC/B,CAAC;IAEF,MAAM,YAAY,GAChB,kBAAkB,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM;QAC7C,CAAC,CAAC,EAAE,CAAC,2BAA2B;QAChC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAEnE,wBAAwB;IACxB,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,YAAY,GAAG,IAAA,aAAG,EACtB,SAAS,KAAK,CAAC,MAAM,aAAa,YAAY,CAAC,MAAM,aAAa,CACnE,CAAC,KAAK,EAAE,CAAC;QACV,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YACnC,YAAY,CAAC,OAAO,CAAC,SAAS,KAAK,CAAC,MAAM,gBAAgB,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,IAAI,CACf,SAAS,KAAK,CAAC,MAAM,0BAA0B,IAAA,wBAAe,EAAC,KAAK,CAAC,EAAE,CACxE,CAAC;YACF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;QACxD,CAAC;IACH,CAAC;SAAM,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IAC3C,CAAC;IAED,2EAA2E;IAC3E,IAAI,YAAY,EAAE,IAAI,IAAI,YAAY,EAAE,KAAK,EAAE,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC;YAC/C,MAAM,WAAW,GACf,WAAW,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI;gBACtC,WAAW,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,CAAC;YAE3C,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBACrE,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,KAAK,CACT,WAAW,KAAK,CAAC,MAAM,yBAAyB,YAAY,CAAC,IAAI,KAAK,YAAY,CAAC,KAAK,KAAK,CAC9F,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,MAAM,CACV,WAAW,KAAK,CAAC,MAAM,6BAA6B,IAAA,wBAAe,EACjE,KAAK,CACN,IAAI,CACN,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU;QAClC,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,OAAO,KAAK,CAAC,UAAU,EAAE;QACjD,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;IAExB,8DAA8D;IAC9D,MAAM,kBAAkB,GAAG,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC;IACtD,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,MAAM,CAChD,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CACrC,CAAC;IAEF,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,MAAM,CACV,WAAW,KAAK,CAAC,MAAM,gDAAgD,CACxE,CACF,CAAC;QACF,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,UAAU,EAAE,CAAC;YACvB,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,MAAM,CACV,WAAW,KAAK,CAAC,MAAM,yBAAyB,IAAA,wBAAe,EAC7D,KAAK,CACN,IAAI,CACN,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,+CAA+C;IAC/C,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC;IAC/C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,MAAM,CACV,WAAW,KAAK,CAAC,MAAM,uCAAuC,CAC/D,CACF,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;IACxD,CAAC;IAED,MAAM,aAAa,GAAG,IAAA,aAAG,EACvB,SAAS,KAAK,CAAC,MAAM,sBAAsB,KAAK,CAAC,aAAa,MAAM,CACrE,CAAC,KAAK,EAAE,CAAC;IACV,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,YAAY,CACpB,WAAW,EACX,YAAY,EAAE,IAAI,IAAI,IAAI,EAC1B,YAAY,EAAE,KAAK,IAAI,IAAI,CAC5B,CAAC;QAEF,mDAAmD;QACnD,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC;YAC/C,IACE,WAAW,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI;gBACtC,WAAW,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,EACxC,CAAC;gBACD,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,MAAM,CACV,WAAW,KAAK,CAAC,MAAM,8BAA8B,YAAY,CAAC,IAAI,UAAU,WAAW,CAAC,IAAI,KAAK,CACtG,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,aAAa,CAAC,OAAO,CACnB,SAAS,KAAK,CAAC,MAAM,iBAAiB,KAAK,CAAC,aAAa,EAAE,CAC5D,CAAC;QACF,OAAO;YACL,OAAO,EAAE,IAAI;YACb,cAAc,EAAE,UAAU;YAC1B,OAAO,EAAE,KAAK,CAAC,aAAa;SAC7B,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,IAAA,wBAAe,EAAC,KAAK,CAAC,CAAC;QAC5C,aAAa,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,oBAAoB,YAAY,EAAE,CAAC,CAAC;QAC5E,OAAO;YACL,OAAO,EAAE,KAAK;YACd,cAAc,EAAE,UAAU;YAC1B,OAAO,EAAE,KAAK,CAAC,aAAa;YAC5B,KAAK,EAAE,YAAY;SACpB,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,sBAAsB,CAC1C,MAAqB,EACrB,YAAgC;IAEhC,MAAM,cAAc,GAAG,IAAA,aAAG,EAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEzD,0CAA0C;IAC1C,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC;IACjD,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;IAEhD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,UAAU,EAAE,CAAC;YACvB,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,cAAc,CAAC,IAAI,CAAC,UAAU,IAAA,wBAAe,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;SAAM,CAAC;QACN,cAAc,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,MAAM,uBAAuB,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,aAAa,GAAmB,EAAE,CAAC;IACzC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IAEzC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC;IAEvE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,qEAAqE;QACrE,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC;QACjD,MAAM,cAAc,GAAG,MAAM,GAAG,CAAC,kBAAkB,EAAE,CAAC;QAEtD,sDAAsD;QACtD,+CAA+C;QAC/C,IAAI,UAAU,GAAa,EAAE,CAAC;QAE9B,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC1D,kDAAkD;YAClD,UAAU,GAAG,aAAa,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,uDAAuD;YACvD,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAC1C,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CACpC,CAAC;YAEF,yCAAyC;YACzC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK;iBAC3B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACZ,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACpE,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;oBACrC,MAAM,iBAAiB,GAAG,OAAO;yBAC9B,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;yBACpB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBACtB,OAAO,CACL,iBAAiB,KAAK,cAAc;wBACpC,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC;wBAC1C,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAC3C,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;iBACD,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YAEnD,UAAU;gBACR,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,MAAM,CAAC,WAAW,KAAK,CAAC,MAAM,mCAAmC,CAAC,CACzE,CAAC;YACF,aAAa,CAAC,IAAI,CAAC;gBACjB,KAAK,EAAE,KAAK,CAAC,MAAM;gBACnB,OAAO,EAAE,KAAK,CAAC,aAAa;gBAC5B,KAAK,EAAE,CAAC;gBACR,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,oBAAoB;aAC5B,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACrC,KAAK,EACL,YAAY,EACZ,UAAU,EACV,cAAc,CACf,CAAC;QAEF,aAAa,CAAC,IAAI,CAAC;YACjB,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,aAAa;YAC9C,KAAK,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC;YACzC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC,CAAC;QAEH,wDAAwD;QACxD,wDAAwD;QACxD,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,UAAU,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,yBAAyB;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC"}
|
package/dist/commit.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commit.d.ts","sourceRoot":"","sources":["../src/commit.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,wBAAsB,SAAS,CAAC,QAAQ,GAAE,MAAM,GAAG,IAAW,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"commit.d.ts","sourceRoot":"","sources":["../src/commit.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,wBAAsB,SAAS,CAAC,QAAQ,GAAE,MAAM,GAAG,IAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA4U7E"}
|
package/dist/commit.js
CHANGED
|
@@ -82,7 +82,7 @@ async function runCommit(userFlag = null) {
|
|
|
82
82
|
name: currentUser.name,
|
|
83
83
|
email: currentUser.email,
|
|
84
84
|
};
|
|
85
|
-
console.log(chalk_1.default.blue(`
|
|
85
|
+
console.log(chalk_1.default.blue(`Git user: ${currentUser.name} <${currentUser.email}>\n`));
|
|
86
86
|
}
|
|
87
87
|
else {
|
|
88
88
|
console.log(chalk_1.default.red("❌ Could not get git user info!\n"));
|
|
@@ -123,7 +123,7 @@ async function runCommit(userFlag = null) {
|
|
|
123
123
|
const shortcutInfo = foundUser.shortcut
|
|
124
124
|
? chalk_1.default.yellow(` (shortcut: ${foundUser.shortcut})`)
|
|
125
125
|
: "";
|
|
126
|
-
console.log(chalk_1.default.blue(`Git user
|
|
126
|
+
console.log(chalk_1.default.blue(`Git user: ${foundUser.name} <${foundUser.email}>${shortcutInfo}\n`));
|
|
127
127
|
}
|
|
128
128
|
else {
|
|
129
129
|
const defaultUserId = config.getDefaultGitUser();
|
|
@@ -163,7 +163,7 @@ async function runCommit(userFlag = null) {
|
|
|
163
163
|
};
|
|
164
164
|
}
|
|
165
165
|
if (selectedUser) {
|
|
166
|
-
console.log(chalk_1.default.blue(`Git user
|
|
166
|
+
console.log(chalk_1.default.blue(`Git user: ${selectedUser.name} <${selectedUser.email}>\n`));
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
169
|
}
|
|
@@ -173,26 +173,60 @@ async function runCommit(userFlag = null) {
|
|
|
173
173
|
const currentGitUser = await git.getGitUserInfo();
|
|
174
174
|
if (currentGitUser.name !== selectedUser.name ||
|
|
175
175
|
currentGitUser.email !== selectedUser.email) {
|
|
176
|
-
console.log(chalk_1.default.yellow(`⚠
|
|
177
|
-
console.log(chalk_1.default.blue(` Git AI will set the user to ${selectedUser.name} <${selectedUser.email}> before committing.\n`));
|
|
176
|
+
console.log(chalk_1.default.yellow(`⚠ Git user will be changed to: ${selectedUser.name} <${selectedUser.email}>\n`));
|
|
178
177
|
}
|
|
179
178
|
}
|
|
180
179
|
catch (error) {
|
|
181
180
|
// Continue even if we can't verify
|
|
182
181
|
}
|
|
183
182
|
}
|
|
183
|
+
// Check git status and inform user
|
|
184
|
+
const stagedFiles = await git.getStagedFiles();
|
|
185
|
+
const allChangedFiles = await git.getAllChangedFiles();
|
|
186
|
+
const unstagedFiles = allChangedFiles.filter((file) => !stagedFiles.includes(file));
|
|
187
|
+
if (stagedFiles.length > 0) {
|
|
188
|
+
console.log(chalk_1.default.blue(`📦 Found ${stagedFiles.length} staged file(s). These will be analyzed and committed.\n`));
|
|
189
|
+
if (unstagedFiles.length > 0) {
|
|
190
|
+
console.log(chalk_1.default.blue(`📝 Also found ${unstagedFiles.length} unstaged file(s). These will be analyzed together.\n`));
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
else if (unstagedFiles.length > 0) {
|
|
194
|
+
console.log(chalk_1.default.blue(`📝 No staged files. Found ${unstagedFiles.length} unstaged file(s). These will be analyzed and committed.\n`));
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
console.log(chalk_1.default.yellow("⚠ No changes found to commit.\n"));
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
184
200
|
const diffSpinner = (0, ora_1.default)("Analyzing changes...").start();
|
|
185
201
|
let diffData;
|
|
186
202
|
try {
|
|
187
203
|
diffData = await git.getAllDiff();
|
|
204
|
+
// Check if we have actual diff content
|
|
205
|
+
const hasStaged = diffData.staged && diffData.staged.trim().length > 0;
|
|
206
|
+
const hasUnstaged = diffData.unstaged && diffData.unstaged.trim().length > 0;
|
|
207
|
+
if (!hasStaged && !hasUnstaged) {
|
|
208
|
+
diffSpinner.fail("No diff content found");
|
|
209
|
+
console.log(chalk_1.default.yellow(`ℹ Found ${allChangedFiles.length} file(s) but no diff content (may be renames/permissions only).\n`));
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
// Combine staged and unstaged diffs
|
|
213
|
+
if (!hasStaged && hasUnstaged) {
|
|
214
|
+
diffData.all = diffData.unstaged;
|
|
215
|
+
}
|
|
216
|
+
else if (hasStaged && !hasUnstaged) {
|
|
217
|
+
diffData.all = diffData.staged;
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
diffData.all = `${diffData.staged}\n${diffData.unstaged}`.trim();
|
|
221
|
+
}
|
|
188
222
|
diffSpinner.succeed("Changes analyzed");
|
|
189
223
|
}
|
|
190
224
|
catch (error) {
|
|
191
|
-
diffSpinner.fail(`Error
|
|
225
|
+
diffSpinner.fail(`Error: ${(0, errors_1.getErrorMessage)(error)}`);
|
|
192
226
|
return;
|
|
193
227
|
}
|
|
194
228
|
if (!diffData.all || diffData.all.trim().length === 0) {
|
|
195
|
-
diffSpinner.fail("No diff found to analyze");
|
|
229
|
+
diffSpinner.fail("No diff content found to analyze");
|
|
196
230
|
return;
|
|
197
231
|
}
|
|
198
232
|
const aiSpinner = (0, ora_1.default)("🤖 Analyzing diff with OpenAI and creating commit groups...").start();
|
package/dist/commit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commit.js","sourceRoot":"","sources":["../src/commit.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,
|
|
1
|
+
{"version":3,"file":"commit.js","sourceRoot":"","sources":["../src/commit.ts"],"names":[],"mappings":"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"}
|
package/dist/git.d.ts
CHANGED
|
@@ -4,11 +4,11 @@ import { DiffData, GitUserInfo, GitUserProfile } from "./types";
|
|
|
4
4
|
*/
|
|
5
5
|
export declare function getStagedDiff(): Promise<string>;
|
|
6
6
|
/**
|
|
7
|
-
* Get unstaged changes
|
|
7
|
+
* Get unstaged changes (including new files)
|
|
8
8
|
*/
|
|
9
9
|
export declare function getUnstagedDiff(): Promise<string>;
|
|
10
10
|
/**
|
|
11
|
-
* Get all changes (staged + unstaged)
|
|
11
|
+
* Get all changes (staged + unstaged, including new files)
|
|
12
12
|
*/
|
|
13
13
|
export declare function getAllDiff(): Promise<DiffData>;
|
|
14
14
|
/**
|
package/dist/git.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAUhE;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAQrD;AAoBD;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAsBvD;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,QAAQ,CAAC,CA2CpD;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAQnD;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAkB3D;AAED;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CA8DvE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,QAAQ,GAAG,OAAiB,GAClC,OAAO,CAAC,OAAO,CAAC,CASlB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAQlE;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAQnD;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,MAAM,GAAG,IAAW,EAChC,WAAW,GAAE,MAAM,GAAG,IAAW,GAChC,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAQxD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAQ5D;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAQxD"}
|
package/dist/git.js
CHANGED
|
@@ -1,4 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
37
|
};
|
|
@@ -17,6 +50,8 @@ exports.getStagedFiles = getStagedFiles;
|
|
|
17
50
|
exports.getAllChangedFiles = getAllChangedFiles;
|
|
18
51
|
exports.isGitRepository = isGitRepository;
|
|
19
52
|
const simple_git_1 = __importDefault(require("simple-git"));
|
|
53
|
+
const fs = __importStar(require("fs"));
|
|
54
|
+
const path = __importStar(require("path"));
|
|
20
55
|
const errors_1 = require("./utils/errors");
|
|
21
56
|
/**
|
|
22
57
|
* Create git repository instance
|
|
@@ -38,29 +73,83 @@ async function getStagedDiff() {
|
|
|
38
73
|
}
|
|
39
74
|
}
|
|
40
75
|
/**
|
|
41
|
-
* Get
|
|
76
|
+
* Get diff for a new (untracked) file
|
|
77
|
+
*/
|
|
78
|
+
function getNewFileDiff(filePath) {
|
|
79
|
+
try {
|
|
80
|
+
const fullPath = path.resolve(process.cwd(), filePath);
|
|
81
|
+
if (!fs.existsSync(fullPath)) {
|
|
82
|
+
return "";
|
|
83
|
+
}
|
|
84
|
+
const content = fs.readFileSync(fullPath, "utf8");
|
|
85
|
+
const lines = content.split("\n");
|
|
86
|
+
const diffLines = lines.map((line) => `+${line}`);
|
|
87
|
+
return `diff --git a/${filePath} b/${filePath}\nnew file mode 100644\nindex 0000000..1111111\n--- /dev/null\n+++ b/${filePath}\n${diffLines.join("\n")}`;
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
return "";
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Get unstaged changes (including new files)
|
|
42
95
|
*/
|
|
43
96
|
async function getUnstagedDiff() {
|
|
44
97
|
try {
|
|
45
98
|
const git = getGitInstance();
|
|
46
|
-
const
|
|
47
|
-
|
|
99
|
+
const status = await git.status();
|
|
100
|
+
// Get diff for tracked modified files
|
|
101
|
+
const trackedDiff = await git.diff();
|
|
102
|
+
// Get diff for new (untracked) files
|
|
103
|
+
const newFiles = status.not_added || [];
|
|
104
|
+
const newFilesDiff = newFiles
|
|
105
|
+
.map((file) => getNewFileDiff(file))
|
|
106
|
+
.filter((diff) => diff.length > 0)
|
|
107
|
+
.join("\n\n");
|
|
108
|
+
if (trackedDiff && newFilesDiff) {
|
|
109
|
+
return `${trackedDiff}\n\n${newFilesDiff}`;
|
|
110
|
+
}
|
|
111
|
+
return trackedDiff || newFilesDiff;
|
|
48
112
|
}
|
|
49
113
|
catch (error) {
|
|
50
114
|
throw new Error(`Error getting unstaged diff: ${(0, errors_1.getErrorMessage)(error)}`);
|
|
51
115
|
}
|
|
52
116
|
}
|
|
53
117
|
/**
|
|
54
|
-
* Get all changes (staged + unstaged)
|
|
118
|
+
* Get all changes (staged + unstaged, including new files)
|
|
55
119
|
*/
|
|
56
120
|
async function getAllDiff() {
|
|
57
121
|
try {
|
|
122
|
+
const git = getGitInstance();
|
|
123
|
+
const status = await git.status();
|
|
124
|
+
// Get staged diff
|
|
58
125
|
const staged = await getStagedDiff();
|
|
126
|
+
// Get unstaged diff (includes new files)
|
|
59
127
|
const unstaged = await getUnstagedDiff();
|
|
128
|
+
// Also check for new files in staged area
|
|
129
|
+
// New files are those in not_added that might have been staged
|
|
130
|
+
const stagedNewFiles = [];
|
|
131
|
+
const allNewFiles = status.not_added || [];
|
|
132
|
+
const stagedFiles = status.staged || [];
|
|
133
|
+
// Check if any new files are also in staged (shouldn't happen, but check anyway)
|
|
134
|
+
for (const file of stagedFiles) {
|
|
135
|
+
if (allNewFiles.includes(file)) {
|
|
136
|
+
stagedNewFiles.push(file);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
let stagedWithNew = staged;
|
|
140
|
+
if (stagedNewFiles.length > 0) {
|
|
141
|
+
const stagedNewFilesDiff = stagedNewFiles
|
|
142
|
+
.map((file) => getNewFileDiff(file))
|
|
143
|
+
.filter((diff) => diff.length > 0)
|
|
144
|
+
.join("\n\n");
|
|
145
|
+
if (stagedNewFilesDiff) {
|
|
146
|
+
stagedWithNew = staged ? `${staged}\n\n${stagedNewFilesDiff}` : stagedNewFilesDiff;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
60
149
|
return {
|
|
61
|
-
staged,
|
|
150
|
+
staged: stagedWithNew,
|
|
62
151
|
unstaged,
|
|
63
|
-
all: `${
|
|
152
|
+
all: `${stagedWithNew}\n${unstaged}`.trim(),
|
|
64
153
|
};
|
|
65
154
|
}
|
|
66
155
|
catch (error) {
|
package/dist/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"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"}
|
package/dist/prompts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,CA6FpD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAuB9D;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,CAoBpD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAY9D"}
|
package/dist/prompts.js
CHANGED
|
@@ -10,12 +10,53 @@ exports.getSingleCommitUserPrompt = getSingleCommitUserPrompt;
|
|
|
10
10
|
function getDiffAnalysisSystemPrompt() {
|
|
11
11
|
return `You are a git commit expert. You analyze git diffs, group them logically, and create Conventional Commits standard commit messages for each group.
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
CRITICAL GROUPING PRINCIPLES (MUST FOLLOW):
|
|
14
|
+
|
|
15
|
+
1. **Group Related Files Together**:
|
|
16
|
+
- Files that implement the same feature MUST be in the same commit
|
|
17
|
+
- Files that import/use each other MUST be in the same commit
|
|
18
|
+
- Test files MUST be with their corresponding source files
|
|
19
|
+
- Configuration files related to a feature MUST be with that feature
|
|
20
|
+
- Example: If you add a UserService, put UserService.ts, UserService.test.ts, and user.types.ts together
|
|
21
|
+
|
|
22
|
+
2. **Respect Dependencies**:
|
|
23
|
+
- Base/utility files that other files depend on should be committed FIRST
|
|
24
|
+
- Files that depend on others should be committed AFTER their dependencies
|
|
25
|
+
- Example: If types.ts is used by service.ts, commit types.ts first, then service.ts
|
|
26
|
+
|
|
27
|
+
3. **Feature-Based Grouping**:
|
|
28
|
+
- Group by feature/module (authentication, payment, user management, etc.)
|
|
29
|
+
- Group by component area (UI components, API endpoints, database models)
|
|
30
|
+
- Group by layer (models, services, controllers, views)
|
|
31
|
+
|
|
32
|
+
4. **Type-Based Grouping** (when features are unrelated):
|
|
33
|
+
- All documentation changes together
|
|
34
|
+
- All test files together (if not related to specific features)
|
|
35
|
+
- All style/formatting changes together
|
|
36
|
+
- All configuration changes together
|
|
37
|
+
|
|
38
|
+
5. **Atomic Commits**:
|
|
39
|
+
- Each commit should represent ONE complete, logical change
|
|
40
|
+
- Each commit should leave the codebase in a working state
|
|
41
|
+
- Avoid mixing unrelated changes in one commit
|
|
42
|
+
|
|
43
|
+
6. **Optimal Grouping Strategy**:
|
|
44
|
+
- MAXIMIZE grouping: Put as many related files together as possible
|
|
45
|
+
- MINIMIZE commits: Create fewer, well-grouped commits rather than many tiny commits
|
|
46
|
+
- Only create separate commits when files are truly unrelated
|
|
47
|
+
- If 10 files are all part of one feature, they should be ONE commit, not 10
|
|
48
|
+
|
|
49
|
+
GROUPING EXAMPLES:
|
|
50
|
+
|
|
51
|
+
✅ GOOD GROUPING:
|
|
52
|
+
- Group 1: Authentication feature (auth.ts, auth.test.ts, auth.types.ts, auth.config.ts) - 4 files, 1 commit
|
|
53
|
+
- Group 2: User profile feature (profile.ts, profile.test.ts, profile.types.ts) - 3 files, 1 commit
|
|
54
|
+
|
|
55
|
+
❌ BAD GROUPING:
|
|
56
|
+
- Group 1: auth.ts - 1 file
|
|
57
|
+
- Group 2: auth.test.ts - 1 file
|
|
58
|
+
- Group 3: auth.types.ts - 1 file
|
|
59
|
+
(This is wrong! These are related and should be ONE commit)
|
|
19
60
|
|
|
20
61
|
Conventional Commits format:
|
|
21
62
|
<type>(<scope>): <subject>
|
|
@@ -33,30 +74,28 @@ Types:
|
|
|
33
74
|
- test: Tests
|
|
34
75
|
- chore: Maintenance tasks
|
|
35
76
|
|
|
36
|
-
Create groups based on these criteria:
|
|
37
|
-
- **Feature area** (e.g., authentication, UI components, API endpoints)
|
|
38
|
-
- **Type of change** (new feature, bug fix, refactor, style, documentation)
|
|
39
|
-
- **Related functionality** (files that work together)
|
|
40
|
-
- **Dependencies** (changes that depend on each other should be in the same commit)
|
|
41
|
-
|
|
42
77
|
Each commit group must contain:
|
|
43
|
-
1. Group number
|
|
44
|
-
2. Group description (what
|
|
45
|
-
3. File list (full file paths)
|
|
78
|
+
1. Group number (sequential: 1, 2, 3...)
|
|
79
|
+
2. Group description (what feature/change this represents)
|
|
80
|
+
3. File list (full file paths - ALL related files together)
|
|
46
81
|
4. Commit message in Conventional Commits format
|
|
47
82
|
5. Commit message body (detailed description of changes)
|
|
48
83
|
|
|
49
|
-
IMPORTANT:
|
|
84
|
+
IMPORTANT:
|
|
85
|
+
- Each group will be created as a SEPARATE COMMIT
|
|
86
|
+
- Group files MAXIMALLY - put all related files together
|
|
87
|
+
- Only separate into different commits if files are truly unrelated
|
|
88
|
+
- Order groups by dependencies (base files first, dependent files later)
|
|
50
89
|
|
|
51
90
|
Respond in JSON format:
|
|
52
91
|
{
|
|
53
92
|
"groups": [
|
|
54
93
|
{
|
|
55
94
|
"number": 1,
|
|
56
|
-
"description": "
|
|
57
|
-
"files": ["src/auth.ts", "src/auth.test.ts"],
|
|
95
|
+
"description": "Authentication feature implementation",
|
|
96
|
+
"files": ["src/auth.ts", "src/auth.test.ts", "src/auth.types.ts", "src/auth.config.ts"],
|
|
58
97
|
"commitMessage": "feat(auth): add OAuth2 authentication support",
|
|
59
|
-
"commitBody": "
|
|
98
|
+
"commitBody": "Implemented complete OAuth2 authentication flow. Added authentication service, types, configuration, and comprehensive tests."
|
|
60
99
|
}
|
|
61
100
|
],
|
|
62
101
|
"summary": "Total X groups, Y file changes"
|
|
@@ -66,12 +105,27 @@ Respond in JSON format:
|
|
|
66
105
|
* Get user prompt for diff analysis
|
|
67
106
|
*/
|
|
68
107
|
function getDiffAnalysisUserPrompt(diff) {
|
|
69
|
-
return `Analyze the following git diff and group it into logical commit groups.
|
|
108
|
+
return `Analyze the following git diff and group it into logical commit groups.
|
|
109
|
+
|
|
110
|
+
CRITICAL INSTRUCTIONS:
|
|
111
|
+
1. **MAXIMIZE GROUPING**: Put ALL related files together in the same commit
|
|
112
|
+
2. **Identify relationships**: Look for imports, shared functionality, feature boundaries
|
|
113
|
+
3. **Group by feature first**: If files are part of the same feature, they MUST be in one commit
|
|
114
|
+
4. **Minimize commit count**: Only create separate commits when files are truly unrelated
|
|
115
|
+
5. **Order by dependencies**: Commit base/utility files before files that use them
|
|
116
|
+
|
|
117
|
+
Analyze file relationships:
|
|
118
|
+
- Do files import each other? → Same commit
|
|
119
|
+
- Do files implement the same feature? → Same commit
|
|
120
|
+
- Are there test files? → Same commit as the code they test
|
|
121
|
+
- Are there type definitions? → Same commit as the code that uses them
|
|
70
122
|
|
|
71
123
|
\`\`\`
|
|
72
124
|
${diff}
|
|
73
125
|
\`\`\`
|
|
74
126
|
|
|
127
|
+
Create the MINIMUM number of well-grouped commits. Group related files together aggressively.
|
|
128
|
+
|
|
75
129
|
Please respond in JSON format.`;
|
|
76
130
|
}
|
|
77
131
|
/**
|
package/dist/prompts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":";;AAGA,
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":";;AAGA,kEA6FC;AAKD,8DAuBC;AAKD,kEAoBC;AAKD,8DAYC;AAtKD;;GAEG;AACH,SAAgB,2BAA2B;IACzC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2FP,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,yBAAyB,CAAC,IAAY;IACpD,OAAO;;;;;;;;;;;;;;;;EAgBP,IAAI;;;;;+BAKyB,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,SAAgB,2BAA2B;IACzC,OAAO;;;;;;;;;;;;;;;;;;4FAkBmF,CAAC;AAC7F,CAAC;AAED;;GAEG;AACH,SAAgB,yBAAyB,CAAC,IAAY;IACpD,OAAO;;;EAGP,IAAI;;;;;;;EAOJ,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mehmetsagir/git-ai",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.9",
|
|
4
4
|
"description": "AI-powered git commit tool that analyzes diffs and creates conventional commit messages",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -43,5 +43,10 @@
|
|
|
43
43
|
},
|
|
44
44
|
"engines": {
|
|
45
45
|
"node": ">=14.0.0"
|
|
46
|
-
}
|
|
46
|
+
},
|
|
47
|
+
"repository": {
|
|
48
|
+
"type": "git",
|
|
49
|
+
"url": "https://github.com/mehmetsagir/git-ai.git"
|
|
50
|
+
},
|
|
51
|
+
"readme": "README.md"
|
|
47
52
|
}
|