@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/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
- let suggestions;
141
- if (options.useAi !== false) {
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
- return;
226
+ usingFallback = true;
167
227
  }
168
228
  }
169
- console.log(chalk_1.default.blue(`\nšŸ¤– Generating commit messages using ${providerConfig.provider}...\n`));
170
- // Create provider and generate suggestions
171
- const provider = (0, providers_1.createProvider)(providerConfig);
172
- suggestions = await provider.generateCommitMessage(analysis);
173
- if (!suggestions || suggestions.length === 0) {
174
- throw new Error("No suggestions generated");
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
- console.warn(chalk_1.default.yellow(`āš ļø AI generation failed: ${error instanceof Error ? error.message : "Unknown error"}`));
179
- // If it's an API key error, offer to reconfigure
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: formatted,
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: "__custom__",
339
+ value: -2,
215
340
  short: "Custom message",
216
341
  });
217
- const { selected } = await inquirer_1.default.prompt([
342
+ const { selectedIndex } = await inquirer_1.default.prompt([
218
343
  {
219
344
  type: "list",
220
- name: "selected",
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 (selected === "__custom__") {
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
- const { confirmed } = await inquirer_1.default.prompt([
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: "confirm",
246
- name: "confirmed",
247
- message: "Confirm this commit message?",
248
- default: true,
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 (!confirmed) {
252
- const { customMessage } = await inquirer_1.default.prompt([
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: "customMessage",
256
- message: "Enter your commit 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 = customMessage;
443
+ commitMessage = edited;
265
444
  }
266
445
  else {
267
- commitMessage = selected;
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 = `git commit -m "${commitMessage.replace(/"/g, '\\"')}"`;
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.4")
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("--no-ai", "Disable AI generation and use rule-based suggestions")
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