github-issue-tower-defence-management 1.31.0 → 1.33.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 (51) hide show
  1. package/.github/workflows/umino-project.yml +1 -0
  2. package/CHANGELOG.md +20 -0
  3. package/README.md +24 -0
  4. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js +101 -33
  5. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js.map +1 -1
  6. package/bin/adapter/repositories/FetchWebhookRepository.js +10 -0
  7. package/bin/adapter/repositories/FetchWebhookRepository.js.map +1 -0
  8. package/bin/adapter/repositories/GitHubIssueCommentRepository.js +190 -0
  9. package/bin/adapter/repositories/GitHubIssueCommentRepository.js.map +1 -0
  10. package/bin/adapter/repositories/NodeLocalCommandRunner.js +34 -0
  11. package/bin/adapter/repositories/NodeLocalCommandRunner.js.map +1 -0
  12. package/bin/adapter/repositories/StubClaudeRepository.js +13 -0
  13. package/bin/adapter/repositories/StubClaudeRepository.js.map +1 -0
  14. package/bin/domain/usecases/HandleScheduledEventUseCase.js +29 -1
  15. package/bin/domain/usecases/HandleScheduledEventUseCase.js.map +1 -1
  16. package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js +73 -17
  17. package/bin/domain/usecases/NotifyFinishedIssuePreparationUseCase.js.map +1 -1
  18. package/bin/domain/usecases/adapter-interfaces/WebhookRepository.js +3 -0
  19. package/bin/domain/usecases/adapter-interfaces/WebhookRepository.js.map +1 -0
  20. package/package.json +1 -1
  21. package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.test.ts +23 -0
  22. package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts +29 -2
  23. package/src/adapter/repositories/FetchWebhookRepository.ts +7 -0
  24. package/src/adapter/repositories/GitHubIssueCommentRepository.ts +291 -0
  25. package/src/adapter/repositories/NodeLocalCommandRunner.test.ts +80 -0
  26. package/src/adapter/repositories/NodeLocalCommandRunner.ts +37 -0
  27. package/src/adapter/repositories/StubClaudeRepository.test.ts +19 -0
  28. package/src/adapter/repositories/StubClaudeRepository.ts +12 -0
  29. package/src/domain/usecases/HandleScheduledEventUseCase.test.ts +31 -0
  30. package/src/domain/usecases/HandleScheduledEventUseCase.ts +51 -0
  31. package/src/domain/usecases/NotifyFinishedIssuePreparationUseCase.test.ts +722 -16
  32. package/src/domain/usecases/NotifyFinishedIssuePreparationUseCase.ts +117 -20
  33. package/src/domain/usecases/adapter-interfaces/IssueRepository.ts +2 -0
  34. package/src/domain/usecases/adapter-interfaces/WebhookRepository.ts +3 -0
  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/NodeLocalCommandRunner.d.ts +9 -0
  41. package/types/adapter/repositories/NodeLocalCommandRunner.d.ts.map +1 -0
  42. package/types/adapter/repositories/StubClaudeRepository.d.ts +7 -0
  43. package/types/adapter/repositories/StubClaudeRepository.d.ts.map +1 -0
  44. package/types/domain/usecases/HandleScheduledEventUseCase.d.ts +19 -1
  45. package/types/domain/usecases/HandleScheduledEventUseCase.d.ts.map +1 -1
  46. package/types/domain/usecases/NotifyFinishedIssuePreparationUseCase.d.ts +5 -1
  47. package/types/domain/usecases/NotifyFinishedIssuePreparationUseCase.d.ts.map +1 -1
  48. package/types/domain/usecases/adapter-interfaces/IssueRepository.d.ts +2 -0
  49. package/types/domain/usecases/adapter-interfaces/IssueRepository.d.ts.map +1 -1
  50. package/types/domain/usecases/adapter-interfaces/WebhookRepository.d.ts +4 -0
  51. 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 +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;AAe3D,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,CA6JP;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,9 @@
1
+ import { LocalCommandRunner } from '../../domain/usecases/adapter-interfaces/LocalCommandRunner';
2
+ export declare class NodeLocalCommandRunner implements LocalCommandRunner {
3
+ runCommand(command: string): Promise<{
4
+ stdout: string;
5
+ stderr: string;
6
+ exitCode: number;
7
+ }>;
8
+ }
9
+ //# sourceMappingURL=NodeLocalCommandRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeLocalCommandRunner.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/NodeLocalCommandRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6DAA6D,CAAC;AAMjG,qBAAa,sBAAuB,YAAW,kBAAkB;IACzD,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QACzC,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CAyBH"}
@@ -0,0 +1,7 @@
1
+ import { ClaudeRepository } from '../../domain/usecases/adapter-interfaces/ClaudeRepository';
2
+ import { ClaudeWindowUsage } from '../../domain/entities/ClaudeWindowUsage';
3
+ export declare class StubClaudeRepository implements ClaudeRepository {
4
+ getUsage(): Promise<ClaudeWindowUsage[]>;
5
+ isClaudeAvailable(_threshold: number): Promise<boolean>;
6
+ }
7
+ //# sourceMappingURL=StubClaudeRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StubClaudeRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/StubClaudeRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAE5E,qBAAa,oBAAqB,YAAW,gBAAgB;IACrD,QAAQ,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAIxC,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAG9D"}
@@ -19,6 +19,8 @@ import { SetNoStoryIssueToStoryUseCase } from './SetNoStoryIssueToStoryUseCase';
19
19
  import { CreateNewStoryByLabelUseCase } from './CreateNewStoryByLabelUseCase';
20
20
  import { AssignNoAssigneeIssueToManagerUseCase } from './AssignNoAssigneeIssueToManagerUseCase';
21
21
  import { UpdateIssueStatusByLabelUseCase } from './UpdateIssueStatusByLabelUseCase';
22
+ import { StartPreparationUseCase } from './StartPreparationUseCase';
23
+ import { NotifyFinishedIssuePreparationUseCase } from './NotifyFinishedIssuePreparationUseCase';
22
24
  export declare class ProjectNotFoundError extends Error {
23
25
  constructor(message: string);
24
26
  }
@@ -36,11 +38,13 @@ export declare class HandleScheduledEventUseCase {
36
38
  readonly createNewStoryByLabelUseCase: CreateNewStoryByLabelUseCase;
37
39
  readonly assignNoAssigneeIssueToManagerUseCase: AssignNoAssigneeIssueToManagerUseCase;
38
40
  readonly updateIssueStatusByLabelUseCase: UpdateIssueStatusByLabelUseCase;
41
+ readonly startPreparationUseCase: StartPreparationUseCase;
42
+ readonly notifyFinishedIssuePreparationUseCase: NotifyFinishedIssuePreparationUseCase;
39
43
  readonly dateRepository: DateRepository;
40
44
  readonly spreadsheetRepository: SpreadsheetRepository;
41
45
  readonly projectRepository: ProjectRepository;
42
46
  readonly issueRepository: IssueRepository;
43
- 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, 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);
44
48
  run: (input: {
45
49
  projectName: string;
46
50
  org: string;
@@ -56,6 +60,20 @@ export declare class HandleScheduledEventUseCase {
56
60
  defaultStatus: string | null;
57
61
  disabled: boolean;
58
62
  allowIssueCacheMinutes: number;
63
+ startPreparation?: {
64
+ awaitingWorkspaceStatus: string;
65
+ preparationStatus: string;
66
+ defaultAgentName: string;
67
+ logFilePath?: string;
68
+ maximumPreparingIssuesCount: number | null;
69
+ } | null;
70
+ notifyFinishedPreparation?: {
71
+ preparationStatus: string;
72
+ awaitingWorkspaceStatus: string;
73
+ awaitingQualityCheckStatus: string;
74
+ thresholdForAutoReject: number;
75
+ workflowBlockerResolvedWebhookUrl: string | null;
76
+ } | null;
59
77
  }) => Promise<{
60
78
  project: Project;
61
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":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,2BAA2B,EAAE,OAAO,CAAC;IACrC,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,CACZ,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,EACxB,iBAAiB,EAAE,MAAM,KACtB,OAAO,CAAC;QAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACtD,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACtD,cAAc,EAAE,CACd,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAC3B,MAAM,EAAE,KAAK,EAAE,KACZ,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,oBAAoB,EAAE,CACpB,OAAO,EAAE,OAAO,GAAG;QACjB,cAAc,EAAE,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;KACxD,EACD,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,KACP,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,oBAAoB,EAAE,CACpB,OAAO,EAAE,OAAO,GAAG;QACjB,cAAc,EAAE,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;KACxD,EACD,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,MAAM,KACT,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,sBAAsB,EAAE,CACtB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,MAAM,KACT,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,WAAW,EAAE,CACX,OAAO,EAAE,OAAO,GAAG;QAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;KAAE,EAC3D,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,KACvB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,YAAY,EAAE,CACZ,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,iBAAiB,EAAE,CACjB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,KAAK,KACT,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,kBAAkB,EAAE,CAClB,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,KAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACnE,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACxE,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACrD,iBAAiB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;CAClE"}
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"}