@mehmetsagir/git-ai 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/README.md +365 -0
  2. package/bin/git-ai +4 -0
  3. package/dist/add.d.ts +5 -0
  4. package/dist/add.d.ts.map +1 -0
  5. package/dist/add.js +98 -0
  6. package/dist/add.js.map +1 -0
  7. package/dist/commit-processor.d.ts +6 -0
  8. package/dist/commit-processor.d.ts.map +1 -0
  9. package/dist/commit-processor.js +138 -0
  10. package/dist/commit-processor.js.map +1 -0
  11. package/dist/commit.d.ts +5 -0
  12. package/dist/commit.d.ts.map +1 -0
  13. package/dist/commit.js +245 -0
  14. package/dist/commit.js.map +1 -0
  15. package/dist/config.d.ts +44 -0
  16. package/dist/config.d.ts.map +1 -0
  17. package/dist/config.js +185 -0
  18. package/dist/config.js.map +1 -0
  19. package/dist/git.d.ts +54 -0
  20. package/dist/git.d.ts.map +1 -0
  21. package/dist/git.js +256 -0
  22. package/dist/git.js.map +1 -0
  23. package/dist/index.d.ts +3 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +138 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/openai.d.ts +22 -0
  28. package/dist/openai.d.ts.map +1 -0
  29. package/dist/openai.js +137 -0
  30. package/dist/openai.js.map +1 -0
  31. package/dist/prompts.d.ts +17 -0
  32. package/dist/prompts.d.ts.map +1 -0
  33. package/dist/prompts.js +117 -0
  34. package/dist/prompts.js.map +1 -0
  35. package/dist/reset.d.ts +5 -0
  36. package/dist/reset.d.ts.map +1 -0
  37. package/dist/reset.js +77 -0
  38. package/dist/reset.js.map +1 -0
  39. package/dist/setup.d.ts +5 -0
  40. package/dist/setup.d.ts.map +1 -0
  41. package/dist/setup.js +234 -0
  42. package/dist/setup.js.map +1 -0
  43. package/dist/types.d.ts +41 -0
  44. package/dist/types.d.ts.map +1 -0
  45. package/dist/types.js +3 -0
  46. package/dist/types.js.map +1 -0
  47. package/dist/user-management.d.ts +10 -0
  48. package/dist/user-management.d.ts.map +1 -0
  49. package/dist/user-management.js +225 -0
  50. package/dist/user-management.js.map +1 -0
  51. package/dist/users.d.ts +9 -0
  52. package/dist/users.d.ts.map +1 -0
  53. package/dist/users.js +129 -0
  54. package/dist/users.js.map +1 -0
  55. package/package.json +46 -0
package/dist/git.js ADDED
@@ -0,0 +1,256 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getStagedDiff = getStagedDiff;
7
+ exports.getUnstagedDiff = getUnstagedDiff;
8
+ exports.getAllDiff = getAllDiff;
9
+ exports.hasChanges = hasChanges;
10
+ exports.getGitUserInfo = getGitUserInfo;
11
+ exports.getAllGitUserProfiles = getAllGitUserProfiles;
12
+ exports.setGitUser = setGitUser;
13
+ exports.stageFiles = stageFiles;
14
+ exports.unstageAll = unstageAll;
15
+ exports.createCommit = createCommit;
16
+ exports.getStagedFiles = getStagedFiles;
17
+ exports.getAllChangedFiles = getAllChangedFiles;
18
+ exports.isGitRepository = isGitRepository;
19
+ const simple_git_1 = __importDefault(require("simple-git"));
20
+ /**
21
+ * Create git repository instance
22
+ */
23
+ function getGitInstance(repoPath = process.cwd()) {
24
+ return (0, simple_git_1.default)(repoPath);
25
+ }
26
+ /**
27
+ * Get staged changes
28
+ */
29
+ async function getStagedDiff() {
30
+ try {
31
+ const git = getGitInstance();
32
+ const diff = await git.diff(['--cached']);
33
+ return diff;
34
+ }
35
+ catch (error) {
36
+ const err = error;
37
+ throw new Error(`Error getting staged diff: ${err.message}`);
38
+ }
39
+ }
40
+ /**
41
+ * Get unstaged changes
42
+ */
43
+ async function getUnstagedDiff() {
44
+ try {
45
+ const git = getGitInstance();
46
+ const diff = await git.diff();
47
+ return diff;
48
+ }
49
+ catch (error) {
50
+ const err = error;
51
+ throw new Error(`Error getting unstaged diff: ${err.message}`);
52
+ }
53
+ }
54
+ /**
55
+ * Get all changes (staged + unstaged)
56
+ */
57
+ async function getAllDiff() {
58
+ try {
59
+ const staged = await getStagedDiff();
60
+ const unstaged = await getUnstagedDiff();
61
+ return {
62
+ staged,
63
+ unstaged,
64
+ all: `${staged}\n${unstaged}`.trim()
65
+ };
66
+ }
67
+ catch (error) {
68
+ const err = error;
69
+ throw new Error(`Error getting diff: ${err.message}`);
70
+ }
71
+ }
72
+ /**
73
+ * Check if there are changes
74
+ */
75
+ async function hasChanges() {
76
+ try {
77
+ const git = getGitInstance();
78
+ const status = await git.status();
79
+ return status.files.length > 0;
80
+ }
81
+ catch (error) {
82
+ const err = error;
83
+ throw new Error(`Error checking for changes: ${err.message}`);
84
+ }
85
+ }
86
+ /**
87
+ * Get git user info (global and local)
88
+ */
89
+ async function getGitUserInfo() {
90
+ try {
91
+ const git = getGitInstance();
92
+ const [name, email] = await Promise.all([
93
+ git.getConfig('user.name').then(config => config.value || null).catch(() => null),
94
+ git.getConfig('user.email').then(config => config.value || null).catch(() => null)
95
+ ]);
96
+ return { name, email };
97
+ }
98
+ catch (error) {
99
+ const err = error;
100
+ throw new Error(`Error getting git user info: ${err.message}`);
101
+ }
102
+ }
103
+ /**
104
+ * Collect user profiles from all git configs
105
+ */
106
+ async function getAllGitUserProfiles() {
107
+ try {
108
+ const git = getGitInstance();
109
+ const profiles = [];
110
+ // Global config
111
+ try {
112
+ const globalName = await git.getConfig('user.name', 'global').then(c => c.value).catch(() => null);
113
+ const globalEmail = await git.getConfig('user.email', 'global').then(c => c.value).catch(() => null);
114
+ if (globalName && globalEmail) {
115
+ profiles.push({
116
+ id: `global-${globalEmail}`,
117
+ name: globalName,
118
+ email: globalEmail,
119
+ scope: 'global',
120
+ label: `${globalName} <${globalEmail}> (Global)`
121
+ });
122
+ }
123
+ }
124
+ catch (e) {
125
+ // Continue if global config doesn't exist
126
+ }
127
+ // Local config
128
+ try {
129
+ const localName = await git.getConfig('user.name', 'local').then(c => c.value).catch(() => null);
130
+ const localEmail = await git.getConfig('user.email', 'local').then(c => c.value).catch(() => null);
131
+ if (localName && localEmail) {
132
+ const isDuplicate = profiles.some(p => p.email === localEmail && p.name === localName);
133
+ if (!isDuplicate) {
134
+ profiles.push({
135
+ id: `local-${localEmail}`,
136
+ name: localName,
137
+ email: localEmail,
138
+ scope: 'local',
139
+ label: `${localName} <${localEmail}> (Local)`
140
+ });
141
+ }
142
+ }
143
+ }
144
+ catch (e) {
145
+ // Continue if local config doesn't exist
146
+ }
147
+ return profiles;
148
+ }
149
+ catch (error) {
150
+ const err = error;
151
+ throw new Error(`Error getting git user profiles: ${err.message}`);
152
+ }
153
+ }
154
+ /**
155
+ * Set git user
156
+ */
157
+ async function setGitUser(name, email, scope = 'local') {
158
+ try {
159
+ const git = getGitInstance();
160
+ await git.addConfig('user.name', name, scope === 'global');
161
+ await git.addConfig('user.email', email, scope === 'global');
162
+ return true;
163
+ }
164
+ catch (error) {
165
+ const err = error;
166
+ throw new Error(`Error setting git user: ${err.message}`);
167
+ }
168
+ }
169
+ /**
170
+ * Stage files
171
+ */
172
+ async function stageFiles(files) {
173
+ try {
174
+ const git = getGitInstance();
175
+ await git.add(files);
176
+ return true;
177
+ }
178
+ catch (error) {
179
+ const err = error;
180
+ throw new Error(`Error staging files: ${err.message}`);
181
+ }
182
+ }
183
+ /**
184
+ * Unstage all staged files
185
+ */
186
+ async function unstageAll() {
187
+ try {
188
+ const git = getGitInstance();
189
+ await git.reset();
190
+ return true;
191
+ }
192
+ catch (error) {
193
+ const err = error;
194
+ throw new Error(`Error unstaging: ${err.message}`);
195
+ }
196
+ }
197
+ /**
198
+ * Create commit
199
+ */
200
+ async function createCommit(message, authorName = null, authorEmail = null) {
201
+ try {
202
+ const git = getGitInstance();
203
+ const options = {};
204
+ if (authorName && authorEmail) {
205
+ options['--author'] = `${authorName} <${authorEmail}>`;
206
+ }
207
+ await git.commit(message, options);
208
+ return true;
209
+ }
210
+ catch (error) {
211
+ const err = error;
212
+ throw new Error(`Error creating commit: ${err.message}`);
213
+ }
214
+ }
215
+ /**
216
+ * List staged files
217
+ */
218
+ async function getStagedFiles() {
219
+ try {
220
+ const git = getGitInstance();
221
+ const status = await git.status();
222
+ return status.staged;
223
+ }
224
+ catch (error) {
225
+ const err = error;
226
+ throw new Error(`Error getting staged files: ${err.message}`);
227
+ }
228
+ }
229
+ /**
230
+ * List all changed files
231
+ */
232
+ async function getAllChangedFiles() {
233
+ try {
234
+ const git = getGitInstance();
235
+ const status = await git.status();
236
+ return [...status.staged, ...status.not_added, ...status.modified];
237
+ }
238
+ catch (error) {
239
+ const err = error;
240
+ throw new Error(`Error getting changed files: ${err.message}`);
241
+ }
242
+ }
243
+ /**
244
+ * Check if git repository
245
+ */
246
+ async function isGitRepository() {
247
+ try {
248
+ const git = getGitInstance();
249
+ await git.status();
250
+ return true;
251
+ }
252
+ catch (error) {
253
+ return false;
254
+ }
255
+ }
256
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,138 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ const commander_1 = require("commander");
41
+ const chalk_1 = __importDefault(require("chalk"));
42
+ const setup = __importStar(require("./setup"));
43
+ const commit = __importStar(require("./commit"));
44
+ const users = __importStar(require("./users"));
45
+ const reset = __importStar(require("./reset"));
46
+ const add = __importStar(require("./add"));
47
+ const package_json_1 = __importDefault(require("../package.json"));
48
+ const program = new commander_1.Command();
49
+ /**
50
+ * Handle command errors consistently
51
+ */
52
+ function handleError(error, showStack = false) {
53
+ const err = error;
54
+ console.error(chalk_1.default.red(`\n❌ Error: ${err.message}\n`));
55
+ if (showStack && err.stack) {
56
+ console.error(chalk_1.default.gray(err.stack));
57
+ }
58
+ process.exit(1);
59
+ }
60
+ program
61
+ .name('git-ai')
62
+ .description('AI-powered git commit tool that analyzes diffs and creates conventional commit messages')
63
+ .version(package_json_1.default.version);
64
+ program
65
+ .command('setup')
66
+ .description('Initial setup - OpenAI API key and git user configuration')
67
+ .action(async () => {
68
+ try {
69
+ await setup.runSetup();
70
+ }
71
+ catch (error) {
72
+ handleError(error);
73
+ }
74
+ });
75
+ program
76
+ .command('commit')
77
+ .description('Analyze git diffs and create commits')
78
+ .option('-u, --user <user>', 'Git user ID or email to use (instead of default user)')
79
+ .action(async (options) => {
80
+ try {
81
+ await commit.runCommit(options.user);
82
+ }
83
+ catch (error) {
84
+ handleError(error, true);
85
+ }
86
+ });
87
+ program
88
+ .command('add')
89
+ .alias('add-user')
90
+ .description('Add a new git user profile')
91
+ .action(async () => {
92
+ try {
93
+ await add.addUser();
94
+ }
95
+ catch (error) {
96
+ handleError(error);
97
+ }
98
+ });
99
+ program
100
+ .command('list')
101
+ .alias('users')
102
+ .description('List all configured git user profiles')
103
+ .action(() => {
104
+ try {
105
+ users.listUsers();
106
+ }
107
+ catch (error) {
108
+ handleError(error);
109
+ }
110
+ });
111
+ program
112
+ .command('remove')
113
+ .alias('delete')
114
+ .description('Remove a git user profile')
115
+ .action(async () => {
116
+ try {
117
+ await users.removeUser();
118
+ }
119
+ catch (error) {
120
+ handleError(error);
121
+ }
122
+ });
123
+ program
124
+ .command('reset')
125
+ .description('Reset all configuration (deletes OpenAI key and all git users)')
126
+ .action(async () => {
127
+ try {
128
+ await reset.resetConfig();
129
+ }
130
+ catch (error) {
131
+ handleError(error);
132
+ }
133
+ });
134
+ if (process.argv.length === 2) {
135
+ program.help();
136
+ }
137
+ program.parse(process.argv);
138
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import OpenAI from 'openai';
2
+ import { AnalysisResult } from './types';
3
+ /**
4
+ * Initialize OpenAI client
5
+ */
6
+ export declare function initOpenAI(apiKey: string): OpenAI;
7
+ /**
8
+ * Get OpenAI client
9
+ */
10
+ export declare function getOpenAIClient(): OpenAI;
11
+ /**
12
+ * Analyze git diff and create commit groups
13
+ */
14
+ export declare function analyzeDiffAndGroup(diff: string, apiKey: string): Promise<AnalysisResult>;
15
+ /**
16
+ * Generate commit message for a single diff (simple usage)
17
+ */
18
+ export declare function generateCommitMessage(diff: string, apiKey: string): Promise<{
19
+ commitMessage: string;
20
+ commitBody: string;
21
+ }>;
22
+ //# sourceMappingURL=openai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../src/openai.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAIzC;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMjD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAKxC;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAmC/F;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAmChI"}
package/dist/openai.js ADDED
@@ -0,0 +1,137 @@
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
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.initOpenAI = initOpenAI;
40
+ exports.getOpenAIClient = getOpenAIClient;
41
+ exports.analyzeDiffAndGroup = analyzeDiffAndGroup;
42
+ exports.generateCommitMessage = generateCommitMessage;
43
+ const openai_1 = __importDefault(require("openai"));
44
+ const prompts = __importStar(require("./prompts"));
45
+ let openaiClient = null;
46
+ /**
47
+ * Initialize OpenAI client
48
+ */
49
+ function initOpenAI(apiKey) {
50
+ if (!apiKey) {
51
+ throw new Error('OpenAI API key is required');
52
+ }
53
+ openaiClient = new openai_1.default({ apiKey });
54
+ return openaiClient;
55
+ }
56
+ /**
57
+ * Get OpenAI client
58
+ */
59
+ function getOpenAIClient() {
60
+ if (!openaiClient) {
61
+ throw new Error('OpenAI client not initialized. Call initOpenAI() first.');
62
+ }
63
+ return openaiClient;
64
+ }
65
+ /**
66
+ * Analyze git diff and create commit groups
67
+ */
68
+ async function analyzeDiffAndGroup(diff, apiKey) {
69
+ if (!apiKey) {
70
+ throw new Error('OpenAI API key is required');
71
+ }
72
+ initOpenAI(apiKey);
73
+ const client = getOpenAIClient();
74
+ const systemPrompt = prompts.getDiffAnalysisSystemPrompt();
75
+ const userPrompt = prompts.getDiffAnalysisUserPrompt(diff);
76
+ try {
77
+ const response = await client.chat.completions.create({
78
+ model: 'gpt-4o-mini',
79
+ messages: [
80
+ { role: 'system', content: systemPrompt },
81
+ { role: 'user', content: userPrompt }
82
+ ],
83
+ temperature: 0.3,
84
+ response_format: { type: 'json_object' }
85
+ });
86
+ const content = response.choices[0]?.message?.content;
87
+ if (!content) {
88
+ throw new Error('No response from OpenAI');
89
+ }
90
+ const result = JSON.parse(content);
91
+ return result;
92
+ }
93
+ catch (error) {
94
+ const err = error;
95
+ if (err.message.includes('API key')) {
96
+ throw new Error('Invalid OpenAI API key');
97
+ }
98
+ throw new Error(`OpenAI API error: ${err.message}`);
99
+ }
100
+ }
101
+ /**
102
+ * Generate commit message for a single diff (simple usage)
103
+ */
104
+ async function generateCommitMessage(diff, apiKey) {
105
+ if (!apiKey) {
106
+ throw new Error('OpenAI API key is required');
107
+ }
108
+ initOpenAI(apiKey);
109
+ const client = getOpenAIClient();
110
+ const systemPrompt = prompts.getSingleCommitSystemPrompt();
111
+ const userPrompt = prompts.getSingleCommitUserPrompt(diff);
112
+ try {
113
+ const response = await client.chat.completions.create({
114
+ model: 'gpt-4o-mini',
115
+ messages: [
116
+ { role: 'system', content: systemPrompt },
117
+ { role: 'user', content: userPrompt }
118
+ ],
119
+ temperature: 0.3,
120
+ response_format: { type: 'json_object' }
121
+ });
122
+ const content = response.choices[0]?.message?.content;
123
+ if (!content) {
124
+ throw new Error('No response from OpenAI');
125
+ }
126
+ const result = JSON.parse(content);
127
+ return result;
128
+ }
129
+ catch (error) {
130
+ const err = error;
131
+ if (err.message.includes('API key')) {
132
+ throw new Error('Invalid OpenAI API key');
133
+ }
134
+ throw new Error(`OpenAI API error: ${err.message}`);
135
+ }
136
+ }
137
+ //# sourceMappingURL=openai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../src/openai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Get system prompt for diff analysis and grouping
3
+ */
4
+ export declare function getDiffAnalysisSystemPrompt(): string;
5
+ /**
6
+ * Get user prompt for diff analysis
7
+ */
8
+ export declare function getDiffAnalysisUserPrompt(diff: string): string;
9
+ /**
10
+ * Get system prompt for single commit message generation
11
+ */
12
+ export declare function getSingleCommitSystemPrompt(): string;
13
+ /**
14
+ * Get user prompt for single commit message
15
+ */
16
+ export declare function getSingleCommitUserPrompt(diff: string): string;
17
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,CAsDpD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ9D;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,CAoBpD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAY9D"}