golem-cc 2.1.2 → 3.0.0
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/.claude/commands/golem/build.md +18 -0
- package/.claude/commands/golem/config.md +39 -0
- package/.claude/commands/golem/continue.md +73 -0
- package/.claude/commands/golem/doctor.md +46 -0
- package/.claude/commands/golem/document.md +138 -0
- package/.claude/commands/golem/help.md +58 -0
- package/.claude/commands/golem/pause.md +130 -0
- package/.claude/commands/golem/plan.md +111 -0
- package/.claude/commands/golem/review.md +166 -0
- package/.claude/commands/golem/security.md +186 -0
- package/.claude/commands/golem/simplify.md +76 -0
- package/.claude/commands/golem/spec.md +105 -0
- package/.claude/commands/golem/status.md +33 -0
- package/.golem/agents/code-simplifier.md +54 -0
- package/.golem/agents/review-architecture.md +59 -0
- package/.golem/agents/review-logic.md +50 -0
- package/.golem/agents/review-security.md +50 -0
- package/.golem/agents/review-style.md +48 -0
- package/.golem/agents/review-tests.md +48 -0
- package/.golem/agents/spec-builder.md +60 -0
- package/.golem/bin/golem.mjs +270 -0
- package/.golem/lib/build.mjs +557 -0
- package/.golem/lib/claude.mjs +95 -0
- package/.golem/lib/config.mjs +421 -0
- package/.golem/lib/display.mjs +191 -0
- package/.golem/lib/doctor.mjs +197 -0
- package/.golem/lib/document.mjs +792 -0
- package/.golem/lib/gates.mjs +78 -0
- package/.golem/lib/init.mjs +166 -0
- package/.golem/lib/output.mjs +40 -0
- package/.golem/lib/ratelimit.mjs +86 -0
- package/.golem/lib/security.mjs +603 -0
- package/.golem/lib/simplify.mjs +101 -0
- package/.golem/lib/tui.mjs +368 -0
- package/.golem/lib/usage.mjs +119 -0
- package/.golem/lib/worktree.mjs +509 -0
- package/.golem/prompts/build.md +23 -0
- package/.golem/prompts/document-inline.md +66 -0
- package/.golem/prompts/document-markdown.md +80 -0
- package/.golem/prompts/simplify.md +35 -0
- package/README.md +141 -142
- package/bin/golem-shim.mjs +36 -0
- package/bin/install.mjs +193 -0
- package/package.json +27 -32
- package/.env.example +0 -17
- package/bin/golem +0 -1040
- package/commands/golem/build.md +0 -235
- package/commands/golem/config.md +0 -55
- package/commands/golem/doctor.md +0 -137
- package/commands/golem/help.md +0 -212
- package/commands/golem/plan.md +0 -214
- package/commands/golem/review.md +0 -376
- package/commands/golem/security.md +0 -204
- package/commands/golem/simplify.md +0 -94
- package/commands/golem/spec.md +0 -226
- package/commands/golem/status.md +0 -60
- package/dist/api/freshworks.d.ts +0 -61
- package/dist/api/freshworks.d.ts.map +0 -1
- package/dist/api/freshworks.js +0 -119
- package/dist/api/freshworks.js.map +0 -1
- package/dist/api/gitea.d.ts +0 -96
- package/dist/api/gitea.d.ts.map +0 -1
- package/dist/api/gitea.js +0 -154
- package/dist/api/gitea.js.map +0 -1
- package/dist/cli/index.d.ts +0 -9
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -352
- package/dist/cli/index.js.map +0 -1
- package/dist/sync/ticket-sync.d.ts +0 -53
- package/dist/sync/ticket-sync.d.ts.map +0 -1
- package/dist/sync/ticket-sync.js +0 -226
- package/dist/sync/ticket-sync.js.map +0 -1
- package/dist/types.d.ts +0 -125
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -5
- package/dist/types.js.map +0 -1
- package/dist/worktree/manager.d.ts +0 -54
- package/dist/worktree/manager.d.ts.map +0 -1
- package/dist/worktree/manager.js +0 -190
- package/dist/worktree/manager.js.map +0 -1
- package/golem/agents/code-simplifier.md +0 -81
- package/golem/agents/spec-builder.md +0 -90
- package/golem/prompts/PROMPT_build.md +0 -71
- package/golem/prompts/PROMPT_plan.md +0 -102
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ticket-sync.js","sourceRoot":"","sources":["../../src/sync/ticket-sync.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
DELETED
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Core types for golem workflow
|
|
3
|
-
*/
|
|
4
|
-
export type TicketStatus = 'new' | 'spec' | 'planning' | 'in-progress' | 'review' | 'done' | 'blocked';
|
|
5
|
-
export type CommitType = 'feat' | 'fix' | 'refactor' | 'docs' | 'test' | 'chore';
|
|
6
|
-
export interface TicketState {
|
|
7
|
-
id: string;
|
|
8
|
-
slug: string;
|
|
9
|
-
fresh: {
|
|
10
|
-
id: string;
|
|
11
|
-
url: string;
|
|
12
|
-
subject: string;
|
|
13
|
-
description: string;
|
|
14
|
-
priority: 1 | 2 | 3 | 4;
|
|
15
|
-
status: number;
|
|
16
|
-
} | null;
|
|
17
|
-
gitea: {
|
|
18
|
-
repo: string;
|
|
19
|
-
issueNumber: number;
|
|
20
|
-
url: string;
|
|
21
|
-
prNumber?: number;
|
|
22
|
-
prUrl?: string;
|
|
23
|
-
} | null;
|
|
24
|
-
git: {
|
|
25
|
-
worktree: string;
|
|
26
|
-
branch: string;
|
|
27
|
-
commits: string[];
|
|
28
|
-
};
|
|
29
|
-
status: TicketStatus;
|
|
30
|
-
type: CommitType;
|
|
31
|
-
created: string;
|
|
32
|
-
updated: string;
|
|
33
|
-
specFile?: string;
|
|
34
|
-
planFile?: string;
|
|
35
|
-
}
|
|
36
|
-
export interface FreshTicket {
|
|
37
|
-
id: number;
|
|
38
|
-
subject: string;
|
|
39
|
-
description: string;
|
|
40
|
-
description_text: string;
|
|
41
|
-
status: number;
|
|
42
|
-
priority: 1 | 2 | 3 | 4;
|
|
43
|
-
ticket_type: 'Incident' | 'Service Request';
|
|
44
|
-
created_at: string;
|
|
45
|
-
updated_at: string;
|
|
46
|
-
requester_id: number;
|
|
47
|
-
responder_id: number;
|
|
48
|
-
custom_fields: Record<string, unknown>;
|
|
49
|
-
}
|
|
50
|
-
export interface FreshTicketCreatePayload {
|
|
51
|
-
subject: string;
|
|
52
|
-
description: string;
|
|
53
|
-
priority?: 1 | 2 | 3 | 4;
|
|
54
|
-
status?: number;
|
|
55
|
-
source?: number;
|
|
56
|
-
email?: string;
|
|
57
|
-
requester_id?: number;
|
|
58
|
-
responder_id?: number;
|
|
59
|
-
group_id?: number;
|
|
60
|
-
category?: string;
|
|
61
|
-
sub_category?: string;
|
|
62
|
-
resolution_notes?: string;
|
|
63
|
-
custom_fields?: Record<string, unknown>;
|
|
64
|
-
}
|
|
65
|
-
export interface GiteaIssue {
|
|
66
|
-
id: number;
|
|
67
|
-
number: number;
|
|
68
|
-
title: string;
|
|
69
|
-
body: string;
|
|
70
|
-
state: 'open' | 'closed';
|
|
71
|
-
html_url: string;
|
|
72
|
-
created_at: string;
|
|
73
|
-
updated_at: string;
|
|
74
|
-
labels: {
|
|
75
|
-
name: string;
|
|
76
|
-
color: string;
|
|
77
|
-
}[];
|
|
78
|
-
milestone?: {
|
|
79
|
-
title: string;
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
export interface GiteaIssueCreatePayload {
|
|
83
|
-
title: string;
|
|
84
|
-
body: string;
|
|
85
|
-
labels?: string[];
|
|
86
|
-
milestone?: number;
|
|
87
|
-
}
|
|
88
|
-
export interface GiteaPullRequest {
|
|
89
|
-
id: number;
|
|
90
|
-
number: number;
|
|
91
|
-
title: string;
|
|
92
|
-
body: string;
|
|
93
|
-
state: 'open' | 'closed' | 'merged';
|
|
94
|
-
html_url: string;
|
|
95
|
-
head: {
|
|
96
|
-
ref: string;
|
|
97
|
-
};
|
|
98
|
-
base: {
|
|
99
|
-
ref: string;
|
|
100
|
-
};
|
|
101
|
-
merged: boolean;
|
|
102
|
-
mergeable: boolean;
|
|
103
|
-
}
|
|
104
|
-
export interface GolemContext {
|
|
105
|
-
projectRoot: string;
|
|
106
|
-
golemDir: string;
|
|
107
|
-
ticketsDir: string;
|
|
108
|
-
specsDir: string;
|
|
109
|
-
worktreesDir: string;
|
|
110
|
-
currentTicket?: TicketState;
|
|
111
|
-
}
|
|
112
|
-
export interface SyncResult {
|
|
113
|
-
success: boolean;
|
|
114
|
-
freshUpdated: boolean;
|
|
115
|
-
giteaUpdated: boolean;
|
|
116
|
-
localUpdated: boolean;
|
|
117
|
-
error?: string;
|
|
118
|
-
}
|
|
119
|
-
export interface BuildIterationResult {
|
|
120
|
-
taskCompleted: string | null;
|
|
121
|
-
allDone: boolean;
|
|
122
|
-
commits: string[];
|
|
123
|
-
error?: string;
|
|
124
|
-
}
|
|
125
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
DELETED
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Git worktree management
|
|
3
|
-
*
|
|
4
|
-
* Creates isolated worktrees per ticket under .golem/worktrees/
|
|
5
|
-
*/
|
|
6
|
-
import type { TicketState } from '../types.js';
|
|
7
|
-
export interface WorktreeInfo {
|
|
8
|
-
path: string;
|
|
9
|
-
branch: string;
|
|
10
|
-
commitSha: string;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Get the root of the current git repository
|
|
14
|
-
*/
|
|
15
|
-
export declare function getRepoRoot(): string;
|
|
16
|
-
/**
|
|
17
|
-
* Get the default branch (main or master)
|
|
18
|
-
*/
|
|
19
|
-
export declare function getDefaultBranch(): string;
|
|
20
|
-
/**
|
|
21
|
-
* List all worktrees
|
|
22
|
-
*/
|
|
23
|
-
export declare function listWorktrees(): WorktreeInfo[];
|
|
24
|
-
/**
|
|
25
|
-
* Create a worktree for a ticket
|
|
26
|
-
*/
|
|
27
|
-
export declare function createWorktree(ticket: TicketState, options?: {
|
|
28
|
-
baseBranch?: string;
|
|
29
|
-
}): Promise<string>;
|
|
30
|
-
/**
|
|
31
|
-
* Remove a worktree
|
|
32
|
-
*/
|
|
33
|
-
export declare function removeWorktree(worktreePath: string): Promise<void>;
|
|
34
|
-
/**
|
|
35
|
-
* Get current branch in a worktree
|
|
36
|
-
*/
|
|
37
|
-
export declare function getCurrentBranch(worktreePath: string): string;
|
|
38
|
-
/**
|
|
39
|
-
* Get list of commits on branch since it diverged from base
|
|
40
|
-
*/
|
|
41
|
-
export declare function getCommitsSinceBase(worktreePath: string, baseBranch?: string): Promise<string[]>;
|
|
42
|
-
/**
|
|
43
|
-
* Squash all commits since base into one
|
|
44
|
-
*/
|
|
45
|
-
export declare function squashCommits(worktreePath: string, message: string, baseBranch?: string): Promise<string>;
|
|
46
|
-
/**
|
|
47
|
-
* Create a commit in the worktree
|
|
48
|
-
*/
|
|
49
|
-
export declare function createCommit(worktreePath: string, message: string): Promise<string>;
|
|
50
|
-
/**
|
|
51
|
-
* Push branch to remote
|
|
52
|
-
*/
|
|
53
|
-
export declare function pushBranch(worktreePath: string, force?: boolean): Promise<void>;
|
|
54
|
-
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/worktree/manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAqBD;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAczC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,YAAY,EAAE,CA0B9C;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACpC,OAAO,CAAC,MAAM,CAAC,CAwCjB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYxE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,EAAE,CAAC,CAOnB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAejB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,YAAY,EAAE,MAAM,EACpB,KAAK,UAAQ,GACZ,OAAO,CAAC,IAAI,CAAC,CAGf"}
|
package/dist/worktree/manager.js
DELETED
|
@@ -1,190 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Git worktree management
|
|
3
|
-
*
|
|
4
|
-
* Creates isolated worktrees per ticket under .golem/worktrees/
|
|
5
|
-
*/
|
|
6
|
-
import { execSync, exec } from 'node:child_process';
|
|
7
|
-
import { promisify } from 'node:util';
|
|
8
|
-
import { mkdir, access } from 'node:fs/promises';
|
|
9
|
-
import { join } from 'node:path';
|
|
10
|
-
const execAsync = promisify(exec);
|
|
11
|
-
/**
|
|
12
|
-
* Run git command and return stdout
|
|
13
|
-
*/
|
|
14
|
-
function git(command, cwd) {
|
|
15
|
-
return execSync(`git ${command}`, {
|
|
16
|
-
cwd,
|
|
17
|
-
encoding: 'utf-8',
|
|
18
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
19
|
-
}).trim();
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Run git command async
|
|
23
|
-
*/
|
|
24
|
-
async function gitAsync(command, cwd) {
|
|
25
|
-
const { stdout } = await execAsync(`git ${command}`, { cwd });
|
|
26
|
-
return stdout.trim();
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Get the root of the current git repository
|
|
30
|
-
*/
|
|
31
|
-
export function getRepoRoot() {
|
|
32
|
-
return git('rev-parse --show-toplevel');
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Get the default branch (main or master)
|
|
36
|
-
*/
|
|
37
|
-
export function getDefaultBranch() {
|
|
38
|
-
try {
|
|
39
|
-
// Try to get from remote HEAD
|
|
40
|
-
const ref = git('symbolic-ref refs/remotes/origin/HEAD');
|
|
41
|
-
return ref.replace('refs/remotes/origin/', '');
|
|
42
|
-
}
|
|
43
|
-
catch {
|
|
44
|
-
// Fall back to checking if main or master exists
|
|
45
|
-
try {
|
|
46
|
-
git('rev-parse --verify main');
|
|
47
|
-
return 'main';
|
|
48
|
-
}
|
|
49
|
-
catch {
|
|
50
|
-
return 'master';
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* List all worktrees
|
|
56
|
-
*/
|
|
57
|
-
export function listWorktrees() {
|
|
58
|
-
const output = git('worktree list --porcelain');
|
|
59
|
-
const worktrees = [];
|
|
60
|
-
let current = {};
|
|
61
|
-
for (const line of output.split('\n')) {
|
|
62
|
-
if (line.startsWith('worktree ')) {
|
|
63
|
-
current.path = line.replace('worktree ', '');
|
|
64
|
-
}
|
|
65
|
-
else if (line.startsWith('HEAD ')) {
|
|
66
|
-
current.commitSha = line.replace('HEAD ', '');
|
|
67
|
-
}
|
|
68
|
-
else if (line.startsWith('branch ')) {
|
|
69
|
-
current.branch = line.replace('branch refs/heads/', '');
|
|
70
|
-
}
|
|
71
|
-
else if (line === '') {
|
|
72
|
-
if (current.path && current.branch && current.commitSha) {
|
|
73
|
-
worktrees.push(current);
|
|
74
|
-
}
|
|
75
|
-
current = {};
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
// Handle last entry
|
|
79
|
-
if (current.path && current.branch && current.commitSha) {
|
|
80
|
-
worktrees.push(current);
|
|
81
|
-
}
|
|
82
|
-
return worktrees;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Create a worktree for a ticket
|
|
86
|
-
*/
|
|
87
|
-
export async function createWorktree(ticket, options = {}) {
|
|
88
|
-
const repoRoot = getRepoRoot();
|
|
89
|
-
const baseBranch = options.baseBranch || getDefaultBranch();
|
|
90
|
-
const worktreePath = join(repoRoot, ticket.git.worktree);
|
|
91
|
-
const branch = ticket.git.branch;
|
|
92
|
-
// Ensure worktrees directory exists
|
|
93
|
-
await mkdir(join(repoRoot, '.golem/worktrees'), { recursive: true });
|
|
94
|
-
// Check if worktree already exists
|
|
95
|
-
const worktrees = listWorktrees();
|
|
96
|
-
const existing = worktrees.find(w => w.branch === branch);
|
|
97
|
-
if (existing) {
|
|
98
|
-
return existing.path;
|
|
99
|
-
}
|
|
100
|
-
// Determine the best base ref to use
|
|
101
|
-
let baseRef = baseBranch;
|
|
102
|
-
// Try to fetch and use remote if available
|
|
103
|
-
try {
|
|
104
|
-
git('fetch origin', repoRoot);
|
|
105
|
-
// Verify origin/baseBranch exists
|
|
106
|
-
git(`rev-parse --verify origin/${baseBranch}`, repoRoot);
|
|
107
|
-
baseRef = `origin/${baseBranch}`;
|
|
108
|
-
}
|
|
109
|
-
catch {
|
|
110
|
-
// No remote or remote branch doesn't exist, use local branch
|
|
111
|
-
try {
|
|
112
|
-
git(`rev-parse --verify ${baseBranch}`, repoRoot);
|
|
113
|
-
baseRef = baseBranch;
|
|
114
|
-
}
|
|
115
|
-
catch {
|
|
116
|
-
// Local branch doesn't exist either, use HEAD
|
|
117
|
-
baseRef = 'HEAD';
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
// Create the worktree with a new branch based on the base ref
|
|
121
|
-
git(`worktree add -b ${branch} "${worktreePath}" ${baseRef}`, repoRoot);
|
|
122
|
-
return worktreePath;
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Remove a worktree
|
|
126
|
-
*/
|
|
127
|
-
export async function removeWorktree(worktreePath) {
|
|
128
|
-
const repoRoot = getRepoRoot();
|
|
129
|
-
// Check if it exists
|
|
130
|
-
try {
|
|
131
|
-
await access(worktreePath);
|
|
132
|
-
}
|
|
133
|
-
catch {
|
|
134
|
-
return; // Already gone
|
|
135
|
-
}
|
|
136
|
-
// Remove the worktree
|
|
137
|
-
git(`worktree remove "${worktreePath}" --force`, repoRoot);
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Get current branch in a worktree
|
|
141
|
-
*/
|
|
142
|
-
export function getCurrentBranch(worktreePath) {
|
|
143
|
-
return git('rev-parse --abbrev-ref HEAD', worktreePath);
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Get list of commits on branch since it diverged from base
|
|
147
|
-
*/
|
|
148
|
-
export async function getCommitsSinceBase(worktreePath, baseBranch) {
|
|
149
|
-
const base = baseBranch || getDefaultBranch();
|
|
150
|
-
const output = await gitAsync(`log origin/${base}..HEAD --format=%H`, worktreePath);
|
|
151
|
-
return output ? output.split('\n') : [];
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Squash all commits since base into one
|
|
155
|
-
*/
|
|
156
|
-
export async function squashCommits(worktreePath, message, baseBranch) {
|
|
157
|
-
const base = baseBranch || getDefaultBranch();
|
|
158
|
-
// Soft reset to merge base, keeping changes staged
|
|
159
|
-
await gitAsync(`reset --soft origin/${base}`, worktreePath);
|
|
160
|
-
// Create new commit with all changes
|
|
161
|
-
await gitAsync(`commit -m "${message.replace(/"/g, '\\"')}"`, worktreePath);
|
|
162
|
-
// Return new commit SHA
|
|
163
|
-
return gitAsync('rev-parse HEAD', worktreePath);
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Create a commit in the worktree
|
|
167
|
-
*/
|
|
168
|
-
export async function createCommit(worktreePath, message) {
|
|
169
|
-
// Stage all changes
|
|
170
|
-
await gitAsync('add -A', worktreePath);
|
|
171
|
-
// Check if there are changes to commit
|
|
172
|
-
try {
|
|
173
|
-
await gitAsync('diff --cached --quiet', worktreePath);
|
|
174
|
-
// No changes
|
|
175
|
-
return '';
|
|
176
|
-
}
|
|
177
|
-
catch {
|
|
178
|
-
// There are changes, commit them
|
|
179
|
-
}
|
|
180
|
-
await gitAsync(`commit -m "${message.replace(/"/g, '\\"')}"`, worktreePath);
|
|
181
|
-
return gitAsync('rev-parse HEAD', worktreePath);
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* Push branch to remote
|
|
185
|
-
*/
|
|
186
|
-
export async function pushBranch(worktreePath, force = false) {
|
|
187
|
-
const forceFlag = force ? '--force-with-lease' : '';
|
|
188
|
-
await gitAsync(`push -u origin HEAD ${forceFlag}`, worktreePath);
|
|
189
|
-
}
|
|
190
|
-
//# sourceMappingURL=manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/worktree/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
# Code Simplifier Agent
|
|
2
|
-
|
|
3
|
-
You simplify code without changing behavior. Your goal is to make code clearer, not clever.
|
|
4
|
-
|
|
5
|
-
## Simplification Rules
|
|
6
|
-
|
|
7
|
-
### Priority 1: Remove AI Artifacts
|
|
8
|
-
These are telltale signs of AI-generated code:
|
|
9
|
-
- Unnecessary comments explaining obvious code
|
|
10
|
-
- Defensive checks that can never trigger
|
|
11
|
-
- Type casts to `any` without need
|
|
12
|
-
- Commented-out code blocks
|
|
13
|
-
- TODO comments for completed work
|
|
14
|
-
- Verbose error messages that duplicate the code
|
|
15
|
-
|
|
16
|
-
### Priority 2: Reduce Complexity
|
|
17
|
-
- Flatten nested conditionals (use early returns)
|
|
18
|
-
- Replace nested ternaries with if/else
|
|
19
|
-
- Extract complex boolean expressions to named variables
|
|
20
|
-
- Consolidate duplicate code paths
|
|
21
|
-
|
|
22
|
-
```typescript
|
|
23
|
-
// Before
|
|
24
|
-
if (user) {
|
|
25
|
-
if (user.isActive) {
|
|
26
|
-
if (user.hasPermission('read')) {
|
|
27
|
-
return data;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return null;
|
|
32
|
-
|
|
33
|
-
// After
|
|
34
|
-
if (!user?.isActive) return null;
|
|
35
|
-
if (!user.hasPermission('read')) return null;
|
|
36
|
-
return data;
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
### Priority 3: Improve Clarity
|
|
40
|
-
- Rename unclear variables (single letters, cryptic abbreviations)
|
|
41
|
-
- Rename functions to describe what they return/do
|
|
42
|
-
- Remove dead/unreachable code
|
|
43
|
-
- Simplify over-engineered abstractions
|
|
44
|
-
|
|
45
|
-
```typescript
|
|
46
|
-
// Before
|
|
47
|
-
const d = getData();
|
|
48
|
-
const r = process(d);
|
|
49
|
-
|
|
50
|
-
// After
|
|
51
|
-
const userData = fetchUserData();
|
|
52
|
-
const formattedProfile = formatProfile(userData);
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
### Priority 4: Structural
|
|
56
|
-
- Extract large functions (>50 lines) into focused helpers
|
|
57
|
-
- Inline trivial one-use functions
|
|
58
|
-
- Simplify unnecessary layers of abstraction
|
|
59
|
-
|
|
60
|
-
## Skip These Files
|
|
61
|
-
- Test files (`*.test.ts`, `*.spec.ts`)
|
|
62
|
-
- Type definitions (`*.d.ts`)
|
|
63
|
-
- Config files (`*.config.*`)
|
|
64
|
-
- Generated files
|
|
65
|
-
- `.golem/IMPLEMENTATION_PLAN.md`
|
|
66
|
-
|
|
67
|
-
## Critical Rules
|
|
68
|
-
|
|
69
|
-
1. **NEVER change behavior** - If unsure, don't change it
|
|
70
|
-
2. **Run tests after each file** - Revert if tests fail
|
|
71
|
-
3. **One change at a time** - Don't batch unrelated changes
|
|
72
|
-
4. **Preserve formatting conventions** - Match surrounding code style
|
|
73
|
-
|
|
74
|
-
## Process
|
|
75
|
-
|
|
76
|
-
1. Read the file
|
|
77
|
-
2. Identify ONE simplification opportunity
|
|
78
|
-
3. Make the change
|
|
79
|
-
4. Run tests
|
|
80
|
-
5. If pass, continue. If fail, revert.
|
|
81
|
-
6. Repeat until no more safe simplifications
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
# Spec Builder Agent
|
|
2
|
-
|
|
3
|
-
You guide users through a structured conversation to define project requirements. Your goal is to extract clear, testable specifications that will drive implementation.
|
|
4
|
-
|
|
5
|
-
## Conversation Style
|
|
6
|
-
|
|
7
|
-
- Ask one question at a time (don't overwhelm)
|
|
8
|
-
- Use `AskUserQuestion` for concrete choices
|
|
9
|
-
- Use open questions for exploration
|
|
10
|
-
- Summarize understanding before moving on
|
|
11
|
-
- Push back if requirements are vague ("what exactly should happen when...")
|
|
12
|
-
|
|
13
|
-
## Phase Flow
|
|
14
|
-
|
|
15
|
-
### Phase 1: Context (2-4 exchanges)
|
|
16
|
-
- What's the problem? (not the solution)
|
|
17
|
-
- Who's affected?
|
|
18
|
-
- What's the minimum viable scope?
|
|
19
|
-
- What's explicitly out of scope?
|
|
20
|
-
|
|
21
|
-
### Phase 2: Topics (1-2 exchanges)
|
|
22
|
-
- Propose 1-5 distinct concerns
|
|
23
|
-
- Apply "no AND test" - each topic describable without conjunctions
|
|
24
|
-
- Get user confirmation on topic list
|
|
25
|
-
|
|
26
|
-
### Phase 3: Deep Dive (per topic, 2-3 exchanges)
|
|
27
|
-
- What MUST this do?
|
|
28
|
-
- What SHOULD it do?
|
|
29
|
-
- What must it NOT do?
|
|
30
|
-
- What tests prove it works?
|
|
31
|
-
|
|
32
|
-
### Phase 4: Documentation
|
|
33
|
-
- Write spec files to `.golem/specs/`
|
|
34
|
-
- Write `AGENTS.md` with operational commands
|
|
35
|
-
|
|
36
|
-
## Spec Quality Checklist
|
|
37
|
-
|
|
38
|
-
Before writing a spec file, ensure:
|
|
39
|
-
- [ ] Purpose is clear in one paragraph
|
|
40
|
-
- [ ] Must-haves are concrete and testable
|
|
41
|
-
- [ ] Must-nots define clear boundaries
|
|
42
|
-
- [ ] Acceptance criteria are checkboxes
|
|
43
|
-
- [ ] Tests describe input → expected output
|
|
44
|
-
|
|
45
|
-
## Anti-patterns
|
|
46
|
-
|
|
47
|
-
Avoid these in specs:
|
|
48
|
-
- Vague requirements ("should be fast", "user-friendly")
|
|
49
|
-
- Implementation details ("use Redis", "add a button")
|
|
50
|
-
- Scope creep ("and also it should...")
|
|
51
|
-
- Missing error cases
|
|
52
|
-
|
|
53
|
-
## Example Good Spec
|
|
54
|
-
|
|
55
|
-
```markdown
|
|
56
|
-
# API Rate Limiting
|
|
57
|
-
|
|
58
|
-
Ticket: INC-1234
|
|
59
|
-
|
|
60
|
-
## Purpose
|
|
61
|
-
Prevent API abuse by limiting requests per client. Protects infrastructure and ensures fair usage.
|
|
62
|
-
|
|
63
|
-
## Requirements
|
|
64
|
-
|
|
65
|
-
### Must Have
|
|
66
|
-
- Limit: 100 requests per minute per API key
|
|
67
|
-
- Return 429 Too Many Requests when exceeded
|
|
68
|
-
- Include Retry-After header in 429 responses
|
|
69
|
-
- Limits tracked per API key, not per IP
|
|
70
|
-
|
|
71
|
-
### Should Have
|
|
72
|
-
- Different limits for different endpoint tiers
|
|
73
|
-
- Admin endpoints to check/reset limits
|
|
74
|
-
|
|
75
|
-
### Must Not
|
|
76
|
-
- Block requests during brief spikes (use sliding window)
|
|
77
|
-
- Persist limits across server restarts (in-memory OK)
|
|
78
|
-
|
|
79
|
-
## Acceptance Criteria
|
|
80
|
-
- [ ] 100th request in a minute succeeds
|
|
81
|
-
- [ ] 101st request returns 429
|
|
82
|
-
- [ ] Retry-After header present and accurate
|
|
83
|
-
- [ ] Different API keys have independent limits
|
|
84
|
-
|
|
85
|
-
## Tests
|
|
86
|
-
- Send 100 requests rapidly → all succeed
|
|
87
|
-
- Send 101st request → 429 with Retry-After
|
|
88
|
-
- Wait Retry-After seconds → next request succeeds
|
|
89
|
-
- Two API keys → independent counters
|
|
90
|
-
```
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
# Build Lead Mode
|
|
2
|
-
|
|
3
|
-
You are the BUILD LEAD. You orchestrate the build process but do NOT implement tasks yourself.
|
|
4
|
-
|
|
5
|
-
## Your Role
|
|
6
|
-
|
|
7
|
-
- Spawn builder teammates for each task (one at a time)
|
|
8
|
-
- Monitor their progress
|
|
9
|
-
- Handle blockers and failures
|
|
10
|
-
- Keep the user informed
|
|
11
|
-
- Commit and squash when appropriate
|
|
12
|
-
|
|
13
|
-
## The Loop
|
|
14
|
-
|
|
15
|
-
For each task:
|
|
16
|
-
|
|
17
|
-
1. **Announce** the task to the user
|
|
18
|
-
2. **Spawn** a builder teammate with fresh context
|
|
19
|
-
3. **Monitor** the builder's progress
|
|
20
|
-
4. **Handle** success (commit) or failure (surface to user)
|
|
21
|
-
5. **Continue** to next task or **squash** at stage end
|
|
22
|
-
|
|
23
|
-
## Builder Teammate Prompt Template
|
|
24
|
-
|
|
25
|
-
When spawning a builder:
|
|
26
|
-
|
|
27
|
-
```
|
|
28
|
-
You are a builder. Complete this ONE task, then shut down.
|
|
29
|
-
|
|
30
|
-
TASK: {task title}
|
|
31
|
-
FILES: {expected files}
|
|
32
|
-
NOTES: {implementation hints}
|
|
33
|
-
TESTS: {what tests verify this}
|
|
34
|
-
|
|
35
|
-
WORKFLOW:
|
|
36
|
-
1. Write tests first (red phase)
|
|
37
|
-
2. Implement minimum code to pass tests (green phase)
|
|
38
|
-
3. Run validation gates from .golem/AGENTS.md
|
|
39
|
-
4. If gates fail: fix and retry (up to 3 attempts)
|
|
40
|
-
5. Simplify code
|
|
41
|
-
6. Re-run validation
|
|
42
|
-
7. Report: SUCCESS or BLOCKED with reason
|
|
43
|
-
|
|
44
|
-
DO NOT commit or modify the plan - the lead handles that.
|
|
45
|
-
If stuck, report BLOCKED immediately. Do not spin.
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
## Handling Blockers
|
|
49
|
-
|
|
50
|
-
When a builder reports BLOCKED:
|
|
51
|
-
- Surface immediately to the user
|
|
52
|
-
- Present options (skip, retry with guidance, wait for fix)
|
|
53
|
-
- Do NOT auto-retry
|
|
54
|
-
- The user has visibility and can help
|
|
55
|
-
|
|
56
|
-
## User Commands
|
|
57
|
-
|
|
58
|
-
The user can say:
|
|
59
|
-
- **skip** - Skip blocked task
|
|
60
|
-
- **retry** - Try the task again
|
|
61
|
-
- **stop** - Pause the build
|
|
62
|
-
- **status** - Show progress
|
|
63
|
-
|
|
64
|
-
## Critical Rules
|
|
65
|
-
|
|
66
|
-
- You are the LEAD - delegate, don't implement
|
|
67
|
-
- Each builder gets fresh context (one task, then shutdown)
|
|
68
|
-
- Surface blockers immediately
|
|
69
|
-
- Keep user informed at every step
|
|
70
|
-
- Handle commits and plan updates yourself
|
|
71
|
-
- Squash at stage completion
|