github-issue-tower-defence-management 1.32.0 → 1.34.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 (49) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +92 -6
  3. package/bin/adapter/entry-points/cli/index.js +422 -5
  4. package/bin/adapter/entry-points/cli/index.js.map +1 -1
  5. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js +67 -33
  6. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js.map +1 -1
  7. package/bin/adapter/repositories/FetchWebhookRepository.js +10 -0
  8. package/bin/adapter/repositories/FetchWebhookRepository.js.map +1 -0
  9. package/bin/adapter/repositories/GitHubIssueCommentRepository.js +190 -0
  10. package/bin/adapter/repositories/GitHubIssueCommentRepository.js.map +1 -0
  11. package/bin/adapter/repositories/OauthAPIClaudeRepository.js +225 -0
  12. package/bin/adapter/repositories/OauthAPIClaudeRepository.js.map +1 -0
  13. package/bin/domain/usecases/HandleScheduledEventUseCase.js +17 -1
  14. package/bin/domain/usecases/HandleScheduledEventUseCase.js.map +1 -1
  15. package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js +73 -17
  16. package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js.map +1 -1
  17. package/bin/domain/usecases/adapter-interfaces/WebhookRepository.js +3 -0
  18. package/bin/domain/usecases/adapter-interfaces/WebhookRepository.js.map +1 -0
  19. package/package.json +1 -1
  20. package/src/adapter/entry-points/cli/index.test.ts +1315 -15
  21. package/src/adapter/entry-points/cli/index.ts +648 -5
  22. package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.test.ts +14 -0
  23. package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts +17 -2
  24. package/src/adapter/repositories/FetchWebhookRepository.ts +7 -0
  25. package/src/adapter/repositories/GitHubIssueCommentRepository.ts +291 -0
  26. package/src/adapter/repositories/OauthAPIClaudeRepository.ts +279 -0
  27. package/src/domain/usecases/HandleScheduledEventUseCase.test.ts +28 -0
  28. package/src/domain/usecases/HandleScheduledEventUseCase.ts +30 -0
  29. package/src/domain/usecases/NotifyFinishedIssuePreparationUseCase.test.ts +722 -16
  30. package/src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts +117 -20
  31. package/src/domain/usecases/adapter-interfaces/IssueRepository.ts +2 -0
  32. package/src/domain/usecases/adapter-interfaces/WebhookRepository.ts +3 -0
  33. package/types/adapter/entry-points/cli/index.d.ts +19 -0
  34. package/types/adapter/entry-points/cli/index.d.ts.map +1 -1
  35. package/types/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.d.ts.map +1 -1
  36. package/types/adapter/repositories/FetchWebhookRepository.d.ts +5 -0
  37. package/types/adapter/repositories/FetchWebhookRepository.d.ts.map +1 -0
  38. package/types/adapter/repositories/GitHubIssueCommentRepository.d.ts +12 -0
  39. package/types/adapter/repositories/GitHubIssueCommentRepository.d.ts.map +1 -0
  40. package/types/adapter/repositories/OauthAPIClaudeRepository.d.ts +13 -0
  41. package/types/adapter/repositories/OauthAPIClaudeRepository.d.ts.map +1 -0
  42. package/types/domain/usecases/HandleScheduledEventUseCase.d.ts +10 -1
  43. package/types/domain/usecases/HandleScheduledEventUseCase.d.ts.map +1 -1
  44. package/types/domain/usecases/NotifyFinishedIssuePreparationUseCase.d.ts +5 -1
  45. package/types/domain/usecases/NotifyFinishedIssuePreparationUseCase.d.ts.map +1 -1
  46. package/types/domain/usecases/adapter-interfaces/IssueRepository.d.ts +2 -0
  47. package/types/domain/usecases/adapter-interfaces/IssueRepository.d.ts.map +1 -1
  48. package/types/domain/usecases/adapter-interfaces/WebhookRepository.d.ts +4 -0
  49. package/types/domain/usecases/adapter-interfaces/WebhookRepository.d.ts.map +1 -0
@@ -1,6 +1,7 @@
1
1
  import { IssueRepository } from './adapter-interfaces/IssueRepository';
2
2
  import { ProjectRepository } from './adapter-interfaces/ProjectRepository';
3
3
  import { IssueCommentRepository } from './adapter-interfaces/IssueCommentRepository';
4
+ import { WebhookRepository } from './adapter-interfaces/WebhookRepository';
4
5
 
5
6
  export class IssueNotFoundError extends Error {
6
7
  constructor(issueUrl: string) {
@@ -21,24 +22,32 @@ export class IllegalIssueStatusError extends Error {
21
22
  }
22
23
  }
23
24
  type RejectedReasonType =
24
- | 'NO_REPORT'
25
+ | 'NO_REPORT_FROM_AGENT_BOT'
25
26
  | 'PULL_REQUEST_NOT_FOUND'
26
27
  | 'MULTIPLE_PULL_REQUESTS_FOUND'
27
28
  | 'PULL_REQUEST_CONFLICTED'
28
- | 'ANY_CI_JOB_FAILED'
29
+ | 'ANY_CI_JOB_FAILED_OR_IN_PROGRESS'
30
+ | 'REQUIRED_CI_JOB_NEVER_STARTED'
29
31
  | 'ANY_REVIEW_COMMENT_NOT_RESOLVED';
30
32
 
31
33
  export class NotifyFinishedIssuePreparationUseCase {
32
34
  constructor(
33
- private readonly projectRepository: Pick<ProjectRepository, 'getByUrl'>,
35
+ private readonly projectRepository: Pick<
36
+ ProjectRepository,
37
+ 'getByUrl' | 'prepareStatus'
38
+ >,
34
39
  private readonly issueRepository: Pick<
35
40
  IssueRepository,
36
- 'get' | 'update' | 'findRelatedOpenPRs'
41
+ 'get' | 'update' | 'findRelatedOpenPRs' | 'getStoryObjectMap'
37
42
  >,
38
43
  private readonly issueCommentRepository: Pick<
39
44
  IssueCommentRepository,
40
45
  'getCommentsFromIssue' | 'createComment'
41
46
  >,
47
+ private readonly webhookRepository: Pick<
48
+ WebhookRepository,
49
+ 'sendGetRequest'
50
+ >,
42
51
  ) {}
43
52
 
44
53
  run = async (params: {
@@ -48,8 +57,21 @@ export class NotifyFinishedIssuePreparationUseCase {
48
57
  awaitingWorkspaceStatus: string;
49
58
  awaitingQualityCheckStatus: string;
50
59
  thresholdForAutoReject: number;
60
+ workflowBlockerResolvedWebhookUrl: string | null;
51
61
  }): Promise<void> => {
52
- const project = await this.projectRepository.getByUrl(params.projectUrl);
62
+ let project = await this.projectRepository.getByUrl(params.projectUrl);
63
+ project = await this.projectRepository.prepareStatus(
64
+ params.preparationStatus,
65
+ project,
66
+ );
67
+ project = await this.projectRepository.prepareStatus(
68
+ params.awaitingWorkspaceStatus,
69
+ project,
70
+ );
71
+ project = await this.projectRepository.prepareStatus(
72
+ params.awaitingQualityCheckStatus,
73
+ project,
74
+ );
53
75
 
54
76
  const issue = await this.issueRepository.get(params.issueUrl, project);
55
77
 
@@ -71,7 +93,10 @@ export class NotifyFinishedIssuePreparationUseCase {
71
93
  if (
72
94
  lastTargetComments.filter((comment) =>
73
95
  comment.content.startsWith('Auto Status Check: REJECTED'),
74
- ).length >= params.thresholdForAutoReject
96
+ ).length >= params.thresholdForAutoReject &&
97
+ !lastTargetComments.some((comment) =>
98
+ comment.content.toLowerCase().startsWith('retry'),
99
+ )
75
100
  ) {
76
101
  issue.status = params.awaitingQualityCheckStatus;
77
102
  await this.issueRepository.update(issue, project);
@@ -79,43 +104,83 @@ export class NotifyFinishedIssuePreparationUseCase {
79
104
  issue,
80
105
  `Failed to pass the check autimatically for ${params.thresholdForAutoReject} times`,
81
106
  );
107
+ await this.sendWorkflowBlockerNotification(
108
+ params.issueUrl,
109
+ params.workflowBlockerResolvedWebhookUrl,
110
+ project,
111
+ );
82
112
  return;
83
113
  }
84
114
 
85
- const rejectedReasons: RejectedReasonType[] = [];
115
+ const rejections: { type: RejectedReasonType; detail: string }[] = [];
86
116
  const lastComment = comments[comments.length - 1];
87
- if (!lastComment || lastComment.content.startsWith('Auto Status Check: ')) {
88
- rejectedReasons.push('NO_REPORT');
117
+ if (!lastComment || !lastComment.content.startsWith('From:')) {
118
+ rejections.push({
119
+ type: 'NO_REPORT_FROM_AGENT_BOT',
120
+ detail: 'NO_REPORT_FROM_AGENT_BOT',
121
+ });
89
122
  }
90
123
 
91
- const hasCategoryLabel = issue.labels.some((label) =>
124
+ const categoryLabels = issue.labels.filter((label) =>
92
125
  label.startsWith('category:'),
93
126
  );
94
- if (!hasCategoryLabel) {
127
+ if (categoryLabels.length <= 0 || categoryLabels.includes('category:e2e')) {
95
128
  const relatedOpenPrs = await this.issueRepository.findRelatedOpenPRs(
96
129
  issue.url,
97
130
  );
98
131
  if (relatedOpenPrs.length <= 0) {
99
- rejectedReasons.push('PULL_REQUEST_NOT_FOUND');
132
+ rejections.push({
133
+ type: 'PULL_REQUEST_NOT_FOUND',
134
+ detail: 'PULL_REQUEST_NOT_FOUND',
135
+ });
100
136
  } else if (relatedOpenPrs.length > 1) {
101
- rejectedReasons.push('MULTIPLE_PULL_REQUESTS_FOUND');
137
+ rejections.push({
138
+ type: 'MULTIPLE_PULL_REQUESTS_FOUND',
139
+ detail: `MULTIPLE_PULL_REQUESTS_FOUND: ${relatedOpenPrs.map((pr) => pr.url).join(', ')}`,
140
+ });
102
141
  } else {
103
142
  const pr = relatedOpenPrs[0];
104
143
  if (pr.isConflicted) {
105
- rejectedReasons.push('PULL_REQUEST_CONFLICTED');
144
+ rejections.push({
145
+ type: 'PULL_REQUEST_CONFLICTED',
146
+ detail: `PULL_REQUEST_CONFLICTED: ${pr.url}`,
147
+ });
106
148
  }
107
149
  if (!pr.isPassedAllCiJob) {
108
- rejectedReasons.push('ANY_CI_JOB_FAILED');
150
+ const missingChecks = pr.missingRequiredCheckNames;
151
+ const missingSuffix =
152
+ missingChecks.length > 0
153
+ ? ` (missing: ${missingChecks.join(', ')})`
154
+ : '';
155
+ if (pr.isCiStateSuccess && missingChecks.length > 0) {
156
+ rejections.push({
157
+ type: 'REQUIRED_CI_JOB_NEVER_STARTED',
158
+ detail: `REQUIRED_CI_JOB_NEVER_STARTED: ${pr.url}${missingSuffix}`,
159
+ });
160
+ } else {
161
+ rejections.push({
162
+ type: 'ANY_CI_JOB_FAILED_OR_IN_PROGRESS',
163
+ detail: `ANY_CI_JOB_FAILED_OR_IN_PROGRESS: ${pr.url}${missingSuffix}`,
164
+ });
165
+ }
109
166
  }
110
167
  if (!pr.isResolvedAllReviewComments) {
111
- rejectedReasons.push('ANY_REVIEW_COMMENT_NOT_RESOLVED');
168
+ rejections.push({
169
+ type: 'ANY_REVIEW_COMMENT_NOT_RESOLVED',
170
+ detail: `ANY_REVIEW_COMMENT_NOT_RESOLVED: ${pr.url}`,
171
+ });
112
172
  }
113
173
  }
114
174
  }
115
175
 
116
- if (rejectedReasons.length <= 0) {
176
+ if (rejections.length <= 0) {
117
177
  issue.status = params.awaitingQualityCheckStatus;
118
178
  await this.issueRepository.update(issue, project);
179
+ await this.sendWorkflowBlockerNotification(
180
+ params.issueUrl,
181
+ params.workflowBlockerResolvedWebhookUrl,
182
+ project,
183
+ );
119
184
  return;
120
185
  }
121
186
 
@@ -124,9 +189,41 @@ export class NotifyFinishedIssuePreparationUseCase {
124
189
 
125
190
  await this.issueCommentRepository.createComment(
126
191
  issue,
127
- `
128
- Auto Status Check: REJECTED
129
- ${JSON.stringify(rejectedReasons)}`,
192
+ `Auto Status Check: REJECTED\n${rejections.map((r) => `- ${r.detail}`).join('\n')}`,
130
193
  );
131
194
  };
195
+
196
+ private sendWorkflowBlockerNotification = async (
197
+ issueUrl: string,
198
+ webhookUrlTemplate: string | null,
199
+ project: Parameters<IssueRepository['getStoryObjectMap']>[0],
200
+ ): Promise<void> => {
201
+ if (webhookUrlTemplate === null) {
202
+ return;
203
+ }
204
+
205
+ try {
206
+ const storyObjectMap =
207
+ await this.issueRepository.getStoryObjectMap(project);
208
+
209
+ const isWorkflowBlocker = Array.from(storyObjectMap.entries()).some(
210
+ ([storyName, storyObject]) =>
211
+ storyName.toLowerCase().includes('workflow blocker') &&
212
+ storyObject.issues.some((issue) => issue.url === issueUrl),
213
+ );
214
+
215
+ if (!isWorkflowBlocker) {
216
+ return;
217
+ }
218
+
219
+ const message = `Workflow blocker resolved: ${issueUrl}`;
220
+ const webhookUrl = webhookUrlTemplate
221
+ .replace('{URL}', encodeURIComponent(issueUrl))
222
+ .replace('{MESSAGE}', encodeURIComponent(message));
223
+
224
+ await this.webhookRepository.sendGetRequest(webhookUrl);
225
+ } catch (error) {
226
+ console.warn('Failed to send workflow blocker notification:', error);
227
+ }
228
+ };
132
229
  }
@@ -7,8 +7,10 @@ export type RelatedPullRequest = {
7
7
  url: string;
8
8
  isConflicted: boolean;
9
9
  isPassedAllCiJob: boolean;
10
+ isCiStateSuccess: boolean;
10
11
  isResolvedAllReviewComments: boolean;
11
12
  isBranchOutOfDate: boolean;
13
+ missingRequiredCheckNames: string[];
12
14
  };
13
15
 
14
16
  export interface IssueRepository {
@@ -0,0 +1,3 @@
1
+ export interface WebhookRepository {
2
+ sendGetRequest(url: string): Promise<void>;
3
+ }
@@ -1,3 +1,22 @@
1
1
  #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ type ConfigFile = {
4
+ projectUrl?: string;
5
+ awaitingWorkspaceStatus?: string;
6
+ preparationStatus?: string;
7
+ defaultAgentName?: string;
8
+ logFilePath?: string;
9
+ maximumPreparingIssuesCount?: number;
10
+ allowIssueCacheMinutes?: number;
11
+ awaitingQualityCheckStatus?: string;
12
+ thresholdForAutoReject?: number;
13
+ workflowBlockerResolvedWebhookUrl?: string;
14
+ projectName?: string;
15
+ };
16
+ export declare const loadConfigFile: (configFilePath: string) => ConfigFile;
17
+ export declare const parseProjectReadmeConfig: (readme: string) => ConfigFile;
18
+ export declare const mergeConfigs: (configFile: ConfigFile, cliOverrides: ConfigFile, readmeOverrides: ConfigFile) => ConfigFile;
19
+ export declare const fetchProjectReadme: (projectUrl: string, token: string) => Promise<string | null>;
20
+ export declare const program: Command;
2
21
  export {};
3
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,KAAK,UAAU,GAAG;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iCAAiC,CAAC,EAAE,MAAM,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AA2CF,eAAO,MAAM,cAAc,mBAAoB,MAAM,KAAG,UAuCvD,CAAC;AAEF,eAAO,MAAM,wBAAwB,WAAY,MAAM,KAAG,UA2CzD,CAAC;AAEF,eAAO,MAAM,YAAY,eACX,UAAU,gBACR,UAAU,mBACP,UAAU,KAC1B,UAuCD,CAAC;AAkBH,eAAO,MAAM,kBAAkB,eACjB,MAAM,SACX,MAAM,KACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAyDvB,CAAC;AAsBF,eAAO,MAAM,OAAO,SAAgB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"HandleScheduledEventUseCaseHandler.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAkB3D,qBAAa,kCAAkC;IAC7C,MAAM,mBACY,MAAM,WACb,OAAO,KACf,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,eAAe,EAAE,IAAI,EAAE,CAAC;KACzB,GAAG,IAAI,CAAC,CAsKP;CACH"}
1
+ {"version":3,"file":"HandleScheduledEventUseCaseHandler.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAqB3D,qBAAa,kCAAkC;IAC7C,MAAM,mBACY,MAAM,WACb,OAAO,KACf,OAAO,CAAC;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;QACnB,eAAe,EAAE,IAAI,EAAE,CAAC;KACzB,GAAG,IAAI,CAAC,CAkLP;CACH"}
@@ -0,0 +1,5 @@
1
+ import { WebhookRepository } from '../../domain/usecases/adapter-interfaces/WebhookRepository';
2
+ export declare class FetchWebhookRepository implements WebhookRepository {
3
+ sendGetRequest(url: string): Promise<void>;
4
+ }
5
+ //# sourceMappingURL=FetchWebhookRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FetchWebhookRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/FetchWebhookRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4DAA4D,CAAC;AAE/F,qBAAa,sBAAuB,YAAW,iBAAiB;IACxD,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGjD"}
@@ -0,0 +1,12 @@
1
+ import { IssueCommentRepository } from '../../domain/usecases/adapter-interfaces/IssueCommentRepository';
2
+ import { Issue } from '../../domain/entities/Issue';
3
+ import { Comment } from '../../domain/entities/Comment';
4
+ export declare class GitHubIssueCommentRepository implements IssueCommentRepository {
5
+ private readonly token;
6
+ constructor(token: string);
7
+ private parseIssueUrl;
8
+ getCommentsFromIssue(issue: Issue): Promise<Comment[]>;
9
+ private getIssueNodeId;
10
+ createComment(issue: Issue, commentContent: string): Promise<void>;
11
+ }
12
+ //# sourceMappingURL=GitHubIssueCommentRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitHubIssueCommentRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/GitHubIssueCommentRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iEAAiE,CAAC;AACzG,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AA0ExD,qBAAa,4BAA6B,YAAW,sBAAsB;IAC7D,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,MAAM;IAE1C,OAAO,CAAC,aAAa;IAoBf,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;YAsF9C,cAAc;IAuDtB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAkDzE"}
@@ -0,0 +1,13 @@
1
+ import { ClaudeRepository } from '../../domain/usecases/adapter-interfaces/ClaudeRepository';
2
+ import { ClaudeWindowUsage } from '../../domain/entities/ClaudeWindowUsage';
3
+ export declare class OauthAPIClaudeRepository implements ClaudeRepository {
4
+ private readonly credentialsPath;
5
+ private readonly claudeDir;
6
+ constructor();
7
+ private getAccessToken;
8
+ getUsage(): Promise<ClaudeWindowUsage[]>;
9
+ private getUsageWithToken;
10
+ private isUsageUnderThreshold;
11
+ isClaudeAvailable(threshold: number): Promise<boolean>;
12
+ }
13
+ //# sourceMappingURL=OauthAPIClaudeRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OauthAPIClaudeRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/OauthAPIClaudeRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AA2E5E,qBAAa,wBAAyB,YAAW,gBAAgB;IAC/D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;;IAOnC,OAAO,CAAC,cAAc;IAuBhB,QAAQ,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;YA0EhC,iBAAiB;IA8B/B,OAAO,CAAC,qBAAqB;IAuBvB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CA2C7D"}
@@ -20,6 +20,7 @@ import { CreateNewStoryByLabelUseCase } from './CreateNewStoryByLabelUseCase';
20
20
  import { AssignNoAssigneeIssueToManagerUseCase } from './AssignNoAssigneeIssueToManagerUseCase';
21
21
  import { UpdateIssueStatusByLabelUseCase } from './UpdateIssueStatusByLabelUseCase';
22
22
  import { StartPreparationUseCase } from './StartPreparationUseCase';
23
+ import { NotifyFinishedIssuePreparationUseCase } from './NotifyFinishedIssuePreparationUseCase';
23
24
  export declare class ProjectNotFoundError extends Error {
24
25
  constructor(message: string);
25
26
  }
@@ -38,11 +39,12 @@ export declare class HandleScheduledEventUseCase {
38
39
  readonly assignNoAssigneeIssueToManagerUseCase: AssignNoAssigneeIssueToManagerUseCase;
39
40
  readonly updateIssueStatusByLabelUseCase: UpdateIssueStatusByLabelUseCase;
40
41
  readonly startPreparationUseCase: StartPreparationUseCase;
42
+ readonly notifyFinishedIssuePreparationUseCase: NotifyFinishedIssuePreparationUseCase;
41
43
  readonly dateRepository: DateRepository;
42
44
  readonly spreadsheetRepository: SpreadsheetRepository;
43
45
  readonly projectRepository: ProjectRepository;
44
46
  readonly issueRepository: IssueRepository;
45
- constructor(actionAnnouncementUseCase: ActionAnnouncementUseCase, setWorkflowManagementIssueToStoryUseCase: SetWorkflowManagementIssueToStoryUseCase, clearNextActionHourUseCase: ClearNextActionHourUseCase, analyzeProblemByIssueUseCase: AnalyzeProblemByIssueUseCase, analyzeStoriesUseCase: AnalyzeStoriesUseCase, clearDependedIssueURLUseCase: ClearDependedIssueURLUseCase, createEstimationIssueUseCase: CreateEstimationIssueUseCase, convertCheckboxToIssueInStoryIssueUseCase: ConvertCheckboxToIssueInStoryIssueUseCase, changeStatusByStoryColorUseCase: ChangeStatusByStoryColorUseCase, setNoStoryIssueToStoryUseCase: SetNoStoryIssueToStoryUseCase, createNewStoryByLabelUseCase: CreateNewStoryByLabelUseCase, assignNoAssigneeIssueToManagerUseCase: AssignNoAssigneeIssueToManagerUseCase, updateIssueStatusByLabelUseCase: UpdateIssueStatusByLabelUseCase, startPreparationUseCase: StartPreparationUseCase, dateRepository: DateRepository, spreadsheetRepository: SpreadsheetRepository, projectRepository: ProjectRepository, issueRepository: IssueRepository);
47
+ constructor(actionAnnouncementUseCase: ActionAnnouncementUseCase, setWorkflowManagementIssueToStoryUseCase: SetWorkflowManagementIssueToStoryUseCase, clearNextActionHourUseCase: ClearNextActionHourUseCase, analyzeProblemByIssueUseCase: AnalyzeProblemByIssueUseCase, analyzeStoriesUseCase: AnalyzeStoriesUseCase, clearDependedIssueURLUseCase: ClearDependedIssueURLUseCase, createEstimationIssueUseCase: CreateEstimationIssueUseCase, convertCheckboxToIssueInStoryIssueUseCase: ConvertCheckboxToIssueInStoryIssueUseCase, changeStatusByStoryColorUseCase: ChangeStatusByStoryColorUseCase, setNoStoryIssueToStoryUseCase: SetNoStoryIssueToStoryUseCase, createNewStoryByLabelUseCase: CreateNewStoryByLabelUseCase, assignNoAssigneeIssueToManagerUseCase: AssignNoAssigneeIssueToManagerUseCase, updateIssueStatusByLabelUseCase: UpdateIssueStatusByLabelUseCase, startPreparationUseCase: StartPreparationUseCase, notifyFinishedIssuePreparationUseCase: NotifyFinishedIssuePreparationUseCase, dateRepository: DateRepository, spreadsheetRepository: SpreadsheetRepository, projectRepository: ProjectRepository, issueRepository: IssueRepository);
46
48
  run: (input: {
47
49
  projectName: string;
48
50
  org: string;
@@ -65,6 +67,13 @@ export declare class HandleScheduledEventUseCase {
65
67
  logFilePath?: string;
66
68
  maximumPreparingIssuesCount: number | null;
67
69
  } | null;
70
+ notifyFinishedPreparation?: {
71
+ preparationStatus: string;
72
+ awaitingWorkspaceStatus: string;
73
+ awaitingQualityCheckStatus: string;
74
+ thresholdForAutoReject: number;
75
+ workflowBlockerResolvedWebhookUrl: string | null;
76
+ } | null;
68
77
  }) => Promise<{
69
78
  project: Project;
70
79
  issues: Issue[];
@@ -1 +1 @@
1
- {"version":3,"file":"HandleScheduledEventUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/HandleScheduledEventUseCase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HandleScheduledEventUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/HandleScheduledEventUseCase.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { IssueRepository } from './adapter-interfaces/IssueRepository';
2
2
  import { ProjectRepository } from './adapter-interfaces/ProjectRepository';
3
3
  import { IssueCommentRepository } from './adapter-interfaces/IssueCommentRepository';
4
+ import { WebhookRepository } from './adapter-interfaces/WebhookRepository';
4
5
  export declare class IssueNotFoundError extends Error {
5
6
  constructor(issueUrl: string);
6
7
  }
@@ -11,7 +12,8 @@ export declare class NotifyFinishedIssuePreparationUseCase {
11
12
  private readonly projectRepository;
12
13
  private readonly issueRepository;
13
14
  private readonly issueCommentRepository;
14
- constructor(projectRepository: Pick<ProjectRepository, 'getByUrl'>, issueRepository: Pick<IssueRepository, 'get' | 'update' | 'findRelatedOpenPRs'>, issueCommentRepository: Pick<IssueCommentRepository, 'getCommentsFromIssue' | 'createComment'>);
15
+ private readonly webhookRepository;
16
+ constructor(projectRepository: Pick<ProjectRepository, 'getByUrl' | 'prepareStatus'>, issueRepository: Pick<IssueRepository, 'get' | 'update' | 'findRelatedOpenPRs' | 'getStoryObjectMap'>, issueCommentRepository: Pick<IssueCommentRepository, 'getCommentsFromIssue' | 'createComment'>, webhookRepository: Pick<WebhookRepository, 'sendGetRequest'>);
15
17
  run: (params: {
16
18
  projectUrl: string;
17
19
  issueUrl: string;
@@ -19,6 +21,8 @@ export declare class NotifyFinishedIssuePreparationUseCase {
19
21
  awaitingWorkspaceStatus: string;
20
22
  awaitingQualityCheckStatus: string;
21
23
  thresholdForAutoReject: number;
24
+ workflowBlockerResolvedWebhookUrl: string | null;
22
25
  }) => Promise<void>;
26
+ private sendWorkflowBlockerNotification;
23
27
  }
24
28
  //# sourceMappingURL=NotifyFinishedIssuePreparationUseCase.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NotifyFinishedIssuePreparationUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAErF,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,QAAQ,EAAE,MAAM;CAI7B;AACD,qBAAa,uBAAwB,SAAQ,KAAK;gBAE9C,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,cAAc,EAAE,MAAM,GAAG,IAAI;CAOhC;AASD,qBAAa,qCAAqC;IAE9C,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAIhC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;gBALtB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,EACtD,eAAe,EAAE,IAAI,CACpC,eAAe,EACf,KAAK,GAAG,QAAQ,GAAG,oBAAoB,CACxC,EACgB,sBAAsB,EAAE,IAAI,CAC3C,sBAAsB,EACtB,sBAAsB,GAAG,eAAe,CACzC;IAGH,GAAG,WAAkB;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,uBAAuB,EAAE,MAAM,CAAC;QAChC,0BAA0B,EAAE,MAAM,CAAC;QACnC,sBAAsB,EAAE,MAAM,CAAC;KAChC,KAAG,OAAO,CAAC,IAAI,CAAC,CAgFf;CACH"}
1
+ {"version":3,"file":"NotifyFinishedIssuePreparationUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAE3E,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,QAAQ,EAAE,MAAM;CAI7B;AACD,qBAAa,uBAAwB,SAAQ,KAAK;gBAE9C,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,cAAc,EAAE,MAAM,GAAG,IAAI;CAOhC;AAUD,qBAAa,qCAAqC;IAE9C,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAIlC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAIhC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IAIvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAZjB,iBAAiB,EAAE,IAAI,CACtC,iBAAiB,EACjB,UAAU,GAAG,eAAe,CAC7B,EACgB,eAAe,EAAE,IAAI,CACpC,eAAe,EACf,KAAK,GAAG,QAAQ,GAAG,oBAAoB,GAAG,mBAAmB,CAC9D,EACgB,sBAAsB,EAAE,IAAI,CAC3C,sBAAsB,EACtB,sBAAsB,GAAG,eAAe,CACzC,EACgB,iBAAiB,EAAE,IAAI,CACtC,iBAAiB,EACjB,gBAAgB,CACjB;IAGH,GAAG,WAAkB;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,uBAAuB,EAAE,MAAM,CAAC;QAChC,0BAA0B,EAAE,MAAM,CAAC;QACnC,sBAAsB,EAAE,MAAM,CAAC;QAC/B,iCAAiC,EAAE,MAAM,GAAG,IAAI,CAAC;KAClD,KAAG,OAAO,CAAC,IAAI,CAAC,CAqIf;IAEF,OAAO,CAAC,+BAA+B,CAgCrC;CACH"}
@@ -6,8 +6,10 @@ export type RelatedPullRequest = {
6
6
  url: string;
7
7
  isConflicted: boolean;
8
8
  isPassedAllCiJob: boolean;
9
+ isCiStateSuccess: boolean;
9
10
  isResolvedAllReviewComments: boolean;
10
11
  isBranchOutOfDate: boolean;
12
+ missingRequiredCheckNames: string[];
11
13
  };
12
14
  export interface IssueRepository {
13
15
  getAllIssues: (projectId: Project['id'], allowCacheMinutes: number) => Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"IssueRepository.d.ts","sourceRoot":"","sources":["../../../../src/domain/usecases/adapter-interfaces/IssueRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IssueRepository.d.ts","sourceRoot":"","sources":["../../../../src/domain/usecases/adapter-interfaces/IssueRepository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export interface WebhookRepository {
2
+ sendGetRequest(url: string): Promise<void>;
3
+ }
4
+ //# sourceMappingURL=WebhookRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebhookRepository.d.ts","sourceRoot":"","sources":["../../../../src/domain/usecases/adapter-interfaces/WebhookRepository.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C"}