agent-gear 1.0.1 → 1.0.2
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktree-handler.d.ts","sourceRoot":"","sources":["../src/worktree-handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"worktree-handler.d.ts","sourceRoot":"","sources":["../src/worktree-handler.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,eAAe;IACpB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAmBvF,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAgB7E,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAU9C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;CAYtE;AAED,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
|
package/dist/worktree-handler.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { exec } from 'child_process';
|
|
2
2
|
import { mkdirSync, rmSync, existsSync } from 'fs';
|
|
3
|
-
import {
|
|
3
|
+
import { homedir } from 'os';
|
|
4
|
+
import { dirname, join } from 'path';
|
|
5
|
+
function expandTilde(p) {
|
|
6
|
+
return p.startsWith('~/') ? join(homedir(), p.slice(2)) : p;
|
|
7
|
+
}
|
|
4
8
|
function execAsync(command) {
|
|
5
9
|
return new Promise((resolve, reject) => {
|
|
6
10
|
exec(command, (error, stdout, stderr) => {
|
|
@@ -16,15 +20,16 @@ function execAsync(command) {
|
|
|
16
20
|
export class WorktreeHandler {
|
|
17
21
|
async add(repoPath, worktreePath, branch) {
|
|
18
22
|
try {
|
|
19
|
-
const
|
|
23
|
+
const resolvedPath = expandTilde(worktreePath);
|
|
24
|
+
const parentDir = dirname(resolvedPath);
|
|
20
25
|
if (!existsSync(parentDir)) {
|
|
21
26
|
mkdirSync(parentDir, { recursive: true });
|
|
22
27
|
}
|
|
23
|
-
const { stderr } = await execAsync(`git -C "${repoPath}" worktree add -b "${branch}" "${
|
|
28
|
+
const { stderr } = await execAsync(`git -C "${repoPath}" worktree add -b "${branch}" "${resolvedPath}"`);
|
|
24
29
|
if (stderr && !stderr.includes('already exists') && !stderr.includes('done') && !stderr.includes('Preparing')) {
|
|
25
30
|
return { success: false, error: stderr.trim() };
|
|
26
31
|
}
|
|
27
|
-
return { success: true, worktreePath, branch };
|
|
32
|
+
return { success: true, worktreePath: resolvedPath, branch };
|
|
28
33
|
}
|
|
29
34
|
catch (err) {
|
|
30
35
|
return { success: false, error: err.message };
|
|
@@ -32,12 +37,13 @@ export class WorktreeHandler {
|
|
|
32
37
|
}
|
|
33
38
|
async remove(repoPath, worktreePath) {
|
|
34
39
|
try {
|
|
35
|
-
const
|
|
40
|
+
const resolvedPath = expandTilde(worktreePath);
|
|
41
|
+
const { stderr } = await execAsync(`git -C "${repoPath}" worktree remove "${resolvedPath}"`);
|
|
36
42
|
if (stderr)
|
|
37
43
|
return { success: false, error: stderr.trim() };
|
|
38
44
|
try {
|
|
39
|
-
if (existsSync(
|
|
40
|
-
rmSync(
|
|
45
|
+
if (existsSync(resolvedPath)) {
|
|
46
|
+
rmSync(resolvedPath, { recursive: true });
|
|
41
47
|
}
|
|
42
48
|
}
|
|
43
49
|
catch { }
|
|
@@ -49,7 +55,8 @@ export class WorktreeHandler {
|
|
|
49
55
|
}
|
|
50
56
|
async status(path) {
|
|
51
57
|
try {
|
|
52
|
-
const
|
|
58
|
+
const resolvedPath = expandTilde(path);
|
|
59
|
+
const { stdout } = await execAsync(`git -C "${resolvedPath}" status --porcelain`);
|
|
53
60
|
return { isClean: stdout.trim().length === 0 };
|
|
54
61
|
}
|
|
55
62
|
catch (err) {
|
|
@@ -58,8 +65,9 @@ export class WorktreeHandler {
|
|
|
58
65
|
}
|
|
59
66
|
async commit(path, message) {
|
|
60
67
|
try {
|
|
61
|
-
|
|
62
|
-
|
|
68
|
+
const resolvedPath = expandTilde(path);
|
|
69
|
+
await execAsync(`git -C "${resolvedPath}" add -A`);
|
|
70
|
+
const { stdout, stderr } = await execAsync(`git -C "${resolvedPath}" commit -m "${message}"`);
|
|
63
71
|
if (stderr && !stdout)
|
|
64
72
|
return { success: false, error: stderr.trim() };
|
|
65
73
|
const hash = stdout.match(/\[[\w\/]+ ([a-f0-9]+)\]/)?.[1];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktree-handler.js","sourceRoot":"","sources":["../src/worktree-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAsB,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"worktree-handler.js","sourceRoot":"","sources":["../src/worktree-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAsB,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,SAAS,WAAW,CAAC,CAAS;IAC5B,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,SAAS,CAAC,OAAe;IAChC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,CAAC,OAAO,EAAE,CAAC,KAA2B,EAAE,MAAc,EAAE,MAAc,EAAE,EAAE;YAC5E,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAyBD,MAAM,OAAO,eAAe;IAC1B,KAAK,CAAC,GAAG,CAAC,QAAgB,EAAE,YAAoB,EAAE,MAAc;QAC9D,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;YAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;YACxC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,CAAC;YACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAChC,WAAW,QAAQ,sBAAsB,MAAM,MAAM,YAAY,GAAG,CACrE,CAAC;YACF,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC9G,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAClD,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;QAC/D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,YAAoB;QACjD,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;YAC/C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,WAAW,QAAQ,sBAAsB,YAAY,GAAG,CAAC,CAAC;YAC7F,IAAI,MAAM;gBAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAC5D,IAAI,CAAC;gBACH,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;oBAC7B,MAAM,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,CAAC;YACX,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,WAAW,YAAY,sBAAsB,CAAC,CAAC;YAClF,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,OAAe;QACxC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,SAAS,CAAC,WAAW,YAAY,UAAU,CAAC,CAAC;YACnD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,WAAW,YAAY,gBAAgB,OAAO,GAAG,CAAC,CAAC;YAC9F,IAAI,MAAM,IAAI,CAAC,MAAM;gBAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YACvE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC7C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;QAC3D,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC"}
|
package/package.json
CHANGED
package/src/worktree-handler.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { exec, type ExecException } from 'child_process';
|
|
2
2
|
import { mkdirSync, rmSync, existsSync } from 'fs';
|
|
3
|
-
import {
|
|
3
|
+
import { homedir } from 'os';
|
|
4
|
+
import { dirname, join } from 'path';
|
|
5
|
+
|
|
6
|
+
function expandTilde(p: string): string {
|
|
7
|
+
return p.startsWith('~/') ? join(homedir(), p.slice(2)) : p;
|
|
8
|
+
}
|
|
4
9
|
|
|
5
10
|
function execAsync(command: string): Promise<{ stdout: string; stderr: string }> {
|
|
6
11
|
return new Promise((resolve, reject) => {
|
|
@@ -40,17 +45,18 @@ export interface GitCommitResult {
|
|
|
40
45
|
export class WorktreeHandler {
|
|
41
46
|
async add(repoPath: string, worktreePath: string, branch: string): Promise<WorktreeAddResult> {
|
|
42
47
|
try {
|
|
43
|
-
const
|
|
48
|
+
const resolvedPath = expandTilde(worktreePath);
|
|
49
|
+
const parentDir = dirname(resolvedPath);
|
|
44
50
|
if (!existsSync(parentDir)) {
|
|
45
51
|
mkdirSync(parentDir, { recursive: true });
|
|
46
52
|
}
|
|
47
53
|
const { stderr } = await execAsync(
|
|
48
|
-
`git -C "${repoPath}" worktree add -b "${branch}" "${
|
|
54
|
+
`git -C "${repoPath}" worktree add -b "${branch}" "${resolvedPath}"`,
|
|
49
55
|
);
|
|
50
56
|
if (stderr && !stderr.includes('already exists') && !stderr.includes('done') && !stderr.includes('Preparing')) {
|
|
51
57
|
return { success: false, error: stderr.trim() };
|
|
52
58
|
}
|
|
53
|
-
return { success: true, worktreePath, branch };
|
|
59
|
+
return { success: true, worktreePath: resolvedPath, branch };
|
|
54
60
|
} catch (err) {
|
|
55
61
|
return { success: false, error: (err as Error).message };
|
|
56
62
|
}
|
|
@@ -58,11 +64,12 @@ export class WorktreeHandler {
|
|
|
58
64
|
|
|
59
65
|
async remove(repoPath: string, worktreePath: string): Promise<WorktreeRemoveResult> {
|
|
60
66
|
try {
|
|
61
|
-
const
|
|
67
|
+
const resolvedPath = expandTilde(worktreePath);
|
|
68
|
+
const { stderr } = await execAsync(`git -C "${repoPath}" worktree remove "${resolvedPath}"`);
|
|
62
69
|
if (stderr) return { success: false, error: stderr.trim() };
|
|
63
70
|
try {
|
|
64
|
-
if (existsSync(
|
|
65
|
-
rmSync(
|
|
71
|
+
if (existsSync(resolvedPath)) {
|
|
72
|
+
rmSync(resolvedPath, { recursive: true });
|
|
66
73
|
}
|
|
67
74
|
} catch { }
|
|
68
75
|
return { success: true };
|
|
@@ -73,7 +80,8 @@ export class WorktreeHandler {
|
|
|
73
80
|
|
|
74
81
|
async status(path: string): Promise<GitStatusResult> {
|
|
75
82
|
try {
|
|
76
|
-
const
|
|
83
|
+
const resolvedPath = expandTilde(path);
|
|
84
|
+
const { stdout } = await execAsync(`git -C "${resolvedPath}" status --porcelain`);
|
|
77
85
|
return { isClean: stdout.trim().length === 0 };
|
|
78
86
|
} catch (err) {
|
|
79
87
|
return { isClean: true, error: (err as Error).message };
|
|
@@ -82,8 +90,9 @@ export class WorktreeHandler {
|
|
|
82
90
|
|
|
83
91
|
async commit(path: string, message: string): Promise<GitCommitResult> {
|
|
84
92
|
try {
|
|
85
|
-
|
|
86
|
-
|
|
93
|
+
const resolvedPath = expandTilde(path);
|
|
94
|
+
await execAsync(`git -C "${resolvedPath}" add -A`);
|
|
95
|
+
const { stdout, stderr } = await execAsync(`git -C "${resolvedPath}" commit -m "${message}"`);
|
|
87
96
|
if (stderr && !stdout) return { success: false, error: stderr.trim() };
|
|
88
97
|
const hash = stdout.match(/\[[\w\/]+ ([a-f0-9]+)\]/)?.[1];
|
|
89
98
|
return { success: true, commitHash: hash };
|