github-issue-tower-defence-management 1.125.1 → 1.125.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/bin/domain/usecases/HandleScheduledEventUseCase.js +69 -3
- package/bin/domain/usecases/HandleScheduledEventUseCase.js.map +1 -1
- package/bin/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.js +47 -28
- package/bin/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.js.map +1 -1
- package/package.json +1 -1
- package/src/domain/usecases/HandleScheduledEventUseCase.test.ts +198 -0
- package/src/domain/usecases/HandleScheduledEventUseCase.ts +91 -10
- package/src/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.test.ts +203 -0
- package/src/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.ts +79 -55
- package/types/domain/usecases/HandleScheduledEventUseCase.d.ts.map +1 -1
- package/types/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.d.ts.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## [1.125.3](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.125.2...v1.125.3) (2026-07-19)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **schedule-cycle:** contain transient Google Sheets API errors so a gaxios 5xx does not abort the schedule cycle ([#1216](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1216)) ([31c2c69](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/31c2c691bd502478c4dd9bffad7f6c64d303d33f))
|
|
7
|
+
|
|
8
|
+
## [1.125.2](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.125.1...v1.125.2) (2026-07-18)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* **schedule-cycle:** contain ky TimeoutError from GitHub GraphQL POST so a request timeout does not abort the schedule cycle ([#1214](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1214)) ([0bb61b0](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/0bb61b019c8c4a158da05baa3e535e330e669c78))
|
|
14
|
+
|
|
1
15
|
## [1.125.1](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.125.0...v1.125.1) (2026-07-18)
|
|
2
16
|
|
|
3
17
|
|
|
@@ -16,7 +16,51 @@ const isTransientApiError = (error) => {
|
|
|
16
16
|
const msg = error.message;
|
|
17
17
|
return (/\b(401|403|429|500|502|503|504)\b/.test(msg) ||
|
|
18
18
|
/rate.?limit|RATE_LIMIT/i.test(msg) ||
|
|
19
|
-
/bad credentials/i.test(msg)
|
|
19
|
+
/bad credentials/i.test(msg) ||
|
|
20
|
+
error.name === 'TimeoutError' ||
|
|
21
|
+
/request timed out/i.test(msg));
|
|
22
|
+
};
|
|
23
|
+
const TRANSIENT_NETWORK_ERROR_CODE_PATTERN = /\b(ECONNRESET|ECONNREFUSED|ECONNABORTED|ETIMEDOUT|EPIPE|ENOTFOUND|EAI_AGAIN|ERR_NETWORK|ERR_SOCKET_CONNECTION_TIMEOUT)\b/;
|
|
24
|
+
const isRecord = (value) => typeof value === 'object' && value !== null;
|
|
25
|
+
const extractHttpStatusFromError = (error) => {
|
|
26
|
+
if (!isRecord(error)) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
const response = error.response;
|
|
30
|
+
const values = [
|
|
31
|
+
error.status,
|
|
32
|
+
isRecord(response) ? response.status : null,
|
|
33
|
+
error.code,
|
|
34
|
+
];
|
|
35
|
+
for (const value of values) {
|
|
36
|
+
if (typeof value === 'number' && Number.isInteger(value)) {
|
|
37
|
+
return value;
|
|
38
|
+
}
|
|
39
|
+
if (typeof value === 'string' && /^\d{3}$/.test(value)) {
|
|
40
|
+
return Number(value);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
};
|
|
45
|
+
const isTransientSpreadsheetApiError = (error) => {
|
|
46
|
+
const status = extractHttpStatusFromError(error);
|
|
47
|
+
if (status !== null) {
|
|
48
|
+
return status === 429 || (status >= 500 && status <= 599);
|
|
49
|
+
}
|
|
50
|
+
if (error.name === 'TimeoutError' ||
|
|
51
|
+
/request timed out/i.test(error.message)) {
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
const code = isRecord(error) ? error.code : null;
|
|
55
|
+
if (typeof code === 'string' &&
|
|
56
|
+
TRANSIENT_NETWORK_ERROR_CODE_PATTERN.test(code)) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
return (/\b(429|500|502|503|504)\b/.test(error.message) ||
|
|
60
|
+
/rate.?limit/i.test(error.message) ||
|
|
61
|
+
/internal error encountered/i.test(error.message) ||
|
|
62
|
+
/socket hang up/i.test(error.message) ||
|
|
63
|
+
TRANSIENT_NETWORK_ERROR_CODE_PATTERN.test(error.message));
|
|
20
64
|
};
|
|
21
65
|
class HandleScheduledEventUseCase {
|
|
22
66
|
constructor(setupTowerDefenceProjectUseCase, actionAnnouncementUseCase, setWorkflowManagementIssueToStoryUseCase, clearPastNextActionUseCase, analyzeProblemByIssueUseCase, analyzeStoriesUseCase, clearDependedIssueURLUseCase, setDependedIssueUrlForOpenTaskPRsUseCase, createEstimationIssueUseCase, convertCheckboxToIssueInStoryIssueUseCase, changeStatusByStoryColorUseCase, setNoStoryIssueToStoryUseCase, createNewStoryByLabelUseCase, assignNoAssigneeIssueToManagerUseCase, updateIssueStatusByLabelUseCase, startPreparationUseCase, revertOrphanedPreparationUseCase, revertNotReadyReviewQueueIssueUseCase, updateRateLimitCacheUseCase, dailySecurityScanUseCase, dateRepository, spreadsheetRepository, projectRepository, issueRepository) {
|
|
@@ -103,8 +147,26 @@ class HandleScheduledEventUseCase {
|
|
|
103
147
|
storyObject.issues.push(newIssue);
|
|
104
148
|
console.log(`[HandleScheduledEvent] Story issue created: story="${storyObject.story.name}" elapsed=${Date.now() - storyStartTime}ms`);
|
|
105
149
|
}
|
|
106
|
-
|
|
107
|
-
|
|
150
|
+
let targetDateTimes = [];
|
|
151
|
+
try {
|
|
152
|
+
targetDateTimes = await this.findTargetDateAndUpdateLastExecutionDateTime(input.workingReport.spreadsheetUrl, now, input.org, input.workingReport.repo, input.manager);
|
|
153
|
+
}
|
|
154
|
+
catch (e) {
|
|
155
|
+
if (!(e instanceof Error) || !isTransientSpreadsheetApiError(e)) {
|
|
156
|
+
throw e;
|
|
157
|
+
}
|
|
158
|
+
console.warn(`[HandleScheduledEvent] Transient spreadsheet API error while updating last execution date time, skipping this spreadsheet operation and continuing the cycle: ${e.name}: ${e.message}`);
|
|
159
|
+
}
|
|
160
|
+
let runSlowSweep = false;
|
|
161
|
+
try {
|
|
162
|
+
runSlowSweep = await this.shouldRunSlowSweep(input.workingReport.spreadsheetUrl, now, input.org, input.workingReport.repo, input.manager);
|
|
163
|
+
}
|
|
164
|
+
catch (e) {
|
|
165
|
+
if (!(e instanceof Error) || !isTransientSpreadsheetApiError(e)) {
|
|
166
|
+
throw e;
|
|
167
|
+
}
|
|
168
|
+
console.warn(`[HandleScheduledEvent] Transient spreadsheet API error while checking slow sweep schedule, skipping slow sweep for this cycle: ${e.name}: ${e.message}`);
|
|
169
|
+
}
|
|
108
170
|
let rotationOrder;
|
|
109
171
|
try {
|
|
110
172
|
const useCaseResult = await this.runEachUseCases(input, project, issues, cacheUsed, targetDateTimes, storyIssues, runSlowSweep);
|
|
@@ -315,6 +377,10 @@ ${JSON.stringify(e)}
|
|
|
315
377
|
if (!(e instanceof Error)) {
|
|
316
378
|
throw e;
|
|
317
379
|
}
|
|
380
|
+
if (isTransientSpreadsheetApiError(e)) {
|
|
381
|
+
console.warn(`[HandleScheduledEvent] Transient spreadsheet API error on ${operation} (${spreadsheetUrl}): ${e.name}: ${e.message}`);
|
|
382
|
+
throw e;
|
|
383
|
+
}
|
|
318
384
|
await this.issueRepository.createNewIssue(org, repo, `Error in HandleScheduledEvent / spreadsheet ${operation} failure`, `Spreadsheet URL: ${spreadsheetUrl}
|
|
319
385
|
Operation: ${operation}
|
|
320
386
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HandleScheduledEventUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/HandleScheduledEventUseCase.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HandleScheduledEventUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/HandleScheduledEventUseCase.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ const isArchivedProjectItemError = (error) => {
|
|
|
13
13
|
const message = error instanceof Error ? error.message : String(error);
|
|
14
14
|
return message.toLowerCase().includes('archived');
|
|
15
15
|
};
|
|
16
|
+
const isTimeoutError = (error) => error instanceof Error && error.name === 'TimeoutError';
|
|
16
17
|
const isAuthorAuthorizedForAutoStatusCheck = (author, allowedIssueAuthors) => {
|
|
17
18
|
if (allowedIssueAuthors === null || allowedIssueAuthors === undefined) {
|
|
18
19
|
return false;
|
|
@@ -52,24 +53,33 @@ class RevertNotReadyReviewQueueIssueUseCase {
|
|
|
52
53
|
if (!isAuthorAuthorizedForAutoStatusCheck(issue.author, allowedIssueAuthors)) {
|
|
53
54
|
continue;
|
|
54
55
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
56
|
+
try {
|
|
57
|
+
const { rejections, approvedPrUrl } = await this.issueRejectionEvaluator.evaluate(issue, params.labelsAsLlmAgentName ?? [], {
|
|
58
|
+
relatedOpenPrUrls: relatedOpenPrUrlsByIssueUrl.get(issue.url) ?? [],
|
|
59
|
+
});
|
|
60
|
+
if (rejections.length > 0) {
|
|
61
|
+
try {
|
|
62
|
+
await this.issueRepository.updateStatus(project, issue, awaitingWorkspaceStatusOption.id);
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
if (isArchivedProjectItemError(error)) {
|
|
66
|
+
console.warn(`RevertNotReadyReviewQueueIssueUseCase: project item is archived and cannot be updated, skipping revert. issueUrl: ${issue.url}`);
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
throw error;
|
|
66
70
|
}
|
|
67
|
-
|
|
71
|
+
await this.issueCommentRepository.createComment(issue, `Auto Status Check: REJECTED\n${rejections.map((r) => `- ${r.detail}`).join('\n')}`);
|
|
72
|
+
continue;
|
|
68
73
|
}
|
|
69
|
-
await this.
|
|
70
|
-
|
|
74
|
+
await this.changeTargetPullRequestApprover.approveIfConfined(issue.labels, approvedPrUrl, params.changeTargetPathAliases);
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
if (isTimeoutError(error)) {
|
|
78
|
+
console.warn(`RevertNotReadyReviewQueueIssueUseCase: request timed out, skipping issue for this cycle. issueUrl: ${issue.url} error: ${error instanceof Error ? error.message : String(error)}`);
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
throw error;
|
|
71
82
|
}
|
|
72
|
-
await this.changeTargetPullRequestApprover.approveIfConfined(issue.labels, approvedPrUrl, params.changeTargetPathAliases);
|
|
73
83
|
}
|
|
74
84
|
const projectStory = project.story;
|
|
75
85
|
const unreadPullRequests = issues.filter((issue) => issue.status === WorkflowStatus_1.DEFAULT_STATUS_NAME && issue.isPr);
|
|
@@ -81,22 +91,31 @@ class RevertNotReadyReviewQueueIssueUseCase {
|
|
|
81
91
|
if (!isAuthorAuthorizedForAutoStatusCheck(pullRequest.author, allowedIssueAuthors)) {
|
|
82
92
|
continue;
|
|
83
93
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
94
|
+
try {
|
|
95
|
+
const { rejections } = await this.issueRejectionEvaluator.evaluate(pullRequest, params.labelsAsLlmAgentName ?? []);
|
|
96
|
+
if (rejections.length > 0) {
|
|
97
|
+
try {
|
|
98
|
+
await this.issueRepository.updateStatus(project, pullRequest, awaitingWorkspaceStatusOption.id);
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
if (isArchivedProjectItemError(error)) {
|
|
102
|
+
console.warn(`RevertNotReadyReviewQueueIssueUseCase: project item is archived and cannot be updated, skipping revert. prUrl: ${pullRequest.url}`);
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
throw error;
|
|
93
106
|
}
|
|
94
|
-
|
|
107
|
+
if (projectStory) {
|
|
108
|
+
await this.issueRepository.updateStory({ ...project, story: projectStory }, pullRequest, projectStory.workflowManagementStory.id);
|
|
109
|
+
}
|
|
110
|
+
await this.issueCommentRepository.createComment(pullRequest, `Auto Status Check: REJECTED\n${rejections.map((r) => `- ${r.detail}`).join('\n')}`);
|
|
95
111
|
}
|
|
96
|
-
|
|
97
|
-
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
if (isTimeoutError(error)) {
|
|
115
|
+
console.warn(`RevertNotReadyReviewQueueIssueUseCase: request timed out, skipping pull request for this cycle. prUrl: ${pullRequest.url} error: ${error instanceof Error ? error.message : String(error)}`);
|
|
116
|
+
continue;
|
|
98
117
|
}
|
|
99
|
-
|
|
118
|
+
throw error;
|
|
100
119
|
}
|
|
101
120
|
}
|
|
102
121
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RevertNotReadyReviewQueueIssueUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"RevertNotReadyReviewQueueIssueUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1055,6 +1055,41 @@ describe('HandleScheduledEventUseCase', () => {
|
|
|
1055
1055
|
expect(mockIssueRepository.createNewIssue).not.toHaveBeenCalled();
|
|
1056
1056
|
expect(mockIssueRepository.createCommentByUrl).not.toHaveBeenCalled();
|
|
1057
1057
|
});
|
|
1058
|
+
|
|
1059
|
+
it('should not create or comment an incident issue for a ky TimeoutError (matched by error name)', async () => {
|
|
1060
|
+
const timeoutError = new Error(
|
|
1061
|
+
'Request timed out: POST https://api.github.com/graphql',
|
|
1062
|
+
);
|
|
1063
|
+
timeoutError.name = 'TimeoutError';
|
|
1064
|
+
mockRevertNotReadyReviewQueueIssueUseCase.run.mockRejectedValueOnce(
|
|
1065
|
+
timeoutError,
|
|
1066
|
+
);
|
|
1067
|
+
|
|
1068
|
+
await expect(useCase.run(errorInput)).rejects.toThrow(
|
|
1069
|
+
'Request timed out',
|
|
1070
|
+
);
|
|
1071
|
+
|
|
1072
|
+
expect(mockIssueRepository.searchIssue).not.toHaveBeenCalled();
|
|
1073
|
+
expect(mockIssueRepository.createNewIssue).not.toHaveBeenCalled();
|
|
1074
|
+
expect(mockIssueRepository.createCommentByUrl).not.toHaveBeenCalled();
|
|
1075
|
+
});
|
|
1076
|
+
|
|
1077
|
+
it('should not create or comment an incident issue for a request timed out error (matched by message)', async () => {
|
|
1078
|
+
const timeoutError = new Error(
|
|
1079
|
+
'Request timed out: POST https://api.github.com/graphql',
|
|
1080
|
+
);
|
|
1081
|
+
mockRevertNotReadyReviewQueueIssueUseCase.run.mockRejectedValueOnce(
|
|
1082
|
+
timeoutError,
|
|
1083
|
+
);
|
|
1084
|
+
|
|
1085
|
+
await expect(useCase.run(errorInput)).rejects.toThrow(
|
|
1086
|
+
'Request timed out',
|
|
1087
|
+
);
|
|
1088
|
+
|
|
1089
|
+
expect(mockIssueRepository.searchIssue).not.toHaveBeenCalled();
|
|
1090
|
+
expect(mockIssueRepository.createNewIssue).not.toHaveBeenCalled();
|
|
1091
|
+
expect(mockIssueRepository.createCommentByUrl).not.toHaveBeenCalled();
|
|
1092
|
+
});
|
|
1058
1093
|
});
|
|
1059
1094
|
|
|
1060
1095
|
describe('spreadsheet access failure error issue creation', () => {
|
|
@@ -1121,6 +1156,169 @@ describe('HandleScheduledEventUseCase', () => {
|
|
|
1121
1156
|
});
|
|
1122
1157
|
});
|
|
1123
1158
|
|
|
1159
|
+
describe('transient spreadsheet API error containment', () => {
|
|
1160
|
+
const transientInput = {
|
|
1161
|
+
projectName: 'test-project',
|
|
1162
|
+
org: 'test-org',
|
|
1163
|
+
projectUrl: 'https://github.com/test-org/test-project',
|
|
1164
|
+
manager: 'test-manager',
|
|
1165
|
+
workingReport: {
|
|
1166
|
+
repo: 'test-repo',
|
|
1167
|
+
members: ['member1'],
|
|
1168
|
+
spreadsheetUrl: 'https://docs.google.com/spreadsheets/test',
|
|
1169
|
+
},
|
|
1170
|
+
urlOfStoryView: 'https://github.com/test-org/test-project/issues',
|
|
1171
|
+
disabled: false,
|
|
1172
|
+
};
|
|
1173
|
+
|
|
1174
|
+
const createGaxiosLikeError = (
|
|
1175
|
+
message: string,
|
|
1176
|
+
status?: number,
|
|
1177
|
+
code?: string,
|
|
1178
|
+
): Error => {
|
|
1179
|
+
const error: Error & {
|
|
1180
|
+
status?: number;
|
|
1181
|
+
code?: string;
|
|
1182
|
+
response?: { status?: number };
|
|
1183
|
+
} = new Error(message);
|
|
1184
|
+
error.name = 'GaxiosError';
|
|
1185
|
+
if (status !== undefined) {
|
|
1186
|
+
error.status = status;
|
|
1187
|
+
error.response = { status };
|
|
1188
|
+
}
|
|
1189
|
+
if (code !== undefined) {
|
|
1190
|
+
error.code = code;
|
|
1191
|
+
}
|
|
1192
|
+
return error;
|
|
1193
|
+
};
|
|
1194
|
+
|
|
1195
|
+
let warnSpy: jest.SpyInstance;
|
|
1196
|
+
beforeEach(() => {
|
|
1197
|
+
warnSpy = jest.spyOn(console, 'warn').mockImplementation(() => {});
|
|
1198
|
+
});
|
|
1199
|
+
afterEach(() => {
|
|
1200
|
+
warnSpy.mockRestore();
|
|
1201
|
+
});
|
|
1202
|
+
|
|
1203
|
+
it('should skip the spreadsheet read and continue the cycle when getSheet fails with a gaxios HTTP 500 error', async () => {
|
|
1204
|
+
mockSpreadsheetRepository.getSheet.mockRejectedValue(
|
|
1205
|
+
createGaxiosLikeError('Internal error encountered.', 500),
|
|
1206
|
+
);
|
|
1207
|
+
|
|
1208
|
+
const result = await useCase.run(transientInput);
|
|
1209
|
+
|
|
1210
|
+
expect(result).not.toBeNull();
|
|
1211
|
+
expect(result?.targetDateTimes).toEqual([]);
|
|
1212
|
+
expect(mockIssueRepository.createNewIssue).not.toHaveBeenCalled();
|
|
1213
|
+
expect(warnSpy).toHaveBeenCalled();
|
|
1214
|
+
expect(
|
|
1215
|
+
mockRevertNotReadyReviewQueueIssueUseCase.run,
|
|
1216
|
+
).toHaveBeenCalled();
|
|
1217
|
+
});
|
|
1218
|
+
|
|
1219
|
+
it('should skip the spreadsheet write and continue the cycle when updateCell fails with a gaxios HTTP 503 error', async () => {
|
|
1220
|
+
mockSpreadsheetRepository.updateCell.mockRejectedValue(
|
|
1221
|
+
createGaxiosLikeError('The service is currently unavailable.', 503),
|
|
1222
|
+
);
|
|
1223
|
+
|
|
1224
|
+
const result = await useCase.run(transientInput);
|
|
1225
|
+
|
|
1226
|
+
expect(result).not.toBeNull();
|
|
1227
|
+
expect(result?.targetDateTimes).toEqual([]);
|
|
1228
|
+
expect(mockIssueRepository.createNewIssue).not.toHaveBeenCalled();
|
|
1229
|
+
expect(warnSpy).toHaveBeenCalled();
|
|
1230
|
+
expect(
|
|
1231
|
+
mockRevertNotReadyReviewQueueIssueUseCase.run,
|
|
1232
|
+
).toHaveBeenCalled();
|
|
1233
|
+
});
|
|
1234
|
+
|
|
1235
|
+
it('should skip the spreadsheet operation and continue the cycle when getSheet fails with a gaxios HTTP 429 rate limit error', async () => {
|
|
1236
|
+
mockSpreadsheetRepository.getSheet.mockRejectedValue(
|
|
1237
|
+
createGaxiosLikeError('Quota exceeded', 429),
|
|
1238
|
+
);
|
|
1239
|
+
|
|
1240
|
+
const result = await useCase.run(transientInput);
|
|
1241
|
+
|
|
1242
|
+
expect(result).not.toBeNull();
|
|
1243
|
+
expect(result?.targetDateTimes).toEqual([]);
|
|
1244
|
+
expect(mockIssueRepository.createNewIssue).not.toHaveBeenCalled();
|
|
1245
|
+
expect(warnSpy).toHaveBeenCalled();
|
|
1246
|
+
expect(
|
|
1247
|
+
mockRevertNotReadyReviewQueueIssueUseCase.run,
|
|
1248
|
+
).toHaveBeenCalled();
|
|
1249
|
+
});
|
|
1250
|
+
|
|
1251
|
+
it('should skip the spreadsheet operation and continue the cycle when getSheet fails with a gaxios network error without an HTTP status', async () => {
|
|
1252
|
+
mockSpreadsheetRepository.getSheet.mockRejectedValue(
|
|
1253
|
+
createGaxiosLikeError('socket hang up', undefined, 'ECONNRESET'),
|
|
1254
|
+
);
|
|
1255
|
+
|
|
1256
|
+
const result = await useCase.run(transientInput);
|
|
1257
|
+
|
|
1258
|
+
expect(result).not.toBeNull();
|
|
1259
|
+
expect(result?.targetDateTimes).toEqual([]);
|
|
1260
|
+
expect(mockIssueRepository.createNewIssue).not.toHaveBeenCalled();
|
|
1261
|
+
expect(warnSpy).toHaveBeenCalled();
|
|
1262
|
+
expect(
|
|
1263
|
+
mockRevertNotReadyReviewQueueIssueUseCase.run,
|
|
1264
|
+
).toHaveBeenCalled();
|
|
1265
|
+
});
|
|
1266
|
+
|
|
1267
|
+
it('should skip the spreadsheet operation and continue the cycle when getSheet fails with a gaxios internal error carrying no status field (matched by message)', async () => {
|
|
1268
|
+
mockSpreadsheetRepository.getSheet.mockRejectedValue(
|
|
1269
|
+
createGaxiosLikeError('Internal error encountered.'),
|
|
1270
|
+
);
|
|
1271
|
+
|
|
1272
|
+
const result = await useCase.run(transientInput);
|
|
1273
|
+
|
|
1274
|
+
expect(result).not.toBeNull();
|
|
1275
|
+
expect(result?.targetDateTimes).toEqual([]);
|
|
1276
|
+
expect(mockIssueRepository.createNewIssue).not.toHaveBeenCalled();
|
|
1277
|
+
expect(warnSpy).toHaveBeenCalled();
|
|
1278
|
+
expect(
|
|
1279
|
+
mockRevertNotReadyReviewQueueIssueUseCase.run,
|
|
1280
|
+
).toHaveBeenCalled();
|
|
1281
|
+
});
|
|
1282
|
+
|
|
1283
|
+
it('should create an error issue and rethrow when getSheet fails with a gaxios HTTP 401 authentication error', async () => {
|
|
1284
|
+
mockSpreadsheetRepository.getSheet.mockRejectedValue(
|
|
1285
|
+
createGaxiosLikeError('Invalid Credentials', 401),
|
|
1286
|
+
);
|
|
1287
|
+
|
|
1288
|
+
await expect(useCase.run(transientInput)).rejects.toThrow(
|
|
1289
|
+
'Invalid Credentials',
|
|
1290
|
+
);
|
|
1291
|
+
|
|
1292
|
+
expect(mockIssueRepository.createNewIssue).toHaveBeenCalledWith(
|
|
1293
|
+
transientInput.org,
|
|
1294
|
+
transientInput.workingReport.repo,
|
|
1295
|
+
'Error in HandleScheduledEvent / spreadsheet read failure',
|
|
1296
|
+
expect.stringContaining(transientInput.workingReport.spreadsheetUrl),
|
|
1297
|
+
[transientInput.manager],
|
|
1298
|
+
['error'],
|
|
1299
|
+
);
|
|
1300
|
+
});
|
|
1301
|
+
|
|
1302
|
+
it('should create an error issue and rethrow when getSheet fails with a gaxios HTTP 403 permission error', async () => {
|
|
1303
|
+
mockSpreadsheetRepository.getSheet.mockRejectedValue(
|
|
1304
|
+
createGaxiosLikeError('The caller does not have permission', 403),
|
|
1305
|
+
);
|
|
1306
|
+
|
|
1307
|
+
await expect(useCase.run(transientInput)).rejects.toThrow(
|
|
1308
|
+
'The caller does not have permission',
|
|
1309
|
+
);
|
|
1310
|
+
|
|
1311
|
+
expect(mockIssueRepository.createNewIssue).toHaveBeenCalledWith(
|
|
1312
|
+
transientInput.org,
|
|
1313
|
+
transientInput.workingReport.repo,
|
|
1314
|
+
'Error in HandleScheduledEvent / spreadsheet read failure',
|
|
1315
|
+
expect.stringContaining(transientInput.workingReport.spreadsheetUrl),
|
|
1316
|
+
[transientInput.manager],
|
|
1317
|
+
['error'],
|
|
1318
|
+
);
|
|
1319
|
+
});
|
|
1320
|
+
});
|
|
1321
|
+
|
|
1124
1322
|
describe('empty targetDateTimes handling', () => {
|
|
1125
1323
|
const emptyTargetInput = {
|
|
1126
1324
|
projectName: 'test-project',
|
|
@@ -51,7 +51,63 @@ const isTransientApiError = (error: Error): boolean => {
|
|
|
51
51
|
return (
|
|
52
52
|
/\b(401|403|429|500|502|503|504)\b/.test(msg) ||
|
|
53
53
|
/rate.?limit|RATE_LIMIT/i.test(msg) ||
|
|
54
|
-
/bad credentials/i.test(msg)
|
|
54
|
+
/bad credentials/i.test(msg) ||
|
|
55
|
+
error.name === 'TimeoutError' ||
|
|
56
|
+
/request timed out/i.test(msg)
|
|
57
|
+
);
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
const TRANSIENT_NETWORK_ERROR_CODE_PATTERN =
|
|
61
|
+
/\b(ECONNRESET|ECONNREFUSED|ECONNABORTED|ETIMEDOUT|EPIPE|ENOTFOUND|EAI_AGAIN|ERR_NETWORK|ERR_SOCKET_CONNECTION_TIMEOUT)\b/;
|
|
62
|
+
|
|
63
|
+
const isRecord = (value: unknown): value is Record<string, unknown> =>
|
|
64
|
+
typeof value === 'object' && value !== null;
|
|
65
|
+
|
|
66
|
+
const extractHttpStatusFromError = (error: Error): number | null => {
|
|
67
|
+
if (!isRecord(error)) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
const response: unknown = error.response;
|
|
71
|
+
const values: unknown[] = [
|
|
72
|
+
error.status,
|
|
73
|
+
isRecord(response) ? response.status : null,
|
|
74
|
+
error.code,
|
|
75
|
+
];
|
|
76
|
+
for (const value of values) {
|
|
77
|
+
if (typeof value === 'number' && Number.isInteger(value)) {
|
|
78
|
+
return value;
|
|
79
|
+
}
|
|
80
|
+
if (typeof value === 'string' && /^\d{3}$/.test(value)) {
|
|
81
|
+
return Number(value);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return null;
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
const isTransientSpreadsheetApiError = (error: Error): boolean => {
|
|
88
|
+
const status = extractHttpStatusFromError(error);
|
|
89
|
+
if (status !== null) {
|
|
90
|
+
return status === 429 || (status >= 500 && status <= 599);
|
|
91
|
+
}
|
|
92
|
+
if (
|
|
93
|
+
error.name === 'TimeoutError' ||
|
|
94
|
+
/request timed out/i.test(error.message)
|
|
95
|
+
) {
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
const code: unknown = isRecord(error) ? error.code : null;
|
|
99
|
+
if (
|
|
100
|
+
typeof code === 'string' &&
|
|
101
|
+
TRANSIENT_NETWORK_ERROR_CODE_PATTERN.test(code)
|
|
102
|
+
) {
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
return (
|
|
106
|
+
/\b(429|500|502|503|504)\b/.test(error.message) ||
|
|
107
|
+
/rate.?limit/i.test(error.message) ||
|
|
108
|
+
/internal error encountered/i.test(error.message) ||
|
|
109
|
+
/socket hang up/i.test(error.message) ||
|
|
110
|
+
TRANSIENT_NETWORK_ERROR_CODE_PATTERN.test(error.message)
|
|
55
111
|
);
|
|
56
112
|
};
|
|
57
113
|
|
|
@@ -215,22 +271,41 @@ export class HandleScheduledEventUseCase {
|
|
|
215
271
|
);
|
|
216
272
|
}
|
|
217
273
|
|
|
218
|
-
|
|
219
|
-
|
|
274
|
+
let targetDateTimes: Date[] = [];
|
|
275
|
+
try {
|
|
276
|
+
targetDateTimes = await this.findTargetDateAndUpdateLastExecutionDateTime(
|
|
220
277
|
input.workingReport.spreadsheetUrl,
|
|
221
278
|
now,
|
|
222
279
|
input.org,
|
|
223
280
|
input.workingReport.repo,
|
|
224
281
|
input.manager,
|
|
225
282
|
);
|
|
283
|
+
} catch (e) {
|
|
284
|
+
if (!(e instanceof Error) || !isTransientSpreadsheetApiError(e)) {
|
|
285
|
+
throw e;
|
|
286
|
+
}
|
|
287
|
+
console.warn(
|
|
288
|
+
`[HandleScheduledEvent] Transient spreadsheet API error while updating last execution date time, skipping this spreadsheet operation and continuing the cycle: ${e.name}: ${e.message}`,
|
|
289
|
+
);
|
|
290
|
+
}
|
|
226
291
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
292
|
+
let runSlowSweep = false;
|
|
293
|
+
try {
|
|
294
|
+
runSlowSweep = await this.shouldRunSlowSweep(
|
|
295
|
+
input.workingReport.spreadsheetUrl,
|
|
296
|
+
now,
|
|
297
|
+
input.org,
|
|
298
|
+
input.workingReport.repo,
|
|
299
|
+
input.manager,
|
|
300
|
+
);
|
|
301
|
+
} catch (e) {
|
|
302
|
+
if (!(e instanceof Error) || !isTransientSpreadsheetApiError(e)) {
|
|
303
|
+
throw e;
|
|
304
|
+
}
|
|
305
|
+
console.warn(
|
|
306
|
+
`[HandleScheduledEvent] Transient spreadsheet API error while checking slow sweep schedule, skipping slow sweep for this cycle: ${e.name}: ${e.message}`,
|
|
307
|
+
);
|
|
308
|
+
}
|
|
234
309
|
|
|
235
310
|
let rotationOrder: RotationOrderEntry[] | null;
|
|
236
311
|
try {
|
|
@@ -515,6 +590,12 @@ ${JSON.stringify(e)}
|
|
|
515
590
|
if (!(e instanceof Error)) {
|
|
516
591
|
throw e;
|
|
517
592
|
}
|
|
593
|
+
if (isTransientSpreadsheetApiError(e)) {
|
|
594
|
+
console.warn(
|
|
595
|
+
`[HandleScheduledEvent] Transient spreadsheet API error on ${operation} (${spreadsheetUrl}): ${e.name}: ${e.message}`,
|
|
596
|
+
);
|
|
597
|
+
throw e;
|
|
598
|
+
}
|
|
518
599
|
await this.issueRepository.createNewIssue(
|
|
519
600
|
org,
|
|
520
601
|
repo,
|
|
@@ -1697,4 +1697,207 @@ describe('RevertNotReadyReviewQueueIssueUseCase', () => {
|
|
|
1697
1697
|
expect(mockIssueCommentRepository.createComment).not.toHaveBeenCalled();
|
|
1698
1698
|
});
|
|
1699
1699
|
});
|
|
1700
|
+
|
|
1701
|
+
describe('ky TimeoutError containment', () => {
|
|
1702
|
+
let warnSpy: jest.SpyInstance;
|
|
1703
|
+
|
|
1704
|
+
const createKyTimeoutError = (): Error => {
|
|
1705
|
+
const error = new Error(
|
|
1706
|
+
'Request timed out: POST https://api.github.com/graphql',
|
|
1707
|
+
);
|
|
1708
|
+
error.name = 'TimeoutError';
|
|
1709
|
+
return error;
|
|
1710
|
+
};
|
|
1711
|
+
|
|
1712
|
+
beforeEach(() => {
|
|
1713
|
+
warnSpy = jest.spyOn(console, 'warn').mockImplementation(() => {});
|
|
1714
|
+
});
|
|
1715
|
+
|
|
1716
|
+
afterEach(() => {
|
|
1717
|
+
warnSpy.mockRestore();
|
|
1718
|
+
});
|
|
1719
|
+
|
|
1720
|
+
it('should skip an issue whose updateStatus times out and continue with remaining issues', async () => {
|
|
1721
|
+
const timedOutIssue = createMockIssue({
|
|
1722
|
+
number: 1,
|
|
1723
|
+
url: 'https://github.com/user/repo/issues/1',
|
|
1724
|
+
itemId: 'timed-out-item',
|
|
1725
|
+
status: 'Awaiting Quality Check',
|
|
1726
|
+
});
|
|
1727
|
+
const normalIssue = createMockIssue({
|
|
1728
|
+
number: 2,
|
|
1729
|
+
url: 'https://github.com/user/repo/issues/2',
|
|
1730
|
+
itemId: 'normal-item',
|
|
1731
|
+
status: 'Awaiting Quality Check',
|
|
1732
|
+
});
|
|
1733
|
+
mockIssueRepository.getAllIssues.mockResolvedValue({
|
|
1734
|
+
project: mockProject,
|
|
1735
|
+
issues: [timedOutIssue, normalIssue],
|
|
1736
|
+
cacheUsed: false,
|
|
1737
|
+
});
|
|
1738
|
+
mockIssueRepository.updateStatus.mockImplementation(
|
|
1739
|
+
(_project: Project, issue: Issue) =>
|
|
1740
|
+
issue.url === timedOutIssue.url
|
|
1741
|
+
? Promise.reject(createKyTimeoutError())
|
|
1742
|
+
: Promise.resolve(undefined),
|
|
1743
|
+
);
|
|
1744
|
+
|
|
1745
|
+
await useCase.run({
|
|
1746
|
+
projectUrl: 'https://github.com/users/user/projects/1',
|
|
1747
|
+
allowedIssueAuthors: ['owner'],
|
|
1748
|
+
});
|
|
1749
|
+
|
|
1750
|
+
expect(mockIssueRepository.updateStatus).toHaveBeenCalledWith(
|
|
1751
|
+
mockProject,
|
|
1752
|
+
timedOutIssue,
|
|
1753
|
+
'awaiting-workspace-id',
|
|
1754
|
+
);
|
|
1755
|
+
expect(mockIssueRepository.updateStatus).toHaveBeenCalledWith(
|
|
1756
|
+
mockProject,
|
|
1757
|
+
normalIssue,
|
|
1758
|
+
'awaiting-workspace-id',
|
|
1759
|
+
);
|
|
1760
|
+
expect(mockIssueCommentRepository.createComment).not.toHaveBeenCalledWith(
|
|
1761
|
+
timedOutIssue,
|
|
1762
|
+
expect.anything(),
|
|
1763
|
+
);
|
|
1764
|
+
expect(mockIssueCommentRepository.createComment).toHaveBeenCalledWith(
|
|
1765
|
+
normalIssue,
|
|
1766
|
+
expect.stringContaining('Auto Status Check: REJECTED'),
|
|
1767
|
+
);
|
|
1768
|
+
expect(warnSpy).toHaveBeenCalledWith(
|
|
1769
|
+
expect.stringContaining(timedOutIssue.url),
|
|
1770
|
+
);
|
|
1771
|
+
});
|
|
1772
|
+
|
|
1773
|
+
it('should skip an issue whose createComment times out and continue with remaining issues', async () => {
|
|
1774
|
+
const timedOutIssue = createMockIssue({
|
|
1775
|
+
number: 1,
|
|
1776
|
+
url: 'https://github.com/user/repo/issues/1',
|
|
1777
|
+
itemId: 'timed-out-item',
|
|
1778
|
+
status: 'Awaiting Quality Check',
|
|
1779
|
+
});
|
|
1780
|
+
const normalIssue = createMockIssue({
|
|
1781
|
+
number: 2,
|
|
1782
|
+
url: 'https://github.com/user/repo/issues/2',
|
|
1783
|
+
itemId: 'normal-item',
|
|
1784
|
+
status: 'Awaiting Quality Check',
|
|
1785
|
+
});
|
|
1786
|
+
mockIssueRepository.getAllIssues.mockResolvedValue({
|
|
1787
|
+
project: mockProject,
|
|
1788
|
+
issues: [timedOutIssue, normalIssue],
|
|
1789
|
+
cacheUsed: false,
|
|
1790
|
+
});
|
|
1791
|
+
mockIssueCommentRepository.createComment.mockImplementation(
|
|
1792
|
+
(issue: Issue) =>
|
|
1793
|
+
issue.url === timedOutIssue.url
|
|
1794
|
+
? Promise.reject(createKyTimeoutError())
|
|
1795
|
+
: Promise.resolve(undefined),
|
|
1796
|
+
);
|
|
1797
|
+
|
|
1798
|
+
await useCase.run({
|
|
1799
|
+
projectUrl: 'https://github.com/users/user/projects/1',
|
|
1800
|
+
allowedIssueAuthors: ['owner'],
|
|
1801
|
+
});
|
|
1802
|
+
|
|
1803
|
+
expect(mockIssueCommentRepository.createComment).toHaveBeenCalledWith(
|
|
1804
|
+
normalIssue,
|
|
1805
|
+
expect.stringContaining('Auto Status Check: REJECTED'),
|
|
1806
|
+
);
|
|
1807
|
+
expect(warnSpy).toHaveBeenCalledWith(
|
|
1808
|
+
expect.stringContaining(timedOutIssue.url),
|
|
1809
|
+
);
|
|
1810
|
+
});
|
|
1811
|
+
|
|
1812
|
+
it('should skip an Unread pull request whose updateStatus times out and continue with remaining pull requests', async () => {
|
|
1813
|
+
const timedOutPullRequest = createMockPullRequest({
|
|
1814
|
+
number: 1,
|
|
1815
|
+
url: 'https://github.com/user/repo/pull/1',
|
|
1816
|
+
itemId: 'timed-out-pr-item',
|
|
1817
|
+
status: 'Unread',
|
|
1818
|
+
});
|
|
1819
|
+
const normalPullRequest = createMockPullRequest({
|
|
1820
|
+
number: 2,
|
|
1821
|
+
url: 'https://github.com/user/repo/pull/2',
|
|
1822
|
+
itemId: 'normal-pr-item',
|
|
1823
|
+
status: 'Unread',
|
|
1824
|
+
});
|
|
1825
|
+
mockIssueRepository.getAllIssues.mockResolvedValue({
|
|
1826
|
+
project: mockProject,
|
|
1827
|
+
issues: [timedOutPullRequest, normalPullRequest],
|
|
1828
|
+
cacheUsed: false,
|
|
1829
|
+
});
|
|
1830
|
+
mockIssueRepository.getOpenPullRequest.mockImplementation(
|
|
1831
|
+
(prUrl: string) =>
|
|
1832
|
+
Promise.resolve({
|
|
1833
|
+
...createReadyPr(prUrl),
|
|
1834
|
+
isConflicted: true,
|
|
1835
|
+
}),
|
|
1836
|
+
);
|
|
1837
|
+
mockIssueRepository.updateStatus.mockImplementation(
|
|
1838
|
+
(_project: Project, issue: Issue) =>
|
|
1839
|
+
issue.url === timedOutPullRequest.url
|
|
1840
|
+
? Promise.reject(createKyTimeoutError())
|
|
1841
|
+
: Promise.resolve(undefined),
|
|
1842
|
+
);
|
|
1843
|
+
|
|
1844
|
+
await useCase.run({
|
|
1845
|
+
projectUrl: 'https://github.com/users/user/projects/1',
|
|
1846
|
+
allowedIssueAuthors: ['owner'],
|
|
1847
|
+
});
|
|
1848
|
+
|
|
1849
|
+
expect(mockIssueRepository.updateStatus).toHaveBeenCalledWith(
|
|
1850
|
+
mockProject,
|
|
1851
|
+
timedOutPullRequest,
|
|
1852
|
+
'awaiting-workspace-id',
|
|
1853
|
+
);
|
|
1854
|
+
expect(mockIssueRepository.updateStory).not.toHaveBeenCalledWith(
|
|
1855
|
+
expect.anything(),
|
|
1856
|
+
timedOutPullRequest,
|
|
1857
|
+
expect.anything(),
|
|
1858
|
+
);
|
|
1859
|
+
expect(mockIssueCommentRepository.createComment).not.toHaveBeenCalledWith(
|
|
1860
|
+
timedOutPullRequest,
|
|
1861
|
+
expect.anything(),
|
|
1862
|
+
);
|
|
1863
|
+
expect(mockIssueRepository.updateStatus).toHaveBeenCalledWith(
|
|
1864
|
+
mockProject,
|
|
1865
|
+
normalPullRequest,
|
|
1866
|
+
'awaiting-workspace-id',
|
|
1867
|
+
);
|
|
1868
|
+
expect(mockIssueRepository.updateStory).toHaveBeenCalledWith(
|
|
1869
|
+
expect.objectContaining({ id: 'project-1' }),
|
|
1870
|
+
normalPullRequest,
|
|
1871
|
+
'workflow-management-story-id',
|
|
1872
|
+
);
|
|
1873
|
+
expect(mockIssueCommentRepository.createComment).toHaveBeenCalledWith(
|
|
1874
|
+
normalPullRequest,
|
|
1875
|
+
expect.stringContaining('Auto Status Check: REJECTED'),
|
|
1876
|
+
);
|
|
1877
|
+
expect(warnSpy).toHaveBeenCalledWith(
|
|
1878
|
+
expect.stringContaining(timedOutPullRequest.url),
|
|
1879
|
+
);
|
|
1880
|
+
});
|
|
1881
|
+
|
|
1882
|
+
it('should propagate a non-timeout non-archived error from createComment unchanged', async () => {
|
|
1883
|
+
const issue = createMockIssue({
|
|
1884
|
+
status: 'Awaiting Quality Check',
|
|
1885
|
+
});
|
|
1886
|
+
mockIssueRepository.getAllIssues.mockResolvedValue({
|
|
1887
|
+
project: mockProject,
|
|
1888
|
+
issues: [issue],
|
|
1889
|
+
cacheUsed: false,
|
|
1890
|
+
});
|
|
1891
|
+
mockIssueCommentRepository.createComment.mockRejectedValue(
|
|
1892
|
+
new Error('Something went wrong'),
|
|
1893
|
+
);
|
|
1894
|
+
|
|
1895
|
+
await expect(
|
|
1896
|
+
useCase.run({
|
|
1897
|
+
projectUrl: 'https://github.com/users/user/projects/1',
|
|
1898
|
+
allowedIssueAuthors: ['owner'],
|
|
1899
|
+
}),
|
|
1900
|
+
).rejects.toThrow('Something went wrong');
|
|
1901
|
+
});
|
|
1902
|
+
});
|
|
1700
1903
|
});
|
|
@@ -20,6 +20,9 @@ const isArchivedProjectItemError = (error: unknown): boolean => {
|
|
|
20
20
|
return message.toLowerCase().includes('archived');
|
|
21
21
|
};
|
|
22
22
|
|
|
23
|
+
const isTimeoutError = (error: unknown): boolean =>
|
|
24
|
+
error instanceof Error && error.name === 'TimeoutError';
|
|
25
|
+
|
|
23
26
|
const isAuthorAuthorizedForAutoStatusCheck = (
|
|
24
27
|
author: string,
|
|
25
28
|
allowedIssueAuthors: string[] | null | undefined,
|
|
@@ -114,42 +117,53 @@ export class RevertNotReadyReviewQueueIssueUseCase {
|
|
|
114
117
|
continue;
|
|
115
118
|
}
|
|
116
119
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
params.labelsAsLlmAgentName ?? [],
|
|
121
|
-
{
|
|
122
|
-
relatedOpenPrUrls: relatedOpenPrUrlsByIssueUrl.get(issue.url) ?? [],
|
|
123
|
-
},
|
|
124
|
-
);
|
|
125
|
-
if (rejections.length > 0) {
|
|
126
|
-
try {
|
|
127
|
-
await this.issueRepository.updateStatus(
|
|
128
|
-
project,
|
|
120
|
+
try {
|
|
121
|
+
const { rejections, approvedPrUrl } =
|
|
122
|
+
await this.issueRejectionEvaluator.evaluate(
|
|
129
123
|
issue,
|
|
130
|
-
|
|
124
|
+
params.labelsAsLlmAgentName ?? [],
|
|
125
|
+
{
|
|
126
|
+
relatedOpenPrUrls:
|
|
127
|
+
relatedOpenPrUrlsByIssueUrl.get(issue.url) ?? [],
|
|
128
|
+
},
|
|
131
129
|
);
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
130
|
+
if (rejections.length > 0) {
|
|
131
|
+
try {
|
|
132
|
+
await this.issueRepository.updateStatus(
|
|
133
|
+
project,
|
|
134
|
+
issue,
|
|
135
|
+
awaitingWorkspaceStatusOption.id,
|
|
136
136
|
);
|
|
137
|
-
|
|
137
|
+
} catch (error) {
|
|
138
|
+
if (isArchivedProjectItemError(error)) {
|
|
139
|
+
console.warn(
|
|
140
|
+
`RevertNotReadyReviewQueueIssueUseCase: project item is archived and cannot be updated, skipping revert. issueUrl: ${issue.url}`,
|
|
141
|
+
);
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
throw error;
|
|
138
145
|
}
|
|
139
|
-
|
|
146
|
+
await this.issueCommentRepository.createComment(
|
|
147
|
+
issue,
|
|
148
|
+
`Auto Status Check: REJECTED\n${rejections.map((r) => `- ${r.detail}`).join('\n')}`,
|
|
149
|
+
);
|
|
150
|
+
continue;
|
|
140
151
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
152
|
+
|
|
153
|
+
await this.changeTargetPullRequestApprover.approveIfConfined(
|
|
154
|
+
issue.labels,
|
|
155
|
+
approvedPrUrl,
|
|
156
|
+
params.changeTargetPathAliases,
|
|
144
157
|
);
|
|
145
|
-
|
|
158
|
+
} catch (error) {
|
|
159
|
+
if (isTimeoutError(error)) {
|
|
160
|
+
console.warn(
|
|
161
|
+
`RevertNotReadyReviewQueueIssueUseCase: request timed out, skipping issue for this cycle. issueUrl: ${issue.url} error: ${error instanceof Error ? error.message : String(error)}`,
|
|
162
|
+
);
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
throw error;
|
|
146
166
|
}
|
|
147
|
-
|
|
148
|
-
await this.changeTargetPullRequestApprover.approveIfConfined(
|
|
149
|
-
issue.labels,
|
|
150
|
-
approvedPrUrl,
|
|
151
|
-
params.changeTargetPathAliases,
|
|
152
|
-
);
|
|
153
167
|
}
|
|
154
168
|
|
|
155
169
|
const projectStory = project.story;
|
|
@@ -174,37 +188,47 @@ export class RevertNotReadyReviewQueueIssueUseCase {
|
|
|
174
188
|
continue;
|
|
175
189
|
}
|
|
176
190
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
} catch (error) {
|
|
189
|
-
if (isArchivedProjectItemError(error)) {
|
|
190
|
-
console.warn(
|
|
191
|
-
`RevertNotReadyReviewQueueIssueUseCase: project item is archived and cannot be updated, skipping revert. prUrl: ${pullRequest.url}`,
|
|
191
|
+
try {
|
|
192
|
+
const { rejections } = await this.issueRejectionEvaluator.evaluate(
|
|
193
|
+
pullRequest,
|
|
194
|
+
params.labelsAsLlmAgentName ?? [],
|
|
195
|
+
);
|
|
196
|
+
if (rejections.length > 0) {
|
|
197
|
+
try {
|
|
198
|
+
await this.issueRepository.updateStatus(
|
|
199
|
+
project,
|
|
200
|
+
pullRequest,
|
|
201
|
+
awaitingWorkspaceStatusOption.id,
|
|
192
202
|
);
|
|
193
|
-
|
|
203
|
+
} catch (error) {
|
|
204
|
+
if (isArchivedProjectItemError(error)) {
|
|
205
|
+
console.warn(
|
|
206
|
+
`RevertNotReadyReviewQueueIssueUseCase: project item is archived and cannot be updated, skipping revert. prUrl: ${pullRequest.url}`,
|
|
207
|
+
);
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
throw error;
|
|
194
211
|
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
212
|
+
if (projectStory) {
|
|
213
|
+
await this.issueRepository.updateStory(
|
|
214
|
+
{ ...project, story: projectStory },
|
|
215
|
+
pullRequest,
|
|
216
|
+
projectStory.workflowManagementStory.id,
|
|
217
|
+
);
|
|
218
|
+
}
|
|
219
|
+
await this.issueCommentRepository.createComment(
|
|
200
220
|
pullRequest,
|
|
201
|
-
|
|
221
|
+
`Auto Status Check: REJECTED\n${rejections.map((r) => `- ${r.detail}`).join('\n')}`,
|
|
202
222
|
);
|
|
203
223
|
}
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
224
|
+
} catch (error) {
|
|
225
|
+
if (isTimeoutError(error)) {
|
|
226
|
+
console.warn(
|
|
227
|
+
`RevertNotReadyReviewQueueIssueUseCase: request timed out, skipping pull request for this cycle. prUrl: ${pullRequest.url} error: ${error instanceof Error ? error.message : String(error)}`,
|
|
228
|
+
);
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
231
|
+
throw error;
|
|
208
232
|
}
|
|
209
233
|
}
|
|
210
234
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HandleScheduledEventUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/HandleScheduledEventUseCase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,wCAAwC,EAAE,MAAM,4CAA4C,CAAC;AACtG,OAAO,EAAE,kCAAkC,EAAE,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,wCAAwC,EAAE,MAAM,4CAA4C,CAAC;AACtG,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,yCAAyC,EAAE,MAAM,6CAA6C,CAAC;AACxG,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,qCAAqC,EAAE,MAAM,yCAAyC,CAAC;AAChG,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACxB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC;AACtF,OAAO,EAAE,qCAAqC,EAAE,MAAM,yCAAyC,CAAC;AAGhG,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,4BAA4B,CAAC;AAEpC,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B;
|
|
1
|
+
{"version":3,"file":"HandleScheduledEventUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/HandleScheduledEventUseCase.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RevertNotReadyReviewQueueIssueUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;
|
|
1
|
+
{"version":3,"file":"RevertNotReadyReviewQueueIssueUseCase.d.ts","sourceRoot":"","sources":["../../../src/domain/usecases/RevertNotReadyReviewQueueIssueUseCase.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AAmCrF,qBAAa,qCAAqC;IAK9C,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAIlC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAWhC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IAnBzC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA0B;IAClE,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAAkC;gBAG/D,iBAAiB,EAAE,IAAI,CACtC,iBAAiB,EACjB,oBAAoB,GAAG,YAAY,CACpC,EACgB,eAAe,EAAE,IAAI,CACpC,eAAe,EACb,cAAc,GACd,cAAc,GACd,aAAa,GACb,oBAAoB,GACpB,oBAAoB,GACpB,gCAAgC,GAChC,oBAAoB,GACpB,iCAAiC,CACpC,EACgB,sBAAsB,EAAE,IAAI,CAC3C,sBAAsB,EACtB,eAAe,CAChB;IAQH,GAAG,GAAU,QAAQ;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,oBAAoB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACvC,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;QACxD,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;KACvC,KAAG,OAAO,CAAC,IAAI,CAAC,CA+Jf;IAQF,OAAO,CAAC,gCAAgC,CAsBtC;CACH"}
|