forge-cc 0.1.4 → 0.1.6
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 +96 -10
- package/dist/cli.js +225 -7
- package/dist/cli.js.map +1 -1
- package/dist/go/auto-chain.d.ts +37 -5
- package/dist/go/auto-chain.js +220 -81
- package/dist/go/auto-chain.js.map +1 -1
- package/dist/go/executor.d.ts +2 -0
- package/dist/go/executor.js.map +1 -1
- package/dist/hooks/pre-commit.js +9 -3
- package/dist/hooks/pre-commit.js.map +1 -1
- package/dist/reporter/human.d.ts +5 -0
- package/dist/reporter/human.js +30 -0
- package/dist/reporter/human.js.map +1 -1
- package/dist/setup/templates.js +97 -122
- package/dist/setup/templates.js.map +1 -1
- package/dist/spec/generator.d.ts +20 -0
- package/dist/spec/generator.js +23 -2
- package/dist/spec/generator.js.map +1 -1
- package/dist/spec/interview.d.ts +20 -2
- package/dist/spec/interview.js +8 -0
- package/dist/spec/interview.js.map +1 -1
- package/dist/spec/scanner.d.ts +34 -0
- package/dist/spec/scanner.js +93 -0
- package/dist/spec/scanner.js.map +1 -1
- package/dist/spec/templates.d.ts +22 -0
- package/dist/spec/templates.js +8 -0
- package/dist/spec/templates.js.map +1 -1
- package/dist/utils/platform.d.ts +29 -0
- package/dist/utils/platform.js +90 -0
- package/dist/utils/platform.js.map +1 -0
- package/dist/worktree/identity.d.ts +9 -0
- package/dist/worktree/identity.js +32 -0
- package/dist/worktree/identity.js.map +1 -0
- package/dist/worktree/manager.d.ts +70 -0
- package/dist/worktree/manager.js +217 -0
- package/dist/worktree/manager.js.map +1 -0
- package/dist/worktree/parallel.d.ts +87 -0
- package/dist/worktree/parallel.js +328 -0
- package/dist/worktree/parallel.js.map +1 -0
- package/dist/worktree/session.d.ts +64 -0
- package/dist/worktree/session.js +193 -0
- package/dist/worktree/session.js.map +1 -0
- package/dist/worktree/state-merge.d.ts +43 -0
- package/dist/worktree/state-merge.js +162 -0
- package/dist/worktree/state-merge.js.map +1 -0
- package/hooks/pre-commit-verify.js +9 -3
- package/hooks/version-check.js +78 -78
- package/package.json +1 -1
- package/skills/forge-go.md +39 -0
- package/skills/forge-setup.md +183 -157
- package/skills/forge-spec.md +50 -12
- package/skills/forge-update.md +92 -72
package/dist/spec/scanner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/spec/scanner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/spec/scanner.ts"],"names":[],"mappings":"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"}
|
package/dist/spec/templates.d.ts
CHANGED
|
@@ -45,6 +45,12 @@ export declare const MilestoneWaveSchema: z.ZodObject<{
|
|
|
45
45
|
files: string[];
|
|
46
46
|
}[];
|
|
47
47
|
}>;
|
|
48
|
+
/**
|
|
49
|
+
* Milestones MUST fit in one agent context window. The maxContextWindowFit
|
|
50
|
+
* field is a hard constraint — if false, the milestone should be split.
|
|
51
|
+
* A milestone that requires more than ~4 agents across 2-3 waves is too
|
|
52
|
+
* large and risks context overflow during execution.
|
|
53
|
+
*/
|
|
48
54
|
export declare const MilestoneSchema: z.ZodObject<{
|
|
49
55
|
number: z.ZodNumber;
|
|
50
56
|
name: z.ZodString;
|
|
@@ -81,6 +87,8 @@ export declare const MilestoneSchema: z.ZodObject<{
|
|
|
81
87
|
}[];
|
|
82
88
|
}>, "many">;
|
|
83
89
|
verificationCommands: z.ZodArray<z.ZodString, "many">;
|
|
90
|
+
maxContextWindowFit: z.ZodDefault<z.ZodBoolean>;
|
|
91
|
+
dependsOn: z.ZodDefault<z.ZodArray<z.ZodNumber, "many">>;
|
|
84
92
|
}, "strip", z.ZodTypeAny, {
|
|
85
93
|
number: number;
|
|
86
94
|
name: string;
|
|
@@ -95,6 +103,8 @@ export declare const MilestoneSchema: z.ZodObject<{
|
|
|
95
103
|
}[];
|
|
96
104
|
}[];
|
|
97
105
|
verificationCommands: string[];
|
|
106
|
+
maxContextWindowFit: boolean;
|
|
107
|
+
dependsOn: number[];
|
|
98
108
|
}, {
|
|
99
109
|
number: number;
|
|
100
110
|
name: string;
|
|
@@ -109,6 +119,8 @@ export declare const MilestoneSchema: z.ZodObject<{
|
|
|
109
119
|
}[];
|
|
110
120
|
}[];
|
|
111
121
|
verificationCommands: string[];
|
|
122
|
+
maxContextWindowFit?: boolean | undefined;
|
|
123
|
+
dependsOn?: number[] | undefined;
|
|
112
124
|
}>;
|
|
113
125
|
export declare const PRDSchema: z.ZodObject<{
|
|
114
126
|
project: z.ZodString;
|
|
@@ -200,6 +212,8 @@ export declare const PRDSchema: z.ZodObject<{
|
|
|
200
212
|
}[];
|
|
201
213
|
}>, "many">;
|
|
202
214
|
verificationCommands: z.ZodArray<z.ZodString, "many">;
|
|
215
|
+
maxContextWindowFit: z.ZodDefault<z.ZodBoolean>;
|
|
216
|
+
dependsOn: z.ZodDefault<z.ZodArray<z.ZodNumber, "many">>;
|
|
203
217
|
}, "strip", z.ZodTypeAny, {
|
|
204
218
|
number: number;
|
|
205
219
|
name: string;
|
|
@@ -214,6 +228,8 @@ export declare const PRDSchema: z.ZodObject<{
|
|
|
214
228
|
}[];
|
|
215
229
|
}[];
|
|
216
230
|
verificationCommands: string[];
|
|
231
|
+
maxContextWindowFit: boolean;
|
|
232
|
+
dependsOn: number[];
|
|
217
233
|
}, {
|
|
218
234
|
number: number;
|
|
219
235
|
name: string;
|
|
@@ -228,6 +244,8 @@ export declare const PRDSchema: z.ZodObject<{
|
|
|
228
244
|
}[];
|
|
229
245
|
}[];
|
|
230
246
|
verificationCommands: string[];
|
|
247
|
+
maxContextWindowFit?: boolean | undefined;
|
|
248
|
+
dependsOn?: number[] | undefined;
|
|
231
249
|
}>, "many">;
|
|
232
250
|
verification: z.ZodObject<{
|
|
233
251
|
perMilestone: z.ZodArray<z.ZodString, "many">;
|
|
@@ -256,6 +274,8 @@ export declare const PRDSchema: z.ZodObject<{
|
|
|
256
274
|
}[];
|
|
257
275
|
}[];
|
|
258
276
|
verificationCommands: string[];
|
|
277
|
+
maxContextWindowFit: boolean;
|
|
278
|
+
dependsOn: number[];
|
|
259
279
|
}[];
|
|
260
280
|
project: string;
|
|
261
281
|
assignedTo: string;
|
|
@@ -301,6 +321,8 @@ export declare const PRDSchema: z.ZodObject<{
|
|
|
301
321
|
}[];
|
|
302
322
|
}[];
|
|
303
323
|
verificationCommands: string[];
|
|
324
|
+
maxContextWindowFit?: boolean | undefined;
|
|
325
|
+
dependsOn?: number[] | undefined;
|
|
304
326
|
}[];
|
|
305
327
|
project: string;
|
|
306
328
|
assignedTo: string;
|
package/dist/spec/templates.js
CHANGED
|
@@ -14,6 +14,12 @@ export const MilestoneWaveSchema = z.object({
|
|
|
14
14
|
files: z.array(z.string()),
|
|
15
15
|
})),
|
|
16
16
|
});
|
|
17
|
+
/**
|
|
18
|
+
* Milestones MUST fit in one agent context window. The maxContextWindowFit
|
|
19
|
+
* field is a hard constraint — if false, the milestone should be split.
|
|
20
|
+
* A milestone that requires more than ~4 agents across 2-3 waves is too
|
|
21
|
+
* large and risks context overflow during execution.
|
|
22
|
+
*/
|
|
17
23
|
export const MilestoneSchema = z.object({
|
|
18
24
|
number: z.number(),
|
|
19
25
|
name: z.string(),
|
|
@@ -21,6 +27,8 @@ export const MilestoneSchema = z.object({
|
|
|
21
27
|
assignedTo: z.string(),
|
|
22
28
|
waves: z.array(MilestoneWaveSchema),
|
|
23
29
|
verificationCommands: z.array(z.string()),
|
|
30
|
+
maxContextWindowFit: z.boolean().default(true),
|
|
31
|
+
dependsOn: z.array(z.number()).default([]),
|
|
24
32
|
});
|
|
25
33
|
export const PRDSchema = z.object({
|
|
26
34
|
project: z.string(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/spec/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,wEAAwE;AAExE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CACxC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,MAAM,EAAE,CAAC,CAAC,KAAK,CACb,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAC3B,CAAC,CACH;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;IACnC,oBAAoB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/spec/templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Write content to a file atomically using temp+rename.
|
|
3
|
+
* On Windows, rename can fail if another process has the file open --
|
|
4
|
+
* retry with exponential backoff (3 attempts: 50ms, 100ms, 200ms).
|
|
5
|
+
*/
|
|
6
|
+
export declare function atomicWriteFileSync(filePath: string, content: string): void;
|
|
7
|
+
/**
|
|
8
|
+
* Read and parse a JSON file. Returns null if the file doesn't exist.
|
|
9
|
+
* Throws on parse errors.
|
|
10
|
+
*/
|
|
11
|
+
export declare function readJsonFileSync<T>(filePath: string): T | null;
|
|
12
|
+
/**
|
|
13
|
+
* Atomically write a JSON object to a file with pretty printing.
|
|
14
|
+
*/
|
|
15
|
+
export declare function writeJsonFileSync(filePath: string, data: unknown): void;
|
|
16
|
+
/**
|
|
17
|
+
* Generate a short 8-character hex session ID from random bytes.
|
|
18
|
+
*/
|
|
19
|
+
export declare function generateSessionId(): string;
|
|
20
|
+
/**
|
|
21
|
+
* Normalize a path using path.resolve and path.join.
|
|
22
|
+
* Ensures consistent separators on all platforms.
|
|
23
|
+
*/
|
|
24
|
+
export declare function normalizePath(...segments: string[]): string;
|
|
25
|
+
/**
|
|
26
|
+
* Quote a string for safe shell usage.
|
|
27
|
+
* On Windows, uses double quotes. On POSIX, uses single quotes with escaping.
|
|
28
|
+
*/
|
|
29
|
+
export declare function shellQuote(value: string): string;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { writeFileSync, readFileSync, renameSync, unlinkSync, mkdirSync, existsSync, } from "node:fs";
|
|
2
|
+
import { join, resolve, dirname } from "node:path";
|
|
3
|
+
import { randomBytes } from "node:crypto";
|
|
4
|
+
/**
|
|
5
|
+
* Write content to a file atomically using temp+rename.
|
|
6
|
+
* On Windows, rename can fail if another process has the file open --
|
|
7
|
+
* retry with exponential backoff (3 attempts: 50ms, 100ms, 200ms).
|
|
8
|
+
*/
|
|
9
|
+
export function atomicWriteFileSync(filePath, content) {
|
|
10
|
+
const resolved = resolve(filePath);
|
|
11
|
+
const dir = dirname(resolved);
|
|
12
|
+
if (!existsSync(dir)) {
|
|
13
|
+
mkdirSync(dir, { recursive: true });
|
|
14
|
+
}
|
|
15
|
+
const tmpFile = resolved + ".tmp." + randomBytes(4).toString("hex");
|
|
16
|
+
writeFileSync(tmpFile, content, "utf-8");
|
|
17
|
+
const delays = [50, 100, 200];
|
|
18
|
+
for (let attempt = 0; attempt < delays.length; attempt++) {
|
|
19
|
+
try {
|
|
20
|
+
renameSync(tmpFile, resolved);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
const isLastAttempt = attempt === delays.length - 1;
|
|
25
|
+
if (isLastAttempt) {
|
|
26
|
+
// Clean up temp file on final failure, then rethrow
|
|
27
|
+
try {
|
|
28
|
+
unlinkSync(tmpFile);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// Ignore cleanup errors
|
|
32
|
+
}
|
|
33
|
+
throw err;
|
|
34
|
+
}
|
|
35
|
+
// Synchronous sleep for retry backoff
|
|
36
|
+
const waitUntil = Date.now() + delays[attempt];
|
|
37
|
+
while (Date.now() < waitUntil) {
|
|
38
|
+
// Busy-wait (sync context, no async available)
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Read and parse a JSON file. Returns null if the file doesn't exist.
|
|
45
|
+
* Throws on parse errors.
|
|
46
|
+
*/
|
|
47
|
+
export function readJsonFileSync(filePath) {
|
|
48
|
+
const resolved = resolve(filePath);
|
|
49
|
+
if (!existsSync(resolved)) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
const raw = readFileSync(resolved, "utf-8");
|
|
53
|
+
return JSON.parse(raw);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Atomically write a JSON object to a file with pretty printing.
|
|
57
|
+
*/
|
|
58
|
+
export function writeJsonFileSync(filePath, data) {
|
|
59
|
+
const content = JSON.stringify(data, null, 2) + "\n";
|
|
60
|
+
atomicWriteFileSync(filePath, content);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Generate a short 8-character hex session ID from random bytes.
|
|
64
|
+
*/
|
|
65
|
+
export function generateSessionId() {
|
|
66
|
+
return randomBytes(4).toString("hex");
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Normalize a path using path.resolve and path.join.
|
|
70
|
+
* Ensures consistent separators on all platforms.
|
|
71
|
+
*/
|
|
72
|
+
export function normalizePath(...segments) {
|
|
73
|
+
return resolve(join(...segments));
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Quote a string for safe shell usage.
|
|
77
|
+
* On Windows, uses double quotes. On POSIX, uses single quotes with escaping.
|
|
78
|
+
*/
|
|
79
|
+
export function shellQuote(value) {
|
|
80
|
+
if (process.platform === "win32") {
|
|
81
|
+
// Windows: wrap in double quotes, escape internal double quotes
|
|
82
|
+
const escaped = value.replace(/"/g, '\\"');
|
|
83
|
+
return `"${escaped}"`;
|
|
84
|
+
}
|
|
85
|
+
// POSIX: wrap in single quotes, escape internal single quotes
|
|
86
|
+
// Replace ' with '\'' (end quote, escaped quote, start quote)
|
|
87
|
+
const escaped = value.replace(/'/g, "'\\''");
|
|
88
|
+
return `'${escaped}'`;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=platform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/utils/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,YAAY,EACZ,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,OAAe;IACnE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE9B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpE,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAEzC,MAAM,MAAM,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAE9B,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;QACzD,IAAI,CAAC;YACH,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC9B,OAAO;QACT,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,aAAa,GAAG,OAAO,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YACpD,IAAI,aAAa,EAAE,CAAC;gBAClB,oDAAoD;gBACpD,IAAI,CAAC;oBACH,UAAU,CAAC,OAAO,CAAC,CAAC;gBACtB,CAAC;gBAAC,MAAM,CAAC;oBACP,wBAAwB;gBAC1B,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;YACD,sCAAsC;YACtC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YAC/C,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;gBAC9B,+CAA+C;YACjD,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAI,QAAgB;IAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEnC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAM,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB,EAAE,IAAa;IAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IACrD,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,GAAG,QAAkB;IACjD,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,gEAAgE;QAChE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,OAAO,IAAI,OAAO,GAAG,CAAC;IACxB,CAAC;IAED,8DAA8D;IAC9D,8DAA8D;IAC9D,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7C,OAAO,IAAI,OAAO,GAAG,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { execSync } from "node:child_process";
|
|
2
|
+
import { userInfo } from "node:os";
|
|
3
|
+
/**
|
|
4
|
+
* Get the current user's identity from git config.
|
|
5
|
+
* Falls back to OS username if git config is not set.
|
|
6
|
+
*/
|
|
7
|
+
export function getCurrentUser(cwd) {
|
|
8
|
+
let name;
|
|
9
|
+
let email;
|
|
10
|
+
try {
|
|
11
|
+
name = execSync("git config user.name", {
|
|
12
|
+
cwd,
|
|
13
|
+
encoding: "utf-8",
|
|
14
|
+
stdio: "pipe",
|
|
15
|
+
}).trim();
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
name = userInfo().username;
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
email = execSync("git config user.email", {
|
|
22
|
+
cwd,
|
|
23
|
+
encoding: "utf-8",
|
|
24
|
+
stdio: "pipe",
|
|
25
|
+
}).trim();
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
email = "unknown";
|
|
29
|
+
}
|
|
30
|
+
return { name, email };
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=identity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/worktree/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAOnC;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,IAAI,IAAY,CAAC;IACjB,IAAI,KAAa,CAAC;IAElB,IAAI,CAAC;QACH,IAAI,GAAG,QAAQ,CAAC,sBAAsB,EAAE;YACtC,GAAG;YACH,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,MAAM;SACd,CAAC,CAAC,IAAI,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,GAAG,QAAQ,EAAE,CAAC,QAAQ,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC;QACH,KAAK,GAAG,QAAQ,CAAC,uBAAuB,EAAE;YACxC,GAAG;YACH,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,MAAM;SACd,CAAC,CAAC,IAAI,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,GAAG,SAAS,CAAC;IACpB,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { Session } from "./session.js";
|
|
2
|
+
export interface WorktreeInfo {
|
|
3
|
+
path: string;
|
|
4
|
+
branch: string;
|
|
5
|
+
head: string;
|
|
6
|
+
isMain: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface CreateWorktreeOptions {
|
|
9
|
+
/** Base branch to create worktree from (default: current branch) */
|
|
10
|
+
baseBranch?: string;
|
|
11
|
+
/** Custom branch name. Default: forge/<user>/<slug> */
|
|
12
|
+
branchName?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Get the root directory of the current git repository.
|
|
16
|
+
*/
|
|
17
|
+
export declare function getRepoRoot(cwd?: string): string;
|
|
18
|
+
/**
|
|
19
|
+
* Compute the worktree base directory: ../.forge-wt/<repo-name>/
|
|
20
|
+
* Uses short paths to avoid Windows 260-char limit.
|
|
21
|
+
*/
|
|
22
|
+
export declare function getWorktreeBaseDir(repoRoot: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* Create a new git worktree with an auto-generated short session ID.
|
|
25
|
+
*
|
|
26
|
+
* Path: ../.forge-wt/<repo>/<8-char-id>/
|
|
27
|
+
* Branch: branchName or forge/<user>/<slug>
|
|
28
|
+
*
|
|
29
|
+
* Returns the absolute path to the new worktree and its branch name.
|
|
30
|
+
*/
|
|
31
|
+
export declare function createWorktree(repoRoot: string, slug: string, userName: string, options?: CreateWorktreeOptions): {
|
|
32
|
+
worktreePath: string;
|
|
33
|
+
branch: string;
|
|
34
|
+
sessionId: string;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* List all git worktrees for the repository.
|
|
38
|
+
*
|
|
39
|
+
* Parses the porcelain output of `git worktree list --porcelain`.
|
|
40
|
+
* Each block is separated by a blank line and contains lines like:
|
|
41
|
+
* worktree <path>
|
|
42
|
+
* HEAD <sha>
|
|
43
|
+
* branch refs/heads/<name>
|
|
44
|
+
*/
|
|
45
|
+
export declare function listWorktrees(repoRoot: string): WorktreeInfo[];
|
|
46
|
+
/**
|
|
47
|
+
* Remove a git worktree and clean up its directory.
|
|
48
|
+
* Uses `git worktree remove --force` then prunes stale entries.
|
|
49
|
+
*/
|
|
50
|
+
export declare function removeWorktree(repoRoot: string, worktreePath: string): void;
|
|
51
|
+
/**
|
|
52
|
+
* Check if a worktree path exists and is valid (still tracked by git).
|
|
53
|
+
*/
|
|
54
|
+
export declare function isWorktreeValid(worktreePath: string): boolean;
|
|
55
|
+
export interface CleanupResult {
|
|
56
|
+
removed: Array<{
|
|
57
|
+
sessionId: string;
|
|
58
|
+
worktreePath: string;
|
|
59
|
+
branch: string;
|
|
60
|
+
}>;
|
|
61
|
+
errors: Array<{
|
|
62
|
+
sessionId: string;
|
|
63
|
+
error: string;
|
|
64
|
+
}>;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Remove worktrees associated with stale sessions.
|
|
68
|
+
* Idempotent — if a worktree is already gone, it counts as success.
|
|
69
|
+
*/
|
|
70
|
+
export declare function cleanupStaleWorktrees(repoRoot: string, staleSessions: Session[]): CleanupResult;
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import { execSync } from "node:child_process";
|
|
2
|
+
import { existsSync, rmSync } from "node:fs";
|
|
3
|
+
import { basename, dirname, resolve, join } from "node:path";
|
|
4
|
+
import { generateSessionId, normalizePath, shellQuote, } from "../utils/platform.js";
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
// Helpers
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
/** Run a git command and return trimmed stdout. */
|
|
9
|
+
function git(args, cwd) {
|
|
10
|
+
try {
|
|
11
|
+
return execSync(`git ${args}`, {
|
|
12
|
+
cwd,
|
|
13
|
+
encoding: "utf-8",
|
|
14
|
+
stdio: "pipe",
|
|
15
|
+
}).trim();
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
19
|
+
throw new Error(`git ${args.split(" ")[0]} failed: ${message}`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Public API
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
/**
|
|
26
|
+
* Get the root directory of the current git repository.
|
|
27
|
+
*/
|
|
28
|
+
export function getRepoRoot(cwd) {
|
|
29
|
+
const raw = git("rev-parse --show-toplevel", cwd);
|
|
30
|
+
return normalizePath(raw);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Compute the worktree base directory: ../.forge-wt/<repo-name>/
|
|
34
|
+
* Uses short paths to avoid Windows 260-char limit.
|
|
35
|
+
*/
|
|
36
|
+
export function getWorktreeBaseDir(repoRoot) {
|
|
37
|
+
const parent = dirname(resolve(repoRoot));
|
|
38
|
+
const repoName = basename(resolve(repoRoot));
|
|
39
|
+
return normalizePath(parent, ".forge-wt", repoName);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Create a new git worktree with an auto-generated short session ID.
|
|
43
|
+
*
|
|
44
|
+
* Path: ../.forge-wt/<repo>/<8-char-id>/
|
|
45
|
+
* Branch: branchName or forge/<user>/<slug>
|
|
46
|
+
*
|
|
47
|
+
* Returns the absolute path to the new worktree and its branch name.
|
|
48
|
+
*/
|
|
49
|
+
export function createWorktree(repoRoot, slug, userName, options) {
|
|
50
|
+
const sessionId = generateSessionId();
|
|
51
|
+
const baseDir = getWorktreeBaseDir(repoRoot);
|
|
52
|
+
const worktreePath = join(baseDir, sessionId);
|
|
53
|
+
// Sanitize userName for use in branch refs — git rejects spaces and
|
|
54
|
+
// most special characters in branch names.
|
|
55
|
+
const safeName = userName
|
|
56
|
+
.toLowerCase()
|
|
57
|
+
.replace(/\s+/g, "-")
|
|
58
|
+
.replace(/[^a-z0-9._/-]/g, "");
|
|
59
|
+
const branch = options?.branchName ?? `forge/${safeName}/${slug}`;
|
|
60
|
+
// Build the git worktree add command.
|
|
61
|
+
// Try creating with a new branch first (-b). If the branch already exists
|
|
62
|
+
// the command will fail, so fall back to attaching to the existing branch.
|
|
63
|
+
const quotedPath = shellQuote(worktreePath);
|
|
64
|
+
const quotedBranch = shellQuote(branch);
|
|
65
|
+
const baseBranchArg = options?.baseBranch
|
|
66
|
+
? ` ${shellQuote(options.baseBranch)}`
|
|
67
|
+
: "";
|
|
68
|
+
try {
|
|
69
|
+
// Attempt: create new branch
|
|
70
|
+
git(`worktree add -b ${quotedBranch} ${quotedPath}${baseBranchArg}`, repoRoot);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
// Branch may already exist — try without -b
|
|
74
|
+
try {
|
|
75
|
+
git(`worktree add ${quotedPath} ${quotedBranch}`, repoRoot);
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
79
|
+
throw new Error(`Failed to create worktree at ${worktreePath} on branch ${branch}: ${message}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return { worktreePath: normalizePath(worktreePath), branch, sessionId };
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* List all git worktrees for the repository.
|
|
86
|
+
*
|
|
87
|
+
* Parses the porcelain output of `git worktree list --porcelain`.
|
|
88
|
+
* Each block is separated by a blank line and contains lines like:
|
|
89
|
+
* worktree <path>
|
|
90
|
+
* HEAD <sha>
|
|
91
|
+
* branch refs/heads/<name>
|
|
92
|
+
*/
|
|
93
|
+
export function listWorktrees(repoRoot) {
|
|
94
|
+
const raw = git("worktree list --porcelain", repoRoot);
|
|
95
|
+
if (!raw)
|
|
96
|
+
return [];
|
|
97
|
+
const blocks = raw.split("\n\n").filter((b) => b.trim().length > 0);
|
|
98
|
+
const worktrees = [];
|
|
99
|
+
for (const block of blocks) {
|
|
100
|
+
const lines = block.split("\n");
|
|
101
|
+
let path = "";
|
|
102
|
+
let head = "";
|
|
103
|
+
let branch = "";
|
|
104
|
+
let isBare = false;
|
|
105
|
+
for (const line of lines) {
|
|
106
|
+
if (line.startsWith("worktree ")) {
|
|
107
|
+
path = line.slice("worktree ".length);
|
|
108
|
+
}
|
|
109
|
+
else if (line.startsWith("HEAD ")) {
|
|
110
|
+
head = line.slice("HEAD ".length);
|
|
111
|
+
}
|
|
112
|
+
else if (line.startsWith("branch ")) {
|
|
113
|
+
// branch refs/heads/<name> → <name>
|
|
114
|
+
const ref = line.slice("branch ".length);
|
|
115
|
+
branch = ref.replace(/^refs\/heads\//, "");
|
|
116
|
+
}
|
|
117
|
+
else if (line === "bare") {
|
|
118
|
+
isBare = true;
|
|
119
|
+
}
|
|
120
|
+
else if (line === "detached") {
|
|
121
|
+
branch = "(detached)";
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (path) {
|
|
125
|
+
worktrees.push({
|
|
126
|
+
path: normalizePath(path),
|
|
127
|
+
branch,
|
|
128
|
+
head,
|
|
129
|
+
isMain: worktrees.length === 0 || isBare,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return worktrees;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Remove a git worktree and clean up its directory.
|
|
137
|
+
* Uses `git worktree remove --force` then prunes stale entries.
|
|
138
|
+
*/
|
|
139
|
+
export function removeWorktree(repoRoot, worktreePath) {
|
|
140
|
+
const resolved = normalizePath(worktreePath);
|
|
141
|
+
const quoted = shellQuote(resolved);
|
|
142
|
+
try {
|
|
143
|
+
git(`worktree remove --force ${quoted}`, repoRoot);
|
|
144
|
+
}
|
|
145
|
+
catch (err) {
|
|
146
|
+
// If the git command fails (e.g. worktree already partially removed),
|
|
147
|
+
// we still want to clean up the directory and prune.
|
|
148
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
149
|
+
// Only throw if the directory still exists and we can't remove it
|
|
150
|
+
if (existsSync(resolved)) {
|
|
151
|
+
try {
|
|
152
|
+
rmSync(resolved, { recursive: true, force: true });
|
|
153
|
+
}
|
|
154
|
+
catch (rmErr) {
|
|
155
|
+
const rmMessage = rmErr instanceof Error ? rmErr.message : String(rmErr);
|
|
156
|
+
throw new Error(`Failed to remove worktree at ${resolved}: git error: ${message}, cleanup error: ${rmMessage}`);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// Clean up leftover directory if git remove succeeded but dir remains
|
|
161
|
+
if (existsSync(resolved)) {
|
|
162
|
+
rmSync(resolved, { recursive: true, force: true });
|
|
163
|
+
}
|
|
164
|
+
// Prune stale worktree entries
|
|
165
|
+
try {
|
|
166
|
+
git("worktree prune", repoRoot);
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
// Non-fatal: prune is best-effort cleanup
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Check if a worktree path exists and is valid (still tracked by git).
|
|
174
|
+
*/
|
|
175
|
+
export function isWorktreeValid(worktreePath) {
|
|
176
|
+
const resolved = normalizePath(worktreePath);
|
|
177
|
+
if (!existsSync(resolved)) {
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
// Determine the repo root from the worktree path itself.
|
|
181
|
+
// A valid worktree has a .git file pointing back to the main repo.
|
|
182
|
+
try {
|
|
183
|
+
const repoRoot = getRepoRoot(resolved);
|
|
184
|
+
const worktrees = listWorktrees(repoRoot);
|
|
185
|
+
return worktrees.some((wt) => wt.path === resolved);
|
|
186
|
+
}
|
|
187
|
+
catch {
|
|
188
|
+
return false;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Remove worktrees associated with stale sessions.
|
|
193
|
+
* Idempotent — if a worktree is already gone, it counts as success.
|
|
194
|
+
*/
|
|
195
|
+
export function cleanupStaleWorktrees(repoRoot, staleSessions) {
|
|
196
|
+
const result = { removed: [], errors: [] };
|
|
197
|
+
for (const session of staleSessions) {
|
|
198
|
+
try {
|
|
199
|
+
// If the worktree directory still exists, remove it via git
|
|
200
|
+
if (existsSync(session.worktreePath)) {
|
|
201
|
+
removeWorktree(repoRoot, session.worktreePath);
|
|
202
|
+
}
|
|
203
|
+
// Whether it existed or not, record as successfully removed
|
|
204
|
+
result.removed.push({
|
|
205
|
+
sessionId: session.id,
|
|
206
|
+
worktreePath: session.worktreePath,
|
|
207
|
+
branch: session.branch,
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
catch (err) {
|
|
211
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
212
|
+
result.errors.push({ sessionId: session.id, error: message });
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return result;
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=manager.js.map
|