@m3hti/commit-genie 1.2.3 → 1.2.5
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/package.json +1 -1
- package/dist/commands/config.d.ts +0 -3
- package/dist/commands/config.d.ts.map +0 -1
- package/dist/commands/config.js +0 -31
- package/dist/commands/config.js.map +0 -1
- package/dist/commands/generate.d.ts +0 -12
- package/dist/commands/generate.d.ts.map +0 -1
- package/dist/commands/generate.js +0 -550
- package/dist/commands/generate.js.map +0 -1
- package/dist/commands/generate.test.d.ts +0 -2
- package/dist/commands/generate.test.d.ts.map +0 -1
- package/dist/commands/generate.test.js +0 -168
- package/dist/commands/generate.test.js.map +0 -1
- package/dist/commands/hook.d.ts +0 -4
- package/dist/commands/hook.d.ts.map +0 -1
- package/dist/commands/hook.js +0 -62
- package/dist/commands/hook.js.map +0 -1
- package/dist/commands/stats.d.ts +0 -6
- package/dist/commands/stats.d.ts.map +0 -1
- package/dist/commands/stats.js +0 -39
- package/dist/commands/stats.js.map +0 -1
- package/dist/data/wordlist.d.ts +0 -11
- package/dist/data/wordlist.d.ts.map +0 -1
- package/dist/data/wordlist.js +0 -170
- package/dist/data/wordlist.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -81
- package/dist/index.js.map +0 -1
- package/dist/services/aiService.d.ts +0 -42
- package/dist/services/aiService.d.ts.map +0 -1
- package/dist/services/aiService.js +0 -224
- package/dist/services/aiService.js.map +0 -1
- package/dist/services/analyzerService.d.ts +0 -124
- package/dist/services/analyzerService.d.ts.map +0 -1
- package/dist/services/analyzerService.js +0 -1595
- package/dist/services/analyzerService.js.map +0 -1
- package/dist/services/analyzerService.test.d.ts +0 -2
- package/dist/services/analyzerService.test.d.ts.map +0 -1
- package/dist/services/analyzerService.test.js +0 -483
- package/dist/services/analyzerService.test.js.map +0 -1
- package/dist/services/configService.d.ts +0 -25
- package/dist/services/configService.d.ts.map +0 -1
- package/dist/services/configService.js +0 -228
- package/dist/services/configService.js.map +0 -1
- package/dist/services/configService.test.d.ts +0 -2
- package/dist/services/configService.test.d.ts.map +0 -1
- package/dist/services/configService.test.js +0 -165
- package/dist/services/configService.test.js.map +0 -1
- package/dist/services/gitService.d.ts +0 -64
- package/dist/services/gitService.d.ts.map +0 -1
- package/dist/services/gitService.js +0 -303
- package/dist/services/gitService.js.map +0 -1
- package/dist/services/gitService.test.d.ts +0 -2
- package/dist/services/gitService.test.d.ts.map +0 -1
- package/dist/services/gitService.test.js +0 -140
- package/dist/services/gitService.test.js.map +0 -1
- package/dist/services/historyService.d.ts +0 -39
- package/dist/services/historyService.d.ts.map +0 -1
- package/dist/services/historyService.js +0 -195
- package/dist/services/historyService.js.map +0 -1
- package/dist/services/historyService.test.d.ts +0 -2
- package/dist/services/historyService.test.d.ts.map +0 -1
- package/dist/services/historyService.test.js +0 -157
- package/dist/services/historyService.test.js.map +0 -1
- package/dist/services/hookService.d.ts +0 -29
- package/dist/services/hookService.d.ts.map +0 -1
- package/dist/services/hookService.js +0 -164
- package/dist/services/hookService.js.map +0 -1
- package/dist/services/lintService.d.ts +0 -32
- package/dist/services/lintService.d.ts.map +0 -1
- package/dist/services/lintService.js +0 -191
- package/dist/services/lintService.js.map +0 -1
- package/dist/services/spellService.d.ts +0 -42
- package/dist/services/spellService.d.ts.map +0 -1
- package/dist/services/spellService.js +0 -175
- package/dist/services/spellService.js.map +0 -1
- package/dist/services/splitService.d.ts +0 -32
- package/dist/services/splitService.d.ts.map +0 -1
- package/dist/services/splitService.js +0 -184
- package/dist/services/splitService.js.map +0 -1
- package/dist/services/statsService.d.ts +0 -28
- package/dist/services/statsService.d.ts.map +0 -1
- package/dist/services/statsService.js +0 -204
- package/dist/services/statsService.js.map +0 -1
- package/dist/types/index.d.ts +0 -217
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -3
- package/dist/types/index.js.map +0 -1
- package/dist/utils/filePatterns.d.ts +0 -5
- package/dist/utils/filePatterns.d.ts.map +0 -1
- package/dist/utils/filePatterns.js +0 -77
- package/dist/utils/filePatterns.js.map +0 -1
- package/dist/utils/filePatterns.test.d.ts +0 -2
- package/dist/utils/filePatterns.test.d.ts.map +0 -1
- package/dist/utils/filePatterns.test.js +0 -51
- package/dist/utils/filePatterns.test.js.map +0 -1
- package/dist/utils/prompt.d.ts +0 -4
- package/dist/utils/prompt.d.ts.map +0 -1
- package/dist/utils/prompt.js +0 -60
- package/dist/utils/prompt.js.map +0 -1
- package/npm-output.txt +0 -0
package/dist/index.js
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
const commander_1 = require("commander");
|
|
5
|
-
const generate_1 = require("./commands/generate");
|
|
6
|
-
const hook_1 = require("./commands/hook");
|
|
7
|
-
const config_1 = require("./commands/config");
|
|
8
|
-
const stats_1 = require("./commands/stats");
|
|
9
|
-
const program = new commander_1.Command();
|
|
10
|
-
program
|
|
11
|
-
.name('commit-genie')
|
|
12
|
-
.description('Generate intelligent Git commit messages based on your code changes')
|
|
13
|
-
.version('1.0.0');
|
|
14
|
-
program
|
|
15
|
-
.command('generate')
|
|
16
|
-
.alias('gen')
|
|
17
|
-
.description('Analyze staged changes and suggest a commit message')
|
|
18
|
-
.option('-c, --commit', 'Automatically commit with the generated message')
|
|
19
|
-
.option('-d, --dry-run', 'Preview commit without executing (shows what would be committed)')
|
|
20
|
-
.option('-a, --amend', 'Amend the last commit message instead of creating a new one')
|
|
21
|
-
.option('--ai', 'Use AI to generate enhanced commit descriptions (requires API key in config)')
|
|
22
|
-
.option('--no-interactive', 'Disable interactive mode (just show the message)')
|
|
23
|
-
.option('--no-lint', 'Skip commit message linting')
|
|
24
|
-
.option('-m, --message-only', 'Output only the commit message (for scripts/hooks)')
|
|
25
|
-
.option('-s, --single', 'Show only one suggestion (skip multiple options)')
|
|
26
|
-
.action((options) => (0, generate_1.generateCommand)(options));
|
|
27
|
-
// Hook commands
|
|
28
|
-
const hookCommand = program
|
|
29
|
-
.command('hook')
|
|
30
|
-
.description('Manage git hooks');
|
|
31
|
-
hookCommand
|
|
32
|
-
.command('install')
|
|
33
|
-
.description('Install the prepare-commit-msg hook')
|
|
34
|
-
.action(hook_1.hookInstallCommand);
|
|
35
|
-
hookCommand
|
|
36
|
-
.command('uninstall')
|
|
37
|
-
.description('Uninstall the prepare-commit-msg hook')
|
|
38
|
-
.action(hook_1.hookUninstallCommand);
|
|
39
|
-
hookCommand
|
|
40
|
-
.command('status')
|
|
41
|
-
.description('Check if the hook is installed')
|
|
42
|
-
.action(hook_1.hookStatusCommand);
|
|
43
|
-
// Config commands
|
|
44
|
-
const configCommand = program
|
|
45
|
-
.command('config')
|
|
46
|
-
.description('Manage configuration');
|
|
47
|
-
configCommand
|
|
48
|
-
.command('init')
|
|
49
|
-
.description('Create a default config file')
|
|
50
|
-
.action(config_1.configInitCommand);
|
|
51
|
-
configCommand
|
|
52
|
-
.command('show')
|
|
53
|
-
.description('Show current configuration')
|
|
54
|
-
.action(config_1.configShowCommand);
|
|
55
|
-
// Stats command
|
|
56
|
-
program
|
|
57
|
-
.command('stats')
|
|
58
|
-
.description('Show commit statistics for the repository')
|
|
59
|
-
.option('-n, --count <number>', 'Number of commits to analyze', '100')
|
|
60
|
-
.option('--json', 'Output as JSON')
|
|
61
|
-
.action((options) => {
|
|
62
|
-
(0, stats_1.statsCommand)({
|
|
63
|
-
count: parseInt(options.count, 10),
|
|
64
|
-
json: options.json,
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
// Default action (if no command specified, run generate)
|
|
68
|
-
program
|
|
69
|
-
.option('-c, --commit', 'Automatically commit with the generated message')
|
|
70
|
-
.option('-d, --dry-run', 'Preview commit without executing (shows what would be committed)')
|
|
71
|
-
.option('-a, --amend', 'Amend the last commit message instead of creating a new one')
|
|
72
|
-
.option('--ai', 'Use AI to generate enhanced commit descriptions (requires API key in config)')
|
|
73
|
-
.option('--no-interactive', 'Disable interactive mode (just show the message)')
|
|
74
|
-
.option('--no-lint', 'Skip commit message linting')
|
|
75
|
-
.option('-m, --message-only', 'Output only the commit message (for scripts/hooks)')
|
|
76
|
-
.option('-s, --single', 'Show only one suggestion (skip multiple options)')
|
|
77
|
-
.action((options) => {
|
|
78
|
-
(0, generate_1.generateCommand)(options);
|
|
79
|
-
});
|
|
80
|
-
program.parse(process.argv);
|
|
81
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,kDAAsD;AACtD,0CAA8F;AAC9F,8CAAyE;AACzE,4CAAgD;AAEhD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,cAAc,CAAC;KACpB,WAAW,CAAC,qEAAqE,CAAC;KAClF,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,KAAK,CAAC,KAAK,CAAC;KACZ,WAAW,CAAC,qDAAqD,CAAC;KAClE,MAAM,CAAC,cAAc,EAAE,iDAAiD,CAAC;KACzE,MAAM,CAAC,eAAe,EAAE,kEAAkE,CAAC;KAC3F,MAAM,CAAC,aAAa,EAAE,6DAA6D,CAAC;KACpF,MAAM,CAAC,MAAM,EAAE,8EAA8E,CAAC;KAC9F,MAAM,CAAC,kBAAkB,EAAE,kDAAkD,CAAC;KAC9E,MAAM,CAAC,WAAW,EAAE,6BAA6B,CAAC;KAClD,MAAM,CAAC,oBAAoB,EAAE,oDAAoD,CAAC;KAClF,MAAM,CAAC,cAAc,EAAE,kDAAkD,CAAC;KAC1E,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,0BAAe,EAAC,OAAO,CAAC,CAAC,CAAC;AAEjD,gBAAgB;AAChB,MAAM,WAAW,GAAG,OAAO;KACxB,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kBAAkB,CAAC,CAAC;AAEnC,WAAW;KACR,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,yBAAkB,CAAC,CAAC;AAE9B,WAAW;KACR,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,2BAAoB,CAAC,CAAC;AAEhC,WAAW;KACR,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,wBAAiB,CAAC,CAAC;AAE7B,kBAAkB;AAClB,MAAM,aAAa,GAAG,OAAO;KAC1B,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,sBAAsB,CAAC,CAAC;AAEvC,aAAa;KACV,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,0BAAiB,CAAC,CAAC;AAE7B,aAAa;KACV,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,0BAAiB,CAAC,CAAC;AAE7B,gBAAgB;AAChB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,sBAAsB,EAAE,8BAA8B,EAAE,KAAK,CAAC;KACrE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAA,oBAAY,EAAC;QACX,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QAClC,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,yDAAyD;AACzD,OAAO;KACJ,MAAM,CAAC,cAAc,EAAE,iDAAiD,CAAC;KACzE,MAAM,CAAC,eAAe,EAAE,kEAAkE,CAAC;KAC3F,MAAM,CAAC,aAAa,EAAE,6DAA6D,CAAC;KACpF,MAAM,CAAC,MAAM,EAAE,8EAA8E,CAAC;KAC9F,MAAM,CAAC,kBAAkB,EAAE,kDAAkD,CAAC;KAC9E,MAAM,CAAC,WAAW,EAAE,6BAA6B,CAAC;KAClD,MAAM,CAAC,oBAAoB,EAAE,oDAAoD,CAAC;KAClF,MAAM,CAAC,cAAc,EAAE,kDAAkD,CAAC;KAC1E,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,IAAA,0BAAe,EAAC,OAAO,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { ChangeAnalysis, CommitType } from '../types';
|
|
2
|
-
interface AIResponse {
|
|
3
|
-
description: string;
|
|
4
|
-
type?: CommitType;
|
|
5
|
-
scope?: string;
|
|
6
|
-
}
|
|
7
|
-
export declare class AIService {
|
|
8
|
-
/**
|
|
9
|
-
* Check if AI is enabled and configured
|
|
10
|
-
*/
|
|
11
|
-
static isEnabled(): boolean;
|
|
12
|
-
/**
|
|
13
|
-
* Generate an AI-enhanced description for the commit
|
|
14
|
-
*/
|
|
15
|
-
static generateDescription(analysis: ChangeAnalysis, diff: string): Promise<AIResponse | null>;
|
|
16
|
-
/**
|
|
17
|
-
* Build the prompt for the AI
|
|
18
|
-
*/
|
|
19
|
-
private static buildPrompt;
|
|
20
|
-
/**
|
|
21
|
-
* Call OpenAI API
|
|
22
|
-
*/
|
|
23
|
-
private static callOpenAI;
|
|
24
|
-
/**
|
|
25
|
-
* Call Anthropic API
|
|
26
|
-
*/
|
|
27
|
-
private static callAnthropic;
|
|
28
|
-
/**
|
|
29
|
-
* Call Google AI Studio (Gemini) API
|
|
30
|
-
*/
|
|
31
|
-
private static callGoogle;
|
|
32
|
-
/**
|
|
33
|
-
* Call OpenRouter API (OpenAI-compatible)
|
|
34
|
-
*/
|
|
35
|
-
private static callOpenRouter;
|
|
36
|
-
/**
|
|
37
|
-
* Get default model for provider
|
|
38
|
-
*/
|
|
39
|
-
private static getDefaultModel;
|
|
40
|
-
}
|
|
41
|
-
export {};
|
|
42
|
-
//# sourceMappingURL=aiService.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"aiService.d.ts","sourceRoot":"","sources":["../../src/services/aiService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtD,UAAU,UAAU;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,SAAS;IACpB;;OAEG;IACH,MAAM,CAAC,SAAS,IAAI,OAAO;IAK3B;;OAEG;WACU,mBAAmB,CAC9B,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAmC7B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAgC1B;;OAEG;mBACkB,UAAU;IAkC/B;;OAEG;mBACkB,aAAa;IAkClC;;OAEG;mBACkB,UAAU;IA2C/B;;OAEG;mBACkB,cAAc;IAoCnC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;CAc/B"}
|
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AIService = void 0;
|
|
4
|
-
const configService_1 = require("./configService");
|
|
5
|
-
class AIService {
|
|
6
|
-
/**
|
|
7
|
-
* Check if AI is enabled and configured
|
|
8
|
-
*/
|
|
9
|
-
static isEnabled() {
|
|
10
|
-
const config = configService_1.ConfigService.getConfig();
|
|
11
|
-
return config.ai?.enabled === true && !!config.ai?.apiKey;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Generate an AI-enhanced description for the commit
|
|
15
|
-
*/
|
|
16
|
-
static async generateDescription(analysis, diff) {
|
|
17
|
-
const config = configService_1.ConfigService.getConfig();
|
|
18
|
-
const aiConfig = config.ai;
|
|
19
|
-
if (!aiConfig?.enabled || !aiConfig?.apiKey) {
|
|
20
|
-
return null;
|
|
21
|
-
}
|
|
22
|
-
const provider = aiConfig.provider || 'openai';
|
|
23
|
-
const model = aiConfig.model || this.getDefaultModel(provider);
|
|
24
|
-
// Truncate diff to avoid token limits
|
|
25
|
-
const truncatedDiff = diff.length > 3000 ? diff.substring(0, 3000) + '\n...(truncated)' : diff;
|
|
26
|
-
const prompt = this.buildPrompt(analysis, truncatedDiff);
|
|
27
|
-
try {
|
|
28
|
-
if (provider === 'openai') {
|
|
29
|
-
return await this.callOpenAI(aiConfig.apiKey, model, prompt);
|
|
30
|
-
}
|
|
31
|
-
else if (provider === 'anthropic') {
|
|
32
|
-
return await this.callAnthropic(aiConfig.apiKey, model, prompt);
|
|
33
|
-
}
|
|
34
|
-
else if (provider === 'google') {
|
|
35
|
-
return await this.callGoogle(aiConfig.apiKey, model, prompt);
|
|
36
|
-
}
|
|
37
|
-
else if (provider === 'openrouter') {
|
|
38
|
-
return await this.callOpenRouter(aiConfig.apiKey, model, prompt);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
catch (error) {
|
|
42
|
-
const errorMsg = error instanceof Error ? error.message : 'Unknown error';
|
|
43
|
-
console.error(`\n⚠ AI Error: ${errorMsg}`);
|
|
44
|
-
throw error; // Re-throw so caller can handle it
|
|
45
|
-
}
|
|
46
|
-
return null;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Build the prompt for the AI
|
|
50
|
-
*/
|
|
51
|
-
static buildPrompt(analysis, diff) {
|
|
52
|
-
const filesChanged = [
|
|
53
|
-
...analysis.fileChanges.added.map(f => `+ ${f} (added)`),
|
|
54
|
-
...analysis.fileChanges.modified.map(f => `~ ${f} (modified)`),
|
|
55
|
-
...analysis.fileChanges.deleted.map(f => `- ${f} (deleted)`),
|
|
56
|
-
...analysis.fileChanges.renamed.map(f => `→ ${f} (renamed)`),
|
|
57
|
-
].join('\n');
|
|
58
|
-
return `You are a helpful assistant that generates concise, professional git commit messages following the Conventional Commits specification.
|
|
59
|
-
|
|
60
|
-
Given the following git diff and file changes, generate a commit message description (NOT the full message, just the description after the type: prefix).
|
|
61
|
-
|
|
62
|
-
FILE CHANGES:
|
|
63
|
-
${filesChanged}
|
|
64
|
-
|
|
65
|
-
DETECTED COMMIT TYPE: ${analysis.commitType}
|
|
66
|
-
${analysis.scope ? `DETECTED SCOPE: ${analysis.scope}` : ''}
|
|
67
|
-
${analysis.isBreakingChange ? 'THIS IS A BREAKING CHANGE' : ''}
|
|
68
|
-
|
|
69
|
-
GIT DIFF:
|
|
70
|
-
${diff}
|
|
71
|
-
|
|
72
|
-
RULES:
|
|
73
|
-
1. Write a clear, concise description (max 50 characters ideal, 72 max)
|
|
74
|
-
2. Use lowercase and imperative mood (e.g., "add", "fix", "update", not "added", "fixes", "updated")
|
|
75
|
-
3. Don't end with a period
|
|
76
|
-
4. Focus on WHAT changed and WHY, not HOW
|
|
77
|
-
5. Be specific but brief
|
|
78
|
-
|
|
79
|
-
Respond with ONLY the description text, nothing else. No quotes, no type prefix, just the description.`;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Call OpenAI API
|
|
83
|
-
*/
|
|
84
|
-
static async callOpenAI(apiKey, model, prompt) {
|
|
85
|
-
const response = await fetch('https://api.openai.com/v1/chat/completions', {
|
|
86
|
-
method: 'POST',
|
|
87
|
-
headers: {
|
|
88
|
-
'Content-Type': 'application/json',
|
|
89
|
-
'Authorization': `Bearer ${apiKey}`,
|
|
90
|
-
},
|
|
91
|
-
body: JSON.stringify({
|
|
92
|
-
model,
|
|
93
|
-
messages: [
|
|
94
|
-
{ role: 'user', content: prompt }
|
|
95
|
-
],
|
|
96
|
-
max_tokens: 100,
|
|
97
|
-
temperature: 0.3,
|
|
98
|
-
}),
|
|
99
|
-
});
|
|
100
|
-
if (!response.ok) {
|
|
101
|
-
const errorText = await response.text();
|
|
102
|
-
throw new Error(`OpenAI API error: ${response.status} - ${errorText}`);
|
|
103
|
-
}
|
|
104
|
-
const data = await response.json();
|
|
105
|
-
const content = data.choices?.[0]?.message?.content?.trim();
|
|
106
|
-
if (content) {
|
|
107
|
-
return { description: content.toLowerCase() };
|
|
108
|
-
}
|
|
109
|
-
return null;
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Call Anthropic API
|
|
113
|
-
*/
|
|
114
|
-
static async callAnthropic(apiKey, model, prompt) {
|
|
115
|
-
const response = await fetch('https://api.anthropic.com/v1/messages', {
|
|
116
|
-
method: 'POST',
|
|
117
|
-
headers: {
|
|
118
|
-
'Content-Type': 'application/json',
|
|
119
|
-
'x-api-key': apiKey,
|
|
120
|
-
'anthropic-version': '2023-06-01',
|
|
121
|
-
},
|
|
122
|
-
body: JSON.stringify({
|
|
123
|
-
model,
|
|
124
|
-
max_tokens: 100,
|
|
125
|
-
messages: [
|
|
126
|
-
{ role: 'user', content: prompt }
|
|
127
|
-
],
|
|
128
|
-
}),
|
|
129
|
-
});
|
|
130
|
-
if (!response.ok) {
|
|
131
|
-
const errorText = await response.text();
|
|
132
|
-
throw new Error(`Anthropic API error: ${response.status} - ${errorText}`);
|
|
133
|
-
}
|
|
134
|
-
const data = await response.json();
|
|
135
|
-
const content = data.content?.find(c => c.type === 'text')?.text?.trim();
|
|
136
|
-
if (content) {
|
|
137
|
-
return { description: content.toLowerCase() };
|
|
138
|
-
}
|
|
139
|
-
return null;
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Call Google AI Studio (Gemini) API
|
|
143
|
-
*/
|
|
144
|
-
static async callGoogle(apiKey, model, prompt) {
|
|
145
|
-
const response = await fetch(`https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${apiKey}`, {
|
|
146
|
-
method: 'POST',
|
|
147
|
-
headers: {
|
|
148
|
-
'Content-Type': 'application/json',
|
|
149
|
-
},
|
|
150
|
-
body: JSON.stringify({
|
|
151
|
-
contents: [
|
|
152
|
-
{
|
|
153
|
-
parts: [{ text: prompt }],
|
|
154
|
-
},
|
|
155
|
-
],
|
|
156
|
-
generationConfig: {
|
|
157
|
-
maxOutputTokens: 100,
|
|
158
|
-
temperature: 0.3,
|
|
159
|
-
},
|
|
160
|
-
}),
|
|
161
|
-
});
|
|
162
|
-
if (!response.ok) {
|
|
163
|
-
const errorText = await response.text();
|
|
164
|
-
throw new Error(`Google AI API error: ${response.status} - ${errorText}`);
|
|
165
|
-
}
|
|
166
|
-
const data = await response.json();
|
|
167
|
-
const content = data.candidates?.[0]?.content?.parts?.[0]?.text?.trim();
|
|
168
|
-
if (content) {
|
|
169
|
-
return { description: content.toLowerCase() };
|
|
170
|
-
}
|
|
171
|
-
return null;
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Call OpenRouter API (OpenAI-compatible)
|
|
175
|
-
*/
|
|
176
|
-
static async callOpenRouter(apiKey, model, prompt) {
|
|
177
|
-
const response = await fetch('https://openrouter.ai/api/v1/chat/completions', {
|
|
178
|
-
method: 'POST',
|
|
179
|
-
headers: {
|
|
180
|
-
'Content-Type': 'application/json',
|
|
181
|
-
'Authorization': `Bearer ${apiKey}`,
|
|
182
|
-
'HTTP-Referer': 'https://github.com/AhmedMohamedAbdelaty/CommitGenie',
|
|
183
|
-
'X-Title': 'CommitGenie',
|
|
184
|
-
},
|
|
185
|
-
body: JSON.stringify({
|
|
186
|
-
model,
|
|
187
|
-
messages: [
|
|
188
|
-
{ role: 'user', content: prompt }
|
|
189
|
-
],
|
|
190
|
-
max_tokens: 100,
|
|
191
|
-
temperature: 0.3,
|
|
192
|
-
}),
|
|
193
|
-
});
|
|
194
|
-
if (!response.ok) {
|
|
195
|
-
const errorText = await response.text();
|
|
196
|
-
throw new Error(`OpenRouter API error: ${response.status} - ${errorText}`);
|
|
197
|
-
}
|
|
198
|
-
const data = await response.json();
|
|
199
|
-
const content = data.choices?.[0]?.message?.content?.trim();
|
|
200
|
-
if (content) {
|
|
201
|
-
return { description: content.toLowerCase() };
|
|
202
|
-
}
|
|
203
|
-
return null;
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Get default model for provider
|
|
207
|
-
*/
|
|
208
|
-
static getDefaultModel(provider) {
|
|
209
|
-
switch (provider) {
|
|
210
|
-
case 'openai':
|
|
211
|
-
return 'gpt-4o-mini';
|
|
212
|
-
case 'anthropic':
|
|
213
|
-
return 'claude-3-haiku-20240307';
|
|
214
|
-
case 'google':
|
|
215
|
-
return 'gemini-1.5-flash';
|
|
216
|
-
case 'openrouter':
|
|
217
|
-
return 'openai/gpt-3.5-turbo';
|
|
218
|
-
default:
|
|
219
|
-
return 'gpt-4o-mini';
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
exports.AIService = AIService;
|
|
224
|
-
//# sourceMappingURL=aiService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"aiService.js","sourceRoot":"","sources":["../../src/services/aiService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { ChangeAnalysis, CommitMessage, MessageSuggestion } from '../types';
|
|
2
|
-
export declare class AnalyzerService {
|
|
3
|
-
/**
|
|
4
|
-
* Analyze staged changes and return structured analysis
|
|
5
|
-
*/
|
|
6
|
-
static analyzeChanges(): ChangeAnalysis;
|
|
7
|
-
/**
|
|
8
|
-
* Detect breaking changes from diff content and file changes
|
|
9
|
-
*/
|
|
10
|
-
private static detectBreakingChanges;
|
|
11
|
-
/**
|
|
12
|
-
* Determine the commit type based on analysis
|
|
13
|
-
*/
|
|
14
|
-
private static determineCommitType;
|
|
15
|
-
/**
|
|
16
|
-
* Check if diff contains actual logic changes (not just formatting)
|
|
17
|
-
*/
|
|
18
|
-
private static hasLogicChanges;
|
|
19
|
-
/**
|
|
20
|
-
* Check if the changes are ONLY non-style JavaScript changes
|
|
21
|
-
* (console.log, debug statements, test prints, comments, etc.)
|
|
22
|
-
* Returns true if JS files have changes but NO actual styling changes
|
|
23
|
-
*/
|
|
24
|
-
private static hasOnlyNonStyleJsChanges;
|
|
25
|
-
/**
|
|
26
|
-
* Check if the diff contains only comment changes (documentation)
|
|
27
|
-
* Returns true if ALL changes are comments (no code changes)
|
|
28
|
-
*/
|
|
29
|
-
private static isCommentOnlyChange;
|
|
30
|
-
/**
|
|
31
|
-
* Perform semantic analysis on the diff to understand the nature of changes
|
|
32
|
-
* This provides intent-based understanding rather than line-count metrics
|
|
33
|
-
*/
|
|
34
|
-
private static analyzeSemanticChanges;
|
|
35
|
-
/**
|
|
36
|
-
* Detect which roles are affected by the changes and calculate semantic significance
|
|
37
|
-
* Significance is NOT based on line count - it's based on the semantic weight of patterns
|
|
38
|
-
*/
|
|
39
|
-
private static detectRoleChanges;
|
|
40
|
-
/**
|
|
41
|
-
* Determine if a pattern represents a high-value semantic change
|
|
42
|
-
*/
|
|
43
|
-
private static isHighValuePattern;
|
|
44
|
-
/**
|
|
45
|
-
* Detect the intent for changes in a specific role
|
|
46
|
-
*/
|
|
47
|
-
private static detectRoleIntent;
|
|
48
|
-
/**
|
|
49
|
-
* Determine the primary role from all detected role changes
|
|
50
|
-
*/
|
|
51
|
-
private static determinePrimaryRole;
|
|
52
|
-
/**
|
|
53
|
-
* Determine the overall intent of the changes
|
|
54
|
-
*/
|
|
55
|
-
private static determineIntent;
|
|
56
|
-
/**
|
|
57
|
-
* Extract affected element names (components, functions, etc.) from the diff
|
|
58
|
-
*/
|
|
59
|
-
private static extractAffectedElements;
|
|
60
|
-
/**
|
|
61
|
-
* Extract affected elements for a specific role
|
|
62
|
-
*/
|
|
63
|
-
private static extractElementsForRole;
|
|
64
|
-
/**
|
|
65
|
-
* Generate a human-readable summary for a role change
|
|
66
|
-
*/
|
|
67
|
-
private static generateRoleSummary;
|
|
68
|
-
/**
|
|
69
|
-
* Generate the WHY description for the commit
|
|
70
|
-
*/
|
|
71
|
-
private static generateIntentDescription;
|
|
72
|
-
/**
|
|
73
|
-
* Generate the WHAT changed description
|
|
74
|
-
*/
|
|
75
|
-
private static generateWhatChanged;
|
|
76
|
-
/**
|
|
77
|
-
* Generate a descriptive commit message
|
|
78
|
-
* Uses semantic analysis when available for intent-based descriptions
|
|
79
|
-
*/
|
|
80
|
-
private static generateDescription;
|
|
81
|
-
/**
|
|
82
|
-
* Generate description based on semantic analysis
|
|
83
|
-
* Creates intent-based messages like "update UserProfile validation logic"
|
|
84
|
-
*/
|
|
85
|
-
private static generateSemanticDescription;
|
|
86
|
-
/**
|
|
87
|
-
* Determine scope from file paths
|
|
88
|
-
*/
|
|
89
|
-
private static determineScope;
|
|
90
|
-
/**
|
|
91
|
-
* Extract file name from path
|
|
92
|
-
*/
|
|
93
|
-
private static getFileName;
|
|
94
|
-
/**
|
|
95
|
-
* Generate commit body for larger changes
|
|
96
|
-
* Includes semantic role context when available
|
|
97
|
-
*/
|
|
98
|
-
private static generateBody;
|
|
99
|
-
/**
|
|
100
|
-
* Apply a template to build the commit message subject line
|
|
101
|
-
*/
|
|
102
|
-
private static applyTemplate;
|
|
103
|
-
/**
|
|
104
|
-
* Build full commit message string
|
|
105
|
-
*/
|
|
106
|
-
private static buildFullMessage;
|
|
107
|
-
/**
|
|
108
|
-
* Generate the final commit message
|
|
109
|
-
*/
|
|
110
|
-
static generateCommitMessage(): CommitMessage;
|
|
111
|
-
/**
|
|
112
|
-
* Generate multiple message suggestions
|
|
113
|
-
*/
|
|
114
|
-
static generateMultipleSuggestions(): MessageSuggestion[];
|
|
115
|
-
/**
|
|
116
|
-
* Generate suggestions with optional AI enhancement
|
|
117
|
-
*/
|
|
118
|
-
static generateSuggestionsWithAI(useAI?: boolean): Promise<MessageSuggestion[]>;
|
|
119
|
-
/**
|
|
120
|
-
* Generate an alternative description style
|
|
121
|
-
*/
|
|
122
|
-
private static generateAlternativeDescription;
|
|
123
|
-
}
|
|
124
|
-
//# sourceMappingURL=analyzerService.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"analyzerService.d.ts","sourceRoot":"","sources":["../../src/services/analyzerService.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,cAAc,EAEd,aAAa,EAGb,iBAAiB,EAKlB,MAAM,UAAU,CAAC;AA0NlB,qBAAa,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,cAAc,IAAI,cAAc;IA0GvC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAuEpC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAoRlC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IA4B9B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAkEvC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IA+ClC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAuBrC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA8ChC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAkBjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAkD/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IA6BnC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAsD9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAkDtC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IA8CrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAUlC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IA2BxC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAkClC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAmFlC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAkD1C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAiD7B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAK1B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAmD3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IA8B5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAkE/B;;OAEG;IACH,MAAM,CAAC,qBAAqB,IAAI,aAAa;IAkC7C;;OAEG;IACH,MAAM,CAAC,2BAA2B,IAAI,iBAAiB,EAAE;IAqLzD;;OAEG;WACU,yBAAyB,CAAC,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA0E5F;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,8BAA8B;CAqC9C"}
|