@mehmetsagir/git-ai 0.0.9 → 0.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +91 -319
- package/dist/commit.d.ts +1 -4
- package/dist/commit.d.ts.map +1 -1
- package/dist/commit.js +214 -208
- package/dist/commit.js.map +1 -1
- package/dist/config.d.ts +0 -39
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -95
- package/dist/config.js.map +1 -1
- package/dist/git.d.ts +19 -51
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +137 -269
- package/dist/git.js.map +1 -1
- package/dist/index.js +54 -109
- package/dist/index.js.map +1 -1
- package/dist/openai.d.ts +2 -21
- package/dist/openai.d.ts.map +1 -1
- package/dist/openai.js +17 -96
- package/dist/openai.js.map +1 -1
- package/dist/prompts.d.ts +2 -16
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +32 -146
- package/dist/prompts.js.map +1 -1
- package/dist/reset.d.ts +0 -3
- package/dist/reset.d.ts.map +1 -1
- package/dist/reset.js +10 -20
- package/dist/reset.js.map +1 -1
- package/dist/setup.d.ts +0 -3
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +28 -156
- package/dist/setup.js.map +1 -1
- package/dist/stash.d.ts +2 -0
- package/dist/stash.d.ts.map +1 -0
- package/dist/stash.js +818 -0
- package/dist/stash.js.map +1 -0
- package/dist/types.d.ts +9 -23
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/hunk-parser.d.ts +22 -0
- package/dist/utils/hunk-parser.d.ts.map +1 -0
- package/dist/utils/hunk-parser.js +155 -0
- package/dist/utils/hunk-parser.js.map +1 -0
- package/package.json +8 -9
- package/dist/add.d.ts +0 -5
- package/dist/add.d.ts.map +0 -1
- package/dist/add.js +0 -98
- package/dist/add.js.map +0 -1
- package/dist/commit-processor.d.ts +0 -6
- package/dist/commit-processor.d.ts.map +0 -1
- package/dist/commit-processor.js +0 -226
- package/dist/commit-processor.js.map +0 -1
- package/dist/update.d.ts +0 -9
- package/dist/update.d.ts.map +0 -1
- package/dist/update.js +0 -69
- package/dist/update.js.map +0 -1
- package/dist/user-management.d.ts +0 -10
- package/dist/user-management.d.ts.map +0 -1
- package/dist/user-management.js +0 -175
- package/dist/user-management.js.map +0 -1
- package/dist/users.d.ts +0 -9
- package/dist/users.d.ts.map +0 -1
- package/dist/users.js +0 -129
- package/dist/users.js.map +0 -1
- package/dist/utils/validation.d.ts +0 -24
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/validation.js +0 -81
- package/dist/utils/validation.js.map +0 -1
package/dist/git.js
CHANGED
|
@@ -36,317 +36,185 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.
|
|
40
|
-
exports.getUnstagedDiff = getUnstagedDiff;
|
|
41
|
-
exports.getAllDiff = getAllDiff;
|
|
39
|
+
exports.isGitRepository = isGitRepository;
|
|
42
40
|
exports.hasChanges = hasChanges;
|
|
43
|
-
exports.
|
|
44
|
-
exports.getAllGitUserProfiles = getAllGitUserProfiles;
|
|
45
|
-
exports.setGitUser = setGitUser;
|
|
41
|
+
exports.getChangedFiles = getChangedFiles;
|
|
46
42
|
exports.stageFiles = stageFiles;
|
|
47
43
|
exports.unstageAll = unstageAll;
|
|
48
44
|
exports.createCommit = createCommit;
|
|
49
45
|
exports.getStagedFiles = getStagedFiles;
|
|
50
|
-
exports.
|
|
51
|
-
exports.
|
|
46
|
+
exports.getFullDiff = getFullDiff;
|
|
47
|
+
exports.getStashList = getStashList;
|
|
48
|
+
exports.getStashDiff = getStashDiff;
|
|
49
|
+
exports.getStashFiles = getStashFiles;
|
|
50
|
+
exports.applyStash = applyStash;
|
|
51
|
+
exports.dropStash = dropStash;
|
|
52
52
|
const simple_git_1 = __importDefault(require("simple-git"));
|
|
53
|
-
const fs = __importStar(require("fs"));
|
|
54
53
|
const path = __importStar(require("path"));
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
* Create git repository instance
|
|
58
|
-
*/
|
|
59
|
-
function getGitInstance(repoPath = process.cwd()) {
|
|
60
|
-
return (0, simple_git_1.default)(repoPath);
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Get staged changes
|
|
64
|
-
*/
|
|
65
|
-
async function getStagedDiff() {
|
|
54
|
+
const git = (0, simple_git_1.default)(process.cwd());
|
|
55
|
+
async function isGitRepository() {
|
|
66
56
|
try {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
return diff;
|
|
57
|
+
await git.status();
|
|
58
|
+
return true;
|
|
70
59
|
}
|
|
71
|
-
catch
|
|
72
|
-
|
|
60
|
+
catch {
|
|
61
|
+
return false;
|
|
73
62
|
}
|
|
74
63
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
function getNewFileDiff(filePath) {
|
|
79
|
-
try {
|
|
80
|
-
const fullPath = path.resolve(process.cwd(), filePath);
|
|
81
|
-
if (!fs.existsSync(fullPath)) {
|
|
82
|
-
return "";
|
|
83
|
-
}
|
|
84
|
-
const content = fs.readFileSync(fullPath, "utf8");
|
|
85
|
-
const lines = content.split("\n");
|
|
86
|
-
const diffLines = lines.map((line) => `+${line}`);
|
|
87
|
-
return `diff --git a/${filePath} b/${filePath}\nnew file mode 100644\nindex 0000000..1111111\n--- /dev/null\n+++ b/${filePath}\n${diffLines.join("\n")}`;
|
|
88
|
-
}
|
|
89
|
-
catch (error) {
|
|
90
|
-
return "";
|
|
91
|
-
}
|
|
64
|
+
async function hasChanges() {
|
|
65
|
+
const status = await git.status();
|
|
66
|
+
return status.files.length > 0;
|
|
92
67
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
const newFilesDiff = newFiles
|
|
105
|
-
.map((file) => getNewFileDiff(file))
|
|
106
|
-
.filter((diff) => diff.length > 0)
|
|
107
|
-
.join("\n\n");
|
|
108
|
-
if (trackedDiff && newFilesDiff) {
|
|
109
|
-
return `${trackedDiff}\n\n${newFilesDiff}`;
|
|
68
|
+
async function getChangedFiles() {
|
|
69
|
+
const status = await git.status();
|
|
70
|
+
const files = [];
|
|
71
|
+
const seen = new Set();
|
|
72
|
+
for (const f of status.files) {
|
|
73
|
+
if (seen.has(f.path))
|
|
74
|
+
continue;
|
|
75
|
+
seen.add(f.path);
|
|
76
|
+
let fileStatus = "modified";
|
|
77
|
+
if (f.index === "?" || f.index === "A" || f.working_dir === "?") {
|
|
78
|
+
fileStatus = "new";
|
|
110
79
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
catch (error) {
|
|
114
|
-
throw new Error(`Error getting unstaged diff: ${(0, errors_1.getErrorMessage)(error)}`);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Get all changes (staged + unstaged, including new files)
|
|
119
|
-
*/
|
|
120
|
-
async function getAllDiff() {
|
|
121
|
-
try {
|
|
122
|
-
const git = getGitInstance();
|
|
123
|
-
const status = await git.status();
|
|
124
|
-
// Get staged diff
|
|
125
|
-
const staged = await getStagedDiff();
|
|
126
|
-
// Get unstaged diff (includes new files)
|
|
127
|
-
const unstaged = await getUnstagedDiff();
|
|
128
|
-
// Also check for new files in staged area
|
|
129
|
-
// New files are those in not_added that might have been staged
|
|
130
|
-
const stagedNewFiles = [];
|
|
131
|
-
const allNewFiles = status.not_added || [];
|
|
132
|
-
const stagedFiles = status.staged || [];
|
|
133
|
-
// Check if any new files are also in staged (shouldn't happen, but check anyway)
|
|
134
|
-
for (const file of stagedFiles) {
|
|
135
|
-
if (allNewFiles.includes(file)) {
|
|
136
|
-
stagedNewFiles.push(file);
|
|
137
|
-
}
|
|
80
|
+
else if (f.index === "D" || f.working_dir === "D") {
|
|
81
|
+
fileStatus = "deleted";
|
|
138
82
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
const stagedNewFilesDiff = stagedNewFiles
|
|
142
|
-
.map((file) => getNewFileDiff(file))
|
|
143
|
-
.filter((diff) => diff.length > 0)
|
|
144
|
-
.join("\n\n");
|
|
145
|
-
if (stagedNewFilesDiff) {
|
|
146
|
-
stagedWithNew = staged ? `${staged}\n\n${stagedNewFilesDiff}` : stagedNewFilesDiff;
|
|
147
|
-
}
|
|
83
|
+
else if (f.index === "R") {
|
|
84
|
+
fileStatus = "renamed";
|
|
148
85
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
};
|
|
154
|
-
}
|
|
155
|
-
catch (error) {
|
|
156
|
-
throw new Error(`Error getting diff: ${(0, errors_1.getErrorMessage)(error)}`);
|
|
86
|
+
files.push({
|
|
87
|
+
file: f.path,
|
|
88
|
+
status: fileStatus,
|
|
89
|
+
isBinary: isBinaryFile(f.path),
|
|
90
|
+
});
|
|
157
91
|
}
|
|
92
|
+
return files;
|
|
158
93
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
}
|
|
94
|
+
function isBinaryFile(filePath) {
|
|
95
|
+
const binaryExtensions = [
|
|
96
|
+
".png", ".jpg", ".jpeg", ".gif", ".bmp", ".ico", ".webp", ".svg", ".tiff",
|
|
97
|
+
".woff", ".woff2", ".ttf", ".otf", ".eot",
|
|
98
|
+
".pdf", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx",
|
|
99
|
+
".zip", ".tar", ".gz", ".rar", ".7z",
|
|
100
|
+
".mp3", ".mp4", ".wav", ".avi", ".mov", ".webm", ".ogg",
|
|
101
|
+
".exe", ".dll", ".so", ".dylib", ".bin", ".dat",
|
|
102
|
+
];
|
|
103
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
104
|
+
return binaryExtensions.includes(ext);
|
|
171
105
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
try {
|
|
177
|
-
const git = getGitInstance();
|
|
178
|
-
const [name, email] = await Promise.all([
|
|
179
|
-
git
|
|
180
|
-
.getConfig("user.name")
|
|
181
|
-
.then((config) => config.value || null)
|
|
182
|
-
.catch(() => null),
|
|
183
|
-
git
|
|
184
|
-
.getConfig("user.email")
|
|
185
|
-
.then((config) => config.value || null)
|
|
186
|
-
.catch(() => null),
|
|
187
|
-
]);
|
|
188
|
-
return { name, email };
|
|
189
|
-
}
|
|
190
|
-
catch (error) {
|
|
191
|
-
throw new Error(`Error getting git user info: ${(0, errors_1.getErrorMessage)(error)}`);
|
|
192
|
-
}
|
|
106
|
+
async function stageFiles(files) {
|
|
107
|
+
if (files.length === 0)
|
|
108
|
+
return;
|
|
109
|
+
await git.add(files);
|
|
193
110
|
}
|
|
194
|
-
|
|
195
|
-
* Collect user profiles from all git configs
|
|
196
|
-
*/
|
|
197
|
-
async function getAllGitUserProfiles() {
|
|
111
|
+
async function unstageAll() {
|
|
198
112
|
try {
|
|
199
|
-
|
|
200
|
-
const profiles = [];
|
|
201
|
-
// Global config
|
|
202
|
-
try {
|
|
203
|
-
const globalName = await git
|
|
204
|
-
.getConfig("user.name", "global")
|
|
205
|
-
.then((c) => c.value)
|
|
206
|
-
.catch(() => null);
|
|
207
|
-
const globalEmail = await git
|
|
208
|
-
.getConfig("user.email", "global")
|
|
209
|
-
.then((c) => c.value)
|
|
210
|
-
.catch(() => null);
|
|
211
|
-
if (globalName && globalEmail) {
|
|
212
|
-
profiles.push({
|
|
213
|
-
id: `global-${globalEmail}`,
|
|
214
|
-
name: globalName,
|
|
215
|
-
email: globalEmail,
|
|
216
|
-
scope: "global",
|
|
217
|
-
label: `${globalName} <${globalEmail}> (Global)`,
|
|
218
|
-
});
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
catch (e) {
|
|
222
|
-
// Continue if global config doesn't exist
|
|
223
|
-
}
|
|
224
|
-
// Local config
|
|
225
|
-
try {
|
|
226
|
-
const localName = await git
|
|
227
|
-
.getConfig("user.name", "local")
|
|
228
|
-
.then((c) => c.value)
|
|
229
|
-
.catch(() => null);
|
|
230
|
-
const localEmail = await git
|
|
231
|
-
.getConfig("user.email", "local")
|
|
232
|
-
.then((c) => c.value)
|
|
233
|
-
.catch(() => null);
|
|
234
|
-
if (localName && localEmail) {
|
|
235
|
-
const isDuplicate = profiles.some((p) => p.email === localEmail && p.name === localName);
|
|
236
|
-
if (!isDuplicate) {
|
|
237
|
-
profiles.push({
|
|
238
|
-
id: `local-${localEmail}`,
|
|
239
|
-
name: localName,
|
|
240
|
-
email: localEmail,
|
|
241
|
-
scope: "local",
|
|
242
|
-
label: `${localName} <${localEmail}> (Local)`,
|
|
243
|
-
});
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
catch (e) {
|
|
248
|
-
// Continue if local config doesn't exist
|
|
249
|
-
}
|
|
250
|
-
return profiles;
|
|
113
|
+
await git.reset(["HEAD"]);
|
|
251
114
|
}
|
|
252
|
-
catch
|
|
253
|
-
|
|
115
|
+
catch {
|
|
116
|
+
// Ignore if nothing staged
|
|
254
117
|
}
|
|
255
118
|
}
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
*/
|
|
259
|
-
async function setGitUser(name, email, scope = "local") {
|
|
260
|
-
try {
|
|
261
|
-
const git = getGitInstance();
|
|
262
|
-
await git.addConfig("user.name", name, scope === "global");
|
|
263
|
-
await git.addConfig("user.email", email, scope === "global");
|
|
264
|
-
return true;
|
|
265
|
-
}
|
|
266
|
-
catch (error) {
|
|
267
|
-
throw new Error(`Error setting git user: ${(0, errors_1.getErrorMessage)(error)}`);
|
|
268
|
-
}
|
|
119
|
+
async function createCommit(message) {
|
|
120
|
+
await git.commit(message);
|
|
269
121
|
}
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
async function stageFiles(files) {
|
|
274
|
-
try {
|
|
275
|
-
const git = getGitInstance();
|
|
276
|
-
await git.add(files);
|
|
277
|
-
return true;
|
|
278
|
-
}
|
|
279
|
-
catch (error) {
|
|
280
|
-
throw new Error(`Error staging files: ${(0, errors_1.getErrorMessage)(error)}`);
|
|
281
|
-
}
|
|
122
|
+
async function getStagedFiles() {
|
|
123
|
+
const status = await git.status();
|
|
124
|
+
return status.staged;
|
|
282
125
|
}
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
*/
|
|
286
|
-
async function unstageAll() {
|
|
126
|
+
async function getFullDiff() {
|
|
127
|
+
let diff = "";
|
|
287
128
|
try {
|
|
288
|
-
const
|
|
289
|
-
|
|
290
|
-
|
|
129
|
+
const unstaged = await git.diff();
|
|
130
|
+
if (unstaged)
|
|
131
|
+
diff = unstaged;
|
|
291
132
|
}
|
|
292
|
-
catch
|
|
293
|
-
|
|
133
|
+
catch {
|
|
134
|
+
// Ignore
|
|
294
135
|
}
|
|
295
|
-
}
|
|
296
|
-
/**
|
|
297
|
-
* Create commit
|
|
298
|
-
*/
|
|
299
|
-
async function createCommit(message, authorName = null, authorEmail = null) {
|
|
300
136
|
try {
|
|
301
|
-
const
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
options["--author"] = `${authorName} <${authorEmail}>`;
|
|
137
|
+
const staged = await git.diff(["--cached"]);
|
|
138
|
+
if (staged) {
|
|
139
|
+
diff = diff ? diff + "\n" + staged : staged;
|
|
305
140
|
}
|
|
306
|
-
await git.commit(message, options);
|
|
307
|
-
return true;
|
|
308
141
|
}
|
|
309
|
-
catch
|
|
310
|
-
|
|
142
|
+
catch {
|
|
143
|
+
// Ignore
|
|
311
144
|
}
|
|
145
|
+
return diff;
|
|
312
146
|
}
|
|
313
|
-
|
|
314
|
-
* List staged files
|
|
315
|
-
*/
|
|
316
|
-
async function getStagedFiles() {
|
|
147
|
+
async function getStashList() {
|
|
317
148
|
try {
|
|
318
|
-
|
|
319
|
-
const
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
149
|
+
// Use git.raw for better compatibility
|
|
150
|
+
const result = await git.raw(["stash", "list", "--format=%H|%s|%ci"]);
|
|
151
|
+
if (!result || !result.trim())
|
|
152
|
+
return [];
|
|
153
|
+
const lines = result.trim().split("\n");
|
|
154
|
+
return lines.map((line, index) => {
|
|
155
|
+
const [hash, message, date] = line.split("|");
|
|
156
|
+
const branchMatch = message?.match(/^WIP on (.+?):|^On (.+?):/);
|
|
157
|
+
const branch = branchMatch ? (branchMatch[1] || branchMatch[2]) : "unknown";
|
|
158
|
+
return {
|
|
159
|
+
index,
|
|
160
|
+
hash: hash || "",
|
|
161
|
+
message: message || "",
|
|
162
|
+
date: date || "",
|
|
163
|
+
branch
|
|
164
|
+
};
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
catch (err) {
|
|
168
|
+
// Fallback: try without format
|
|
169
|
+
try {
|
|
170
|
+
const result = await git.raw(["stash", "list"]);
|
|
171
|
+
if (!result || !result.trim())
|
|
172
|
+
return [];
|
|
173
|
+
const lines = result.trim().split("\n");
|
|
174
|
+
return lines.map((line, index) => {
|
|
175
|
+
// Format: stash@{0}: WIP on branch: message
|
|
176
|
+
const match = line.match(/^stash@\{\d+\}:\s*(.+)$/);
|
|
177
|
+
const message = match ? match[1] : line;
|
|
178
|
+
const branchMatch = message.match(/^WIP on (.+?):|^On (.+?):/);
|
|
179
|
+
const branch = branchMatch ? (branchMatch[1] || branchMatch[2]) : "unknown";
|
|
180
|
+
return {
|
|
181
|
+
index,
|
|
182
|
+
hash: "",
|
|
183
|
+
message,
|
|
184
|
+
date: "",
|
|
185
|
+
branch
|
|
186
|
+
};
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
return [];
|
|
191
|
+
}
|
|
324
192
|
}
|
|
325
193
|
}
|
|
326
|
-
|
|
327
|
-
* List all changed files
|
|
328
|
-
*/
|
|
329
|
-
async function getAllChangedFiles() {
|
|
194
|
+
async function getStashDiff(index) {
|
|
330
195
|
try {
|
|
331
|
-
const
|
|
332
|
-
|
|
333
|
-
return [...status.staged, ...status.not_added, ...status.modified];
|
|
196
|
+
const result = await git.raw(["stash", "show", "-p", `stash@{${index}}`]);
|
|
197
|
+
return result || "";
|
|
334
198
|
}
|
|
335
|
-
catch
|
|
336
|
-
|
|
199
|
+
catch {
|
|
200
|
+
return "";
|
|
337
201
|
}
|
|
338
202
|
}
|
|
339
|
-
|
|
340
|
-
* Check if git repository
|
|
341
|
-
*/
|
|
342
|
-
async function isGitRepository() {
|
|
203
|
+
async function getStashFiles(index) {
|
|
343
204
|
try {
|
|
344
|
-
const
|
|
345
|
-
|
|
346
|
-
|
|
205
|
+
const result = await git.raw(["stash", "show", "--name-only", `stash@{${index}}`]);
|
|
206
|
+
if (!result)
|
|
207
|
+
return [];
|
|
208
|
+
return result.trim().split("\n").filter(f => f.trim());
|
|
347
209
|
}
|
|
348
|
-
catch
|
|
349
|
-
return
|
|
210
|
+
catch {
|
|
211
|
+
return [];
|
|
350
212
|
}
|
|
351
213
|
}
|
|
214
|
+
async function applyStash(index) {
|
|
215
|
+
await git.raw(["stash", "apply", `stash@{${index}}`]);
|
|
216
|
+
}
|
|
217
|
+
async function dropStash(index) {
|
|
218
|
+
await git.raw(["stash", "drop", `stash@{${index}}`]);
|
|
219
|
+
}
|
|
352
220
|
//# sourceMappingURL=git.js.map
|
package/dist/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../src/git.ts"],"names":[],"mappings":"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"}
|