ai-sdlc 0.3.1-alpha.2-alpha.1 → 0.3.1-alpha.2-alpha.3
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/dist/agents/verification.d.ts +23 -3
- package/dist/agents/verification.d.ts.map +1 -1
- package/dist/agents/verification.js +93 -11
- package/dist/agents/verification.js.map +1 -1
- package/dist/cli/commands.d.ts +8 -1
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +67 -2
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/epic-processor.d.ts.map +1 -1
- package/dist/cli/epic-processor.js +18 -5
- package/dist/cli/epic-processor.js.map +1 -1
- package/dist/cli/formatting.d.ts +15 -0
- package/dist/cli/formatting.d.ts.map +1 -1
- package/dist/cli/formatting.js +34 -0
- package/dist/cli/formatting.js.map +1 -1
- package/dist/cli/runner.d.ts.map +1 -1
- package/dist/cli/runner.js +6 -4
- package/dist/cli/runner.js.map +1 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +92 -1
- package/dist/core/config.js.map +1 -1
- package/dist/core/kanban.d.ts.map +1 -1
- package/dist/core/kanban.js +4 -2
- package/dist/core/kanban.js.map +1 -1
- package/dist/core/stack-detector.d.ts +28 -0
- package/dist/core/stack-detector.d.ts.map +1 -0
- package/dist/core/stack-detector.js +395 -0
- package/dist/core/stack-detector.js.map +1 -0
- package/dist/core/story-logger.d.ts +51 -1
- package/dist/core/story-logger.d.ts.map +1 -1
- package/dist/core/story-logger.js +69 -3
- package/dist/core/story-logger.js.map +1 -1
- package/dist/core/story.d.ts.map +1 -1
- package/dist/core/story.js +8 -4
- package/dist/core/story.js.map +1 -1
- package/dist/core/worktree.d.ts +5 -0
- package/dist/core/worktree.d.ts.map +1 -1
- package/dist/core/worktree.js +10 -0
- package/dist/core/worktree.js.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/services/gh-cli.d.ts +81 -0
- package/dist/services/gh-cli.d.ts.map +1 -1
- package/dist/services/gh-cli.js +257 -0
- package/dist/services/gh-cli.js.map +1 -1
- package/dist/services/ticket-provider/github-provider.d.ts +27 -12
- package/dist/services/ticket-provider/github-provider.d.ts.map +1 -1
- package/dist/services/ticket-provider/github-provider.js +51 -17
- package/dist/services/ticket-provider/github-provider.js.map +1 -1
- package/dist/types/index.d.ts +36 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -118,5 +118,86 @@ export declare function ghIssueView(owner: string, repo: string, number: number)
|
|
|
118
118
|
* @throws {GhNotAuthenticatedError} If gh CLI is not authenticated
|
|
119
119
|
* @throws {GhNoAccessError} If access to repo is denied
|
|
120
120
|
*/
|
|
121
|
+
/**
|
|
122
|
+
* Create a new GitHub Issue.
|
|
123
|
+
*
|
|
124
|
+
* @param owner Repository owner
|
|
125
|
+
* @param repo Repository name
|
|
126
|
+
* @param title Issue title
|
|
127
|
+
* @param body Issue body (markdown)
|
|
128
|
+
* @param labels Optional labels to add
|
|
129
|
+
* @returns Created issue
|
|
130
|
+
* @throws {GhNotInstalledError} If gh CLI is not installed
|
|
131
|
+
* @throws {GhNotAuthenticatedError} If gh CLI is not authenticated
|
|
132
|
+
* @throws {GhNoAccessError} If access to repo is denied
|
|
133
|
+
*/
|
|
134
|
+
export declare function ghIssueCreate(owner: string, repo: string, title: string, body: string, labels?: string[]): Promise<GitHubIssue>;
|
|
135
|
+
/**
|
|
136
|
+
* Add a comment to a GitHub Issue.
|
|
137
|
+
*
|
|
138
|
+
* @param owner Repository owner
|
|
139
|
+
* @param repo Repository name
|
|
140
|
+
* @param number Issue number
|
|
141
|
+
* @param body Comment body (markdown)
|
|
142
|
+
* @throws {GhNotInstalledError} If gh CLI is not installed
|
|
143
|
+
* @throws {GhNotAuthenticatedError} If gh CLI is not authenticated
|
|
144
|
+
* @throws {GhIssueNotFoundError} If issue is not found
|
|
145
|
+
* @throws {GhNoAccessError} If access to repo is denied
|
|
146
|
+
*/
|
|
147
|
+
export declare function ghIssueComment(owner: string, repo: string, number: number, body: string): Promise<void>;
|
|
148
|
+
/**
|
|
149
|
+
* Close or reopen a GitHub Issue.
|
|
150
|
+
*
|
|
151
|
+
* @param owner Repository owner
|
|
152
|
+
* @param repo Repository name
|
|
153
|
+
* @param number Issue number
|
|
154
|
+
* @param state Target state ('open' or 'closed')
|
|
155
|
+
* @throws {GhNotInstalledError} If gh CLI is not installed
|
|
156
|
+
* @throws {GhNotAuthenticatedError} If gh CLI is not authenticated
|
|
157
|
+
* @throws {GhIssueNotFoundError} If issue is not found
|
|
158
|
+
* @throws {GhNoAccessError} If access to repo is denied
|
|
159
|
+
*/
|
|
160
|
+
export declare function ghIssueStateChange(owner: string, repo: string, number: number, state: 'open' | 'closed'): Promise<void>;
|
|
161
|
+
/**
|
|
162
|
+
* Represents a GitHub Pull Request as returned by the gh CLI JSON output.
|
|
163
|
+
*/
|
|
164
|
+
export interface GitHubPR {
|
|
165
|
+
number: number;
|
|
166
|
+
title: string;
|
|
167
|
+
body: string;
|
|
168
|
+
state: 'open' | 'closed' | 'merged';
|
|
169
|
+
url: string;
|
|
170
|
+
headRefName: string;
|
|
171
|
+
baseRefName: string;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Create a Pull Request.
|
|
175
|
+
*
|
|
176
|
+
* @param owner Repository owner
|
|
177
|
+
* @param repo Repository name
|
|
178
|
+
* @param title PR title
|
|
179
|
+
* @param body PR body (markdown)
|
|
180
|
+
* @param head Head branch name
|
|
181
|
+
* @param base Base branch name (default: main)
|
|
182
|
+
* @param draft Whether to create as draft PR
|
|
183
|
+
* @returns Created PR details
|
|
184
|
+
* @throws {GhNotInstalledError} If gh CLI is not installed
|
|
185
|
+
* @throws {GhNotAuthenticatedError} If gh CLI is not authenticated
|
|
186
|
+
* @throws {GhNoAccessError} If access to repo is denied
|
|
187
|
+
*/
|
|
188
|
+
export declare function ghPRCreate(owner: string, repo: string, title: string, body: string, head: string, base?: string, draft?: boolean): Promise<GitHubPR>;
|
|
189
|
+
/**
|
|
190
|
+
* Link an issue to a PR by adding a comment with closing keywords.
|
|
191
|
+
*
|
|
192
|
+
* @param owner Repository owner
|
|
193
|
+
* @param repo Repository name
|
|
194
|
+
* @param issueNumber Issue number to link
|
|
195
|
+
* @param prUrl URL of the PR
|
|
196
|
+
* @throws {GhNotInstalledError} If gh CLI is not installed
|
|
197
|
+
* @throws {GhNotAuthenticatedError} If gh CLI is not authenticated
|
|
198
|
+
* @throws {GhIssueNotFoundError} If issue is not found
|
|
199
|
+
* @throws {GhNoAccessError} If access to repo is denied
|
|
200
|
+
*/
|
|
201
|
+
export declare function ghLinkIssueToPR(owner: string, repo: string, issueNumber: number, prUrl: string): Promise<void>;
|
|
121
202
|
export declare function ghIssueList(owner: string, repo: string, filter?: IssueFilter): Promise<GitHubIssue[]>;
|
|
122
203
|
//# sourceMappingURL=gh-cli.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gh-cli.d.ts","sourceRoot":"","sources":["../../src/services/gh-cli.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC;IACzB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChC,SAAS,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpC,YAAY,CAAC,EAAE,KAAK,CAAC;QACnB,OAAO,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;QAC3B,MAAM,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QAC1B,gBAAgB,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,CAAC,CAAC;KACrE,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;;CAK7C;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;;CAKjD;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAIxD;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAIxC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI,CA6B5E;AAED;;;;GAIG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAqBtD;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAQ1D;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,CAAC,CA+DtB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,WAAW,EAAE,CAAC,CAwExB"}
|
|
1
|
+
{"version":3,"file":"gh-cli.d.ts","sourceRoot":"","sources":["../../src/services/gh-cli.ts"],"names":[],"mappings":"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"}
|
package/dist/services/gh-cli.js
CHANGED
|
@@ -185,6 +185,263 @@ export async function ghIssueView(owner, repo, number) {
|
|
|
185
185
|
* @throws {GhNotAuthenticatedError} If gh CLI is not authenticated
|
|
186
186
|
* @throws {GhNoAccessError} If access to repo is denied
|
|
187
187
|
*/
|
|
188
|
+
/**
|
|
189
|
+
* Create a new GitHub Issue.
|
|
190
|
+
*
|
|
191
|
+
* @param owner Repository owner
|
|
192
|
+
* @param repo Repository name
|
|
193
|
+
* @param title Issue title
|
|
194
|
+
* @param body Issue body (markdown)
|
|
195
|
+
* @param labels Optional labels to add
|
|
196
|
+
* @returns Created issue
|
|
197
|
+
* @throws {GhNotInstalledError} If gh CLI is not installed
|
|
198
|
+
* @throws {GhNotAuthenticatedError} If gh CLI is not authenticated
|
|
199
|
+
* @throws {GhNoAccessError} If access to repo is denied
|
|
200
|
+
*/
|
|
201
|
+
export async function ghIssueCreate(owner, repo, title, body, labels) {
|
|
202
|
+
const args = [
|
|
203
|
+
'issue',
|
|
204
|
+
'create',
|
|
205
|
+
'-R',
|
|
206
|
+
`${owner}/${repo}`,
|
|
207
|
+
'--title',
|
|
208
|
+
title,
|
|
209
|
+
'--body',
|
|
210
|
+
body,
|
|
211
|
+
];
|
|
212
|
+
if (labels && labels.length > 0) {
|
|
213
|
+
args.push('--label', labels.join(','));
|
|
214
|
+
}
|
|
215
|
+
const result = spawnSync('gh', args, {
|
|
216
|
+
encoding: 'utf-8',
|
|
217
|
+
shell: false,
|
|
218
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
219
|
+
timeout: 30000,
|
|
220
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
221
|
+
});
|
|
222
|
+
if (result.error) {
|
|
223
|
+
// @ts-expect-error - error.code is not in the type definition but exists at runtime
|
|
224
|
+
if (result.error.code === 'ENOENT') {
|
|
225
|
+
throw new GhNotInstalledError();
|
|
226
|
+
}
|
|
227
|
+
throw new Error(`Failed to execute gh command: ${result.error.message}`);
|
|
228
|
+
}
|
|
229
|
+
if (result.status !== 0) {
|
|
230
|
+
const stderr = result.stderr || '';
|
|
231
|
+
const stderrLower = stderr.toLowerCase();
|
|
232
|
+
if (stderrLower.includes('not logged in') ||
|
|
233
|
+
stderrLower.includes('authentication') ||
|
|
234
|
+
stderrLower.includes('gh auth login')) {
|
|
235
|
+
throw new GhNotAuthenticatedError();
|
|
236
|
+
}
|
|
237
|
+
if (stderrLower.includes('permission') || stderrLower.includes('403')) {
|
|
238
|
+
throw new GhNoAccessError(owner, repo);
|
|
239
|
+
}
|
|
240
|
+
throw new Error(`gh issue create failed: ${stderr}`);
|
|
241
|
+
}
|
|
242
|
+
// gh issue create outputs URL like https://github.com/owner/repo/issues/123
|
|
243
|
+
const issueUrl = result.stdout.trim();
|
|
244
|
+
const match = issueUrl.match(/\/issues\/(\d+)$/);
|
|
245
|
+
if (!match) {
|
|
246
|
+
throw new Error(`Unexpected gh issue create output: ${result.stdout}`);
|
|
247
|
+
}
|
|
248
|
+
// Fetch the created issue to return full details
|
|
249
|
+
const issueNumber = parseInt(match[1], 10);
|
|
250
|
+
return ghIssueView(owner, repo, issueNumber);
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Add a comment to a GitHub Issue.
|
|
254
|
+
*
|
|
255
|
+
* @param owner Repository owner
|
|
256
|
+
* @param repo Repository name
|
|
257
|
+
* @param number Issue number
|
|
258
|
+
* @param body Comment body (markdown)
|
|
259
|
+
* @throws {GhNotInstalledError} If gh CLI is not installed
|
|
260
|
+
* @throws {GhNotAuthenticatedError} If gh CLI is not authenticated
|
|
261
|
+
* @throws {GhIssueNotFoundError} If issue is not found
|
|
262
|
+
* @throws {GhNoAccessError} If access to repo is denied
|
|
263
|
+
*/
|
|
264
|
+
export async function ghIssueComment(owner, repo, number, body) {
|
|
265
|
+
const result = spawnSync('gh', [
|
|
266
|
+
'issue',
|
|
267
|
+
'comment',
|
|
268
|
+
number.toString(),
|
|
269
|
+
'-R',
|
|
270
|
+
`${owner}/${repo}`,
|
|
271
|
+
'--body',
|
|
272
|
+
body,
|
|
273
|
+
], {
|
|
274
|
+
encoding: 'utf-8',
|
|
275
|
+
shell: false,
|
|
276
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
277
|
+
timeout: 30000,
|
|
278
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
279
|
+
});
|
|
280
|
+
if (result.error) {
|
|
281
|
+
// @ts-expect-error - error.code is not in the type definition but exists at runtime
|
|
282
|
+
if (result.error.code === 'ENOENT') {
|
|
283
|
+
throw new GhNotInstalledError();
|
|
284
|
+
}
|
|
285
|
+
throw new Error(`Failed to execute gh command: ${result.error.message}`);
|
|
286
|
+
}
|
|
287
|
+
if (result.status !== 0) {
|
|
288
|
+
const stderr = result.stderr || '';
|
|
289
|
+
const stderrLower = stderr.toLowerCase();
|
|
290
|
+
if (stderrLower.includes('not logged in') ||
|
|
291
|
+
stderrLower.includes('authentication') ||
|
|
292
|
+
stderrLower.includes('gh auth login')) {
|
|
293
|
+
throw new GhNotAuthenticatedError();
|
|
294
|
+
}
|
|
295
|
+
if (stderrLower.includes('not found') || stderrLower.includes('could not resolve')) {
|
|
296
|
+
throw new GhIssueNotFoundError(owner, repo, number);
|
|
297
|
+
}
|
|
298
|
+
if (stderrLower.includes('permission') || stderrLower.includes('403')) {
|
|
299
|
+
throw new GhNoAccessError(owner, repo);
|
|
300
|
+
}
|
|
301
|
+
throw new Error(`gh issue comment failed: ${stderr}`);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Close or reopen a GitHub Issue.
|
|
306
|
+
*
|
|
307
|
+
* @param owner Repository owner
|
|
308
|
+
* @param repo Repository name
|
|
309
|
+
* @param number Issue number
|
|
310
|
+
* @param state Target state ('open' or 'closed')
|
|
311
|
+
* @throws {GhNotInstalledError} If gh CLI is not installed
|
|
312
|
+
* @throws {GhNotAuthenticatedError} If gh CLI is not authenticated
|
|
313
|
+
* @throws {GhIssueNotFoundError} If issue is not found
|
|
314
|
+
* @throws {GhNoAccessError} If access to repo is denied
|
|
315
|
+
*/
|
|
316
|
+
export async function ghIssueStateChange(owner, repo, number, state) {
|
|
317
|
+
const action = state === 'closed' ? 'close' : 'reopen';
|
|
318
|
+
const result = spawnSync('gh', ['issue', action, number.toString(), '-R', `${owner}/${repo}`], {
|
|
319
|
+
encoding: 'utf-8',
|
|
320
|
+
shell: false,
|
|
321
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
322
|
+
timeout: 30000,
|
|
323
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
324
|
+
});
|
|
325
|
+
if (result.error) {
|
|
326
|
+
// @ts-expect-error - error.code is not in the type definition but exists at runtime
|
|
327
|
+
if (result.error.code === 'ENOENT') {
|
|
328
|
+
throw new GhNotInstalledError();
|
|
329
|
+
}
|
|
330
|
+
throw new Error(`Failed to execute gh command: ${result.error.message}`);
|
|
331
|
+
}
|
|
332
|
+
if (result.status !== 0) {
|
|
333
|
+
const stderr = result.stderr || '';
|
|
334
|
+
const stderrLower = stderr.toLowerCase();
|
|
335
|
+
if (stderrLower.includes('not logged in') ||
|
|
336
|
+
stderrLower.includes('authentication') ||
|
|
337
|
+
stderrLower.includes('gh auth login')) {
|
|
338
|
+
throw new GhNotAuthenticatedError();
|
|
339
|
+
}
|
|
340
|
+
if (stderrLower.includes('not found') || stderrLower.includes('could not resolve')) {
|
|
341
|
+
throw new GhIssueNotFoundError(owner, repo, number);
|
|
342
|
+
}
|
|
343
|
+
if (stderrLower.includes('permission') || stderrLower.includes('403')) {
|
|
344
|
+
throw new GhNoAccessError(owner, repo);
|
|
345
|
+
}
|
|
346
|
+
throw new Error(`gh issue ${action} failed: ${stderr}`);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Create a Pull Request.
|
|
351
|
+
*
|
|
352
|
+
* @param owner Repository owner
|
|
353
|
+
* @param repo Repository name
|
|
354
|
+
* @param title PR title
|
|
355
|
+
* @param body PR body (markdown)
|
|
356
|
+
* @param head Head branch name
|
|
357
|
+
* @param base Base branch name (default: main)
|
|
358
|
+
* @param draft Whether to create as draft PR
|
|
359
|
+
* @returns Created PR details
|
|
360
|
+
* @throws {GhNotInstalledError} If gh CLI is not installed
|
|
361
|
+
* @throws {GhNotAuthenticatedError} If gh CLI is not authenticated
|
|
362
|
+
* @throws {GhNoAccessError} If access to repo is denied
|
|
363
|
+
*/
|
|
364
|
+
export async function ghPRCreate(owner, repo, title, body, head, base = 'main', draft = false) {
|
|
365
|
+
const args = [
|
|
366
|
+
'pr',
|
|
367
|
+
'create',
|
|
368
|
+
'-R',
|
|
369
|
+
`${owner}/${repo}`,
|
|
370
|
+
'--title',
|
|
371
|
+
title,
|
|
372
|
+
'--body',
|
|
373
|
+
body,
|
|
374
|
+
'--head',
|
|
375
|
+
head,
|
|
376
|
+
'--base',
|
|
377
|
+
base,
|
|
378
|
+
];
|
|
379
|
+
if (draft) {
|
|
380
|
+
args.push('--draft');
|
|
381
|
+
}
|
|
382
|
+
const result = spawnSync('gh', args, {
|
|
383
|
+
encoding: 'utf-8',
|
|
384
|
+
shell: false,
|
|
385
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
386
|
+
timeout: 60000, // 60 seconds for PR creation
|
|
387
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
388
|
+
});
|
|
389
|
+
if (result.error) {
|
|
390
|
+
// @ts-expect-error - error.code is not in the type definition but exists at runtime
|
|
391
|
+
if (result.error.code === 'ENOENT') {
|
|
392
|
+
throw new GhNotInstalledError();
|
|
393
|
+
}
|
|
394
|
+
throw new Error(`Failed to execute gh command: ${result.error.message}`);
|
|
395
|
+
}
|
|
396
|
+
if (result.status !== 0) {
|
|
397
|
+
const stderr = result.stderr || '';
|
|
398
|
+
const stderrLower = stderr.toLowerCase();
|
|
399
|
+
if (stderrLower.includes('not logged in') ||
|
|
400
|
+
stderrLower.includes('authentication') ||
|
|
401
|
+
stderrLower.includes('gh auth login')) {
|
|
402
|
+
throw new GhNotAuthenticatedError();
|
|
403
|
+
}
|
|
404
|
+
if (stderrLower.includes('permission') || stderrLower.includes('403')) {
|
|
405
|
+
throw new GhNoAccessError(owner, repo);
|
|
406
|
+
}
|
|
407
|
+
if (stderrLower.includes('pull request already exists')) {
|
|
408
|
+
throw new Error(`A pull request for branch '${head}' already exists`);
|
|
409
|
+
}
|
|
410
|
+
throw new Error(`gh pr create failed: ${stderr}`);
|
|
411
|
+
}
|
|
412
|
+
// gh pr create outputs URL like https://github.com/owner/repo/pull/123
|
|
413
|
+
const prUrl = result.stdout.trim();
|
|
414
|
+
const match = prUrl.match(/\/pull\/(\d+)$/);
|
|
415
|
+
if (!match) {
|
|
416
|
+
throw new Error(`Unexpected gh pr create output: ${result.stdout}`);
|
|
417
|
+
}
|
|
418
|
+
const prNumber = parseInt(match[1], 10);
|
|
419
|
+
return {
|
|
420
|
+
number: prNumber,
|
|
421
|
+
title,
|
|
422
|
+
body,
|
|
423
|
+
state: 'open',
|
|
424
|
+
url: prUrl,
|
|
425
|
+
headRefName: head,
|
|
426
|
+
baseRefName: base,
|
|
427
|
+
};
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* Link an issue to a PR by adding a comment with closing keywords.
|
|
431
|
+
*
|
|
432
|
+
* @param owner Repository owner
|
|
433
|
+
* @param repo Repository name
|
|
434
|
+
* @param issueNumber Issue number to link
|
|
435
|
+
* @param prUrl URL of the PR
|
|
436
|
+
* @throws {GhNotInstalledError} If gh CLI is not installed
|
|
437
|
+
* @throws {GhNotAuthenticatedError} If gh CLI is not authenticated
|
|
438
|
+
* @throws {GhIssueNotFoundError} If issue is not found
|
|
439
|
+
* @throws {GhNoAccessError} If access to repo is denied
|
|
440
|
+
*/
|
|
441
|
+
export async function ghLinkIssueToPR(owner, repo, issueNumber, prUrl) {
|
|
442
|
+
const body = `🔗 Linked to PR: ${prUrl}`;
|
|
443
|
+
await ghIssueComment(owner, repo, issueNumber, body);
|
|
444
|
+
}
|
|
188
445
|
export async function ghIssueList(owner, repo, filter) {
|
|
189
446
|
const args = [
|
|
190
447
|
'issue',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gh-cli.js","sourceRoot":"","sources":["../../src/services/gh-cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gh-cli.js","sourceRoot":"","sources":["../../src/services/gh-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,10 +17,11 @@ export interface GitHubConfig {
|
|
|
17
17
|
* Integrates with GitHub Issues via the gh CLI. Supports:
|
|
18
18
|
* - Listing issues with filters
|
|
19
19
|
* - Fetching individual issues
|
|
20
|
+
* - Creating new issues
|
|
21
|
+
* - Adding comments to issues
|
|
22
|
+
* - Updating issue status (open/closed)
|
|
23
|
+
* - Linking PRs to issues
|
|
20
24
|
* - Status mapping between GitHub and ai-sdlc
|
|
21
|
-
*
|
|
22
|
-
* Write operations (create, updateStatus, addComment, linkPR) will be
|
|
23
|
-
* implemented in story S-0075.
|
|
24
25
|
*/
|
|
25
26
|
export declare class GitHubTicketProvider implements TicketProvider {
|
|
26
27
|
private config?;
|
|
@@ -44,25 +45,39 @@ export declare class GitHubTicketProvider implements TicketProvider {
|
|
|
44
45
|
*/
|
|
45
46
|
get(id: string): Promise<Ticket>;
|
|
46
47
|
/**
|
|
47
|
-
* Create a new ticket.
|
|
48
|
-
*
|
|
48
|
+
* Create a new ticket (GitHub Issue).
|
|
49
|
+
*
|
|
50
|
+
* @param ticket New ticket data
|
|
51
|
+
* @returns Created ticket
|
|
49
52
|
*/
|
|
50
|
-
create(
|
|
53
|
+
create(ticket: NewTicket): Promise<Ticket>;
|
|
51
54
|
/**
|
|
52
55
|
* Update the status of a ticket.
|
|
53
|
-
*
|
|
56
|
+
*
|
|
57
|
+
* Maps internal status to GitHub issue state:
|
|
58
|
+
* - 'done' status closes the issue
|
|
59
|
+
* - Other statuses reopen the issue if closed
|
|
60
|
+
*
|
|
61
|
+
* @param id Issue number
|
|
62
|
+
* @param status Target status
|
|
54
63
|
*/
|
|
55
|
-
updateStatus(
|
|
64
|
+
updateStatus(id: string, status: string): Promise<void>;
|
|
56
65
|
/**
|
|
57
66
|
* Add a comment to a ticket.
|
|
58
|
-
*
|
|
67
|
+
*
|
|
68
|
+
* @param id Issue number
|
|
69
|
+
* @param body Comment body (markdown)
|
|
59
70
|
*/
|
|
60
|
-
addComment(
|
|
71
|
+
addComment(id: string, body: string): Promise<void>;
|
|
61
72
|
/**
|
|
62
73
|
* Link a pull request to a ticket.
|
|
63
|
-
*
|
|
74
|
+
*
|
|
75
|
+
* Adds a comment to the issue with the PR URL.
|
|
76
|
+
*
|
|
77
|
+
* @param id Issue number
|
|
78
|
+
* @param prUrl URL of the pull request
|
|
64
79
|
*/
|
|
65
|
-
linkPR(
|
|
80
|
+
linkPR(id: string, prUrl: string): Promise<void>;
|
|
66
81
|
/**
|
|
67
82
|
* Map internal story status to external GitHub status.
|
|
68
83
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github-provider.d.ts","sourceRoot":"","sources":["../../../src/services/ticket-provider/github-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"github-provider.d.ts","sourceRoot":"","sources":["../../../src/services/ticket-provider/github-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAY7E;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,oBAAqB,YAAW,cAAc;IAG7C,OAAO,CAAC,MAAM,CAAC;IAF3B,QAAQ,CAAC,IAAI,YAAY;gBAEL,MAAM,CAAC,EAAE,YAAY,YAAA;IAEzC;;;OAGG;IACH,OAAO,CAAC,YAAY;IAapB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAsCxB;;OAEG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAsCpD;;OAEG;IACG,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYtC;;;;;OAKG;IACG,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAchD;;;;;;;;;OASG;IACG,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa7D;;;;;OAKG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzD;;;;;;;OAOG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWtD;;;;;;OAMG;IACH,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM;IAmBhD;;;;;;;OAOG;IACH,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;CAoB3D"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import { ghIssueView, ghIssueList, } from '../gh-cli.js';
|
|
1
|
+
import { ghIssueView, ghIssueList, ghIssueCreate, ghIssueComment, ghIssueStateChange, ghLinkIssueToPR, } from '../gh-cli.js';
|
|
2
2
|
/**
|
|
3
3
|
* Ticket provider implementation for GitHub Issues.
|
|
4
4
|
*
|
|
5
5
|
* Integrates with GitHub Issues via the gh CLI. Supports:
|
|
6
6
|
* - Listing issues with filters
|
|
7
7
|
* - Fetching individual issues
|
|
8
|
+
* - Creating new issues
|
|
9
|
+
* - Adding comments to issues
|
|
10
|
+
* - Updating issue status (open/closed)
|
|
11
|
+
* - Linking PRs to issues
|
|
8
12
|
* - Status mapping between GitHub and ai-sdlc
|
|
9
|
-
*
|
|
10
|
-
* Write operations (create, updateStatus, addComment, linkPR) will be
|
|
11
|
-
* implemented in story S-0075.
|
|
12
13
|
*/
|
|
13
14
|
export class GitHubTicketProvider {
|
|
14
15
|
config;
|
|
@@ -112,32 +113,65 @@ export class GitHubTicketProvider {
|
|
|
112
113
|
return this.mapIssueToTicket(issue);
|
|
113
114
|
}
|
|
114
115
|
/**
|
|
115
|
-
* Create a new ticket.
|
|
116
|
-
*
|
|
116
|
+
* Create a new ticket (GitHub Issue).
|
|
117
|
+
*
|
|
118
|
+
* @param ticket New ticket data
|
|
119
|
+
* @returns Created ticket
|
|
117
120
|
*/
|
|
118
|
-
async create(
|
|
119
|
-
|
|
121
|
+
async create(ticket) {
|
|
122
|
+
const { owner, repo } = this.getOwnerRepo();
|
|
123
|
+
const issue = await ghIssueCreate(owner, repo, ticket.title, ticket.description || '', ticket.labels);
|
|
124
|
+
return this.mapIssueToTicket(issue);
|
|
120
125
|
}
|
|
121
126
|
/**
|
|
122
127
|
* Update the status of a ticket.
|
|
123
|
-
*
|
|
128
|
+
*
|
|
129
|
+
* Maps internal status to GitHub issue state:
|
|
130
|
+
* - 'done' status closes the issue
|
|
131
|
+
* - Other statuses reopen the issue if closed
|
|
132
|
+
*
|
|
133
|
+
* @param id Issue number
|
|
134
|
+
* @param status Target status
|
|
124
135
|
*/
|
|
125
|
-
async updateStatus(
|
|
126
|
-
|
|
136
|
+
async updateStatus(id, status) {
|
|
137
|
+
const { owner, repo } = this.getOwnerRepo();
|
|
138
|
+
const issueNumber = parseInt(id, 10);
|
|
139
|
+
if (isNaN(issueNumber)) {
|
|
140
|
+
throw new Error(`Invalid GitHub issue number: "${id}"`);
|
|
141
|
+
}
|
|
142
|
+
// Map internal status to GitHub state
|
|
143
|
+
const targetState = status === 'done' ? 'closed' : 'open';
|
|
144
|
+
await ghIssueStateChange(owner, repo, issueNumber, targetState);
|
|
127
145
|
}
|
|
128
146
|
/**
|
|
129
147
|
* Add a comment to a ticket.
|
|
130
|
-
*
|
|
148
|
+
*
|
|
149
|
+
* @param id Issue number
|
|
150
|
+
* @param body Comment body (markdown)
|
|
131
151
|
*/
|
|
132
|
-
async addComment(
|
|
133
|
-
|
|
152
|
+
async addComment(id, body) {
|
|
153
|
+
const { owner, repo } = this.getOwnerRepo();
|
|
154
|
+
const issueNumber = parseInt(id, 10);
|
|
155
|
+
if (isNaN(issueNumber)) {
|
|
156
|
+
throw new Error(`Invalid GitHub issue number: "${id}"`);
|
|
157
|
+
}
|
|
158
|
+
await ghIssueComment(owner, repo, issueNumber, body);
|
|
134
159
|
}
|
|
135
160
|
/**
|
|
136
161
|
* Link a pull request to a ticket.
|
|
137
|
-
*
|
|
162
|
+
*
|
|
163
|
+
* Adds a comment to the issue with the PR URL.
|
|
164
|
+
*
|
|
165
|
+
* @param id Issue number
|
|
166
|
+
* @param prUrl URL of the pull request
|
|
138
167
|
*/
|
|
139
|
-
async linkPR(
|
|
140
|
-
|
|
168
|
+
async linkPR(id, prUrl) {
|
|
169
|
+
const { owner, repo } = this.getOwnerRepo();
|
|
170
|
+
const issueNumber = parseInt(id, 10);
|
|
171
|
+
if (isNaN(issueNumber)) {
|
|
172
|
+
throw new Error(`Invalid GitHub issue number: "${id}"`);
|
|
173
|
+
}
|
|
174
|
+
await ghLinkIssueToPR(owner, repo, issueNumber, prUrl);
|
|
141
175
|
}
|
|
142
176
|
/**
|
|
143
177
|
* Map internal story status to external GitHub status.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github-provider.js","sourceRoot":"","sources":["../../../src/services/ticket-provider/github-provider.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,WAAW,EACX,WAAW,
|
|
1
|
+
{"version":3,"file":"github-provider.js","sourceRoot":"","sources":["../../../src/services/ticket-provider/github-provider.ts"],"names":[],"mappings":"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"}
|