@untools/commitgen 0.1.0 ā 0.2.0
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/README.md +380 -21
- package/dist/index.js +221 -34
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +16 -0
- package/dist/utils/commit-history.d.ts +35 -0
- package/dist/utils/commit-history.js +165 -0
- package/dist/utils/commit-history.js.map +1 -0
- package/dist/utils/issue-tracker.d.ts +43 -0
- package/dist/utils/issue-tracker.js +207 -0
- package/dist/utils/issue-tracker.js.map +1 -0
- package/dist/utils/multi-commit.d.ts +40 -0
- package/dist/utils/multi-commit.js +274 -0
- package/dist/utils/multi-commit.js.map +1 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -12,7 +12,15 @@ const inquirer_1 = __importDefault(require("inquirer"));
|
|
|
12
12
|
const config_1 = require("./config");
|
|
13
13
|
const configure_1 = require("./commands/configure");
|
|
14
14
|
const providers_1 = require("./providers");
|
|
15
|
+
const commit_history_1 = require("./utils/commit-history");
|
|
16
|
+
const multi_commit_1 = require("./utils/multi-commit");
|
|
17
|
+
const issue_tracker_1 = require("./utils/issue-tracker");
|
|
15
18
|
class CommitGen {
|
|
19
|
+
constructor() {
|
|
20
|
+
this.historyAnalyzer = new commit_history_1.CommitHistoryAnalyzer();
|
|
21
|
+
this.multiCommitAnalyzer = new multi_commit_1.MultiCommitAnalyzer();
|
|
22
|
+
this.issueTracker = new issue_tracker_1.IssueTrackerIntegration();
|
|
23
|
+
}
|
|
16
24
|
exec(cmd) {
|
|
17
25
|
try {
|
|
18
26
|
return (0, child_process_1.execSync)(cmd, {
|
|
@@ -120,6 +128,29 @@ class CommitGen {
|
|
|
120
128
|
return false;
|
|
121
129
|
}
|
|
122
130
|
}
|
|
131
|
+
combineCommitMessages(messages) {
|
|
132
|
+
const types = messages.map((m) => m.type);
|
|
133
|
+
const typeCount = types.reduce((acc, t) => {
|
|
134
|
+
acc[t] = (acc[t] || 0) + 1;
|
|
135
|
+
return acc;
|
|
136
|
+
}, {});
|
|
137
|
+
const mostCommonType = Object.entries(typeCount).sort((a, b) => b[1] - a[1])[0][0];
|
|
138
|
+
const scopes = messages.map((m) => m.scope).filter(Boolean);
|
|
139
|
+
const uniqueScopes = [...new Set(scopes)];
|
|
140
|
+
const scope = uniqueScopes.length > 0 ? uniqueScopes.slice(0, 2).join(", ") : undefined;
|
|
141
|
+
const subjects = messages.map((m) => m.subject);
|
|
142
|
+
const combinedSubject = subjects.join("; ");
|
|
143
|
+
const bodies = messages.map((m) => m.body).filter(Boolean);
|
|
144
|
+
const combinedBody = bodies.length > 0 ? bodies.join("\n\n") : undefined;
|
|
145
|
+
const hasBreaking = messages.some((m) => m.breaking);
|
|
146
|
+
return {
|
|
147
|
+
type: mostCommonType,
|
|
148
|
+
scope,
|
|
149
|
+
subject: combinedSubject,
|
|
150
|
+
body: combinedBody,
|
|
151
|
+
breaking: hasBreaking,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
123
154
|
async run(options) {
|
|
124
155
|
console.log(chalk_1.default.bold.cyan("\nš CommitGen") +
|
|
125
156
|
chalk_1.default.gray(" - AI-Powered Commit Message Generator\n"));
|
|
@@ -136,14 +167,44 @@ class CommitGen {
|
|
|
136
167
|
}
|
|
137
168
|
process.exit(0);
|
|
138
169
|
}
|
|
170
|
+
// Check for issue tracking integration
|
|
171
|
+
let issueRef = null;
|
|
172
|
+
if (options.linkIssues !== false) {
|
|
173
|
+
issueRef = this.issueTracker.extractIssueFromBranch();
|
|
174
|
+
if (issueRef) {
|
|
175
|
+
console.log(chalk_1.default.cyan(`\n${this.issueTracker.getIssueDisplay(issueRef)} detected`));
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
// Check if multi-commit mode should be suggested
|
|
179
|
+
if (options.multiCommit !== false &&
|
|
180
|
+
this.multiCommitAnalyzer.shouldSplit(analysis)) {
|
|
181
|
+
const { useMultiCommit } = await inquirer_1.default.prompt([
|
|
182
|
+
{
|
|
183
|
+
type: "confirm",
|
|
184
|
+
name: "useMultiCommit",
|
|
185
|
+
message: chalk_1.default.yellow("š Multiple concerns detected. Split into separate commits?"),
|
|
186
|
+
default: true,
|
|
187
|
+
},
|
|
188
|
+
]);
|
|
189
|
+
if (useMultiCommit) {
|
|
190
|
+
return this.runMultiCommit(analysis, options);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
139
193
|
this.displayAnalysis(analysis);
|
|
140
|
-
|
|
141
|
-
|
|
194
|
+
// Load commit history pattern for personalization
|
|
195
|
+
let historyPattern = null;
|
|
196
|
+
if (options.learnFromHistory !== false) {
|
|
197
|
+
historyPattern = await this.historyAnalyzer.getCommitPattern();
|
|
198
|
+
if (historyPattern) {
|
|
199
|
+
console.log(chalk_1.default.cyan("\nš Personalizing based on your commit history"));
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
let suggestions = [];
|
|
203
|
+
let usingFallback = false;
|
|
204
|
+
if (options.useAi) {
|
|
142
205
|
try {
|
|
143
|
-
// Load provider configuration
|
|
144
206
|
const configManager = new config_1.ConfigManager();
|
|
145
207
|
let providerConfig = configManager.getProviderConfig();
|
|
146
|
-
// Check if API key is missing and prompt for configuration
|
|
147
208
|
if (!providerConfig.apiKey &&
|
|
148
209
|
!this.hasEnvironmentApiKey(providerConfig.provider)) {
|
|
149
210
|
console.log(chalk_1.default.yellow("\nā ļø API key not found for the selected provider."));
|
|
@@ -157,26 +218,37 @@ class CommitGen {
|
|
|
157
218
|
]);
|
|
158
219
|
if (shouldConfigure) {
|
|
159
220
|
await (0, configure_1.configureCommand)();
|
|
160
|
-
// Reload config after configuration
|
|
161
221
|
providerConfig = configManager.getProviderConfig();
|
|
162
222
|
}
|
|
163
223
|
else {
|
|
164
224
|
console.log(chalk_1.default.gray("Falling back to rule-based suggestions...\n"));
|
|
165
225
|
suggestions = this.getFallbackSuggestions(analysis);
|
|
166
|
-
|
|
226
|
+
usingFallback = true;
|
|
167
227
|
}
|
|
168
228
|
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
229
|
+
if (!usingFallback) {
|
|
230
|
+
console.log(chalk_1.default.blue(`\nš¤ Generating commit messages using ${providerConfig.provider}...\n`));
|
|
231
|
+
const provider = (0, providers_1.createProvider)(providerConfig);
|
|
232
|
+
suggestions = await provider.generateCommitMessage(analysis);
|
|
233
|
+
if (!suggestions || suggestions.length === 0) {
|
|
234
|
+
throw new Error("No suggestions generated");
|
|
235
|
+
}
|
|
236
|
+
// Personalize suggestions based on history
|
|
237
|
+
if (historyPattern) {
|
|
238
|
+
suggestions = suggestions.map((msg) => this.historyAnalyzer.personalizeCommitMessage(msg, historyPattern));
|
|
239
|
+
}
|
|
240
|
+
// Adjust type based on issue if available
|
|
241
|
+
if (issueRef) {
|
|
242
|
+
suggestions = suggestions.map((msg) => ({
|
|
243
|
+
...msg,
|
|
244
|
+
type: this.issueTracker.suggestTypeFromIssue(issueRef, msg.type),
|
|
245
|
+
}));
|
|
246
|
+
}
|
|
175
247
|
}
|
|
176
248
|
}
|
|
177
249
|
catch (error) {
|
|
178
|
-
|
|
179
|
-
|
|
250
|
+
const errorMessage = error instanceof Error ? error.message : "Unknown error";
|
|
251
|
+
console.warn(chalk_1.default.yellow(`ā ļø AI generation failed: ${errorMessage}`));
|
|
180
252
|
if (error instanceof Error && error.message.includes("API key")) {
|
|
181
253
|
const { shouldReconfigure } = await inquirer_1.default.prompt([
|
|
182
254
|
{
|
|
@@ -194,37 +266,130 @@ class CommitGen {
|
|
|
194
266
|
}
|
|
195
267
|
console.log(chalk_1.default.gray("Falling back to rule-based suggestions...\n"));
|
|
196
268
|
suggestions = this.getFallbackSuggestions(analysis);
|
|
269
|
+
usingFallback = true;
|
|
197
270
|
}
|
|
198
271
|
}
|
|
199
272
|
else {
|
|
273
|
+
console.log(chalk_1.default.gray("\nš Using rule-based suggestions (AI disabled)\n"));
|
|
200
274
|
suggestions = this.getFallbackSuggestions(analysis);
|
|
275
|
+
usingFallback = true;
|
|
276
|
+
}
|
|
277
|
+
await this.commitInteractive(suggestions, analysis, issueRef, options);
|
|
278
|
+
}
|
|
279
|
+
async runMultiCommit(analysis, options) {
|
|
280
|
+
const groups = this.multiCommitAnalyzer.groupFiles(analysis);
|
|
281
|
+
console.log(chalk_1.default.cyan.bold(`\nš Splitting into ${groups.length} commits:\n`));
|
|
282
|
+
groups.forEach((group, i) => {
|
|
283
|
+
console.log(chalk_1.default.gray(`${i + 1}. ${group.reason}`));
|
|
284
|
+
console.log(chalk_1.default.gray(` Files: ${group.files.slice(0, 3).join(", ")}${group.files.length > 3 ? "..." : ""}`));
|
|
285
|
+
});
|
|
286
|
+
const { proceed } = await inquirer_1.default.prompt([
|
|
287
|
+
{
|
|
288
|
+
type: "confirm",
|
|
289
|
+
name: "proceed",
|
|
290
|
+
message: "Proceed with multi-commit?",
|
|
291
|
+
default: true,
|
|
292
|
+
},
|
|
293
|
+
]);
|
|
294
|
+
if (!proceed) {
|
|
295
|
+
console.log(chalk_1.default.yellow("\nCancelled. Falling back to single commit mode."));
|
|
296
|
+
return this.run({ ...options, multiCommit: false });
|
|
297
|
+
}
|
|
298
|
+
for (let i = 0; i < groups.length; i++) {
|
|
299
|
+
const group = groups[i];
|
|
300
|
+
console.log(chalk_1.default.cyan.bold(`\nš Commit ${i + 1}/${groups.length}: ${group.reason}`));
|
|
301
|
+
// Generate suggestions for this group
|
|
302
|
+
let suggestions = [group.suggestedMessage];
|
|
303
|
+
if (options.useAi) {
|
|
304
|
+
try {
|
|
305
|
+
const configManager = new config_1.ConfigManager();
|
|
306
|
+
const providerConfig = configManager.getProviderConfig();
|
|
307
|
+
if (providerConfig.apiKey ||
|
|
308
|
+
this.hasEnvironmentApiKey(providerConfig.provider)) {
|
|
309
|
+
const provider = (0, providers_1.createProvider)(providerConfig);
|
|
310
|
+
suggestions = await provider.generateCommitMessage(group.analysis);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
catch (error) {
|
|
314
|
+
console.log(chalk_1.default.gray("Using suggested message for this commit"));
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
await this.commitInteractive(suggestions, group.analysis, null, options, group.files);
|
|
201
318
|
}
|
|
319
|
+
console.log(chalk_1.default.green.bold("\nā
All commits completed!"));
|
|
320
|
+
}
|
|
321
|
+
async commitInteractive(suggestions, analysis, issueRef, options, specificFiles) {
|
|
202
322
|
console.log(chalk_1.default.cyan.bold("š” Suggested commit messages:\n"));
|
|
203
323
|
const choices = suggestions.map((s, i) => {
|
|
204
324
|
const formatted = this.formatCommitMessage(s);
|
|
205
325
|
const preview = formatted.split("\n")[0];
|
|
206
326
|
return {
|
|
207
327
|
name: `${chalk_1.default.gray(`${i + 1}.`)} ${preview}`,
|
|
208
|
-
value:
|
|
328
|
+
value: i,
|
|
209
329
|
short: preview,
|
|
210
330
|
};
|
|
211
331
|
});
|
|
332
|
+
choices.push({
|
|
333
|
+
name: chalk_1.default.magenta("š Combine all suggestions"),
|
|
334
|
+
value: -1,
|
|
335
|
+
short: "Combined",
|
|
336
|
+
});
|
|
212
337
|
choices.push({
|
|
213
338
|
name: chalk_1.default.gray("āļø Write custom message"),
|
|
214
|
-
value:
|
|
339
|
+
value: -2,
|
|
215
340
|
short: "Custom message",
|
|
216
341
|
});
|
|
217
|
-
const {
|
|
342
|
+
const { selectedIndex } = await inquirer_1.default.prompt([
|
|
218
343
|
{
|
|
219
344
|
type: "list",
|
|
220
|
-
name: "
|
|
345
|
+
name: "selectedIndex",
|
|
221
346
|
message: "Choose a commit message:",
|
|
222
347
|
choices,
|
|
223
348
|
pageSize: 10,
|
|
224
349
|
},
|
|
225
350
|
]);
|
|
226
351
|
let commitMessage;
|
|
227
|
-
if (
|
|
352
|
+
if (selectedIndex === -1) {
|
|
353
|
+
const combined = this.combineCommitMessages(suggestions);
|
|
354
|
+
const combinedFormatted = this.formatCommitMessage(combined);
|
|
355
|
+
console.log(chalk_1.default.cyan("\nš¦ Combined message:"));
|
|
356
|
+
console.log(chalk_1.default.white(combinedFormatted));
|
|
357
|
+
const { action } = await inquirer_1.default.prompt([
|
|
358
|
+
{
|
|
359
|
+
type: "list",
|
|
360
|
+
name: "action",
|
|
361
|
+
message: "What would you like to do?",
|
|
362
|
+
choices: [
|
|
363
|
+
{ name: "ā
Use this combined message", value: "use" },
|
|
364
|
+
{ name: "āļø Edit this message", value: "edit" },
|
|
365
|
+
{ name: "š Go back to suggestions", value: "back" },
|
|
366
|
+
],
|
|
367
|
+
},
|
|
368
|
+
]);
|
|
369
|
+
if (action === "back") {
|
|
370
|
+
return this.commitInteractive(suggestions, analysis, issueRef, options, specificFiles);
|
|
371
|
+
}
|
|
372
|
+
else if (action === "edit") {
|
|
373
|
+
const { edited } = await inquirer_1.default.prompt([
|
|
374
|
+
{
|
|
375
|
+
type: "input",
|
|
376
|
+
name: "edited",
|
|
377
|
+
message: "Edit commit message:",
|
|
378
|
+
default: combinedFormatted,
|
|
379
|
+
validate: (input) => {
|
|
380
|
+
if (!input.trim())
|
|
381
|
+
return "Commit message cannot be empty";
|
|
382
|
+
return true;
|
|
383
|
+
},
|
|
384
|
+
},
|
|
385
|
+
]);
|
|
386
|
+
commitMessage = edited;
|
|
387
|
+
}
|
|
388
|
+
else {
|
|
389
|
+
commitMessage = combinedFormatted;
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
else if (selectedIndex === -2) {
|
|
228
393
|
const { customMessage } = await inquirer_1.default.prompt([
|
|
229
394
|
{
|
|
230
395
|
type: "input",
|
|
@@ -240,20 +405,34 @@ class CommitGen {
|
|
|
240
405
|
commitMessage = customMessage;
|
|
241
406
|
}
|
|
242
407
|
else {
|
|
243
|
-
|
|
408
|
+
let selected = suggestions[selectedIndex];
|
|
409
|
+
// Add issue reference if available
|
|
410
|
+
if (issueRef && options.linkIssues !== false) {
|
|
411
|
+
selected = this.issueTracker.appendIssueToCommit(selected, issueRef);
|
|
412
|
+
}
|
|
413
|
+
const formatted = this.formatCommitMessage(selected);
|
|
414
|
+
const { action } = await inquirer_1.default.prompt([
|
|
244
415
|
{
|
|
245
|
-
type: "
|
|
246
|
-
name: "
|
|
247
|
-
message: "
|
|
248
|
-
|
|
416
|
+
type: "list",
|
|
417
|
+
name: "action",
|
|
418
|
+
message: "What would you like to do?",
|
|
419
|
+
choices: [
|
|
420
|
+
{ name: "ā
Use this message", value: "use" },
|
|
421
|
+
{ name: "āļø Edit this message", value: "edit" },
|
|
422
|
+
{ name: "š Choose a different message", value: "back" },
|
|
423
|
+
],
|
|
249
424
|
},
|
|
250
425
|
]);
|
|
251
|
-
if (
|
|
252
|
-
|
|
426
|
+
if (action === "back") {
|
|
427
|
+
return this.commitInteractive(suggestions, analysis, issueRef, options, specificFiles);
|
|
428
|
+
}
|
|
429
|
+
else if (action === "edit") {
|
|
430
|
+
const { edited } = await inquirer_1.default.prompt([
|
|
253
431
|
{
|
|
254
432
|
type: "input",
|
|
255
|
-
name: "
|
|
256
|
-
message: "
|
|
433
|
+
name: "edited",
|
|
434
|
+
message: "Edit commit message:",
|
|
435
|
+
default: formatted,
|
|
257
436
|
validate: (input) => {
|
|
258
437
|
if (!input.trim())
|
|
259
438
|
return "Commit message cannot be empty";
|
|
@@ -261,10 +440,10 @@ class CommitGen {
|
|
|
261
440
|
},
|
|
262
441
|
},
|
|
263
442
|
]);
|
|
264
|
-
commitMessage =
|
|
443
|
+
commitMessage = edited;
|
|
265
444
|
}
|
|
266
445
|
else {
|
|
267
|
-
commitMessage =
|
|
446
|
+
commitMessage = formatted;
|
|
268
447
|
}
|
|
269
448
|
}
|
|
270
449
|
if (!commitMessage.trim()) {
|
|
@@ -272,13 +451,17 @@ class CommitGen {
|
|
|
272
451
|
return;
|
|
273
452
|
}
|
|
274
453
|
try {
|
|
275
|
-
let commitCmd =
|
|
454
|
+
let commitCmd = specificFiles
|
|
455
|
+
? `git commit ${specificFiles
|
|
456
|
+
.map((f) => `"${f}"`)
|
|
457
|
+
.join(" ")} -m "${commitMessage.replace(/"/g, '\\"')}"`
|
|
458
|
+
: `git commit -m "${commitMessage.replace(/"/g, '\\"')}"`;
|
|
276
459
|
if (options.noverify) {
|
|
277
460
|
commitCmd += " --no-verify";
|
|
278
461
|
}
|
|
279
462
|
this.exec(commitCmd);
|
|
280
463
|
console.log(chalk_1.default.green("\nā
Commit successful!"));
|
|
281
|
-
if (options.push) {
|
|
464
|
+
if (options.push && !specificFiles) {
|
|
282
465
|
console.log(chalk_1.default.blue("\nš¤ Pushing to remote..."));
|
|
283
466
|
const currentBranch = this.exec("git branch --show-current");
|
|
284
467
|
this.exec(`git push origin ${currentBranch}`);
|
|
@@ -348,10 +531,14 @@ const program = new commander_1.Command();
|
|
|
348
531
|
program
|
|
349
532
|
.name("commitgen")
|
|
350
533
|
.description("AI-powered commit message generator for Git")
|
|
351
|
-
.version("0.0
|
|
534
|
+
.version("0.2.0")
|
|
352
535
|
.option("-p, --push", "Push changes after committing")
|
|
353
536
|
.option("-n, --noverify", "Skip git hooks (--no-verify)")
|
|
354
|
-
.option("--
|
|
537
|
+
.option("--use-ai", "Enable AI generation (default: true)", true)
|
|
538
|
+
.option("-m, --multi-commit", "Enable multi-commit mode for atomic commits")
|
|
539
|
+
.option("--no-multi-commit", "Disable multi-commit mode")
|
|
540
|
+
.option("--no-history", "Disable commit history learning")
|
|
541
|
+
.option("--no-issues", "Disable issue tracker integration")
|
|
355
542
|
.action(async (options) => {
|
|
356
543
|
const commitGen = new CommitGen();
|
|
357
544
|
await commitGen.run(options);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -23,3 +23,19 @@ export interface ProviderConfig {
|
|
|
23
23
|
model?: string;
|
|
24
24
|
baseUrl?: string;
|
|
25
25
|
}
|
|
26
|
+
export interface CommitGenOptions {
|
|
27
|
+
push?: boolean;
|
|
28
|
+
noverify?: boolean;
|
|
29
|
+
useAi?: boolean;
|
|
30
|
+
multiCommit?: boolean;
|
|
31
|
+
learnFromHistory?: boolean;
|
|
32
|
+
linkIssues?: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface EnhancedConfig {
|
|
35
|
+
provider: ProviderConfig;
|
|
36
|
+
features: {
|
|
37
|
+
historyLearning: boolean;
|
|
38
|
+
multiCommit: boolean;
|
|
39
|
+
issueTracking: boolean;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { CommitMessage } from "../types";
|
|
2
|
+
export interface CommitHistoryPattern {
|
|
3
|
+
commonTypes: Record<string, number>;
|
|
4
|
+
commonScopes: Record<string, number>;
|
|
5
|
+
avgSubjectLength: number;
|
|
6
|
+
commonPhrases: string[];
|
|
7
|
+
stylePreferences: {
|
|
8
|
+
usesEmoji: boolean;
|
|
9
|
+
capitalizesSubject: boolean;
|
|
10
|
+
usesPeriod: boolean;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export declare class CommitHistoryAnalyzer {
|
|
14
|
+
private cache;
|
|
15
|
+
private cacheTimestamp;
|
|
16
|
+
private readonly CACHE_TTL;
|
|
17
|
+
private exec;
|
|
18
|
+
/**
|
|
19
|
+
* Get commit history pattern (cached for performance)
|
|
20
|
+
*/
|
|
21
|
+
getCommitPattern(): Promise<CommitHistoryPattern | null>;
|
|
22
|
+
private analyzeCommits;
|
|
23
|
+
/**
|
|
24
|
+
* Personalize suggestions based on history
|
|
25
|
+
*/
|
|
26
|
+
personalizeCommitMessage(message: CommitMessage, pattern: CommitHistoryPattern): CommitMessage;
|
|
27
|
+
/**
|
|
28
|
+
* Get preferred type based on history
|
|
29
|
+
*/
|
|
30
|
+
getPreferredType(pattern: CommitHistoryPattern, defaultType: string): string;
|
|
31
|
+
/**
|
|
32
|
+
* Get suggested scope based on history and current files
|
|
33
|
+
*/
|
|
34
|
+
getSuggestedScope(pattern: CommitHistoryPattern, inferredScope: string): string;
|
|
35
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ./src/utils/commit-history.ts
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.CommitHistoryAnalyzer = void 0;
|
|
5
|
+
const child_process_1 = require("child_process");
|
|
6
|
+
class CommitHistoryAnalyzer {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.cache = null;
|
|
9
|
+
this.cacheTimestamp = 0;
|
|
10
|
+
this.CACHE_TTL = 300000; // 5 minutes
|
|
11
|
+
}
|
|
12
|
+
exec(cmd) {
|
|
13
|
+
try {
|
|
14
|
+
return (0, child_process_1.execSync)(cmd, {
|
|
15
|
+
encoding: "utf8",
|
|
16
|
+
stdio: ["pipe", "pipe", "ignore"],
|
|
17
|
+
}).trim();
|
|
18
|
+
}
|
|
19
|
+
catch (_a) {
|
|
20
|
+
return "";
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Get commit history pattern (cached for performance)
|
|
25
|
+
*/
|
|
26
|
+
async getCommitPattern() {
|
|
27
|
+
const now = Date.now();
|
|
28
|
+
// Return cached data if still valid
|
|
29
|
+
if (this.cache && now - this.cacheTimestamp < this.CACHE_TTL) {
|
|
30
|
+
return this.cache;
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
// Get last 50 commits (balance between insight and performance)
|
|
34
|
+
const commits = this.exec('git log -50 --pretty=format:"%s"');
|
|
35
|
+
if (!commits)
|
|
36
|
+
return null;
|
|
37
|
+
const commitLines = commits.split("\n").filter(Boolean);
|
|
38
|
+
if (commitLines.length < 5)
|
|
39
|
+
return null; // Need minimum data
|
|
40
|
+
const pattern = this.analyzeCommits(commitLines);
|
|
41
|
+
// Cache the result
|
|
42
|
+
this.cache = pattern;
|
|
43
|
+
this.cacheTimestamp = now;
|
|
44
|
+
return pattern;
|
|
45
|
+
}
|
|
46
|
+
catch (_a) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
analyzeCommits(commits) {
|
|
51
|
+
const types = {};
|
|
52
|
+
const scopes = {};
|
|
53
|
+
const lengths = [];
|
|
54
|
+
const phrases = {};
|
|
55
|
+
let emojiCount = 0;
|
|
56
|
+
let capitalizedCount = 0;
|
|
57
|
+
let periodCount = 0;
|
|
58
|
+
for (const commit of commits) {
|
|
59
|
+
// Parse conventional commit format
|
|
60
|
+
const match = commit.match(/^(\w+)(\(([^)]+)\))?(!)?:\s*(.+)$/);
|
|
61
|
+
if (match) {
|
|
62
|
+
const [, type, , scope, , subject] = match;
|
|
63
|
+
// Track types
|
|
64
|
+
types[type] = (types[type] || 0) + 1;
|
|
65
|
+
// Track scopes
|
|
66
|
+
if (scope) {
|
|
67
|
+
scopes[scope] = (scopes[scope] || 0) + 1;
|
|
68
|
+
}
|
|
69
|
+
// Track subject characteristics
|
|
70
|
+
lengths.push(subject.length);
|
|
71
|
+
// Check for emojis
|
|
72
|
+
if (/[\p{Emoji}]/u.test(commit)) {
|
|
73
|
+
emojiCount++;
|
|
74
|
+
}
|
|
75
|
+
// Check capitalization
|
|
76
|
+
if (subject[0] === subject[0].toUpperCase()) {
|
|
77
|
+
capitalizedCount++;
|
|
78
|
+
}
|
|
79
|
+
// Check for period
|
|
80
|
+
if (subject.endsWith(".")) {
|
|
81
|
+
periodCount++;
|
|
82
|
+
}
|
|
83
|
+
// Extract common phrases (first 3 words)
|
|
84
|
+
const words = subject.toLowerCase().split(" ").slice(0, 3).join(" ");
|
|
85
|
+
if (words.length > 5) {
|
|
86
|
+
phrases[words] = (phrases[words] || 0) + 1;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Get top phrases
|
|
91
|
+
const commonPhrases = Object.entries(phrases)
|
|
92
|
+
.sort((a, b) => b[1] - a[1])
|
|
93
|
+
.slice(0, 10)
|
|
94
|
+
.map(([phrase]) => phrase);
|
|
95
|
+
return {
|
|
96
|
+
commonTypes: types,
|
|
97
|
+
commonScopes: scopes,
|
|
98
|
+
avgSubjectLength: lengths.length > 0
|
|
99
|
+
? Math.round(lengths.reduce((a, b) => a + b, 0) / lengths.length)
|
|
100
|
+
: 50,
|
|
101
|
+
commonPhrases,
|
|
102
|
+
stylePreferences: {
|
|
103
|
+
usesEmoji: emojiCount > commits.length * 0.3,
|
|
104
|
+
capitalizesSubject: capitalizedCount > commits.length * 0.5,
|
|
105
|
+
usesPeriod: periodCount > commits.length * 0.3,
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Personalize suggestions based on history
|
|
111
|
+
*/
|
|
112
|
+
personalizeCommitMessage(message, pattern) {
|
|
113
|
+
const personalized = { ...message };
|
|
114
|
+
// Adjust subject length if user typically writes shorter/longer
|
|
115
|
+
if (pattern.avgSubjectLength < 40 && personalized.subject.length > 50) {
|
|
116
|
+
personalized.subject = personalized.subject.slice(0, 47) + "...";
|
|
117
|
+
}
|
|
118
|
+
// Apply capitalization preference
|
|
119
|
+
if (pattern.stylePreferences.capitalizesSubject) {
|
|
120
|
+
personalized.subject =
|
|
121
|
+
personalized.subject[0].toUpperCase() + personalized.subject.slice(1);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
personalized.subject =
|
|
125
|
+
personalized.subject[0].toLowerCase() + personalized.subject.slice(1);
|
|
126
|
+
}
|
|
127
|
+
// Apply period preference
|
|
128
|
+
if (pattern.stylePreferences.usesPeriod &&
|
|
129
|
+
!personalized.subject.endsWith(".")) {
|
|
130
|
+
personalized.subject += ".";
|
|
131
|
+
}
|
|
132
|
+
else if (!pattern.stylePreferences.usesPeriod &&
|
|
133
|
+
personalized.subject.endsWith(".")) {
|
|
134
|
+
personalized.subject = personalized.subject.slice(0, -1);
|
|
135
|
+
}
|
|
136
|
+
return personalized;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Get preferred type based on history
|
|
140
|
+
*/
|
|
141
|
+
getPreferredType(pattern, defaultType) {
|
|
142
|
+
const types = Object.entries(pattern.commonTypes).sort((a, b) => b[1] - a[1]);
|
|
143
|
+
// If user heavily favors a type (>40% usage), suggest it
|
|
144
|
+
if (types.length > 0 &&
|
|
145
|
+
types[0][1] > pattern.commonTypes[defaultType] * 1.5) {
|
|
146
|
+
return types[0][0];
|
|
147
|
+
}
|
|
148
|
+
return defaultType;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Get suggested scope based on history and current files
|
|
152
|
+
*/
|
|
153
|
+
getSuggestedScope(pattern, inferredScope) {
|
|
154
|
+
// Check if inferred scope matches a common scope
|
|
155
|
+
const commonScopes = Object.keys(pattern.commonScopes);
|
|
156
|
+
for (const scope of commonScopes) {
|
|
157
|
+
if (inferredScope.includes(scope) || scope.includes(inferredScope)) {
|
|
158
|
+
return scope;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return inferredScope;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
exports.CommitHistoryAnalyzer = CommitHistoryAnalyzer;
|
|
165
|
+
//# sourceMappingURL=commit-history.js.map
|