@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
@@ -0,0 +1,225 @@
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.addShortcutsToProfiles = addShortcutsToProfiles;
40
+ exports.addMoreGitUsers = addMoreGitUsers;
41
+ const inquirer_1 = __importDefault(require("inquirer"));
42
+ const chalk_1 = __importDefault(require("chalk"));
43
+ const config = __importStar(require("./config"));
44
+ /**
45
+ * Add shortcuts to each user profile
46
+ */
47
+ async function addShortcutsToProfiles(profiles) {
48
+ const updatedProfiles = [];
49
+ const usedShortcuts = new Set();
50
+ for (const profile of profiles) {
51
+ const { addShortcut } = await inquirer_1.default.prompt([
52
+ {
53
+ type: 'confirm',
54
+ name: 'addShortcut',
55
+ message: `Would you like to add a shortcut for ${profile.label}?`,
56
+ default: true
57
+ }
58
+ ]);
59
+ let shortcut = null;
60
+ if (addShortcut) {
61
+ const { shortcutKey } = await inquirer_1.default.prompt([
62
+ {
63
+ type: 'input',
64
+ name: 'shortcutKey',
65
+ message: 'Enter shortcut key (e.g., g, my, work, personal) or "q" to skip:',
66
+ validate: (input) => {
67
+ const key = input.trim().toLowerCase();
68
+ if (key === 'q') {
69
+ return true;
70
+ }
71
+ if (!key || key.length === 0) {
72
+ return 'Shortcut key is required!';
73
+ }
74
+ if (usedShortcuts.has(key)) {
75
+ return 'This shortcut is already in use!';
76
+ }
77
+ if (key.includes(' ')) {
78
+ return 'Shortcut cannot contain spaces!';
79
+ }
80
+ return true;
81
+ }
82
+ }
83
+ ]);
84
+ if (shortcutKey.trim().toLowerCase() !== 'q') {
85
+ shortcut = shortcutKey.trim().toLowerCase();
86
+ usedShortcuts.add(shortcut);
87
+ console.log(chalk_1.default.green(`✓ Shortcut added: ${shortcut} → ${profile.label}\n`));
88
+ }
89
+ }
90
+ updatedProfiles.push({
91
+ ...profile,
92
+ shortcut
93
+ });
94
+ }
95
+ return updatedProfiles;
96
+ }
97
+ /**
98
+ * Add more git user profiles
99
+ */
100
+ async function addMoreGitUsers(existingProfiles) {
101
+ const newProfiles = [...existingProfiles];
102
+ const usedShortcuts = new Set(newProfiles.map(p => p.shortcut).filter((s) => Boolean(s)));
103
+ while (true) {
104
+ const { name, email } = await inquirer_1.default.prompt([
105
+ {
106
+ type: 'input',
107
+ name: 'name',
108
+ message: 'Git user name (or "q" to cancel):',
109
+ validate: (input) => {
110
+ const trimmed = input.trim();
111
+ if (trimmed.toLowerCase() === 'q') {
112
+ return true;
113
+ }
114
+ return trimmed.length > 0 || 'Name is required!';
115
+ }
116
+ },
117
+ {
118
+ type: 'input',
119
+ name: 'email',
120
+ message: 'Git user email (or "q" to cancel):',
121
+ validate: (input) => {
122
+ const trimmed = input.trim();
123
+ if (trimmed.toLowerCase() === 'q') {
124
+ return true;
125
+ }
126
+ if (!trimmed || trimmed.length === 0) {
127
+ return 'Email is required!';
128
+ }
129
+ if (!trimmed.includes('@')) {
130
+ return 'Please enter a valid email address!';
131
+ }
132
+ if (newProfiles.some(p => p.email === trimmed)) {
133
+ return 'This email is already added!';
134
+ }
135
+ return true;
136
+ }
137
+ }
138
+ ]);
139
+ if (name.trim().toLowerCase() === 'q' || email.trim().toLowerCase() === 'q') {
140
+ config.setGitUsers(newProfiles);
141
+ console.log(chalk_1.default.yellow('⚠ User addition cancelled. Continuing with setup...\n'));
142
+ break;
143
+ }
144
+ if (newProfiles.some(p => p.email === email)) {
145
+ const { continueAnyway } = await inquirer_1.default.prompt([
146
+ {
147
+ type: 'confirm',
148
+ name: 'continueAnyway',
149
+ message: 'This user already exists. Would you like to continue anyway?',
150
+ default: false
151
+ }
152
+ ]);
153
+ if (!continueAnyway) {
154
+ config.setGitUsers(newProfiles);
155
+ console.log(chalk_1.default.yellow('⚠ User addition cancelled. Continuing with setup...\n'));
156
+ break;
157
+ }
158
+ }
159
+ const newProfile = {
160
+ id: `manual-${Date.now()}-${email}`,
161
+ name,
162
+ email,
163
+ scope: 'manual',
164
+ label: `${name} <${email}> (Manual)`,
165
+ shortcut: null
166
+ };
167
+ const { addShortcut } = await inquirer_1.default.prompt([
168
+ {
169
+ type: 'confirm',
170
+ name: 'addShortcut',
171
+ message: `Would you like to add a shortcut for ${newProfile.label}?`,
172
+ default: true
173
+ }
174
+ ]);
175
+ if (addShortcut) {
176
+ const { shortcutKey } = await inquirer_1.default.prompt([
177
+ {
178
+ type: 'input',
179
+ name: 'shortcutKey',
180
+ message: 'Enter shortcut key (e.g., g, my, work, personal) or "q" to skip:',
181
+ validate: (input) => {
182
+ const key = input.trim().toLowerCase();
183
+ if (key === 'q') {
184
+ return true;
185
+ }
186
+ if (!key || key.length === 0) {
187
+ return 'Shortcut key is required!';
188
+ }
189
+ if (usedShortcuts.has(key)) {
190
+ return 'This shortcut is already in use!';
191
+ }
192
+ if (key.includes(' ')) {
193
+ return 'Shortcut cannot contain spaces!';
194
+ }
195
+ return true;
196
+ }
197
+ }
198
+ ]);
199
+ if (shortcutKey.trim().toLowerCase() !== 'q') {
200
+ newProfile.shortcut = shortcutKey.trim().toLowerCase();
201
+ usedShortcuts.add(newProfile.shortcut);
202
+ }
203
+ }
204
+ newProfiles.push(newProfile);
205
+ const shortcutInfo = newProfile.shortcut
206
+ ? chalk_1.default.yellow(` [shortcut: ${newProfile.shortcut}]`)
207
+ : '';
208
+ console.log(chalk_1.default.green(`✓ Profile added: ${name} <${email}>${shortcutInfo}\n`));
209
+ const { more } = await inquirer_1.default.prompt([
210
+ {
211
+ type: 'confirm',
212
+ name: 'more',
213
+ message: 'Would you like to add another profile?',
214
+ default: false
215
+ }
216
+ ]);
217
+ if (!more) {
218
+ break;
219
+ }
220
+ }
221
+ config.setGitUsers(newProfiles);
222
+ console.log(chalk_1.default.green(`✓ Total ${newProfiles.length} git user profiles saved\n`));
223
+ return newProfiles;
224
+ }
225
+ //# sourceMappingURL=user-management.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-management.js","sourceRoot":"","sources":["../src/user-management.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * List all git users
3
+ */
4
+ export declare function listUsers(): void;
5
+ /**
6
+ * Remove a git user interactively
7
+ */
8
+ export declare function removeUser(): Promise<void>;
9
+ //# sourceMappingURL=users.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../src/users.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,SAAS,IAAI,IAAI,CAiChC;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAuDhD"}
package/dist/users.js ADDED
@@ -0,0 +1,129 @@
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.listUsers = listUsers;
40
+ exports.removeUser = removeUser;
41
+ const chalk_1 = __importDefault(require("chalk"));
42
+ const inquirer_1 = __importDefault(require("inquirer"));
43
+ const config = __importStar(require("./config"));
44
+ /**
45
+ * List all git users
46
+ */
47
+ function listUsers() {
48
+ const users = config.getGitUsers();
49
+ const defaultUserId = config.getDefaultGitUser();
50
+ if (users.length === 0) {
51
+ console.log(chalk_1.default.yellow('⚠ No git user profiles found.\n'));
52
+ console.log(chalk_1.default.blue('Run "git-ai setup" to add users.\n'));
53
+ return;
54
+ }
55
+ console.log(chalk_1.default.blue.bold(`\n📋 Git User Profiles (${users.length} total)\n`));
56
+ users.forEach((user, index) => {
57
+ const isDefault = user.id === defaultUserId;
58
+ const defaultBadge = isDefault ? chalk_1.default.green(' [DEFAULT]') : '';
59
+ const shortcutInfo = user.shortcut
60
+ ? chalk_1.default.yellow(` [shortcut: ${user.shortcut}]`)
61
+ : chalk_1.default.gray(' [no shortcut]');
62
+ console.log(chalk_1.default.cyan(`${index + 1}. ${user.label}${defaultBadge}${shortcutInfo}`));
63
+ console.log(chalk_1.default.gray(` ID: ${user.id}`));
64
+ console.log(chalk_1.default.gray(` Scope: ${user.scope}`));
65
+ console.log('');
66
+ });
67
+ if (defaultUserId) {
68
+ const defaultUser = users.find(u => u.id === defaultUserId);
69
+ if (defaultUser) {
70
+ console.log(chalk_1.default.green(`✓ Default user: ${defaultUser.label}\n`));
71
+ }
72
+ }
73
+ else {
74
+ console.log(chalk_1.default.yellow('⚠ No default user set.\n'));
75
+ }
76
+ }
77
+ /**
78
+ * Remove a git user interactively
79
+ */
80
+ async function removeUser() {
81
+ const users = config.getGitUsers();
82
+ if (users.length === 0) {
83
+ console.log(chalk_1.default.yellow('⚠ No git user profiles found.\n'));
84
+ console.log(chalk_1.default.blue('Run "git-ai setup" to add users.\n'));
85
+ return;
86
+ }
87
+ console.log(chalk_1.default.blue.bold('\n🗑️ Remove Git User\n'));
88
+ const { userToRemove } = await inquirer_1.default.prompt([
89
+ {
90
+ type: 'list',
91
+ name: 'userToRemove',
92
+ message: 'Select user to remove:',
93
+ choices: users.map(u => ({
94
+ name: `${u.label}${u.shortcut ? ` [shortcut: ${u.shortcut}]` : ''}`,
95
+ value: u.id
96
+ }))
97
+ }
98
+ ]);
99
+ const user = users.find(u => u.id === userToRemove);
100
+ if (!user) {
101
+ console.log(chalk_1.default.red('❌ User not found.\n'));
102
+ return;
103
+ }
104
+ const { confirm } = await inquirer_1.default.prompt([
105
+ {
106
+ type: 'confirm',
107
+ name: 'confirm',
108
+ message: `Are you sure you want to remove ${user.label}?`,
109
+ default: false
110
+ }
111
+ ]);
112
+ if (!confirm) {
113
+ console.log(chalk_1.default.yellow('⚠ Removal cancelled.\n'));
114
+ return;
115
+ }
116
+ const success = config.removeGitUser(userToRemove);
117
+ if (success) {
118
+ console.log(chalk_1.default.green(`✓ User removed: ${user.label}\n`));
119
+ const remainingUsers = config.getGitUsers();
120
+ if (remainingUsers.length > 0 && config.getDefaultGitUser() === null) {
121
+ console.log(chalk_1.default.yellow('⚠ Default user was removed. Consider setting a new default.\n'));
122
+ console.log(chalk_1.default.blue('Run "git-ai setup" to update default user.\n'));
123
+ }
124
+ }
125
+ else {
126
+ console.log(chalk_1.default.red('❌ Failed to remove user.\n'));
127
+ }
128
+ }
129
+ //# sourceMappingURL=users.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"users.js","sourceRoot":"","sources":["../src/users.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,8BAiCC;AAKD,gCAuDC;AApGD,kDAA0B;AAC1B,wDAAgC;AAChC,iDAAmC;AAEnC;;GAEG;AACH,SAAgB,SAAS;IACvB,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACnC,MAAM,aAAa,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;IAEjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAC9D,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,KAAK,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC;IAEjF,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,KAAK,aAAa,CAAC;QAC5C,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ;YAChC,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,QAAQ,GAAG,CAAC;YAC/C,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEjC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,GAAG,YAAY,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC;QACrF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC;QAC5D,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,mBAAmB,WAAW,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,UAAU;IAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAEnC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAC9D,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAEzD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAA2B;QACvE;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,wBAAwB;YACjC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACvB,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACnE,KAAK,EAAE,CAAC,CAAC,EAAE;aACZ,CAAC,CAAC;SACJ;KACF,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC;IACpD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAuB;QAC9D;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,mCAAmC,IAAI,CAAC,KAAK,GAAG;YACzD,OAAO,EAAE,KAAK;SACf;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACpD,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IACnD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;QAE5D,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,+DAA+D,CAAC,CAAC,CAAC;YAC3F,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACvD,CAAC;AACH,CAAC"}
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "@mehmetsagir/git-ai",
3
+ "version": "0.0.1",
4
+ "description": "AI-powered git commit tool that analyzes diffs and creates conventional commit messages",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "git-ai": "bin/git-ai"
8
+ },
9
+ "scripts": {
10
+ "build": "tsc",
11
+ "prepublishOnly": "npm run build"
12
+ },
13
+ "files": [
14
+ "dist",
15
+ "bin",
16
+ "README.md",
17
+ "package.json",
18
+ "package-lock.json"
19
+ ],
20
+ "keywords": [
21
+ "git",
22
+ "commit",
23
+ "ai",
24
+ "openai",
25
+ "conventional-commits",
26
+ "cli"
27
+ ],
28
+ "author": "Mehmet Sağır <mehmetsagirdev@gmail.com>",
29
+ "license": "MIT",
30
+ "dependencies": {
31
+ "chalk": "^4.1.2",
32
+ "commander": "^11.1.0",
33
+ "inquirer": "^8.2.6",
34
+ "openai": "^4.20.1",
35
+ "ora": "^5.4.1",
36
+ "simple-git": "^3.20.0"
37
+ },
38
+ "devDependencies": {
39
+ "@types/inquirer": "^8.2.10",
40
+ "@types/node": "^20.10.0",
41
+ "typescript": "^5.3.3"
42
+ },
43
+ "engines": {
44
+ "node": ">=14.0.0"
45
+ }
46
+ }