ghcralph 0.1.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/LICENSE +21 -0
- package/README.md +327 -0
- package/bin/ghcralph.js +2 -0
- package/dist/cli.d.ts +12 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +92 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/config.d.ts +8 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +118 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/index.d.ts +11 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +11 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +15 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +116 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/rollback.d.ts +8 -0
- package/dist/commands/rollback.d.ts.map +1 -0
- package/dist/commands/rollback.js +238 -0
- package/dist/commands/rollback.js.map +1 -0
- package/dist/commands/run.d.ts +28 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +407 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/status.d.ts +8 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +399 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/core/action-executor.d.ts +96 -0
- package/dist/core/action-executor.d.ts.map +1 -0
- package/dist/core/action-executor.js +289 -0
- package/dist/core/action-executor.js.map +1 -0
- package/dist/core/checkpoint-manager.d.ts +94 -0
- package/dist/core/checkpoint-manager.d.ts.map +1 -0
- package/dist/core/checkpoint-manager.js +236 -0
- package/dist/core/checkpoint-manager.js.map +1 -0
- package/dist/core/config-manager.d.ts +62 -0
- package/dist/core/config-manager.d.ts.map +1 -0
- package/dist/core/config-manager.js +184 -0
- package/dist/core/config-manager.js.map +1 -0
- package/dist/core/config-schema.d.ts +74 -0
- package/dist/core/config-schema.d.ts.map +1 -0
- package/dist/core/config-schema.js +84 -0
- package/dist/core/config-schema.js.map +1 -0
- package/dist/core/context-builder.d.ts +116 -0
- package/dist/core/context-builder.d.ts.map +1 -0
- package/dist/core/context-builder.js +388 -0
- package/dist/core/context-builder.js.map +1 -0
- package/dist/core/feedback-builder.d.ts +94 -0
- package/dist/core/feedback-builder.d.ts.map +1 -0
- package/dist/core/feedback-builder.js +226 -0
- package/dist/core/feedback-builder.js.map +1 -0
- package/dist/core/file-safeguard.d.ts +109 -0
- package/dist/core/file-safeguard.d.ts.map +1 -0
- package/dist/core/file-safeguard.js +200 -0
- package/dist/core/file-safeguard.js.map +1 -0
- package/dist/core/git-branch-manager.d.ts +122 -0
- package/dist/core/git-branch-manager.d.ts.map +1 -0
- package/dist/core/git-branch-manager.js +302 -0
- package/dist/core/git-branch-manager.js.map +1 -0
- package/dist/core/github-plan.d.ts +86 -0
- package/dist/core/github-plan.d.ts.map +1 -0
- package/dist/core/github-plan.js +333 -0
- package/dist/core/github-plan.js.map +1 -0
- package/dist/core/index.d.ts +43 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +26 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/local-markdown-plan.d.ts +65 -0
- package/dist/core/local-markdown-plan.d.ts.map +1 -0
- package/dist/core/local-markdown-plan.js +154 -0
- package/dist/core/local-markdown-plan.js.map +1 -0
- package/dist/core/loop-engine.d.ts +133 -0
- package/dist/core/loop-engine.d.ts.map +1 -0
- package/dist/core/loop-engine.js +420 -0
- package/dist/core/loop-engine.js.map +1 -0
- package/dist/core/loop-events.d.ts +48 -0
- package/dist/core/loop-events.d.ts.map +1 -0
- package/dist/core/loop-events.js +24 -0
- package/dist/core/loop-events.js.map +1 -0
- package/dist/core/loop-state.d.ts +51 -0
- package/dist/core/loop-state.d.ts.map +1 -0
- package/dist/core/loop-state.js +48 -0
- package/dist/core/loop-state.js.map +1 -0
- package/dist/core/markdown-parser.d.ts +51 -0
- package/dist/core/markdown-parser.d.ts.map +1 -0
- package/dist/core/markdown-parser.js +122 -0
- package/dist/core/markdown-parser.js.map +1 -0
- package/dist/core/plan-manager.d.ts +61 -0
- package/dist/core/plan-manager.d.ts.map +1 -0
- package/dist/core/plan-manager.js +7 -0
- package/dist/core/plan-manager.js.map +1 -0
- package/dist/core/progress-tracker.d.ts +74 -0
- package/dist/core/progress-tracker.d.ts.map +1 -0
- package/dist/core/progress-tracker.js +198 -0
- package/dist/core/progress-tracker.js.map +1 -0
- package/dist/core/prompt-examples.d.ts +52 -0
- package/dist/core/prompt-examples.d.ts.map +1 -0
- package/dist/core/prompt-examples.js +194 -0
- package/dist/core/prompt-examples.js.map +1 -0
- package/dist/core/response-parser.d.ts +90 -0
- package/dist/core/response-parser.d.ts.map +1 -0
- package/dist/core/response-parser.js +209 -0
- package/dist/core/response-parser.js.map +1 -0
- package/dist/core/verification-hooks.d.ts +103 -0
- package/dist/core/verification-hooks.d.ts.map +1 -0
- package/dist/core/verification-hooks.js +268 -0
- package/dist/core/verification-hooks.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/auth.d.ts +28 -0
- package/dist/integrations/auth.d.ts.map +1 -0
- package/dist/integrations/auth.js +76 -0
- package/dist/integrations/auth.js.map +1 -0
- package/dist/integrations/copilot-agent.d.ts +104 -0
- package/dist/integrations/copilot-agent.d.ts.map +1 -0
- package/dist/integrations/copilot-agent.js +235 -0
- package/dist/integrations/copilot-agent.js.map +1 -0
- package/dist/integrations/index.d.ts +18 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +14 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/integrations/mcp-tools.d.ts +129 -0
- package/dist/integrations/mcp-tools.d.ts.map +1 -0
- package/dist/integrations/mcp-tools.js +272 -0
- package/dist/integrations/mcp-tools.js.map +1 -0
- package/dist/integrations/tokens.d.ts +45 -0
- package/dist/integrations/tokens.d.ts.map +1 -0
- package/dist/integrations/tokens.js +50 -0
- package/dist/integrations/tokens.js.map +1 -0
- package/dist/types/index.d.ts +53 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/index.d.ts +23 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +37 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/output.d.ts +59 -0
- package/dist/utils/output.d.ts.map +1 -0
- package/dist/utils/output.js +96 -0
- package/dist/utils/output.js.map +1 -0
- package/dist/utils/paths.d.ts +34 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +67 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/shell.d.ts +26 -0
- package/dist/utils/shell.d.ts.map +1 -0
- package/dist/utils/shell.js +65 -0
- package/dist/utils/shell.js.map +1 -0
- package/dist/utils/validation.d.ts +27 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +43 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +86 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-branch-manager.d.ts","sourceRoot":"","sources":["../../src/core/git-branch-manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,YAAY,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,UAAU,EAAE,OAAO,CAAC;IACpB,wBAAwB;IACxB,GAAG,EAAE,MAAM,CAAC;CACb;AAWD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,6CAA6C;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,+BAA+B;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,MAAM,EAAE,OAAO,CAAC;IAChB,qCAAqC;IACrC,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM;IAIjD;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IASzC;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,UAAU,CAAC;IAe7C;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IA0BtD;;OAEG;IACG,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYtD;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;IAUlC;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAmB9D;;OAEG;IACG,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYjE;;OAEG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWxD;;OAEG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASxD;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAkBzC;;OAEG;IACG,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgB/E;;OAEG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAahF;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAa5C;;;OAGG;IACG,mBAAmB,CACvB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,GAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,OAAO,CAAC;KACZ,GACL,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAgC5E;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IASnD;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;CAQxC;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,gBAAgB,CAE1F"}
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git Branch Manager
|
|
3
|
+
*
|
|
4
|
+
* Manages git branch isolation for safe Ralph operations
|
|
5
|
+
*/
|
|
6
|
+
import { exec } from 'node:child_process';
|
|
7
|
+
import { promisify } from 'node:util';
|
|
8
|
+
import { debug, warn } from '../utils/index.js';
|
|
9
|
+
const execAsync = promisify(exec);
|
|
10
|
+
/**
|
|
11
|
+
* Default configuration
|
|
12
|
+
*/
|
|
13
|
+
const DEFAULT_CONFIG = {
|
|
14
|
+
branchPrefix: 'ralph/',
|
|
15
|
+
autoCreate: true,
|
|
16
|
+
cwd: process.cwd(),
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Git Branch Manager class
|
|
20
|
+
*/
|
|
21
|
+
export class GitBranchManager {
|
|
22
|
+
config;
|
|
23
|
+
constructor(config = {}) {
|
|
24
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Check if we're in a git repository
|
|
28
|
+
*/
|
|
29
|
+
async isGitRepository() {
|
|
30
|
+
try {
|
|
31
|
+
await execAsync('git rev-parse --is-inside-work-tree', { cwd: this.config.cwd });
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Get current branch information
|
|
40
|
+
*/
|
|
41
|
+
async getCurrentBranch() {
|
|
42
|
+
try {
|
|
43
|
+
const { stdout } = await execAsync('git branch --show-current', { cwd: this.config.cwd });
|
|
44
|
+
const name = stdout.trim();
|
|
45
|
+
return {
|
|
46
|
+
name,
|
|
47
|
+
isMain: name === 'main' || name === 'master',
|
|
48
|
+
isRalphBranch: name.startsWith(this.config.branchPrefix),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
throw new Error('Failed to get current branch: ' + (err instanceof Error ? err.message : String(err)));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get working directory status
|
|
57
|
+
*/
|
|
58
|
+
async getWorkingDirStatus() {
|
|
59
|
+
try {
|
|
60
|
+
const { stdout } = await execAsync('git status --porcelain', { cwd: this.config.cwd });
|
|
61
|
+
const lines = stdout.trim().split('\n').filter(Boolean);
|
|
62
|
+
let modifiedFiles = 0;
|
|
63
|
+
let untrackedFiles = 0;
|
|
64
|
+
for (const line of lines) {
|
|
65
|
+
if (line.startsWith('??')) {
|
|
66
|
+
untrackedFiles++;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
modifiedFiles++;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
isClean: lines.length === 0,
|
|
74
|
+
modifiedFiles,
|
|
75
|
+
untrackedFiles,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return { isClean: true, modifiedFiles: 0, untrackedFiles: 0 };
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Stash current changes
|
|
84
|
+
*/
|
|
85
|
+
async stashChanges(message) {
|
|
86
|
+
try {
|
|
87
|
+
const stashMessage = message ?? `ghcralph: auto-stash at ${new Date().toISOString()}`;
|
|
88
|
+
await execAsync(`git stash push -m "${stashMessage}"`, { cwd: this.config.cwd });
|
|
89
|
+
debug(`Stashed changes: ${stashMessage}`);
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
warn('Failed to stash changes');
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Pop stashed changes
|
|
99
|
+
*/
|
|
100
|
+
async popStash() {
|
|
101
|
+
try {
|
|
102
|
+
await execAsync('git stash pop', { cwd: this.config.cwd });
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
warn('Failed to pop stash');
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Generate a branch name from task info
|
|
112
|
+
*/
|
|
113
|
+
generateBranchName(taskTitle, taskId) {
|
|
114
|
+
// Create a slug from the task title
|
|
115
|
+
const slug = taskTitle
|
|
116
|
+
.toLowerCase()
|
|
117
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
118
|
+
.replace(/^-+|-+$/g, '')
|
|
119
|
+
.substring(0, 30);
|
|
120
|
+
// Add timestamp for uniqueness
|
|
121
|
+
const timestamp = new Date().toISOString().split('T')[0]?.replace(/-/g, '') ?? '';
|
|
122
|
+
// Use task ID if available, otherwise use slug
|
|
123
|
+
const identifier = taskId
|
|
124
|
+
? taskId.replace(/[^a-z0-9-]/gi, '-')
|
|
125
|
+
: slug;
|
|
126
|
+
return `${this.config.branchPrefix}${identifier}-${timestamp}`;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Create and switch to a new Ralph branch
|
|
130
|
+
*/
|
|
131
|
+
async createAndSwitchBranch(branchName) {
|
|
132
|
+
try {
|
|
133
|
+
// Create and checkout the new branch
|
|
134
|
+
await execAsync(`git checkout -b "${branchName}"`, { cwd: this.config.cwd });
|
|
135
|
+
debug(`Created and switched to branch: ${branchName}`);
|
|
136
|
+
return true;
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
140
|
+
throw new Error(`Failed to create branch: ${message}`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Switch to an existing branch
|
|
145
|
+
*/
|
|
146
|
+
async switchBranch(branchName) {
|
|
147
|
+
try {
|
|
148
|
+
await execAsync(`git checkout "${branchName}"`, { cwd: this.config.cwd });
|
|
149
|
+
debug(`Switched to branch: ${branchName}`);
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
catch (err) {
|
|
153
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
154
|
+
throw new Error(`Failed to switch branch: ${message}`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Check if a branch exists
|
|
159
|
+
*/
|
|
160
|
+
async branchExists(branchName) {
|
|
161
|
+
try {
|
|
162
|
+
await execAsync(`git rev-parse --verify "${branchName}"`, { cwd: this.config.cwd });
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Get the default branch (main/master)
|
|
171
|
+
*/
|
|
172
|
+
async getDefaultBranch() {
|
|
173
|
+
// Try to get from remote
|
|
174
|
+
try {
|
|
175
|
+
const { stdout } = await execAsync('git symbolic-ref refs/remotes/origin/HEAD', { cwd: this.config.cwd });
|
|
176
|
+
const ref = stdout.trim();
|
|
177
|
+
return ref.replace('refs/remotes/origin/', '');
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
// Fallback: check if main or master exists
|
|
181
|
+
if (await this.branchExists('main')) {
|
|
182
|
+
return 'main';
|
|
183
|
+
}
|
|
184
|
+
if (await this.branchExists('master')) {
|
|
185
|
+
return 'master';
|
|
186
|
+
}
|
|
187
|
+
return 'main'; // Default
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Merge a Ralph branch back to the original branch
|
|
192
|
+
*/
|
|
193
|
+
async mergeBranch(sourceBranch, targetBranch) {
|
|
194
|
+
try {
|
|
195
|
+
// Switch to target branch
|
|
196
|
+
await execAsync(`git checkout "${targetBranch}"`, { cwd: this.config.cwd });
|
|
197
|
+
// Merge source branch
|
|
198
|
+
await execAsync(`git merge --no-ff "${sourceBranch}" -m "Merge ${sourceBranch} into ${targetBranch}"`, { cwd: this.config.cwd });
|
|
199
|
+
debug(`Merged ${sourceBranch} into ${targetBranch}`);
|
|
200
|
+
return true;
|
|
201
|
+
}
|
|
202
|
+
catch (err) {
|
|
203
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
204
|
+
throw new Error(`Failed to merge branches: ${message}`);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Delete a branch
|
|
209
|
+
*/
|
|
210
|
+
async deleteBranch(branchName, force = false) {
|
|
211
|
+
try {
|
|
212
|
+
const flag = force ? '-D' : '-d';
|
|
213
|
+
await execAsync(`git branch ${flag} "${branchName}"`, { cwd: this.config.cwd });
|
|
214
|
+
debug(`Deleted branch: ${branchName}`);
|
|
215
|
+
return true;
|
|
216
|
+
}
|
|
217
|
+
catch (err) {
|
|
218
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
219
|
+
warn(`Failed to delete branch: ${message}`);
|
|
220
|
+
return false;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Get the list of GitHub Copilot Ralph branches
|
|
225
|
+
*/
|
|
226
|
+
async listRalphBranches() {
|
|
227
|
+
try {
|
|
228
|
+
const { stdout } = await execAsync(`git branch --list "${this.config.branchPrefix}*"`, { cwd: this.config.cwd });
|
|
229
|
+
return stdout
|
|
230
|
+
.trim()
|
|
231
|
+
.split('\n')
|
|
232
|
+
.map(b => b.trim().replace(/^\*\s*/, ''))
|
|
233
|
+
.filter(Boolean);
|
|
234
|
+
}
|
|
235
|
+
catch {
|
|
236
|
+
return [];
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Prepare the branch for a Ralph operation
|
|
241
|
+
* Returns the branch name to use
|
|
242
|
+
*/
|
|
243
|
+
async prepareForOperation(taskTitle, taskId, options = {}) {
|
|
244
|
+
const currentBranch = await this.getCurrentBranch();
|
|
245
|
+
const originalBranch = currentBranch.name;
|
|
246
|
+
// If custom branch name provided, use it
|
|
247
|
+
if (options.branch) {
|
|
248
|
+
const exists = await this.branchExists(options.branch);
|
|
249
|
+
if (exists) {
|
|
250
|
+
await this.switchBranch(options.branch);
|
|
251
|
+
return { branchName: options.branch, created: false, originalBranch };
|
|
252
|
+
}
|
|
253
|
+
else {
|
|
254
|
+
await this.createAndSwitchBranch(options.branch);
|
|
255
|
+
return { branchName: options.branch, created: true, originalBranch };
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
// Already on a Ralph branch
|
|
259
|
+
if (currentBranch.isRalphBranch) {
|
|
260
|
+
return { branchName: currentBranch.name, created: false, originalBranch };
|
|
261
|
+
}
|
|
262
|
+
// On main/master - auto-create a new Ralph branch
|
|
263
|
+
if (currentBranch.isMain || this.config.autoCreate || options.force) {
|
|
264
|
+
const branchName = this.generateBranchName(taskTitle, taskId);
|
|
265
|
+
await this.createAndSwitchBranch(branchName);
|
|
266
|
+
return { branchName, created: true, originalBranch };
|
|
267
|
+
}
|
|
268
|
+
// On a different branch - just use it (caller should have confirmed)
|
|
269
|
+
return { branchName: currentBranch.name, created: false, originalBranch };
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Get the latest commit hash
|
|
273
|
+
*/
|
|
274
|
+
async getLatestCommitHash() {
|
|
275
|
+
try {
|
|
276
|
+
const { stdout } = await execAsync('git rev-parse HEAD', { cwd: this.config.cwd });
|
|
277
|
+
return stdout.trim();
|
|
278
|
+
}
|
|
279
|
+
catch {
|
|
280
|
+
return null;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Get the commit count on current branch
|
|
285
|
+
*/
|
|
286
|
+
async getCommitCount() {
|
|
287
|
+
try {
|
|
288
|
+
const { stdout } = await execAsync('git rev-list --count HEAD', { cwd: this.config.cwd });
|
|
289
|
+
return parseInt(stdout.trim(), 10);
|
|
290
|
+
}
|
|
291
|
+
catch {
|
|
292
|
+
return 0;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Create a git branch manager with configuration
|
|
298
|
+
*/
|
|
299
|
+
export function createGitBranchManager(config) {
|
|
300
|
+
return new GitBranchManager(config);
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=git-branch-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-branch-manager.js","sourceRoot":"","sources":["../../src/core/git-branch-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub Issues Plan Source
|
|
3
|
+
*
|
|
4
|
+
* Implementation of PlanManager for GitHub Issues
|
|
5
|
+
*/
|
|
6
|
+
import type { Task } from '../types/index.js';
|
|
7
|
+
import type { PlanManager, TaskFilter, PlanSourceType } from './plan-manager.js';
|
|
8
|
+
/**
|
|
9
|
+
* GitHub plan configuration
|
|
10
|
+
*/
|
|
11
|
+
export interface GitHubPlanConfig {
|
|
12
|
+
/** Repository owner */
|
|
13
|
+
owner: string;
|
|
14
|
+
/** Repository name */
|
|
15
|
+
repo: string;
|
|
16
|
+
/** Label to filter issues */
|
|
17
|
+
label?: string;
|
|
18
|
+
/** Milestone to filter issues */
|
|
19
|
+
milestone?: string;
|
|
20
|
+
/** Assignee to filter issues */
|
|
21
|
+
assignee?: string;
|
|
22
|
+
/** Label to add when starting work */
|
|
23
|
+
inProgressLabel?: string;
|
|
24
|
+
/** Whether to add progress comments */
|
|
25
|
+
addComments?: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* GitHub Issues Plan implementation
|
|
29
|
+
*/
|
|
30
|
+
export declare class GitHubPlan implements PlanManager {
|
|
31
|
+
readonly sourceType: PlanSourceType;
|
|
32
|
+
private config;
|
|
33
|
+
private octokit;
|
|
34
|
+
private issues;
|
|
35
|
+
private currentUser;
|
|
36
|
+
constructor(config: GitHubPlanConfig);
|
|
37
|
+
/**
|
|
38
|
+
* Initialize by authenticating and loading issues
|
|
39
|
+
*/
|
|
40
|
+
initialize(): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Load issues from GitHub
|
|
43
|
+
*/
|
|
44
|
+
private loadIssues;
|
|
45
|
+
/**
|
|
46
|
+
* Convert GitHub issue to Task
|
|
47
|
+
*/
|
|
48
|
+
private toTask;
|
|
49
|
+
/**
|
|
50
|
+
* Get all tasks, optionally filtered
|
|
51
|
+
*/
|
|
52
|
+
getTasks(filter?: TaskFilter): Promise<Task[]>;
|
|
53
|
+
/**
|
|
54
|
+
* Get the next pending task
|
|
55
|
+
*/
|
|
56
|
+
getNextTask(): Promise<Task | null>;
|
|
57
|
+
/**
|
|
58
|
+
* Get a specific task by ID
|
|
59
|
+
*/
|
|
60
|
+
getTask(id: string): Promise<Task | null>;
|
|
61
|
+
/**
|
|
62
|
+
* Mark a task as in-progress
|
|
63
|
+
*/
|
|
64
|
+
startTask(id: string): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Mark a task as completed
|
|
67
|
+
*/
|
|
68
|
+
completeTask(id: string): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Mark a task as failed
|
|
71
|
+
*/
|
|
72
|
+
failTask(id: string, errorMessage?: string): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Update task progress
|
|
75
|
+
*/
|
|
76
|
+
updateProgress(id: string, progress: string): Promise<void>;
|
|
77
|
+
/**
|
|
78
|
+
* Parse issue number from task ID
|
|
79
|
+
*/
|
|
80
|
+
private parseIssueNumber;
|
|
81
|
+
/**
|
|
82
|
+
* Reload issues from GitHub
|
|
83
|
+
*/
|
|
84
|
+
reload(): Promise<void>;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=github-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-plan.d.ts","sourceRoot":"","sources":["../../src/core/github-plan.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAgBjF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,UAAW,YAAW,WAAW;IAC5C,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAY;IAC/C,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,WAAW,CAAuB;gBAE9B,MAAM,EAAE,gBAAgB;IAQpC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBjC;;OAEG;YACW,UAAU;IAwDxB;;OAEG;IACH,OAAO,CAAC,MAAM;IAYd;;OAEG;IACG,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAcpD;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAiBzC;;OAEG;IACG,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAQ/C;;OAEG;IACG,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuD1C;;OAEG;IACG,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoD7C;;OAEG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2ChE;;OAEG;IACG,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBjE;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAG9B"}
|