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.
Files changed (53) hide show
  1. package/dist/agents/verification.d.ts +23 -3
  2. package/dist/agents/verification.d.ts.map +1 -1
  3. package/dist/agents/verification.js +93 -11
  4. package/dist/agents/verification.js.map +1 -1
  5. package/dist/cli/commands.d.ts +8 -1
  6. package/dist/cli/commands.d.ts.map +1 -1
  7. package/dist/cli/commands.js +67 -2
  8. package/dist/cli/commands.js.map +1 -1
  9. package/dist/cli/epic-processor.d.ts.map +1 -1
  10. package/dist/cli/epic-processor.js +18 -5
  11. package/dist/cli/epic-processor.js.map +1 -1
  12. package/dist/cli/formatting.d.ts +15 -0
  13. package/dist/cli/formatting.d.ts.map +1 -1
  14. package/dist/cli/formatting.js +34 -0
  15. package/dist/cli/formatting.js.map +1 -1
  16. package/dist/cli/runner.d.ts.map +1 -1
  17. package/dist/cli/runner.js +6 -4
  18. package/dist/cli/runner.js.map +1 -1
  19. package/dist/core/config.d.ts.map +1 -1
  20. package/dist/core/config.js +92 -1
  21. package/dist/core/config.js.map +1 -1
  22. package/dist/core/kanban.d.ts.map +1 -1
  23. package/dist/core/kanban.js +4 -2
  24. package/dist/core/kanban.js.map +1 -1
  25. package/dist/core/stack-detector.d.ts +28 -0
  26. package/dist/core/stack-detector.d.ts.map +1 -0
  27. package/dist/core/stack-detector.js +395 -0
  28. package/dist/core/stack-detector.js.map +1 -0
  29. package/dist/core/story-logger.d.ts +51 -1
  30. package/dist/core/story-logger.d.ts.map +1 -1
  31. package/dist/core/story-logger.js +69 -3
  32. package/dist/core/story-logger.js.map +1 -1
  33. package/dist/core/story.d.ts.map +1 -1
  34. package/dist/core/story.js +8 -4
  35. package/dist/core/story.js.map +1 -1
  36. package/dist/core/worktree.d.ts +5 -0
  37. package/dist/core/worktree.d.ts.map +1 -1
  38. package/dist/core/worktree.js +10 -0
  39. package/dist/core/worktree.js.map +1 -1
  40. package/dist/index.js +2 -1
  41. package/dist/index.js.map +1 -1
  42. package/dist/services/gh-cli.d.ts +81 -0
  43. package/dist/services/gh-cli.d.ts.map +1 -1
  44. package/dist/services/gh-cli.js +257 -0
  45. package/dist/services/gh-cli.js.map +1 -1
  46. package/dist/services/ticket-provider/github-provider.d.ts +27 -12
  47. package/dist/services/ticket-provider/github-provider.d.ts.map +1 -1
  48. package/dist/services/ticket-provider/github-provider.js +51 -17
  49. package/dist/services/ticket-provider/github-provider.js.map +1 -1
  50. package/dist/types/index.d.ts +36 -2
  51. package/dist/types/index.d.ts.map +1 -1
  52. package/dist/types/index.js.map +1 -1
  53. 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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"}
@@ -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
- * @throws Error - Not yet implemented (S-0075)
48
+ * Create a new ticket (GitHub Issue).
49
+ *
50
+ * @param ticket New ticket data
51
+ * @returns Created ticket
49
52
  */
50
- create(_ticket: NewTicket): Promise<Ticket>;
53
+ create(ticket: NewTicket): Promise<Ticket>;
51
54
  /**
52
55
  * Update the status of a ticket.
53
- * No-op: Write operations will be implemented in S-0075.
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(_id: string, _status: string): Promise<void>;
64
+ updateStatus(id: string, status: string): Promise<void>;
56
65
  /**
57
66
  * Add a comment to a ticket.
58
- * No-op: Write operations will be implemented in S-0075.
67
+ *
68
+ * @param id Issue number
69
+ * @param body Comment body (markdown)
59
70
  */
60
- addComment(_id: string, _body: string): Promise<void>;
71
+ addComment(id: string, body: string): Promise<void>;
61
72
  /**
62
73
  * Link a pull request to a ticket.
63
- * No-op: Write operations will be implemented in S-0075.
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(_id: string, _prUrl: string): Promise<void>;
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;AAQ7E;;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;;;;;;;;;;GAUG;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;;;OAGG;IACG,MAAM,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAIjD;;;OAGG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/D;;;OAGG;IACG,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D;;;OAGG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD;;;;;;OAMG;IACH,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM;IAmBhD;;;;;;;OAOG;IACH,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;CAoB3D"}
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
- * @throws Error - Not yet implemented (S-0075)
116
+ * Create a new ticket (GitHub Issue).
117
+ *
118
+ * @param ticket New ticket data
119
+ * @returns Created ticket
117
120
  */
118
- async create(_ticket) {
119
- throw new Error('GitHub ticket creation not yet implemented (S-0075)');
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
- * No-op: Write operations will be implemented in S-0075.
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(_id, _status) {
126
- // No-op: Write operations not yet implemented
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
- * No-op: Write operations will be implemented in S-0075.
148
+ *
149
+ * @param id Issue number
150
+ * @param body Comment body (markdown)
131
151
  */
132
- async addComment(_id, _body) {
133
- // No-op: Write operations not yet implemented
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
- * No-op: Write operations will be implemented in S-0075.
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(_id, _prUrl) {
140
- // No-op: Write operations not yet implemented
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,GAGZ,MAAM,cAAc,CAAC;AActB;;;;;;;;;;GAUG;AACH,MAAM,OAAO,oBAAoB;IAGX;IAFX,IAAI,GAAG,QAAQ,CAAC;IAEzB,YAAoB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAE7C;;;OAGG;IACK,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;QAC5F,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,CAAC,MAAM,CAAC,IAAI,2BAA2B,CAAC,CAAC;QACrG,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,KAAkB;QACzC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,sBAAsB,KAAK,IAAI,IAAI,WAAW,KAAK,CAAC,MAAM,EAAE,CAAC;QACzE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;QAE3C,6CAA6C;QAC7C,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,mBAAmB;QACrC,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;gBACtC,qCAAqC;gBACrC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAC9C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,CACjD,CAAC;oBACF,IAAI,aAAa,EAAE,CAAC;wBAClB,kCAAkC;wBAClC,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wBACvD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;4BAC1B,QAAQ,GAAG,aAAa,CAAC;wBAC3B,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;YAC3B,GAAG;YACH,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,WAAW,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;YAC7B,MAAM,EAAE,KAAK,CAAC,KAAK;YACnB,QAAQ;YACR,MAAM;YACN,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,MAAqB;QAC9B,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAE5C,sCAAsC;QACtC,MAAM,WAAW,GAAgB,EAAE,CAAC;QAEpC,IAAI,MAAM,EAAE,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,wCAAwC;YACxC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACvC,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC3D,CAAC;YACF,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAEjD,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;gBACzB,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;YAC5B,CAAC;iBAAM,IAAI,OAAO,EAAE,CAAC;gBACnB,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC;YAC7B,CAAC;iBAAM,IAAI,SAAS,EAAE,CAAC;gBACrB,WAAW,CAAC,KAAK,GAAG,QAAQ,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;YACnB,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACrC,CAAC;QAED,IAAI,MAAM,EAAE,QAAQ,EAAE,CAAC;YACrB,WAAW,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACzC,CAAC;QAED,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC;YAClB,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QACnC,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QAC3D,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5C,MAAM,WAAW,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAErC,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,OAAkB;QAC7B,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,OAAe;QAC7C,8CAA8C;IAChD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,GAAW,EAAE,KAAa;QACzC,8CAA8C;IAChD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,MAAc;QACtC,8CAA8C;IAChD,CAAC;IAED;;;;;;OAMG;IACH,mBAAmB,CAAC,MAAmB;QACrC,iCAAiC;QACjC,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;YAClE,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;QAED,wCAAwC;QACxC,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,MAAM;gBACT,OAAO,QAAQ,CAAC;YAClB,KAAK,SAAS,CAAC;YACf,KAAK,OAAO,CAAC;YACb,KAAK,aAAa,CAAC;YACnB,KAAK,SAAS,CAAC;YACf;gBACE,OAAO,MAAM,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,qBAAqB,CAAC,cAAsB;QAC1C,kDAAkD;QAClD,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC;YAC9B,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBACvE,IAAI,KAAK,KAAK,cAAc,EAAE,CAAC;oBAC7B,OAAO,MAAqB,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,MAAM,WAAW,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC;QACjD,QAAQ,WAAW,EAAE,CAAC;YACpB,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC;YAChB,KAAK,MAAM,CAAC;YACZ;gBACE,OAAO,OAAO,CAAC;QACnB,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"github-provider.js","sourceRoot":"","sources":["../../../src/services/ticket-provider/github-provider.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,WAAW,EACX,WAAW,EACX,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,eAAe,GAGhB,MAAM,cAAc,CAAC;AActB;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,oBAAoB;IAGX;IAFX,IAAI,GAAG,QAAQ,CAAC;IAEzB,YAAoB,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAE7C;;;OAGG;IACK,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;QAC5F,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,CAAC,MAAM,CAAC,IAAI,2BAA2B,CAAC,CAAC;QACrG,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,KAAkB;QACzC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,sBAAsB,KAAK,IAAI,IAAI,WAAW,KAAK,CAAC,MAAM,EAAE,CAAC;QACzE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;QAE3C,6CAA6C;QAC7C,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,mBAAmB;QACrC,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;gBACtC,qCAAqC;gBACrC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAC9C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,CACjD,CAAC;oBACF,IAAI,aAAa,EAAE,CAAC;wBAClB,kCAAkC;wBAClC,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wBACvD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;4BAC1B,QAAQ,GAAG,aAAa,CAAC;wBAC3B,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;YAC3B,GAAG;YACH,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,WAAW,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;YAC7B,MAAM,EAAE,KAAK,CAAC,KAAK;YACnB,QAAQ;YACR,MAAM;YACN,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,MAAqB;QAC9B,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAE5C,sCAAsC;QACtC,MAAM,WAAW,GAAgB,EAAE,CAAC;QAEpC,IAAI,MAAM,EAAE,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,wCAAwC;YACxC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACvC,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC3D,CAAC;YACF,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAEjD,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;gBACzB,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;YAC5B,CAAC;iBAAM,IAAI,OAAO,EAAE,CAAC;gBACnB,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC;YAC7B,CAAC;iBAAM,IAAI,SAAS,EAAE,CAAC;gBACrB,WAAW,CAAC,KAAK,GAAG,QAAQ,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;YACnB,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACrC,CAAC;QAED,IAAI,MAAM,EAAE,QAAQ,EAAE,CAAC;YACrB,WAAW,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACzC,CAAC;QAED,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC;YAClB,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QACnC,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QAC3D,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5C,MAAM,WAAW,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAErC,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,MAAiB;QAC5B,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAE5C,MAAM,KAAK,GAAG,MAAM,aAAa,CAC/B,KAAK,EACL,IAAI,EACJ,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,WAAW,IAAI,EAAE,EACxB,MAAM,CAAC,MAAM,CACd,CAAC;QAEF,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,YAAY,CAAC,EAAU,EAAE,MAAc;QAC3C,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5C,MAAM,WAAW,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAErC,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;QAC1D,CAAC;QAED,sCAAsC;QACtC,MAAM,WAAW,GAAG,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;QAC1D,MAAM,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAClE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,IAAY;QACvC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5C,MAAM,WAAW,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAErC,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,KAAa;QACpC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5C,MAAM,WAAW,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAErC,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IAED;;;;;;OAMG;IACH,mBAAmB,CAAC,MAAmB;QACrC,iCAAiC;QACjC,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;YAClE,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;QAED,wCAAwC;QACxC,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,MAAM;gBACT,OAAO,QAAQ,CAAC;YAClB,KAAK,SAAS,CAAC;YACf,KAAK,OAAO,CAAC;YACb,KAAK,aAAa,CAAC;YACnB,KAAK,SAAS,CAAC;YACf;gBACE,OAAO,MAAM,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,qBAAqB,CAAC,cAAsB;QAC1C,kDAAkD;QAClD,IAAI,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC;YAC9B,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBACvE,IAAI,KAAK,KAAK,cAAc,EAAE,CAAC;oBAC7B,OAAO,MAAqB,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,MAAM,WAAW,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC;QACjD,QAAQ,WAAW,EAAE,CAAC;YACpB,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC;YAChB,KAAK,MAAM,CAAC;YACZ;gBACE,OAAO,OAAO,CAAC;QACnB,CAAC;IACH,CAAC;CACF"}