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.
Files changed (160) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +327 -0
  3. package/bin/ghcralph.js +2 -0
  4. package/dist/cli.d.ts +12 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +92 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/commands/config.d.ts +8 -0
  9. package/dist/commands/config.d.ts.map +1 -0
  10. package/dist/commands/config.js +118 -0
  11. package/dist/commands/config.js.map +1 -0
  12. package/dist/commands/index.d.ts +11 -0
  13. package/dist/commands/index.d.ts.map +1 -0
  14. package/dist/commands/index.js +11 -0
  15. package/dist/commands/index.js.map +1 -0
  16. package/dist/commands/init.d.ts +15 -0
  17. package/dist/commands/init.d.ts.map +1 -0
  18. package/dist/commands/init.js +116 -0
  19. package/dist/commands/init.js.map +1 -0
  20. package/dist/commands/rollback.d.ts +8 -0
  21. package/dist/commands/rollback.d.ts.map +1 -0
  22. package/dist/commands/rollback.js +238 -0
  23. package/dist/commands/rollback.js.map +1 -0
  24. package/dist/commands/run.d.ts +28 -0
  25. package/dist/commands/run.d.ts.map +1 -0
  26. package/dist/commands/run.js +407 -0
  27. package/dist/commands/run.js.map +1 -0
  28. package/dist/commands/status.d.ts +8 -0
  29. package/dist/commands/status.d.ts.map +1 -0
  30. package/dist/commands/status.js +399 -0
  31. package/dist/commands/status.js.map +1 -0
  32. package/dist/core/action-executor.d.ts +96 -0
  33. package/dist/core/action-executor.d.ts.map +1 -0
  34. package/dist/core/action-executor.js +289 -0
  35. package/dist/core/action-executor.js.map +1 -0
  36. package/dist/core/checkpoint-manager.d.ts +94 -0
  37. package/dist/core/checkpoint-manager.d.ts.map +1 -0
  38. package/dist/core/checkpoint-manager.js +236 -0
  39. package/dist/core/checkpoint-manager.js.map +1 -0
  40. package/dist/core/config-manager.d.ts +62 -0
  41. package/dist/core/config-manager.d.ts.map +1 -0
  42. package/dist/core/config-manager.js +184 -0
  43. package/dist/core/config-manager.js.map +1 -0
  44. package/dist/core/config-schema.d.ts +74 -0
  45. package/dist/core/config-schema.d.ts.map +1 -0
  46. package/dist/core/config-schema.js +84 -0
  47. package/dist/core/config-schema.js.map +1 -0
  48. package/dist/core/context-builder.d.ts +116 -0
  49. package/dist/core/context-builder.d.ts.map +1 -0
  50. package/dist/core/context-builder.js +388 -0
  51. package/dist/core/context-builder.js.map +1 -0
  52. package/dist/core/feedback-builder.d.ts +94 -0
  53. package/dist/core/feedback-builder.d.ts.map +1 -0
  54. package/dist/core/feedback-builder.js +226 -0
  55. package/dist/core/feedback-builder.js.map +1 -0
  56. package/dist/core/file-safeguard.d.ts +109 -0
  57. package/dist/core/file-safeguard.d.ts.map +1 -0
  58. package/dist/core/file-safeguard.js +200 -0
  59. package/dist/core/file-safeguard.js.map +1 -0
  60. package/dist/core/git-branch-manager.d.ts +122 -0
  61. package/dist/core/git-branch-manager.d.ts.map +1 -0
  62. package/dist/core/git-branch-manager.js +302 -0
  63. package/dist/core/git-branch-manager.js.map +1 -0
  64. package/dist/core/github-plan.d.ts +86 -0
  65. package/dist/core/github-plan.d.ts.map +1 -0
  66. package/dist/core/github-plan.js +333 -0
  67. package/dist/core/github-plan.js.map +1 -0
  68. package/dist/core/index.d.ts +43 -0
  69. package/dist/core/index.d.ts.map +1 -0
  70. package/dist/core/index.js +26 -0
  71. package/dist/core/index.js.map +1 -0
  72. package/dist/core/local-markdown-plan.d.ts +65 -0
  73. package/dist/core/local-markdown-plan.d.ts.map +1 -0
  74. package/dist/core/local-markdown-plan.js +154 -0
  75. package/dist/core/local-markdown-plan.js.map +1 -0
  76. package/dist/core/loop-engine.d.ts +133 -0
  77. package/dist/core/loop-engine.d.ts.map +1 -0
  78. package/dist/core/loop-engine.js +420 -0
  79. package/dist/core/loop-engine.js.map +1 -0
  80. package/dist/core/loop-events.d.ts +48 -0
  81. package/dist/core/loop-events.d.ts.map +1 -0
  82. package/dist/core/loop-events.js +24 -0
  83. package/dist/core/loop-events.js.map +1 -0
  84. package/dist/core/loop-state.d.ts +51 -0
  85. package/dist/core/loop-state.d.ts.map +1 -0
  86. package/dist/core/loop-state.js +48 -0
  87. package/dist/core/loop-state.js.map +1 -0
  88. package/dist/core/markdown-parser.d.ts +51 -0
  89. package/dist/core/markdown-parser.d.ts.map +1 -0
  90. package/dist/core/markdown-parser.js +122 -0
  91. package/dist/core/markdown-parser.js.map +1 -0
  92. package/dist/core/plan-manager.d.ts +61 -0
  93. package/dist/core/plan-manager.d.ts.map +1 -0
  94. package/dist/core/plan-manager.js +7 -0
  95. package/dist/core/plan-manager.js.map +1 -0
  96. package/dist/core/progress-tracker.d.ts +74 -0
  97. package/dist/core/progress-tracker.d.ts.map +1 -0
  98. package/dist/core/progress-tracker.js +198 -0
  99. package/dist/core/progress-tracker.js.map +1 -0
  100. package/dist/core/prompt-examples.d.ts +52 -0
  101. package/dist/core/prompt-examples.d.ts.map +1 -0
  102. package/dist/core/prompt-examples.js +194 -0
  103. package/dist/core/prompt-examples.js.map +1 -0
  104. package/dist/core/response-parser.d.ts +90 -0
  105. package/dist/core/response-parser.d.ts.map +1 -0
  106. package/dist/core/response-parser.js +209 -0
  107. package/dist/core/response-parser.js.map +1 -0
  108. package/dist/core/verification-hooks.d.ts +103 -0
  109. package/dist/core/verification-hooks.d.ts.map +1 -0
  110. package/dist/core/verification-hooks.js +268 -0
  111. package/dist/core/verification-hooks.js.map +1 -0
  112. package/dist/index.d.ts +13 -0
  113. package/dist/index.d.ts.map +1 -0
  114. package/dist/index.js +17 -0
  115. package/dist/index.js.map +1 -0
  116. package/dist/integrations/auth.d.ts +28 -0
  117. package/dist/integrations/auth.d.ts.map +1 -0
  118. package/dist/integrations/auth.js +76 -0
  119. package/dist/integrations/auth.js.map +1 -0
  120. package/dist/integrations/copilot-agent.d.ts +104 -0
  121. package/dist/integrations/copilot-agent.d.ts.map +1 -0
  122. package/dist/integrations/copilot-agent.js +235 -0
  123. package/dist/integrations/copilot-agent.js.map +1 -0
  124. package/dist/integrations/index.d.ts +18 -0
  125. package/dist/integrations/index.d.ts.map +1 -0
  126. package/dist/integrations/index.js +14 -0
  127. package/dist/integrations/index.js.map +1 -0
  128. package/dist/integrations/mcp-tools.d.ts +129 -0
  129. package/dist/integrations/mcp-tools.d.ts.map +1 -0
  130. package/dist/integrations/mcp-tools.js +272 -0
  131. package/dist/integrations/mcp-tools.js.map +1 -0
  132. package/dist/integrations/tokens.d.ts +45 -0
  133. package/dist/integrations/tokens.d.ts.map +1 -0
  134. package/dist/integrations/tokens.js +50 -0
  135. package/dist/integrations/tokens.js.map +1 -0
  136. package/dist/types/index.d.ts +53 -0
  137. package/dist/types/index.d.ts.map +1 -0
  138. package/dist/types/index.js +7 -0
  139. package/dist/types/index.js.map +1 -0
  140. package/dist/utils/index.d.ts +23 -0
  141. package/dist/utils/index.d.ts.map +1 -0
  142. package/dist/utils/index.js +37 -0
  143. package/dist/utils/index.js.map +1 -0
  144. package/dist/utils/output.d.ts +59 -0
  145. package/dist/utils/output.d.ts.map +1 -0
  146. package/dist/utils/output.js +96 -0
  147. package/dist/utils/output.js.map +1 -0
  148. package/dist/utils/paths.d.ts +34 -0
  149. package/dist/utils/paths.d.ts.map +1 -0
  150. package/dist/utils/paths.js +67 -0
  151. package/dist/utils/paths.js.map +1 -0
  152. package/dist/utils/shell.d.ts +26 -0
  153. package/dist/utils/shell.d.ts.map +1 -0
  154. package/dist/utils/shell.js +65 -0
  155. package/dist/utils/shell.js.map +1 -0
  156. package/dist/utils/validation.d.ts +27 -0
  157. package/dist/utils/validation.d.ts.map +1 -0
  158. package/dist/utils/validation.js +43 -0
  159. package/dist/utils/validation.js.map +1 -0
  160. 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"}